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_BBS_AUTH; /** * T_BBS_AUTH테이블 정보를 SELECT, INSERT, UPDATE, DELETE 하는 class * */ @Repository public class BbsAuthDAOImpl implements BbsAuthDAO{ private Logger log = Logger.getLogger(this.getClass()); private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } /** * 게시판 권한 정보 리스트를 가지고 오는 메소드 * 게시판 권한 정보중 자신이 생성한 정보 리스트를 가지고 오는 메소드 * @param Integer memberIdx 사용자 idx * @return List 게시판 권한 리스트 * */ //AdminMemberService, ManagerMemberService @SuppressWarnings("unchecked") public List getBbsAuthList(Integer memberIdx){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BBS_AUTH.class); criteria.add(Restrictions.eq("tMember.memberIdx", memberIdx)); return criteria.list(); } /** * 게시판 권한 정보를 가지고 오는 메소드 * bbsAuthIdx 에 해당하는 권한 정보를 가지고 오는 메소드 * @param Integer bbsAuthIdx 게시판 권한 idx * @return T_BBS_AUTH 게시판 권한 정보 * */ //ManagerBbsAuthService public T_BBS_AUTH getBbsAuthForm(Integer bbsAuthIdx){ return (T_BBS_AUTH) this.sessionFactory.getCurrentSession().load(T_BBS_AUTH.class, bbsAuthIdx); } /** * 게시판 권한 정보를 가지고 오는 메소드 * bbsAuthIdx 에 해당하는 권한 정보를 가지고 오는 메소드 * @return T_BBS_AUTH 게시판 권한 정보 * */ //ManagerBbsAuthService @SuppressWarnings("deprecation") public T_BBS_AUTH getBbsAuthForm(Integer bbsSetIdx, Integer groupLevel){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BBS_AUTH.class); criteria.createCriteria("tGroup", "tGroup", Criteria.LEFT_JOIN); criteria.add( Restrictions.and( Restrictions.eq("tBbsSet.bbsSetIdx", bbsSetIdx), Restrictions.eq("tGroup.groupLevel", groupLevel))); return (T_BBS_AUTH) criteria.list().get(0); } /** * 게시판 권한 리스트를 가지고 오는 메소드 * bbsSetIdx에 해당하는 권한 리스트를 가지고 오는 메소드 * @param Integer bbsSetIdx 게시판 설정 정보 * @param String[] qryColumns SELECT할 컬럼 정보 * @return List 게시판 권한 리스트 * */ //ManagerBbsAuthService @SuppressWarnings({ "unchecked", "deprecation" }) public List getBbsAuthList(Integer bbsSetIdx, String[] qryColumns){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BBS_AUTH.class); criteria.createCriteria("tGroup", "tGroup", Criteria.LEFT_JOIN); 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("tBbsSet.bbsSetIdx", bbsSetIdx)); criteria.addOrder(Order.asc("tGroup.groupLevel")); return criteria.list(); } /** * 게시판 권한 리스트 정보를 가지고 오는 메소드 * bbsSetIdx, memberIdx에 해당하는 게시판 권한 리스트를 가지고 오는 메소드 * memberIdx 체크를 위해서 group, groups와 조인을 해서 검색 memberIdx가 0일 경우 groupLevel=999로 검색 * @param Integer bbsSetIdx 게시판 설정 idx * @param Integer memberIdx 회원 idx * @param String[] qryColumns select할 컬럼 정보 * @return List> 게시판 권한 리스트 * */ //UserBbsAuthService @SuppressWarnings({ "unchecked", "deprecation" }) public List> getBbsAuthMapList(Integer bbsSetIdx, Integer memberIdx, String[] qryColumns){ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BBS_AUTH.class); criteria.createCriteria("tGroup", "tGroup", Criteria.LEFT_JOIN). createCriteria("tGroupss", "tGroupss", Criteria.LEFT_JOIN); 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(memberIdx > 0){//로그인 되었을때 해당 테이블의 권한 검색 criteria.add( Restrictions.and( Restrictions.eq("tBbsSet.bbsSetIdx", bbsSetIdx), Restrictions.eq("tGroupss.tMember.memberIdx", memberIdx))); }else{//로그인이 안되고 손님일 경우일때 grouplevel 999로 검색 criteria.add( Restrictions.and( Restrictions.eq("tBbsSet.bbsSetIdx", bbsSetIdx), Restrictions.eq("tGroup.groupLevel", 999))); } criteria.addOrder(Order.asc("tGroup.groupLevel")); return criteria.list(); } /** * 게시판 권한 정보를 디비에 저장하는 메소드 * @param T_BBS_AUTH tBbsAuth 저장할 게시판 권한 객체 * @return boolean 작업 성공 여부 * */ //AdminGroupService, ManagerGroupService, ManagerBbsSetService public boolean setBbsAuthRegProc(T_BBS_AUTH tBbsAuth){ boolean success = false; try{ this.sessionFactory.getCurrentSession().save(tBbsAuth); this.sessionFactory.getCurrentSession().flush(); this.sessionFactory.getCurrentSession().clear(); success = true; }catch(HibernateException e){ log.error("CHECK ERROR:",e); } return success; } /** * 게시판 권한 정보를 수정하는 메소드 * @param T_BBS_AUTH tBbsAuth 수정한 게시판 권한 객체 * @return boolean 작업 성공 여부 * */ //ManagerBbsAuthService public boolean setBbsAuthModProc(T_BBS_AUTH tBbsAuth){ boolean success = false; try{ this.sessionFactory.getCurrentSession().update(tBbsAuth); this.sessionFactory.getCurrentSession().flush(); this.sessionFactory.getCurrentSession().clear(); success = true; }catch(HibernateException e){ log.error("CHECK ERROR:",e); } return success; } }