421 lines
15 KiB
Java
421 lines
15 KiB
Java
package seed.dao;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import org.apache.log4j.Logger;
|
|
import org.hibernate.Criteria;
|
|
import org.hibernate.HibernateException;
|
|
import org.hibernate.SessionFactory;
|
|
import org.hibernate.criterion.Order;
|
|
import org.hibernate.criterion.ProjectionList;
|
|
import org.hibernate.criterion.Projections;
|
|
import org.hibernate.criterion.Restrictions;
|
|
import org.springframework.stereotype.Repository;
|
|
|
|
import seed.map.T_RESERVE_ITEM;
|
|
|
|
/**
|
|
* T_RESERVE_ITEM 테이블 정보를 select, insert, update, delete하는 메소드
|
|
* */
|
|
@Repository
|
|
public class ReserveItemDAOImpl implements ReserveItemDAO{
|
|
|
|
private Logger log = Logger.getLogger(this.getClass());
|
|
|
|
private SessionFactory sessionFactory;
|
|
|
|
public void setSessionFactory(SessionFactory sessionFactory) {
|
|
this.sessionFactory = sessionFactory;
|
|
}
|
|
|
|
/**
|
|
* memberIdx 에 해당하는 예약관리 항목 리스트를 가지고 오는 메소드
|
|
* @param Integer memberIdx 회원 idx
|
|
* @return List<T_RESERVE_ITEM> 항목 리스트
|
|
* */
|
|
//AdminMemberService, ManagerMemberService
|
|
@SuppressWarnings("unchecked")
|
|
public List<T_RESERVE_ITEM> getReserveItemAllList(Integer memberIdx){
|
|
|
|
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_RESERVE_ITEM.class);
|
|
|
|
criteria.add(Restrictions.eq("tMember.memberIdx", memberIdx));
|
|
|
|
return criteria.list();
|
|
}
|
|
|
|
/**
|
|
* memberIdx 에 해당하는 예약관리 항목 리스트를 가지고 오는 메소드
|
|
* @param Integer memberIdx 회원 idx
|
|
* @return List<T_RESERVE_ITEM> 항목 리스트
|
|
* */
|
|
//AdminSiteService
|
|
@SuppressWarnings("unchecked")
|
|
public List<T_RESERVE_ITEM> getReserveItemList(Integer reserveSetIdx){
|
|
|
|
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_RESERVE_ITEM.class);
|
|
|
|
criteria.add(Restrictions.eq("tReserveSet.reserveSetIdx", reserveSetIdx));
|
|
|
|
criteria.addOrder(Order.asc("reserveItemOrder"));
|
|
|
|
return criteria.list();
|
|
}
|
|
|
|
/**
|
|
* reserveItemIdx 에 해당하는 항목 정보를 가지고 오는 메소드
|
|
* @param Integer reserveItemIdx
|
|
* @return T_RESERVE_ITEM 항목 정보
|
|
* */
|
|
//ManagerreserveItemService
|
|
public T_RESERVE_ITEM getReserveItemForm(Integer reserveItemIdx){
|
|
|
|
return (T_RESERVE_ITEM) this.sessionFactory.getCurrentSession().load(T_RESERVE_ITEM.class, reserveItemIdx);
|
|
}
|
|
|
|
/**
|
|
* reserveSetIdx, reserveItemGroup 에 해당하는 항목 정보를 가지고 오는 메소드
|
|
* @param Integer reserveSetIdx 설정 idx
|
|
* @param Integer reserveItemGroup 항목 그룹 정보
|
|
* @return T_RESERVE_ITEM 항목 정보
|
|
* */
|
|
//ManagerreserveItemService
|
|
public T_RESERVE_ITEM getReserveItemForm(Integer reserveSetIdx, Integer reserveItemGroup){
|
|
|
|
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_RESERVE_ITEM.class);
|
|
|
|
criteria.setMaxResults(1);
|
|
|
|
criteria.add(
|
|
Restrictions.and(
|
|
Restrictions.eq("tReserveSet.reserveSetIdx", reserveSetIdx),
|
|
Restrictions.eq("reserveItemGroup", reserveItemGroup)));
|
|
|
|
criteria.addOrder(Order.asc("reserveItemGroup"));
|
|
|
|
return (T_RESERVE_ITEM)criteria.list().get(0);
|
|
}
|
|
|
|
/**
|
|
* reserveSetIdx 에 해당하는 항목 리스트를 가지고 오는 메소드
|
|
* @param Integer reserveSetIdx 설정 idx
|
|
* @param String[] qryColumns select 컬럼 정의
|
|
* @return List<Map<Object, Object>> 항목 리스트
|
|
* */
|
|
//ManagerreserveItemService
|
|
@SuppressWarnings("unchecked")
|
|
public List<Map<Object, Object>> getReserveItemList(Integer reserveSetIdx, String[] qryColumns){
|
|
|
|
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_RESERVE_ITEM.class);
|
|
|
|
if(qryColumns != null && qryColumns.length > 0){
|
|
ProjectionList projectionList = Projections.projectionList();
|
|
boolean groupCheck = false;
|
|
for(int q=0; q<qryColumns.length; q++){
|
|
if(!groupCheck && qryColumns[q].indexOf("groupBy") >= 0){
|
|
groupCheck = true;
|
|
continue;
|
|
}
|
|
if(groupCheck){
|
|
if(qryColumns[q].indexOf("Cnt") >= 0){
|
|
String qryColumn = qryColumns[q].substring(0, qryColumns[q].indexOf("Cnt"));
|
|
projectionList.add(Projections.count(qryColumn).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}else{
|
|
projectionList.add(Projections.groupProperty(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}
|
|
}else{
|
|
projectionList.add(Projections.property(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}
|
|
}
|
|
|
|
criteria.setProjection(projectionList);
|
|
criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
|
|
}
|
|
|
|
criteria.add(Restrictions.eq("tReserveSet.reserveSetIdx", reserveSetIdx));
|
|
|
|
criteria.addOrder(Order.asc("reserveItemOrder"));
|
|
|
|
return criteria.list();
|
|
}
|
|
|
|
/**
|
|
* reserveSetIdx,reserveItemGroup 에 해당하는 항목 리스트를 가지고 오는 메소드
|
|
* @param Integer reserveSetIdx 설정 idx
|
|
* @param Integer reserveItemGroup 항목 그룹
|
|
* @param String[] qryColumns select 컬럼 정의
|
|
* @return List<T_RESERVE_ITEM> 항목 리스트
|
|
* */
|
|
//ManagerreserveItemService
|
|
@SuppressWarnings("unchecked")
|
|
public List<T_RESERVE_ITEM> getReserveItemValuesList(Integer reserveSetIdx, Integer reserveItemGroup, String[] qryColumns){
|
|
|
|
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_RESERVE_ITEM.class);
|
|
|
|
if(qryColumns != null && qryColumns.length > 0){
|
|
ProjectionList projectionList = Projections.projectionList();
|
|
boolean groupCheck = false;
|
|
for(int q=0; q<qryColumns.length; q++){
|
|
if(!groupCheck && qryColumns[q].indexOf("groupBy") >= 0){
|
|
groupCheck = true;
|
|
continue;
|
|
}
|
|
if(groupCheck){
|
|
if(qryColumns[q].indexOf("Cnt") >= 0){
|
|
String qryColumn = qryColumns[q].substring(0, qryColumns[q].indexOf("Cnt"));
|
|
projectionList.add(Projections.count(qryColumn).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}else{
|
|
projectionList.add(Projections.groupProperty(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}
|
|
}else{
|
|
projectionList.add(Projections.property(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}
|
|
}
|
|
|
|
criteria.setProjection(projectionList);
|
|
criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
|
|
}
|
|
|
|
criteria.add(
|
|
Restrictions.and(
|
|
Restrictions.eq("tReserveSet.reserveSetIdx", reserveSetIdx),
|
|
Restrictions.eq("reserveItemGroup", reserveItemGroup)));
|
|
|
|
criteria.addOrder(Order.asc("reserveItemGroup")).addOrder(Order.asc("reserveItemIdx"));
|
|
|
|
return criteria.list();
|
|
}
|
|
|
|
/**
|
|
* reserveSetIdx 에 해당하는 항목 리스트를 가지고 오는 메소드
|
|
* @param Integer reserveSetIdx 설정 idx
|
|
* @param String[] qryColumns select 컬럼 정의
|
|
* @return List<T_RESERVE_ITEM> 항목 리스트
|
|
* */
|
|
//UserreserveItemService
|
|
@SuppressWarnings("unchecked")
|
|
public List<T_RESERVE_ITEM> getReserveItemValuesList(Integer reserveSetIdx, String[] qryColumns){
|
|
|
|
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_RESERVE_ITEM.class);
|
|
|
|
if(qryColumns != null && qryColumns.length > 0){
|
|
ProjectionList projectionList = Projections.projectionList();
|
|
boolean groupCheck = false;
|
|
for(int q=0; q<qryColumns.length; q++){
|
|
if(!groupCheck && qryColumns[q].indexOf("groupBy") >= 0){
|
|
groupCheck = true;
|
|
continue;
|
|
}
|
|
if(groupCheck){
|
|
if(qryColumns[q].indexOf("Cnt") >= 0){
|
|
String qryColumn = qryColumns[q].substring(0, qryColumns[q].indexOf("Cnt"));
|
|
projectionList.add(Projections.count(qryColumn).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}else{
|
|
projectionList.add(Projections.groupProperty(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}
|
|
}else{
|
|
projectionList.add(Projections.property(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}
|
|
}
|
|
|
|
criteria.setProjection(projectionList);
|
|
criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
|
|
}
|
|
|
|
criteria.add(
|
|
Restrictions.and(
|
|
Restrictions.eq("tReserveSet.reserveSetIdx", reserveSetIdx),
|
|
Restrictions.eq("reserveItemStatus", "U")));
|
|
|
|
criteria.addOrder(Order.asc("reserveItemOrder")).addOrder(Order.asc("reserveItemIdx"));
|
|
|
|
return criteria.list();
|
|
}
|
|
|
|
/**
|
|
* reserveSetIdx,reserveItemOrder 에 해당하는 항목 리스트를 가지고 오는 메소드
|
|
* @param Integer reserveSetIdx 설정 idx
|
|
* @param Integer reserveItemOrder 정렬 순서값
|
|
* @param String[] qryColumns select 컬럼 정의
|
|
* @return List<T_RESERVE_ITEM> 항목 리스트
|
|
* */
|
|
//ManagerreserveItemService
|
|
@SuppressWarnings("unchecked")
|
|
public List<T_RESERVE_ITEM> getReserveItemOrderList(Integer reserveSetIdx, Integer reserveItemOrder, String[] qryColumns){
|
|
|
|
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_RESERVE_ITEM.class);
|
|
|
|
if(qryColumns != null && qryColumns.length > 0){
|
|
ProjectionList projectionList = Projections.projectionList();
|
|
boolean groupCheck = false;
|
|
for(int q=0; q<qryColumns.length; q++){
|
|
if(!groupCheck && qryColumns[q].indexOf("groupBy") >= 0){
|
|
groupCheck = true;
|
|
continue;
|
|
}
|
|
if(groupCheck){
|
|
if(qryColumns[q].indexOf("Cnt") >= 0){
|
|
String qryColumn = qryColumns[q].substring(0, qryColumns[q].indexOf("Cnt"));
|
|
projectionList.add(Projections.count(qryColumn).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}else{
|
|
projectionList.add(Projections.groupProperty(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}
|
|
}else{
|
|
projectionList.add(Projections.property(qryColumns[q]).as("_"+qryColumns[q].substring(qryColumns[q].lastIndexOf(".")+1)));
|
|
}
|
|
}
|
|
|
|
criteria.setProjection(projectionList);
|
|
criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
|
|
}
|
|
|
|
criteria.add(
|
|
Restrictions.and(
|
|
Restrictions.eq("tReserveSet.reserveSetIdx", reserveSetIdx),
|
|
Restrictions.eq("reserveItemOrder", reserveItemOrder)));
|
|
|
|
criteria.addOrder(Order.asc("reserveItemIdx"));
|
|
|
|
return criteria.list();
|
|
}
|
|
|
|
/**
|
|
* reserveSetIdx 에 해당하는 항목 개수를 가지고 오는 메소드
|
|
* @param Integer reserveSetIdx 설정 idx
|
|
* @return Long
|
|
* */
|
|
//ManagerreserveItemService
|
|
public Long getReserveItemListCnt(Integer reserveSetIdx){
|
|
|
|
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_RESERVE_ITEM.class);
|
|
|
|
criteria.add(Restrictions.eq("tReserveSet.reserveSetIdx", reserveSetIdx));
|
|
|
|
criteria.setProjection(Projections.countDistinct("reserveItemGroup"));
|
|
|
|
return (Long)criteria.uniqueResult();
|
|
}
|
|
|
|
/**
|
|
* reserveSetIdx 에 해당하는 max reserveItemOrder8를 가지고 오는 메소드
|
|
* @param Integer reserveSetIdx 설정 idx
|
|
* @return Integer
|
|
* */
|
|
//ManagerreserveItemService
|
|
public Integer getReserveItemOrderFormCnt(Integer reserveSetIdx) {
|
|
|
|
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_RESERVE_ITEM.class);
|
|
|
|
criteria.add(Restrictions.eq("tReserveSet.reserveSetIdx", reserveSetIdx));
|
|
|
|
criteria.setProjection(Projections.max("reserveItemOrder"));
|
|
|
|
if(criteria.uniqueResult() == null){
|
|
return 0;
|
|
}else{
|
|
return (Integer)criteria.uniqueResult();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 항목 정보를 저장하는 메소드
|
|
* @param T_RESERVE_ITEM tReserveItem 저장할 항목 정보
|
|
* @return T_RESERVE_ITEM 저장된 항목 정보
|
|
* */
|
|
//ManagerreserveSetService
|
|
public T_RESERVE_ITEM setReserveItemRegProc(T_RESERVE_ITEM tReserveItem){
|
|
|
|
try{
|
|
this.sessionFactory.getCurrentSession().save(tReserveItem);
|
|
this.sessionFactory.getCurrentSession().flush();
|
|
this.sessionFactory.getCurrentSession().clear();
|
|
}catch(HibernateException e){
|
|
log.error("CHECK ERROR:",e);
|
|
}
|
|
|
|
return getReserveItemForm(tReserveItem.gettReserveSet().getReserveSetIdx(), tReserveItem.getReserveItemGroup());
|
|
}
|
|
|
|
/**
|
|
* 항목 정보를 수정하는 메소드
|
|
* @param T_RESERVE_ITEM tReserveItem 수정할 항목 정보
|
|
* @return boolean 작업의 성공 여부
|
|
* */
|
|
//ManagerreserveItemService
|
|
public boolean setReserveItemModProc(T_RESERVE_ITEM tReserveItem){
|
|
|
|
boolean success = false;
|
|
|
|
try{
|
|
this.sessionFactory.getCurrentSession().update(tReserveItem);
|
|
this.sessionFactory.getCurrentSession().flush();
|
|
this.sessionFactory.getCurrentSession().clear();
|
|
success = true;
|
|
}catch(HibernateException e){
|
|
log.error("CHECK ERROR:",e);
|
|
}
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* 항목 정보를 삭제하는 메소드
|
|
* @param T_RESERVE_ITEM tReserveItem 삭제할 항목 정보
|
|
* @return boolean 작업의 성공 여부
|
|
* */
|
|
//ManagerreserveItemService
|
|
public boolean setReserveItemDelProc(T_RESERVE_ITEM tReserveItem){
|
|
|
|
boolean success = false;
|
|
|
|
try{
|
|
this.sessionFactory.getCurrentSession().delete(tReserveItem);
|
|
this.sessionFactory.getCurrentSession().flush();
|
|
this.sessionFactory.getCurrentSession().clear();
|
|
success = true;
|
|
}catch(HibernateException e){
|
|
log.error("CHECK ERROR:",e);
|
|
}
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* reserveSetIdx, reserveItemOrder 보다 큰 데이터의 reserveItemOrder값을 +1 해주는 메소드
|
|
* @param Integer reserveSetIdx 예약관리 설정 idx
|
|
* @param Integer reserveItemOrder 항목 정렬 값
|
|
* */
|
|
//ManagerreserveItemService
|
|
@SuppressWarnings("unchecked")
|
|
public void setReserveItemOrderProc(Integer reserveSetIdx, Integer reserveItemOrder){
|
|
|
|
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_RESERVE_ITEM.class);
|
|
|
|
criteria.add(
|
|
Restrictions.and(
|
|
Restrictions.eq("tReserveSet.reserveSetIdx", reserveSetIdx),
|
|
Restrictions.gt("reserveItemOrder", reserveItemOrder)));
|
|
|
|
criteria.addOrder(Order.asc("reserveItemOrder"));
|
|
|
|
List<T_RESERVE_ITEM> tReserveItemList = criteria.list();
|
|
|
|
if(tReserveItemList.size() > 0){
|
|
for(int i=0; i<tReserveItemList.size(); i++){
|
|
|
|
T_RESERVE_ITEM tReserveItemDB = tReserveItemList.get(i);
|
|
tReserveItemDB.setReserveItemOrder(tReserveItemDB.getReserveItemOrder()-1);
|
|
|
|
try{
|
|
this.sessionFactory.getCurrentSession().update(tReserveItemDB);
|
|
this.sessionFactory.getCurrentSession().flush();
|
|
this.sessionFactory.getCurrentSession().clear();
|
|
}catch(HibernateException e){
|
|
log.error("CHECK ERROR:",e);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|