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 항목 리스트 * */ //AdminMemberService, ManagerMemberService @SuppressWarnings("unchecked") public List 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 항목 리스트 * */ //AdminSiteService @SuppressWarnings("unchecked") public List 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> 항목 리스트 * */ //ManagerreserveItemService @SuppressWarnings("unchecked") public List> 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= 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 항목 리스트 * */ //ManagerreserveItemService @SuppressWarnings("unchecked") public List 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= 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 항목 리스트 * */ //UserreserveItemService @SuppressWarnings("unchecked") public List 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= 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 항목 리스트 * */ //ManagerreserveItemService @SuppressWarnings("unchecked") public List 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= 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 tReserveItemList = criteria.list(); if(tReserveItemList.size() > 0){ for(int i=0; i