390 lines
14 KiB
Java
390 lines
14 KiB
Java
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<Map<Object, Object>> 데이터 리스트
|
|
* */
|
|
//AdminSiteService, ManagerSiteService
|
|
@SuppressWarnings("unchecked")
|
|
public List<Map<Object, Object>> 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<T_SITE> 사이트 리스트
|
|
* */
|
|
//AdminMemberService, ManagerMemberService
|
|
@SuppressWarnings("unchecked")
|
|
public List<T_SITE> 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<Map<Object, Object>> 사이트 리스트
|
|
* */
|
|
//AdminSiteService
|
|
@SuppressWarnings("unchecked")
|
|
public List<Map<Object, Object>> 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<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(!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<T_SITE> 사이트 리스트
|
|
* */
|
|
//ManagerSiteService, AdminSiteService
|
|
@SuppressWarnings("unchecked")
|
|
public List<T_SITE> 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<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(!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<T_SITE> 사이트 리스트
|
|
* */
|
|
//AdminSiteService
|
|
@SuppressWarnings({ "unchecked", "deprecation" })
|
|
public List<T_SITE> 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<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(!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<Object, Object> 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<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("siteIdx", siteIdx));
|
|
|
|
ArrayList<Map<Object, Object>> list = (ArrayList<Map<Object, Object>>)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;
|
|
}
|
|
}
|