package seed.dao; import java.util.ArrayList; 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.MatchMode; 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_SITE; /** * T_SITE 테이블 정보를 select, insert, update, delete 하는 class * */ @Repository public class SiteDAOImpl implements SiteDAO{ private Logger log = Logger.getLogger(this.getClass()); private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } /** * memberMergeSiteIdx 에 해당하는 사이트 리스트 정보를 가지고 오는 메소드 * @param String memberMergeSiteIdx 사이트 idx * @return List> 데이터 리스트 * */ //AdminSiteService, ManagerSiteService @SuppressWarnings("unchecked") public List> getSiteList(String memberMergeSiteIdx){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE.class); ProjectionList projectionList = Projections.projectionList(); projectionList.add(Projections.property("siteIdx").as("_siteIdx")); criteria.setProjection(projectionList); criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP); criteria.add(Restrictions.ne("siteIdx", memberMergeSiteIdx)); criteria.addOrder(Order.asc("siteName")); return criteria.list(); } /** * memberIdx 에 해당하는 사이트 리스트를 가지고 오는 메소드 * @param Integer memberIdx 회원 idx * @return List 사이트 리스트 * */ //AdminMemberService, ManagerMemberService @SuppressWarnings("unchecked") public List getSiteList(Integer memberIdx){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE.class); criteria.add(Restrictions.eq("tMember.memberIdx", memberIdx)); return criteria.list(); } /** * 사이트 리스트를 가지고 오는 메소드 * @param String[] qryColumns select 컬럼정의 * @return List> 사이트 리스트 * */ //AdminSiteService @SuppressWarnings("unchecked") public List> getSiteVolumeList(String siteIdx, String[] qryColumns){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE.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); } if(!siteIdx.equals("")){ criteria.add(Restrictions.ne("siteIdx", siteIdx)); } criteria.addOrder(Order.asc("siteName")); return criteria.list(); } /** * memberMergeSiteIdx 에 해당하는 사이트 리스트 정보를 가지고 오는 메소드 * @param String memberMergeSiteIdx 사이트 idx * @param String[] qryColumns select 컬럼정의 * @return List 사이트 리스트 * */ //ManagerSiteService, AdminSiteService @SuppressWarnings("unchecked") public List getSiteList(String memberMergeSiteIdx, String[] qryColumns){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE.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); } if(!memberMergeSiteIdx.equals("")){ criteria.add(Restrictions.ne("siteIdx", memberMergeSiteIdx)); } criteria.addOrder(Order.asc("siteName")); return criteria.list(); } /** * column, search, memberMergeSiteIdx 에 해당하는 사이트 개수를 가지고 오는 메소드 * @param String column 검색 항목 * @param String search 검색 어 * @param String memberMergeSiteIdx 사이트 idx * @return Long 사이트 개수 * */ //AdminSiteService @SuppressWarnings("deprecation") public Long getSiteListCnt(String column, String search, String memberMergeSiteIdx){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE.class); criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN); if(!memberMergeSiteIdx.equals("")){ criteria.add(Restrictions.ne("siteIdx", memberMergeSiteIdx)); } if(!column.equals("")){ if(column.equals("A")){ if(!search.equals("")){ criteria.add( Restrictions.or( Restrictions.or( Restrictions.like("siteIdx", search, MatchMode.ANYWHERE), Restrictions.like("siteName", search, MatchMode.ANYWHERE)), Restrictions.like("tMember.memberName", search, MatchMode.ANYWHERE))); } }else{ criteria.add(Restrictions.like(column, search, MatchMode.ANYWHERE)); } } criteria.setProjection(Projections.rowCount()); return (Long)criteria.uniqueResult(); } /** * column, search, memberMergeSiteIdx 에 해당하는 사이트 개수를 가지고 오는 메소드 * @param int page 출력할 페이지 번호 * @param int row 페이지당 출력 개수 * @param String orderColumn 정렬할 컬럼 정의 * @param String order 정렬방식 정의 (DESC, ASC) * @param String column 검색 컬럼 정의 * @param String search 검색 어 * @param String memberMergeSiteIdx 사이트 idx * @param String[] qryColumns select 컬럼 정의 * @return List 사이트 리스트 * */ //AdminSiteService @SuppressWarnings({ "unchecked", "deprecation" }) public List getSiteList(int page, int row, String orderColumn, String order, String column, String search, String memberMergeSiteIdx, String[] qryColumns){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE.class); criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN); criteria.setFirstResult(page); criteria.setMaxResults(row); 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); } if(!memberMergeSiteIdx.equals("")){ criteria.add(Restrictions.ne("siteIdx", memberMergeSiteIdx)); } if(!column.equals("")){ if(column.equals("A")){ if(!search.equals("")){ criteria.add( Restrictions.or( Restrictions.or( Restrictions.like("siteIdx", search, MatchMode.ANYWHERE), Restrictions.like("siteName", search, MatchMode.ANYWHERE)), Restrictions.like("tMember.memberName", search, MatchMode.ANYWHERE))); } }else{ criteria.add(Restrictions.like(column, search, MatchMode.ANYWHERE)); } } if(order.equals("DESC")){ criteria.addOrder(Order.desc(orderColumn)); }else{ criteria.addOrder(Order.asc(orderColumn)); } return criteria.list(); } //AdminSiteService, ManagerSiteService public Long getSiteFormCnt(String siteIdx){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE.class); criteria.add(Restrictions.eq("siteIdx", siteIdx)); criteria.setProjection(Projections.rowCount()); return (Long)criteria.uniqueResult(); } //AdminSiteService, ManagerSiteService public T_SITE getSiteForm(String siteIdx){ return (T_SITE) this.sessionFactory.getCurrentSession().load(T_SITE.class, siteIdx); } //AdminSiteService, ManagerSiteService public T_SITE getSiteFormByget(String siteIdx){ return (T_SITE) this.sessionFactory.getCurrentSession().get(T_SITE.class, siteIdx); } //AdminSiteService, ManagerSiteService @SuppressWarnings("unchecked") public Map getSiteMapForm(String siteIdx, String[] qryColumns){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE.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("siteIdx", siteIdx)); ArrayList> list = (ArrayList>)criteria.list(); if(list != null && list.size() > 0){ return list.get(0); }else{ return null; } } //AdminSiteService, ManagerSiteService public T_SITE setSiteRegProc(T_SITE tSite){ try{ this.sessionFactory.getCurrentSession().save(tSite); this.sessionFactory.getCurrentSession().flush(); this.sessionFactory.getCurrentSession().clear(); }catch(HibernateException ex){ log.error("CHECK ERROR:",ex); } return getSiteForm(tSite.getSiteIdx()); } //AdminSiteService, ManagerSiteService public boolean setSiteModProc(T_SITE tSite){ boolean success = false; try{ this.sessionFactory.getCurrentSession().update(tSite); this.sessionFactory.getCurrentSession().flush(); this.sessionFactory.getCurrentSession().clear(); success = true; }catch(HibernateException ex){ log.error("CHECK ERROR:",ex); } return success; } //AdminSiteService, ManagerSiteService public boolean setSiteDelProc(T_SITE tSite){ boolean success = false; try{ this.sessionFactory.getCurrentSession().delete(tSite); this.sessionFactory.getCurrentSession().flush(); this.sessionFactory.getCurrentSession().clear(); success = true; }catch(HibernateException ex){ log.error("CHECK ERROR:",ex); } return success; } }