230 lines
8.4 KiB
Java
230 lines
8.4 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_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<T_BBS_AUTH> 게시판 권한 리스트
|
|
* */
|
|
//AdminMemberService, ManagerMemberService
|
|
@SuppressWarnings("unchecked")
|
|
public List<T_BBS_AUTH> 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<T_BBS_AUTH> 게시판 권한 리스트
|
|
* */
|
|
//ManagerBbsAuthService
|
|
@SuppressWarnings({ "unchecked", "deprecation" })
|
|
public List<T_BBS_AUTH> 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<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("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<Map<Object, Object>> 게시판 권한 리스트
|
|
* */
|
|
//UserBbsAuthService
|
|
@SuppressWarnings({ "unchecked", "deprecation" })
|
|
public List<Map<Object, Object>> 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<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);
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|