365 lines
13 KiB
Java
365 lines
13 KiB
Java
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<T_BBS_SKIN> 게시판 스킨 리스트
|
|
* */
|
|
//AdminMemberService, ManagerMemberService
|
|
@SuppressWarnings("unchecked")
|
|
public List<T_BBS_SKIN> 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<T_BBS_SKIN> 게시판 스킨 리스트
|
|
* */
|
|
//AdminSiteService
|
|
@SuppressWarnings("unchecked")
|
|
public List<T_BBS_SKIN> 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<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.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<T_BBS_SKIN> list = (ArrayList<T_BBS_SKIN>)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<T_BBS_SKIN> 게시판 스킨 리스트
|
|
* */
|
|
//ManagerBbsSetService
|
|
@SuppressWarnings({ "unchecked", "deprecation" })
|
|
public List<T_BBS_SKIN> 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<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.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<T_BBS_SKIN> 게시판 스킨 리스트
|
|
* */
|
|
//ManagerBbsSetService
|
|
@SuppressWarnings({ "unchecked", "deprecation" })
|
|
public List<T_BBS_SKIN> 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<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.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;
|
|
}
|
|
}
|