package seed.dao; import java.util.ArrayList; import java.util.List; 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_BBS_SKIN; /** * T_BBS_SKIN 테이블 정보를 select, insert, update, delete 하는 class * */ @Repository public class BbsSkinDAOImpl implements BbsSkinDAO{ 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 getBbsSkinList(Integer memberIdx){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BBS_SKIN.class); criteria.add(Restrictions.eq("tMember.memberIdx", memberIdx)); return criteria.list(); } /** * siteIdx 에 해당하는 게시판 스킨 리스트를 가지고 오는 메소드 * @param String siteIdx 사이트 idx * @param String[] qryColumns select 컬럼 정의 * @return List 게시판 스킨 리스트 * */ //AdminSiteService @SuppressWarnings("unchecked") public List getBbsSkinList(String siteIdx, String[] qryColumns){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BBS_SKIN.class); criteria.add(Restrictions.eq("tSite.siteIdx", siteIdx)); 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.addOrder(Order.asc("bbsSkinIdx")); return criteria.list(); } /** * siteIdx 에 해당하는 bbsSkinCode 정보를 가지고 오는 메소드 * bbsSkinCode order by desc 형태로 정렬한 데이터중 최상위 1개의 데이터를 가지고 온다 * @param String siteIdx 사이트 idx * @return String bbsSkinCode정보 * */ //ManagerBbsSetService @SuppressWarnings("unchecked") public String getBbsSkinCode(String siteIdx){ String bbsSkinCode = "01"; Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BBS_SKIN.class); criteria.setMaxResults(1); criteria.add(Restrictions.eq("tSite.siteIdx", siteIdx)); criteria.addOrder(Order.desc("bbsSkinCode")); ArrayList list = (ArrayList)criteria.list(); if(list != null && list.size() > 0){ T_BBS_SKIN tBbsSkinDB = list.get(0); Integer bbsSkinCodeTmp = Integer.parseInt(tBbsSkinDB.getBbsSkinCode()) + 1; if(bbsSkinCodeTmp < 10){ bbsSkinCode = "0"+bbsSkinCodeTmp; }else{ bbsSkinCode = bbsSkinCodeTmp+""; } } return bbsSkinCode; } /** * bbsSkinIdx 에 해당하는 게시판 스킨 정보를 가지고 오는 메소드 * @param Integer bbsSkinIdx 게시판 스킨 idx * @return T_BBS_SKIN 게시판 스킨 정보 * */ //ManagerBbsSetService public T_BBS_SKIN getBbsSkinForm(Integer bbsSkinIdx){ return (T_BBS_SKIN) this.sessionFactory.getCurrentSession().load(T_BBS_SKIN.class, bbsSkinIdx); } /** * siteIdx, bbsSetType, bbsSetSubType, bbsSkinStatus=U 에 해당하는 게시판 스킨 개수를 가지고 오는 메소드 * @param String siteIdx 사이트 idx * @param String bbsSetType 게시판 설정 타입 ex>B=게시판, A=앨범, M=동영상 * @param String bbsSetSubType 게시판 sub설정 타입 ex>L=리스트, I=이미지, G=갤러리형태 * @return Long 개수 * */ //ManagerBbsSetService public Long getBbsSetSkinListCnt(String siteIdx, String bbsSetType, String bbsSetSubType){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BBS_SKIN.class); criteria.add( Restrictions.and( Restrictions.and( Restrictions.and( Restrictions.or( Restrictions.eq("tSite.siteIdx", siteIdx), Restrictions.isNull("tSite.siteIdx")), Restrictions.eq("bbsSkinType", bbsSetType)), Restrictions.eq("bbsSkinSubType", bbsSetSubType)), Restrictions.eq("bbsSkinStatus", "U"))); criteria.setProjection(Projections.rowCount()); return (Long)criteria.uniqueResult(); } /** * siteIdx, bbsSetType, bbsSetSubType, bbsSkinStatus=U 에 대한 게시판 스킨 리스트를 가지고 오는 메소드 * @param String siteIdx 사이트 idx * @param String bbsSetType 게시판 설정 타입 ex>B=게시판, A=앨범, M=동영상 * @param String bbsSetSubType 게시판 sub설정 타입 ex>L=리스트, I=이미지, G=갤러리형태 * @param int page 출력 페이지 번호 * @param int row 페이지당 출력 개수 * @param String[] qryColumns select 컬럼 정의 * @return List 게시판 스킨 리스트 * */ //ManagerBbsSetService @SuppressWarnings({ "unchecked", "deprecation" }) public List getBbsSetSkinList(String siteIdx, String bbsSetType, String bbsSetSubType, int page, int row, String[] qryColumns){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BBS_SKIN.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); } criteria.add( Restrictions.and( Restrictions.and( Restrictions.and( Restrictions.or( Restrictions.eq("tSite.siteIdx", siteIdx), Restrictions.isNull("tSite.siteIdx")), Restrictions.eq("bbsSkinType", bbsSetType)), Restrictions.eq("bbsSkinSubType", bbsSetSubType)), Restrictions.eq("bbsSkinStatus", "U"))); criteria.addOrder(Order.desc("bbsSkinIdx")); return criteria.list(); } /** * siteIdx 에 해당하는 게시판 스킨 개수를 가지고 오는 메소드 * @param String siteIdx 사이트 idx * @return Long 게시판 스킨 개수 * */ //ManagerBbsSetService public Long getBbsSkinListCnt(String siteIdx){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BBS_SKIN.class); criteria.add( Restrictions.or( Restrictions.isNull("tSite.siteIdx"), Restrictions.eq("tSite.siteIdx", siteIdx))); criteria.setProjection(Projections.rowCount()); return (Long)criteria.uniqueResult(); } /** * siteIdx 에 해당하는 게시판 스킨 리스트를 가지고 오는 메소드 * @param String siteIdx 사이트 idx * @param int page 출력할 페이지 번호 * @param int row 페이지당 출력 개수 * @param String[] qryColumns select 컬럼 정의 * @return List 게시판 스킨 리스트 * */ //ManagerBbsSetService @SuppressWarnings({ "unchecked", "deprecation" }) public List getBbsSkinList(String siteIdx, int page, int row, String[] qryColumns){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BBS_SKIN.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); } criteria.add( Restrictions.or( Restrictions.isNull("tSite.siteIdx"), Restrictions.eq("tSite.siteIdx", siteIdx))); criteria.addOrder(Order.desc("bbsSkinIdx")); return criteria.list(); } /** * 게시판 스킨 정보를 저장하는 메소드 * @param T_BBS_SKIN tBbsSkin 저장할 게시판 스킨 정보 * @return T_BBS_SKIN 저장된 게시판 스킨 정보 * */ //AdminSiteService, ManagerBbsSetService public T_BBS_SKIN setBbsSkinRegProc(T_BBS_SKIN tBbsSkin){ try{ this.sessionFactory.getCurrentSession().save(tBbsSkin); this.sessionFactory.getCurrentSession().flush(); this.sessionFactory.getCurrentSession().clear(); }catch(HibernateException e){ log.error("CHECK ERROR:",e); } return getBbsSkinForm(tBbsSkin.getBbsSkinIdx()); } /** * 게시판 스킨 정보를 수정하는 메소드 * @param T_BBS_SKIN tBbsSkin 수정할 게시판 스킨 정보 * @return boolean 작업 성공 여부 * */ //ManagerBbsSetService public boolean setBbsSkinModProc(T_BBS_SKIN tBbsSkin){ boolean success = false; try{ this.sessionFactory.getCurrentSession().update(tBbsSkin); this.sessionFactory.getCurrentSession().flush(); this.sessionFactory.getCurrentSession().clear(); success = true; }catch(HibernateException e){ log.error("CHECK ERROR:",e); } return success; } /** * 게시판 스킨 정보를 삭제하는 메소드 * @param T_BBS_SKIN tBbsSkin 삭제할 게시판 스킨 정보 * @return boolean 작업 성공 여부 * */ //ManagerBbsSetService public boolean setBbsSkinDelProc(T_BBS_SKIN tBbsSkin){ boolean success = false; try{ this.sessionFactory.getCurrentSession().delete(tBbsSkin); this.sessionFactory.getCurrentSession().flush(); this.sessionFactory.getCurrentSession().clear(); success = true; }catch(HibernateException e){ log.error("CHECK ERROR:",e); } return success; } }