fairnet/src/main/java/seed/dao/SiteMenuAuthDAOImpl.java
tolag3 495238e333 이준호 분쟁조정시스템 커밋
- hibernate 연동
 - 권한관리 개발중
2024-08-13 12:16:43 +09:00

176 lines
6.3 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_SITE_MENU_AUTH;
@Repository
public class SiteMenuAuthDAOImpl implements SiteMenuAuthDAO{
private Logger log = Logger.getLogger(this.getClass());
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
//AdminSiteMenuService, ManagerSiteMenuService
@SuppressWarnings({ "unchecked", "deprecation" })
public List<T_SITE_MENU_AUTH> getSiteMenuAuthList(Integer siteMenuIdx){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE_MENU_AUTH.class);
criteria.createCriteria("tGroup", "tGroup", Criteria.LEFT_JOIN);
criteria.add(
Restrictions.and(
Restrictions.eq("tGroup.groupStatus", "U"),
Restrictions.eq("tSiteMenu.siteMenuIdx", siteMenuIdx)));
criteria.addOrder(Order.asc("tGroup.groupLevel"));
return criteria.list();
}
//AdminSiteMenuAuthService, ManagerSiteMenuAuthService
@SuppressWarnings({ "unchecked", "deprecation" })
public List<T_SITE_MENU_AUTH> getSiteMenuAuthList(Integer siteMenuIdx, String[] qryColumns){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE_MENU_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("tSiteMenu.siteMenuIdx", siteMenuIdx));
criteria.addOrder(Order.asc("tGroup.groupLevel"));
return criteria.list();
}
//ManagerSiteMenuAuthService
@SuppressWarnings({ "unchecked", "deprecation" })
public List<Map<Object, Object>> getSiteMenuAuthMapList(Integer siteMenuIdx, Integer memberIdx, String[] qryColumns){
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_SITE_MENU_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("tSiteMenu.siteMenuIdx", siteMenuIdx),
Restrictions.eq("tGroupss.tMember.memberIdx", memberIdx)));
}else{//로그인이 안되고 손님일 경우일때 grouplevel 999로 검색
criteria.add(
Restrictions.and(
Restrictions.eq("tSiteMenu.siteMenuIdx", siteMenuIdx),
Restrictions.eq("tGroup.groupLevel", 999)));
}
criteria.addOrder(Order.asc("tGroup.groupLevel"));
return criteria.list();
}
//AdminSiteMenuService, ManagerSiteMenuService
public T_SITE_MENU_AUTH getSiteMenuAuthForm(Integer siteMenuAuthIdx){
return (T_SITE_MENU_AUTH) this.sessionFactory.getCurrentSession().load(T_SITE_MENU_AUTH.class, siteMenuAuthIdx);
}
//AdminSiteMenuService, ManagerSiteMenuService
public boolean setSiteMenuAuthRegProc(T_SITE_MENU_AUTH tSiteMenuAuth){
boolean success = false;
try{
this.sessionFactory.getCurrentSession().save(tSiteMenuAuth);
this.sessionFactory.getCurrentSession().flush();
this.sessionFactory.getCurrentSession().clear();
success = true;
}catch(HibernateException e){
log.error("CHECK ERROR:",e);
}
return success;
}
//AdminSiteMenuService, ManagerSiteMenuService
public boolean setSiteMenuAuthModProc(T_SITE_MENU_AUTH tSiteMenuAuth){
boolean success = false;
try{
this.sessionFactory.getCurrentSession().update(tSiteMenuAuth);
this.sessionFactory.getCurrentSession().flush();
this.sessionFactory.getCurrentSession().clear();
success = true;
}catch(HibernateException e){
log.error("CHECK ERROR:",e);
}
return success;
}
}