();
-
- // 서명 검증 셈플
- // 클라이언트에서 받은 서명 데이타를 검증
- String sResult = "";
- String sSignData = null;
- String vidRandom = null;
- JCaosCheckCert jcaosCheck = null;
- //String sIDN = null;
- //String sSourceText = null;
- //String textCheck = "";
- //String sPolicy = "";
- //String sidentifyData = "";
-
- // 서명 데이타를 가져옴
- // 본 셈플에서는 서명 값을 Post Data 의 SignData 에 넣어서 보낸다고 간주 코딩 한다
- sSignData = request.getParameter("signedData");
- try {
- sSignData = URLDecoder.decode(sSignData, "utf-8");
- } catch (UnsupportedEncodingException e1) {
- System.out.println("UnsupportedEncodingException Occured!!!");
- }
- vidRandom = request.getParameter("vidRandom");
- try {
- vidRandom = URLDecoder.decode(vidRandom, "utf-8");
- } catch (UnsupportedEncodingException e1) {
- System.out.println("UnsupportedEncodingException Occured!!!");
- }
- String idn = request.getParameter("idn");
-
- sResult = sResult+"- SignData ["+sSignData+"]
\n"+"- VIDData ["+vidRandom+"]
\n";
-
-
- // 서명 데이타가 있을때 서명 검증
- if (sSignData != null && sSignData.length() > 0){
- try{
-
-
- // API 초기화 (한번만 실행)
- JCAOSProvider.installProvider(false);
- // 라이센스 경로 설정
- //com.dreamsecurity.jcaos.Environment.setLicensePath("C:/Tomcat 5.5/webapps/MagicLine4/WEB-INF/lib");
-
-
- jcaosCheck = new JCaosCheckCert();
-
- // 서버가 알고 잇는 주민등록 번호를 등록한다
- jcaosCheck.setVIDRandom(idn, vidRandom);
-
- sResult = sResult+"
\n- 인증서 검증 시작
\n";
-
- // 서명 검증
- // 검증후 원문이 리턴됨
- int iResult = jcaosCheck.checkCert(sSignData);
- /*
- - JCaosCheckCert.checkCert 의 에러코드는 하기와 같습니다.
- JCaosCheckCert.STAT_OK // 성공
- JCaosCheckCert.STAT_ERR_WRONGCERT // 정상적인 인증서가 아님
- JCaosCheckCert.STAT_ERR_ETC // 기타 오류
- JCaosCheckCert.STAT_ERR_VerifyException // 서명 검증 실패
- JCaosCheckCert.STAT_ERR_CertificateNotYetValidException // 인증서 유효기간 검증 오류
- JCaosCheckCert.STAT_ERR_CertificateExpiredException // 인증서 만료
- JCaosCheckCert.STAT_ERR_ObtainCertPathException // 인증서 경로 구축 실패
- JCaosCheckCert.STAT_ERR_BuildCertPathException // 인증서 경로 구축 실패
- JCaosCheckCert.STAT_ERR_TrustRootException // 신뢰할수 없는 최상위 인증서
- JCaosCheckCert.STAT_ERR_ValidateCertPathException // 인증서 경로 검증 실패
- JCaosCheckCert.STAT_ERR_RevokedCertException // 폐지된 인증서
- JCaosCheckCert.STAT_ERR_RevocationCheckException // CRL 검증 실패
- JCaosCheckCert.STAT_ERR_NotExistSignerCertException // 서명자 인증서 누락
- JCaosCheckCert.STAT_ERR_IOException // IOException
- JCaosCheckCert.STAT_ERR_FileNotFoundException // FileNotFoundException
- JCaosCheckCert.STAT_ERR_NoSuchAlgorithmException // NoSuchAlgorithmException
- JCaosCheckCert.STAT_ERR_NoSuchProviderException // NoSuchProviderException
- JCaosCheckCert.STAT_ERR_ParsingException // ParsingException
- JCaosCheckCert.STAT_ERR_IdentifyException // 본인확인 실패
- */
-
- if (iResult != 0){
- // 오류 발생시 오류를 구분
- String sCertResult = null;
- switch(iResult){
- case JCaosCheckCert.STAT_ERR_WRONGCERT : // 정상적인 인증서가 아님
- sCertResult = "서명에 사용된 인증서가 정상적인 인증서가 아닙니다.";
- break;
- case JCaosCheckCert.STAT_ERR_RevocationCheckException : // CRL 검증 실패
- case JCaosCheckCert.STAT_ERR_NotExistSignerCertException : // 서명자 인증서 누락
- case JCaosCheckCert.STAT_ERR_IOException : // IOException
- case JCaosCheckCert.STAT_ERR_FileNotFoundException : // FileNotFoundException
- case JCaosCheckCert.STAT_ERR_ETC : // 기타 오류
- case JCaosCheckCert.STAT_ERR_BuildCertPathException : // 인증서 경로 구축 실패
- case JCaosCheckCert.STAT_ERR_ObtainCertPathException : // 인증서 경로 구축 실패
- case JCaosCheckCert.STAT_ERR_ValidateCertPathException : // 인증서 경로 검증 실패
- case JCaosCheckCert.STAT_ERR_TrustRootException : // 신뢰할수 없는 최상위 인증서
- sCertResult = "서명 인증서 검증 오류 ["+iResult+"].";
- break;
- case JCaosCheckCert.STAT_ERR_VerifyException : // 서명 검증 실패
- sCertResult = "서명 검증 실패";
- break;
- case JCaosCheckCert.STAT_ERR_CertificateNotYetValidException : // 인증서 유효기간 검증 오류
- sCertResult = "서명 인증서 유효기간 검증 오류";
- break;
- case JCaosCheckCert.STAT_ERR_CertificateExpiredException : // 인증서 만료
- sCertResult = "만료된 인증서 ";
- break;
- case JCaosCheckCert.STAT_ERR_RevokedCertException : // 폐지된 인증서
- sCertResult = "폐지된 인증서";
- break;
- default:
- sCertResult = "기타오류 ["+iResult+"]";
- break;
- }
- sResult = "
\n- "+sCertResult+" \n[" + jcaosCheck.getLastErr() +"]
\n\n";
-
-
- // 오류 발생시 오류를 구분
- //retval - 1
- retMap.put("SN", "");
- retMap.put("sResult", sCertResult);
-
- }else{
- // 서명 검증에 성공
- sResult = sResult+ "- 인증서 검증 성공
\n";
-
- // 서명에 사용된 인증서를 가져온다
- X509Certificate cert = jcaosCheck.getUserCert();
- String signerDN = cert.getSubjectDN().getName(); // 인증서 DN
- BigInteger serialNumber = cert.getSerialNumber(); // 인증서 시리얼
-
- // 본인확인
- switch (jcaosCheck.getVIDCheck()){
- case JCaosCheckCert.STAT_VID_NOTCHECK:
- sResult = sResult+"- 본인 확인 하지 않음
\n";
- break;
- case JCaosCheckCert.STAT_VID_CHECK_OK:
- sResult = sResult+"- 본인 확인 성공
\n";
- break;
- case JCaosCheckCert.STAT_VID_CHECK_FAIL:
- sResult = sResult+"- 본인 확인 실패
\n";
- break;
- }
-
-
-
- // 화면 출력값 생성
- sResult = sResult+ "
\n- 사용자 DN ["+signerDN+"]
\n"+"
\n";
- sResult = sResult+ "- 발급자 DN ["+cert.getIssuerDN().getName()+"]
\n"+"
\n";
- sResult = sResult+ "- 인증서 SN ["+cert.getSerialNumber().toString(16)+"]
\n"+"
\n";
- sResult = sResult+ "- 인증서 정책 ["+cert.getCertificatePolicies().getPolicyIdentifier(0)+"]
\n"+"
\n";
- sResult = sResult+ "- 인증서 serialNumber ["+serialNumber+"]
\n"+"
\n";
-
- //성공시 SN 번호 키값 전송
- //retval - 2
- retMap.put("SN", cert.getSerialNumber().toString(16));
- retMap.put("sResult", "");
-
- }
-
- // 서명 검증
- // 검증후 원문이 리턴됨
- //retval - 3
- retMap.put("iResult", iResult);
-
- }catch(Exception e){
- // 인증서 검증중 오류가 난 경우
- // 처리를 편하게 하기 위해
- // 상용중에는 사용자의 인증서의 유효성의 문제가 잇는 경우가 대부분 입니다.
- //e.printStackTrace();
- sResult = "서명 검증에 실패 하였습니다.\n [" + e.getMessage()+"]\");";
-
- // 서명 검증 실패
- //retval - 4
- retMap.put("iResult", "001");
- retMap.put("SN", "");
- retMap.put("sResult", sResult);
- System.out.println("Exception Occured!!!");
- }
- } else
- {
- sResult=" - 서명 데이타가 존재하지 않습니다..
\n";
-
- // 서명 검증 실패
- //retval - 5
- retMap.put("iResult", "002");
- retMap.put("SN", "");
- retMap.put("sResult", sResult);
- }
-
- //System.out.println(retMap.toString());
-
-
- return retMap;
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/kcc/xxx/service/XxxService.java b/src/main/java/kcc/xxx/service/XxxService.java
new file mode 100644
index 00000000..a83333c8
--- /dev/null
+++ b/src/main/java/kcc/xxx/service/XxxService.java
@@ -0,0 +1,25 @@
+package kcc.xxx.service;
+
+import seed.map.T_MEMBER;
+
+/**
+ * XXX 관리를 위한 서비스 인터페이스 클래스
+ * @author 여현준
+ * @since 2021.08.03
+ * @version 1.0
+ * @see
+ *
+ *
+ * << 개정이력(Modification Information) >>
+ *
+ * 수정일 수정자 수정내용
+ * ------- -------- ---------------------------
+ * 2021.08.03 여현준 최초 생성
+ *
+ *
+ */
+public interface XxxService {
+
+ public T_MEMBER getMemberForm(String memberId);
+
+}
diff --git a/src/main/java/kcc/xxx/service/XxxVO.java b/src/main/java/kcc/xxx/service/XxxVO.java
new file mode 100644
index 00000000..cbbc2edb
--- /dev/null
+++ b/src/main/java/kcc/xxx/service/XxxVO.java
@@ -0,0 +1,123 @@
+package kcc.xxx.service;
+
+import java.io.Serializable;
+
+import kcc.com.cmm.ComDefaultVO;
+
+@SuppressWarnings("serial")
+public class XxxVO extends ComDefaultVO implements Serializable {
+
+ // 검색조건
+ private String srchYear = ""; // 검색 년도
+
+ // 상세
+ private String esntlId = ""; // 로그인ID
+ private String xxxSeq = ""; // xxx 일련번호
+ private String bbsId = ""; // 게시판ID
+ private String nttId = ""; // 게시글ID
+ private String atchFileId = ""; // 첨부파일 ID
+ private String lastUpdusrId = ""; // 최종수정자 ID
+ private String lastUpdusrNm = ""; // 최종수정자 이름
+ private String searchCnd = ""; // 검색 항목
+ private String searchWrd = ""; // 검색명
+ private String frstRegisterId = ""; // 최조작성자 ID
+ private String frstRegisterNm = ""; // 최조작성자 이름
+
+ public String getSrchYear() {
+ return srchYear;
+ }
+
+ public void setSrchYear(String srchYear) {
+ this.srchYear = srchYear;
+ }
+
+ public String getEsntlId() {
+ return esntlId;
+ }
+
+ public void setEsntlId(String esntlId) {
+ this.esntlId = esntlId;
+ }
+
+ public String getXxxSeq() {
+ return xxxSeq;
+ }
+
+ public void setXxxSeq(String xxxSeq) {
+ this.xxxSeq = xxxSeq;
+ }
+
+ public String getBbsId() {
+ return bbsId;
+ }
+
+ public void setBbsId(String bbsId) {
+ this.bbsId = bbsId;
+ }
+
+ public String getNttId() {
+ return nttId;
+ }
+
+ public void setNttId(String nttId) {
+ this.nttId = nttId;
+ }
+
+ public String getAtchFileId() {
+ return atchFileId;
+ }
+
+ public void setAtchFileId(String atchFileId) {
+ this.atchFileId = atchFileId;
+ }
+
+ public String getLastUpdusrId() {
+ return lastUpdusrId;
+ }
+
+ public void setLastUpdusrId(String lastUpdusrId) {
+ this.lastUpdusrId = lastUpdusrId;
+ }
+
+ public String getLastUpdusrNm() {
+ return lastUpdusrNm;
+ }
+
+ public void setLastUpdusrNm(String lastUpdusrNm) {
+ this.lastUpdusrNm = lastUpdusrNm;
+ }
+
+ public String getSearchCnd() {
+ return searchCnd;
+ }
+
+ public void setSearchCnd(String searchCnd) {
+ this.searchCnd = searchCnd;
+ }
+
+ public String getSearchWrd() {
+ return searchWrd;
+ }
+
+ public void setSearchWrd(String searchWrd) {
+ this.searchWrd = searchWrd;
+ }
+
+ public String getFrstRegisterId() {
+ return frstRegisterId;
+ }
+
+ public void setFrstRegisterId(String frstRegisterId) {
+ this.frstRegisterId = frstRegisterId;
+ }
+
+ public String getFrstRegisterNm() {
+ return frstRegisterNm;
+ }
+
+ public void setFrstRegisterNm(String frstRegisterNm) {
+ this.frstRegisterNm = frstRegisterNm;
+ }
+
+
+}
diff --git a/src/main/java/kcc/xxx/service/impl/XxxDAO.java b/src/main/java/kcc/xxx/service/impl/XxxDAO.java
new file mode 100644
index 00000000..a20a9901
--- /dev/null
+++ b/src/main/java/kcc/xxx/service/impl/XxxDAO.java
@@ -0,0 +1,53 @@
+package kcc.xxx.service.impl;
+
+import java.util.List;
+
+import org.hibernate.Criteria;
+import org.hibernate.SessionFactory;
+import org.hibernate.criterion.Restrictions;
+import org.springframework.stereotype.Repository;
+
+import seed.dao.MemberDAOImpl;
+import seed.map.T_MEMBER;
+
+/**
+ * XXX 관리를 위한 데이터 접근 클래스
+ * @author 여현준
+ * @since 2021.08.03
+ * @version 1.0
+ * @see
+ *
+ *
+ * << 개정이력(Modification Information) >>
+ *
+ * 수정일 수정자 수정내용
+ * ------- -------- ---------------------------
+ * 2021.08.03 여현준 최초 생성
+ *
+ *
+ */
+@Repository("XxxDAO")
+public class XxxDAO{
+
+ private SessionFactory sessionFactory;
+
+ public void setSessionFactory(SessionFactory sessionFactory) {
+ this.sessionFactory = sessionFactory;
+ }
+
+ @SuppressWarnings("unchecked")
+ public T_MEMBER getMemberForm(String memberId){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_MEMBER.class);
+
+ criteria.add(Restrictions.eq("memberId", memberId));
+
+ List list = criteria.list();
+
+ if(list.size() > 0){
+ return (T_MEMBER)list.get(0);
+ }else{
+ return null;
+ }
+ }
+}
diff --git a/src/main/java/kcc/xxx/service/impl/XxxServiceImpl.java b/src/main/java/kcc/xxx/service/impl/XxxServiceImpl.java
new file mode 100644
index 00000000..292e7ef8
--- /dev/null
+++ b/src/main/java/kcc/xxx/service/impl/XxxServiceImpl.java
@@ -0,0 +1,38 @@
+package kcc.xxx.service.impl;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import kcc.xxx.service.XxxService;
+import seed.map.T_MEMBER;
+
+/**
+ * 평가정보 관리를 위한 서비스 구현 클래스
+ * @author 여현준
+ * @since 2021.08.03
+ * @version 1.0
+ * @see
+ *
+ *
+ * << 개정이력(Modification Information) >>
+ *
+ * 수정일 수정자 수정내용
+ * ------- -------- ---------------------------
+ * 2021.08.03 여현준 최초 생성
+ *
+ *
+ */
+@Service("XxxService")
+public class XxxServiceImpl extends EgovAbstractServiceImpl implements XxxService {
+
+ // XXX DAO
+ @Resource(name = "XxxDAO")
+ private XxxDAO xxxDAO;
+
+ public T_MEMBER getMemberForm(String memberId){
+
+ return xxxDAO.getMemberForm(memberId);
+ }
+}
diff --git a/src/main/java/kcc/xxx/web/XxxController.java b/src/main/java/kcc/xxx/web/XxxController.java
new file mode 100644
index 00000000..bc35e8f4
--- /dev/null
+++ b/src/main/java/kcc/xxx/web/XxxController.java
@@ -0,0 +1,37 @@
+package kcc.xxx.web;
+
+import javax.annotation.Resource;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import kcc.xxx.service.XxxService;
+import seed.map.T_MEMBER;
+
+@Controller
+public class XxxController {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(XxxController.class);
+
+ // XXX 서비스단
+ @Resource(name = "XxxService")
+ private XxxService xxxService;
+
+ /**
+ * XXX 등록화면
+ */
+ @RequestMapping("/xxx/xxxTest.do")
+ public String XxxRegist() throws Exception {
+
+ T_MEMBER tMember = new T_MEMBER();
+
+ tMember.setMemberId("seed");
+
+ T_MEMBER tMemberDB = xxxService.getMemberForm(tMember.getMemberId());
+
+ return null;
+ }
+
+}
diff --git a/src/main/java/seed/dao/AccessStatisticsDAO.java b/src/main/java/seed/dao/AccessStatisticsDAO.java
new file mode 100644
index 00000000..0479211a
--- /dev/null
+++ b/src/main/java/seed/dao/AccessStatisticsDAO.java
@@ -0,0 +1,17 @@
+package seed.dao;
+
+import java.util.HashMap;
+import java.util.List;
+
+import seed.map.T_ACCESS_STATISTICS;
+
+public interface AccessStatisticsDAO {
+
+ public List> getAccessStatisticsList(String memberMergeSiteIdx, String[] qryColumns);
+
+ public T_ACCESS_STATISTICS getAccessStatisticsInfo(String siteIdx, Integer year, Integer month, Integer day, Integer hour);
+
+ public boolean setInsertAccessStatistics(T_ACCESS_STATISTICS accessStatistics);
+
+ public boolean setUpdateAccessStatistics(T_ACCESS_STATISTICS accessStatistics);
+}
\ No newline at end of file
diff --git a/src/main/java/seed/dao/AccessStatisticsDAOImpl.java b/src/main/java/seed/dao/AccessStatisticsDAOImpl.java
new file mode 100644
index 00000000..1918e3d3
--- /dev/null
+++ b/src/main/java/seed/dao/AccessStatisticsDAOImpl.java
@@ -0,0 +1,126 @@
+package seed.dao;
+
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.hibernate.Criteria;
+import org.hibernate.HibernateException;
+import org.hibernate.Query;
+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_ACCESS_STATISTICS;
+
+@Repository
+public class AccessStatisticsDAOImpl implements AccessStatisticsDAO {
+
+ private Logger log = Logger.getLogger(this.getClass());
+
+ private SessionFactory sessionFactory;
+
+ public void setSessionFactory(SessionFactory sessionFactory) {
+ this.sessionFactory = sessionFactory;
+ }
+
+ @SuppressWarnings("unchecked")
+ public List> getAccessStatisticsList(String memberMergeSiteIdx, String[] qryColumns){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_ACCESS_STATISTICS.class);
+
+ if(qryColumns != null && qryColumns.length > 0){
+ ProjectionList projectionList = Projections.projectionList();
+ boolean groupCheck = false;
+ for(int i=0; i= 0){
+ groupCheck = true;
+ continue;
+ }
+ if(groupCheck){
+ if(qryColumns[i].indexOf("Count") >= 0){
+ projectionList.add(Projections.count(qryColumns[i]).as(qryColumns[i]));
+ }else{
+ projectionList.add(Projections.groupProperty(qryColumns[i]).as(qryColumns[i]));
+ }
+ }else{
+ projectionList.add(Projections.property(qryColumns[i]).as(qryColumns[i]));
+ }
+ }
+ }
+ criteria.setProjection(projectionList);
+ criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
+ }
+
+ if(!memberMergeSiteIdx.equals("")){
+ criteria.add(Restrictions.ne("siteIdx", memberMergeSiteIdx));
+ }
+
+ criteria.addOrder(Order.desc("siteIdx"));
+
+ return criteria.list();
+ }
+
+ @SuppressWarnings("unchecked")
+ public T_ACCESS_STATISTICS getAccessStatisticsInfo(String siteIdx, Integer year, Integer month, Integer day, Integer hour) {
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_ACCESS_STATISTICS.class);
+
+ criteria.add(Restrictions.eq("siteIdx", siteIdx));
+ criteria.add(Restrictions.eq("accessYear", year));
+ criteria.add(Restrictions.eq("accessMonth", month));
+ criteria.add(Restrictions.eq("accessDay", day));
+ criteria.add(Restrictions.eq("accessHour", hour));
+
+ List dataList = criteria.list();
+
+ if(dataList!=null && dataList.size()>0){
+ return dataList.get(0);
+ }else{
+ return null;
+ }
+ }
+
+ public boolean setInsertAccessStatistics(T_ACCESS_STATISTICS accessStatistics) {
+
+ boolean success = false;
+
+ try{
+ this.sessionFactory.getCurrentSession().save(accessStatistics);
+ this.sessionFactory.getCurrentSession().flush();
+ this.sessionFactory.getCurrentSession().clear();
+ success = true;
+ }catch(HibernateException e){
+ log.error(e);
+ }
+
+ return success;
+ }
+
+ public boolean setUpdateAccessStatistics(T_ACCESS_STATISTICS accessStatistics) {
+
+ boolean success = false;
+
+ try{
+
+ Query createQuery = this.sessionFactory.getCurrentSession().createQuery("UPDATE T_ACCESS_STATISTICS SET accessCount = :accessCount WHERE dataIdx = :dataIdx ");
+
+ createQuery.setInteger("accessCount", accessStatistics.getAccessCount());
+ createQuery.setInteger("dataIdx", accessStatistics.getDataIdx());
+
+ int rowCount = createQuery.executeUpdate();
+
+ if(rowCount>0){
+ success = true;
+ }
+
+ }catch(HibernateException e){
+ log.error(e);
+ }
+ return success;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/seed/dao/BannerDataDAO.java b/src/main/java/seed/dao/BannerDataDAO.java
new file mode 100644
index 00000000..ab90edec
--- /dev/null
+++ b/src/main/java/seed/dao/BannerDataDAO.java
@@ -0,0 +1,45 @@
+package seed.dao;
+
+import java.util.List;
+
+import seed.map.T_BANNER_DATA;
+
+
+public interface BannerDataDAO {
+
+ //AdminMemberService, ManagerMemberService
+ public List getBannerDataAllList(Integer memberIdx);
+
+ //ManagerBannerDataService
+ public Integer getBannerDataOrderFormCnt(Integer bannerSetIdx);
+
+ //ManagerBannerSetService, ManagerBannerDataService
+ public T_BANNER_DATA getBannerDataForm(Integer bannerDataIdx);
+
+ //ManagerBannerSetService
+ public T_BANNER_DATA getBannerDataOrderForm(Integer bannerSetIdx, Integer bannerDataOrder);
+
+ //ManagerBannerSetService
+ public Long getBannerDataListCnt(Integer bannerSetIdx);
+
+ //ManagerBannerDataService
+ public Long getBannerDataListCnt(Integer bannerSetIdx, String column, String search);
+
+ //ManagerBannerDataService
+ public List getBannerDataList(Integer bannerSetIdx);
+
+ //ManagerBannerDataService
+ public List getBannerDataList(Integer bannerSetIdx, int page, int row, String column, String search, String[] qryColumns);
+
+ //ManagerBannerDataService
+ public T_BANNER_DATA setBannerDataRegProc(T_BANNER_DATA tBannerData);
+
+ //ManagerBannerSetService, ManagerBannerDataService
+ public boolean setBannerDataModProc(T_BANNER_DATA tBannerData);
+
+ //ManagerBannerDataService
+ public boolean setBannerDataDelProc(T_BANNER_DATA tBannerData);
+
+ //ManagerBannerDataService
+ public void setBannerDataOrderProc(Integer bannerSetIdx, Integer bannerDataOrder);
+}
diff --git a/src/main/java/seed/dao/BannerDataDAOImpl.java b/src/main/java/seed/dao/BannerDataDAOImpl.java
new file mode 100644
index 00000000..d61c7325
--- /dev/null
+++ b/src/main/java/seed/dao/BannerDataDAOImpl.java
@@ -0,0 +1,358 @@
+package seed.dao;
+
+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.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_BANNER_DATA;
+
+/**
+ * T_BANNER_DATA 테이블을 select,insert,update,delete하기 위한 DAO메소드
+ * */
+@Repository
+public class BannerDataDAOImpl implements BannerDataDAO {
+
+ 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 배너 데이터 리스트
+ * */
+ //AdminMemberService, ManagerMemberService
+ @SuppressWarnings("unchecked")
+ public List getBannerDataAllList(Integer memberIdx){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_DATA.class);
+
+ criteria.add(Restrictions.eq("tMember.memberIdx", memberIdx));
+
+ return criteria.list();
+ }
+
+ /**
+ * 배너데이터중 BANNER_DATA_ORDER의 MAX을 가지고 오는 메소드
+ * bannerSetIdx에 해당하는 데이터중 가장 큰 bnaaner_data_order 를 가지고 온다
+ * @param Integer bannerSetIdx 배너셋 idx
+ * @return Integer max banner_data_order
+ * */
+ //ManagerBannerDataService
+ public Integer getBannerDataOrderFormCnt(Integer bannerSetIdx){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_DATA.class);
+
+ criteria.add(Restrictions.eq("tBannerSet.bannerSetIdx", bannerSetIdx));
+
+ criteria.setProjection(Projections.max("bannerDataOrder"));
+
+ if(criteria.uniqueResult() == null){
+ return 0;
+ }else{
+ return (Integer)criteria.uniqueResult();
+ }
+ }
+
+ /**
+ * 배너데이터 상세 정보를 가지고 오는 메소드
+ * bannerDataIdx 에 해당하는 정보를 가지고 오는 메소드
+ * @param Integer bannerDataIdx 배너 데이터 idx
+ * @return T_BANNER_DATA 배너 데이터 정보
+ * */
+ //ManagerBannerSetService, ManagerBannerDataService
+ public T_BANNER_DATA getBannerDataForm(Integer bannerDataIdx) {
+
+ return (T_BANNER_DATA) this.sessionFactory.getCurrentSession().load(T_BANNER_DATA.class, bannerDataIdx);
+ }
+
+ /**
+ * 배너데이터를 가지고 오는 메소드
+ * bannerSetIdx, bannerDataOrder의 조건에 해당하는 데이터를 가지고 오는 메소드
+ * @param Integer bannerSetIdx 배너 설정 idx
+ * @param Integer bannerDataOrder 배너 출력 순서 값
+ * @return T_BANNER_DATA 배너 정보
+ * */
+ //ManagerBannerSetService
+ public T_BANNER_DATA getBannerDataOrderForm(Integer bannerSetIdx, Integer bannerDataOrder) {
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_DATA.class);
+
+ criteria.add(
+ Restrictions.and(
+ Restrictions.eq("tBannerSet.bannerSetIdx", bannerSetIdx),
+ Restrictions.eq("bannerDataOrder", bannerDataOrder)));
+
+ return (T_BANNER_DATA) criteria.list().get(0);
+ }
+
+ /**
+ * 배너데이터 개수를 가지고 오는 메소드
+ * bannerSetIdx에 해당하는 데이터 개수를 가지고 온다
+ * @param Integer bannerSetIdx 배너 설정 idx
+ * @return Long 개수
+ * */
+ //ManagerBannerSetService
+ public Long getBannerDataListCnt(Integer bannerSetIdx){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_DATA.class);
+
+ criteria.add(Restrictions.eq("tBannerSet.bannerSetIdx", bannerSetIdx));
+
+ criteria.setProjection(Projections.rowCount());
+
+ return (Long)criteria.uniqueResult();
+ }
+
+ /**
+ * 배너데이터 개수를 가지고 오는 메소드
+ * bannerSetIdx, column, search에 해당하는 데이터 개수를 가지고 온다.
+ * @param Integer bannerSetIdx 배너 설정 idx
+ * @param String column 검색 항목
+ * @param String search 검색 어
+ * @return Long 검색된 개수
+ * */
+ //ManagerBannerDataService
+ @SuppressWarnings("deprecation")
+ public Long getBannerDataListCnt(Integer bannerSetIdx, String column, String search){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_DATA.class);
+
+ criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
+
+ criteria.add(Restrictions.eq("tBannerSet.bannerSetIdx", bannerSetIdx));
+
+ if (!column.equals("")) {
+ if (column.equals("A")) {
+ if (!search.equals("")) {
+ criteria.add(
+ Restrictions.or(
+ Restrictions.or(
+ Restrictions.like("bannerDataTitle", search, MatchMode.ANYWHERE),
+ Restrictions.like("bannerDataContent", 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();
+ }
+
+ /**
+ * 배너리스트를 가지고 오는 메소드
+ * bannerSetIdx에 해당하는 배너 데이터 리스트를 가지고 오는 메소드
+ * @param Integer bannerSetIdx
+ * @return List 배너 데이터 리스트
+ * */
+ //ManagerBannerDataService
+ @SuppressWarnings("unchecked")
+ public List getBannerDataList(Integer bannerSetIdx){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_DATA.class);
+
+ criteria.add(
+ Restrictions.and(
+ Restrictions.and(
+ Restrictions.ne("bannerDataType", "N"),
+ Restrictions.eq("bannerDataStatus", "U")),
+ Restrictions.eq("tBannerSet.bannerSetIdx", bannerSetIdx)));
+
+ criteria.addOrder(Order.desc("bannerDataOrder"));
+
+ return criteria.list();
+ }
+
+ /**
+ * 배너 데이터 리스트를 가지고 오는 메소드
+ * bannerSetIdx, column, search 에 해당하는 데이터중 한페이지당 row개수 만큼 page에 해당하는 페이지 리스트를 가지고 온다.
+ * @param Integer bannerSetIdx 배너 설정 idx
+ * @param int page 출력할 페이지 번호
+ * @param int row 한 페이지당 출력 개수
+ * @param String column 검색 항목
+ * @param String search 검색 어
+ * @param String[] qryColumns 가지고올
+ * @return List 배너 데이터 리스트
+ * */
+ //ManagerBannerDataService
+ @SuppressWarnings({ "unchecked", "deprecation" })
+ public List getBannerDataList(Integer bannerSetIdx, int page, int row, String column, String search, String[] qryColumns){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_DATA.class);
+
+ criteria.createCriteria("tBannerSet", "tBannerSet", Criteria.LEFT_JOIN);
+ 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= 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("tBannerSet.bannerSetIdx", bannerSetIdx));
+
+ if (!column.equals("")) {
+ if (column.equals("A")) {
+ if (!search.equals("")) {
+ criteria.add(
+ Restrictions.or(
+ Restrictions.or(
+ Restrictions.like("bannerDataTitle", search, MatchMode.ANYWHERE),
+ Restrictions.like("bannerDataContent", search, MatchMode.ANYWHERE)),
+ Restrictions.like("tMember.memberName", search, MatchMode.ANYWHERE)));
+ }
+ } else {
+ criteria.add(Restrictions.like(column, search,
+ MatchMode.ANYWHERE));
+ }
+ }
+
+ criteria.addOrder(Order.desc("bannerDataOrder"));
+
+ return criteria.list();
+ }
+
+ /**
+ * 배너 정보를 저장하는 메소드
+ * @param T_BANNER_DATA tBannerData 저장할 배너 데이터 객체
+ * @return T_BANNER_DATA 저장된 배너 데이터 객체(idx값 체크를 위해서 return)
+ * */
+ //ManagerBannerDataService
+ public T_BANNER_DATA setBannerDataRegProc(T_BANNER_DATA tBannerData){
+
+ try{
+ this.sessionFactory.getCurrentSession().save(tBannerData);
+ this.sessionFactory.getCurrentSession().flush();
+ this.sessionFactory.getCurrentSession().clear();
+ }catch(HibernateException e){
+ log.error("CHECK ERROR:",e);
+ }
+
+ return getBannerDataForm(tBannerData.getBannerDataIdx());
+ }
+
+ /**
+ * 배너 데이터 정보를 수정하는 메소드
+ * 작업의 성공 여부는 exception여부로 결정
+ * @param T_BANNER_DATA tBannerData 수정할 배너 데이터 객체
+ * @return boolean 작업의 성공 여부
+ * */
+ //ManagerBannerSetService, ManagerBannerDataService
+ public boolean setBannerDataModProc(T_BANNER_DATA tBannerData) {
+
+ boolean success = false;
+
+ try{
+ this.sessionFactory.getCurrentSession().update(tBannerData);
+ this.sessionFactory.getCurrentSession().flush();
+ this.sessionFactory.getCurrentSession().clear();
+ success = true;
+ }catch(HibernateException e){
+ log.error("CHECK ERROR:",e);
+ }
+
+ return success;
+ }
+
+ /**
+ * 배너 데이터를 삭제 하는 메소드
+ * tBannerData는 반드시 idx에 해당하는 값이 존재 해야 합니다.
+ * @param T_BANNER_DATA tBannerData 삭제할 배너 데이터 객체
+ * @return boolean 작업의 성공 여부
+ * */
+ //ManagerBannerDataService
+ public boolean setBannerDataDelProc(T_BANNER_DATA tBannerData) {
+
+ boolean success = false;
+
+ try{
+ this.sessionFactory.getCurrentSession().delete(tBannerData);
+ this.sessionFactory.getCurrentSession().flush();
+ this.sessionFactory.getCurrentSession().clear();
+ success = true;
+ }catch(HibernateException e){
+ log.error("CHECK ERROR:",e);
+ }
+
+ return success;
+ }
+
+ /**
+ * 배너 정렬 값을 변경 하는 메소드
+ * bannerSetIdx에 해당하고 bannerDataOrder보다 큰 조건에 해당하는 배너 데이터 리스트를 가지고 와서
+ * 해당 데이터의 banneerDataOrder 값을 +1 해줍니다.
+ * @param Integer bannerSetIdx 배너 설정 정보 idx
+ * @param Integer bannerDataOrder 배너 정렬 값
+ * @return void
+ * */
+ //ManagerBannerDataService
+ @SuppressWarnings("unchecked")
+ public void setBannerDataOrderProc(Integer bannerSetIdx, Integer bannerDataOrder){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_DATA.class);
+
+ criteria.add(
+ Restrictions.and(
+ Restrictions.eq("tBannerSet.bannerSetIdx", bannerSetIdx),
+ Restrictions.gt("bannerDataOrder", bannerDataOrder)));
+
+ criteria.addOrder(Order.asc("bannerDataOrder"));
+
+ List tBannerDataList = criteria.list();
+
+ if(tBannerDataList.size() > 0){
+ for(int i=0; i getBannerManagerList(String siteIdx);
+
+ //AdminMemberService, ManagerMemberService
+ public List getBannerManagerList(Integer memberIdx);
+
+ //ManagerBannerManagerService
+ public T_BANNER_MANAGER getBannerManagerForm(Integer bannerManagerIdx);
+
+ //ManagerBannerManagerService
+ public Long getBannerManagerListGrantCnt(Integer bannerSetIdx, Integer memberIdx);
+
+ //ManagerBannerManagerService
+ public Long getBannerManagerListCnt(Integer bannerSetIdx, Integer memberIdx);
+
+ //ManagerBannerManagerService
+ public Long getBannerManagerListCnt(Integer bannerSetIdx, Integer selGroup, String column, String search);
+
+ //ManagerBannerManagerService
+ public Long getBannerManagerListCnt(String siteIdx, Integer memberIdx, String column, String search);
+
+ //ManagerBannerManagerService
+ public List getBannerManagerList(Integer bannerSetIdx, int page, int row, String orderColumn, String order, Integer selGroup, String column, String search, String[] qryColumns);
+
+ //ManagerBannerManagerService
+ public List getBannerManagerList(String siteIdx, Integer memberIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns);
+
+ //ManagerBannerManagerService
+ public boolean setBannerManagerRegProc(T_BANNER_MANAGER tBannerManager);
+
+ //ManagerBannerManagerService, AdminMemberService, ManagerMemberService
+ public boolean setBannerManagerModProc(T_BANNER_MANAGER tBannerManager);
+
+ //ManagerBannerManagerService
+ public boolean setBannerManagerDelProc(T_BANNER_MANAGER tBannerManager);
+}
diff --git a/src/main/java/seed/dao/BannerManagerDAOImpl.java b/src/main/java/seed/dao/BannerManagerDAOImpl.java
new file mode 100644
index 00000000..769f8ea6
--- /dev/null
+++ b/src/main/java/seed/dao/BannerManagerDAOImpl.java
@@ -0,0 +1,433 @@
+package seed.dao;
+
+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.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_BANNER_MANAGER;
+
+/**
+ * T_BANNER_MANAGER 정보를 select, insert, update, delete 하는 메소드
+ * */
+@Repository
+public class BannerManagerDAOImpl implements BannerManagerDAO{
+
+ private Logger log = Logger.getLogger(this.getClass());
+
+ private SessionFactory sessionFactory;
+
+ public void setSessionFactory(SessionFactory sessionFactory) {
+ this.sessionFactory = sessionFactory;
+ }
+
+ /**
+ * 배너 관리자 리스트
+ * siteIdx에 해당하는 배너 관리자 리스트를 가지고 오는 메소드
+ * @param String siteIdx 사이트 idx
+ * @return List 배너 관리자 리스트
+ * */
+ //AdminSiteService
+ @SuppressWarnings({ "unchecked", "deprecation" })
+ public List getBannerManagerList(String siteIdx){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_MANAGER.class);
+
+ criteria.createCriteria("tBannerSet", "tBannerSet", Criteria.LEFT_JOIN);
+
+ criteria.add(Restrictions.eq("tBannerSet.tSite.siteIdx", siteIdx));
+
+ return criteria.list();
+ }
+
+ /**
+ * 배너 관리자 리스트를 가지고 오는 메소드
+ * memberIdx에 해당하는 배너 관리자 리스트를 가지고 오는 메소드 자신이 관리자로 있는
+ * 배너 정보를 모두 가지고 온다.
+ * @param Integer memberIdx 사용자 idx
+ * @return List 배너 관리자 리스트
+ * */
+ //AdminMemberService, ManagerMemberService
+ @SuppressWarnings("unchecked")
+ public List getBannerManagerList(Integer memberIdx){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_MANAGER.class);
+
+ criteria.add(Restrictions.eq("tMember.memberIdx", memberIdx));
+
+ return criteria.list();
+ }
+
+
+ /**
+ * 배너 관리자 정보를 가지고 오는 메소드
+ * bannerManagerIdx에 해당하는 관리자 정보를 가지고 오는 메소드
+ * @param Integer bannerManagerIdx 배너 관리자 idx
+ * @return T_BANNER_MANAGER 배너 관리자 정보
+ * */
+ //ManagerBannerManagerService
+ public T_BANNER_MANAGER getBannerManagerForm(Integer bannerManagerIdx){
+
+ return (T_BANNER_MANAGER) this.sessionFactory.getCurrentSession().load(T_BANNER_MANAGER.class, bannerManagerIdx);
+ }
+
+ /**
+ * 배너 관리자 리스트 개수를 가지고 오는 메소드
+ * bannertSetIdx, memberIdx에 해당하는 배너 관리자 개수를 가지고 오는 메소드
+ * 해당 메소드를 통해서 배너 관리자 유무를 판단 할 수 있습니다.
+ * @param Integer bannerSetIdx 배너 설정 idx
+ * @param Integer memberIdx 회원 idx
+ * @return Long 배너 관리자 리스트 개수
+ * */
+ //ManagerBannerManagerService
+ @SuppressWarnings("deprecation")
+ public Long getBannerManagerListGrantCnt(Integer bannerSetIdx, Integer memberIdx){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_MANAGER.class);
+
+ criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
+
+ criteria.add(
+ Restrictions.and(
+ Restrictions.and(
+ Restrictions.and(
+ Restrictions.and(
+ Restrictions.eq("tBannerSet.bannerSetIdx", bannerSetIdx),
+ Restrictions.eq("bannerManagerStatus", "U")),
+ Restrictions.eq("bannerManagerGrant", "U")),
+ Restrictions.eq("tMember.memberIdx", memberIdx)),
+ Restrictions.eq("tMember.memberStatus", "U")));
+
+ criteria.setProjection(Projections.rowCount());
+
+ return (Long)criteria.uniqueResult();
+ }
+
+ /**
+ * 배너 관리자 리스트 개수를 가지고 오는 메소드
+ * bannertSetIdx, memberIdx에 해당하는 배너 관리자 개수를 가지고 오는 메소드
+ * 해당 메소드를 통해서 배너 관리자 유무를 판단 할 수 있습니다.
+ * @param Integer bannerSetIdx 배너 설정 idx
+ * @param Integer memberIdx 회원 idx
+ * @return Long 배너 관리자 리스트 개수
+ * */
+ //ManagerBannerManagerService
+ @SuppressWarnings("deprecation")
+ public Long getBannerManagerListCnt(Integer bannerSetIdx, Integer memberIdx){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_MANAGER.class);
+
+ criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
+
+ criteria.add(
+ Restrictions.and(
+ Restrictions.and(
+ Restrictions.and(
+ Restrictions.eq("tBannerSet.bannerSetIdx", bannerSetIdx),
+ Restrictions.eq("bannerManagerStatus", "U")),
+ Restrictions.eq("tMember.memberIdx", memberIdx)),
+ Restrictions.eq("tMember.memberStatus", "U")));
+
+ criteria.setProjection(Projections.rowCount());
+
+ return (Long)criteria.uniqueResult();
+ }
+
+ /**
+ * 배너 관리자 리스트 개수를 가지고 오는 메소드
+ * bannerSetIdx, column, search 에 해당하는 배너 리스트 개수를 가지고 오는 메소드
+ * @param Integer bannerSetIdx 배너설정 idx
+ * @param String column 검색 항목
+ * @param String search 검색 어
+ * @return Long 매니저 리스트 개수
+ * */
+ //ManagerBannerManagerService
+ @SuppressWarnings("deprecation")
+ public Long getBannerManagerListCnt(Integer bannerSetIdx, Integer selGroup, String column, String search){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_MANAGER.class);
+
+ criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
+ criteria.createCriteria("tMember.tGroups", "tGroups", Criteria.LEFT_JOIN);
+
+ criteria.add(Restrictions.eq("tBannerSet.bannerSetIdx", bannerSetIdx));
+
+ if(!selGroup.equals(0)){
+ criteria.add(Restrictions.eq("tGroups.tGroup.groupIdx", selGroup));
+ }
+
+ if(!column.equals("")){
+ if(column.equals("A")){
+ if(!search.equals("")){
+ criteria.add(
+ Restrictions.or(
+ Restrictions.like("tMember.memberId", 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();
+ }
+
+ /**
+ * 배너 관리자 리스트 개수를 가지고 오는 메소드
+ * bannerSetIdx, column, search 에 해당하는 배너 리스트 개수를 가지고 오는 메소드
+ * @param Integer bannerSetIdx 배너설정 idx
+ * @param String column 검색 항목
+ * @param String search 검색 어
+ * @return Long 매니저 리스트 개수
+ * */
+ //ManagerBannerManagerService
+ @SuppressWarnings("deprecation")
+ public Long getBannerManagerListCnt(String siteIdx, Integer memberIdx, String column, String search){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_MANAGER.class);
+
+ criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
+ criteria.createCriteria("tBannerSet", "tBannerSet", Criteria.LEFT_JOIN);
+
+ criteria.add(
+ Restrictions.and(
+ Restrictions.eq("tBannerSet.tSite.siteIdx", siteIdx),
+ Restrictions.eq("tMember.memberIdx", memberIdx)));
+
+ if(!search.equals("")){
+ criteria.add(Restrictions.like(column, search, MatchMode.ANYWHERE));
+ }
+
+ criteria.setProjection(Projections.rowCount());
+
+ return (Long)criteria.uniqueResult();
+ }
+
+ /**
+ * 배너 관리자 리스트를 가지고 오는 메소드
+ * bannerSetIdx, column, search 에 해당하는 관리자 리스트 row개를 page페이지에 해당 하는 데이터를
+ * 가지고 오는 메소드
+ * select시 order, orderColumn조건에 해당하는 방식으로 정렬을 하게 된다.
+ * @param Integer bannerSetIdx 배너설정 idx
+ * @param int page 페이지 번호
+ * @param int row 페이지당 출력 개수
+ * @param Stirng orderColumn order by 에 사용할 컬럼 정보
+ * @param String order order by 에 사용할 정렬 기준 ex> DESC, ASC
+ * @param String column 검색 항목
+ * @param String search 검색 어
+ * @param String[] qryColumns select 할 컬럼 정보
+ * @return List 배너 관리자 리스트
+ * */
+ //ManagerBannerManagerService
+ @SuppressWarnings({ "unchecked", "deprecation" })
+ public List getBannerManagerList(Integer bannerSetIdx, int page, int row, String orderColumn, String order, Integer selGroup, String column, String search, String[] qryColumns){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_MANAGER.class);
+
+ criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
+ criteria.createCriteria("tMember.tGroups", "tGroups", 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= 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("tBannerSet.bannerSetIdx", bannerSetIdx));
+
+ if(!selGroup.equals(0)){
+ criteria.add(Restrictions.eq("tGroups.tGroup.groupIdx", selGroup));
+ }
+
+ if(!column.equals("")){
+ if(column.equals("A")){
+ if(!search.equals("")){
+ criteria.add(
+ Restrictions.or(
+ Restrictions.like("tMember.memberId", search, MatchMode.ANYWHERE),
+ Restrictions.like("tMember.memberName", search, MatchMode.ANYWHERE)));
+ }
+ }else{
+ criteria.add(Restrictions.like(column, search, MatchMode.ANYWHERE));
+ }
+ }
+
+ if(orderColumn.equals("")){
+ orderColumn = "bannerManagerIdx";
+ }
+
+ if(order.equals("DESC")){
+ criteria.addOrder(Order.desc(orderColumn));
+ }else{
+ criteria.addOrder(Order.asc(orderColumn));
+ }
+
+ return criteria.list();
+ }
+
+ /**
+ * 배너 관리자 리스트를 가지고 오는 메소드
+ * bannerSetIdx, column, search 에 해당하는 관리자 리스트 row개를 page페이지에 해당 하는 데이터를
+ * 가지고 오는 메소드
+ * select시 order, orderColumn조건에 해당하는 방식으로 정렬을 하게 된다.
+ * @param Integer bannerSetIdx 배너설정 idx
+ * @param int page 페이지 번호
+ * @param int row 페이지당 출력 개수
+ * @param Stirng orderColumn order by 에 사용할 컬럼 정보
+ * @param String order order by 에 사용할 정렬 기준 ex> DESC, ASC
+ * @param String column 검색 항목
+ * @param String search 검색 어
+ * @param String[] qryColumns select 할 컬럼 정보
+ * @return List 배너 관리자 리스트
+ * */
+ //ManagerBannerManagerService
+ @SuppressWarnings({ "unchecked", "deprecation" })
+ public List getBannerManagerList(String siteIdx, Integer memberIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_MANAGER.class);
+
+ criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
+ criteria.createCriteria("tBannerSet", "tBannerSet", 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= 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.eq("tBannerSet.tSite.siteIdx", siteIdx),
+ Restrictions.eq("tMember.memberIdx", memberIdx)));
+
+ if(!search.equals("")){
+ 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();
+ }
+
+ /**
+ * 배너 관리자 정보를 저장하는 메소드$
+ * @param T_BANNER_MANAGER tBannerManager 관리자 정보
+ * @return boolean 작업의 성공 여부
+ * */
+ //ManagerBannerManagerService
+ public boolean setBannerManagerRegProc(T_BANNER_MANAGER tBannerManager){
+
+ boolean success = false;
+
+ try{
+ this.sessionFactory.getCurrentSession().save(tBannerManager);
+ this.sessionFactory.getCurrentSession().flush();
+ this.sessionFactory.getCurrentSession().clear();
+ success = true;
+ }catch(HibernateException ex){
+ log.error("CHECK ERROR:",ex);
+ }
+
+ return success;
+ }
+
+ /**
+ * 배너 관리자 정보를 수정하는 메소드
+ * @param T_BANNER_MANAGER tBannerManager 배너관리자 객체
+ * @return boolean 작업 성공 여부
+ * */
+ //ManagerBannerManagerService, AdminMemberService, ManagerMemberService
+ public boolean setBannerManagerModProc(T_BANNER_MANAGER tBannerManager){
+
+ boolean success = false;
+
+ try{
+ this.sessionFactory.getCurrentSession().update(tBannerManager);
+ this.sessionFactory.getCurrentSession().flush();
+ this.sessionFactory.getCurrentSession().clear();
+ success = true;
+ }catch(HibernateException ex){
+ log.error("CHECK ERROR:",ex);
+ }
+
+ return success;
+ }
+
+ /**
+ * 배너 관리자 정보를 삭제 하는 메소드
+ * @param T_BANNER_MANAGER tBannerManager 삭제할 배너관리자 객체
+ * @return boolean 작업의 성공 여부
+ * */
+ //ManagerBannerManagerService
+ public boolean setBannerManagerDelProc(T_BANNER_MANAGER tBannerManager){
+
+ boolean success = false;
+
+ try{
+ this.sessionFactory.getCurrentSession().delete(tBannerManager);
+ this.sessionFactory.getCurrentSession().flush();
+ this.sessionFactory.getCurrentSession().clear();
+ success = true;
+ }catch(HibernateException ex){
+ log.error("CHECK ERROR:",ex);
+ }
+
+ return success;
+ }
+}
diff --git a/src/main/java/seed/dao/BannerSetDAO.java b/src/main/java/seed/dao/BannerSetDAO.java
new file mode 100644
index 00000000..2255151b
--- /dev/null
+++ b/src/main/java/seed/dao/BannerSetDAO.java
@@ -0,0 +1,32 @@
+package seed.dao;
+
+import java.util.List;
+
+import seed.map.T_BANNER_SET;
+
+public interface BannerSetDAO {
+
+ //AdminMemberService, ManagerMemberService
+ public List getBannerSetList(Integer memberIdx);
+
+ //AdminSiteService
+ public List getBannerSetList(String siteIdx, String[] qryColumns);
+
+ //ManagerBannerManagerService
+ public Long getBannerSetListCnt(String siteIdx, String column, String search);
+
+ //ManagerBannerManagerService
+ public List getBannerSetList(String siteIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns);
+
+ //ManagerBannerManagerService
+ public T_BANNER_SET getBannerSetForm(Integer bannerSetIdx);
+
+ //ManagerBannerManagerService
+ public T_BANNER_SET setBannerSetRegProc(T_BANNER_SET tBannerSet);
+
+ //ManagerBannerManagerService
+ public boolean setBannerSetModProc(T_BANNER_SET tBannerSet);
+
+ //ManagerBannerManagerService
+ public boolean setBannerSetDelProc(T_BANNER_SET tBannerSet);
+}
diff --git a/src/main/java/seed/dao/BannerSetDAOImpl.java b/src/main/java/seed/dao/BannerSetDAOImpl.java
new file mode 100644
index 00000000..a3cf2570
--- /dev/null
+++ b/src/main/java/seed/dao/BannerSetDAOImpl.java
@@ -0,0 +1,275 @@
+package seed.dao;
+
+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.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_BANNER_SET;
+
+/**
+ * T_BANNER_SET테이블의 증보를 SELECT, INSERT, UPDATE하는 DAO 클래스
+ * */
+@Repository
+public class BannerSetDAOImpl implements BannerSetDAO{
+
+ 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 getBannerSetList(Integer memberIdx){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_SET.class);
+
+ criteria.add(Restrictions.eq("tMember.memberIdx", memberIdx));
+
+ return criteria.list();
+ }
+
+ /**
+ * 배너 설정 리스트를 가지고 오는 메소드
+ * siteIdx에 해당하는 배너 설정 리스트를 가지고 오는 메소드
+ * @param String siteIdx 사이트 idx
+ * @param String[] qryColumns select할 컬럼 정보
+ * @return List 배너 설정 리스트
+ * */
+ //AdminSiteService
+ @SuppressWarnings("unchecked")
+ public List getBannerSetList(String siteIdx, String[] qryColumns){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_SET.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= 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("bannerSetIdx"));
+
+ return criteria.list();
+ }
+
+ /**
+ * 배너 설정 개수를 가지고 오는 메소드
+ * siteIdx, column, search에 해당하는 배너 설정 개수를 가지고 오는 메소드
+ * @param String siteIdx 사이트 idx
+ * @param String column 검색 항목
+ * @param String search 검색 어
+ * */
+ //ManagerBannerManagerService
+ @SuppressWarnings("deprecation")
+ public Long getBannerSetListCnt(String siteIdx, String column, String search){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_SET.class);
+
+ criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
+
+ criteria.add(Restrictions.eq("tSite.siteIdx", siteIdx));
+
+ if(!column.equals("")){
+ if(column.equals("A")){
+ if(!search.equals("")){
+ criteria.add(
+ Restrictions.or(
+ Restrictions.like("bannerSetName", 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();
+ }
+
+ /**
+ * 배너 설정 리스트를 가지고 오는 메소드
+ * stieIdx, column, search에 해당하는 배서 설정 리스트를 페이지 별로 가지고 오는 메소드
+ * @param String siteIdx 사이트 idx
+ * @param int page 출력할 페이지 번호
+ * @param int row 페이지당 출력 개수
+ * @param String orderColumn order by할 column정보
+ * @param String order order by 정렬기준 ex>DESC,ASC
+ * @param String column 검색 항목
+ * @param String search 검색 어
+ * @param String[] qryColumns select할 컬럼 정보
+ * @return List 배너 설정 리스트 정보
+ * */
+ //ManagerBannerManagerService
+ @SuppressWarnings({ "unchecked", "deprecation" })
+ public List getBannerSetList(String siteIdx, int page, int row, String orderColumn, String order, String column, String search, String[] qryColumns){
+
+ Criteria criteria = sessionFactory.getCurrentSession().createCriteria(T_BANNER_SET.class);
+
+ criteria.createCriteria("tMember", "tMember", Criteria.LEFT_JOIN);
+ criteria.createCriteria("tBannerDatas", "tBannerDatas", 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= 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("tSite.siteIdx", siteIdx));
+
+ if(!column.equals("")){
+ if(column.equals("A")){
+ if(!search.equals("")){
+ criteria.add(
+ Restrictions.or(
+ Restrictions.like("bannerSetName", 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();
+ }
+
+ /**
+ * 배너 설정 정보를 가지고 오는 메소드
+ * bannerSetIdx 정보에 해당하는 데이터를 가지고 오는 메소드
+ * @param Integer bannerSetIdx 배너 설정 idx
+ * @return T_BANNER_SET 배너 설정 정보
+ * */
+ //ManagerBannerManagerService
+ public T_BANNER_SET getBannerSetForm(Integer bannerSetIdx){
+
+ return (T_BANNER_SET) this.sessionFactory.getCurrentSession().load(T_BANNER_SET.class, bannerSetIdx);
+ }
+
+ /**
+ * 배너 설정 정보를 저장하는 메소드
+ * @param T_BANNER_SET tBannerSet 저장할 배너 설정 객체
+ * @return T_BANNER_SET 저장된 배너 설정 객체
+ * */
+ //ManagerBannerManagerService
+ public T_BANNER_SET setBannerSetRegProc(T_BANNER_SET tBannerSet){
+
+ try{
+ this.sessionFactory.getCurrentSession().save(tBannerSet);
+ this.sessionFactory.getCurrentSession().flush();
+ this.sessionFactory.getCurrentSession().clear();
+ }catch(HibernateException e){
+ log.error("CHECK ERROR:",e);
+ }
+
+ return getBannerSetForm(tBannerSet.getBannerSetIdx());
+ }
+
+ /**
+ * 배너 설정 정보를 저장하는 메소드
+ * @param T_BANNER_SET tBannerSet 저장할 배너 설정 객체
+ * @return T_BANNER_SET 저장된 배너 설정 객체
+ * */
+ //ManagerBannerManagerService
+ public boolean setBannerSetModProc(T_BANNER_SET tBannerSet){
+
+ boolean success = false;
+
+ try{
+ this.sessionFactory.getCurrentSession().update(tBannerSet);
+ this.sessionFactory.getCurrentSession().flush();
+ this.sessionFactory.getCurrentSession().clear();
+ success = true;
+ }catch(HibernateException e){
+ log.error("CHECK ERROR:",e);
+ }
+
+ return success;
+ }
+
+ /**
+ * 배너 설정 정보를 삭제 하는 메소드
+ * @param T_BANNER_SET tBannerSet 삭제할 배너 설정 객체
+ * @return boolean 작업 성공 여부
+ * */
+ //ManagerBannerManagerService
+ public boolean setBannerSetDelProc(T_BANNER_SET tBannerSet){
+
+ boolean success = false;
+
+ try{
+ this.sessionFactory.getCurrentSession().delete(tBannerSet);
+ this.sessionFactory.getCurrentSession().flush();
+ this.sessionFactory.getCurrentSession().clear();
+ success = true;
+ }catch(HibernateException e){
+ log.error("CHECK ERROR:",e);
+ }
+
+ return success;
+ }
+}
diff --git a/src/main/java/seed/dao/BbsAuthDAO.java b/src/main/java/seed/dao/BbsAuthDAO.java
new file mode 100644
index 00000000..c3e45633
--- /dev/null
+++ b/src/main/java/seed/dao/BbsAuthDAO.java
@@ -0,0 +1,30 @@
+package seed.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import seed.map.T_BBS_AUTH;
+
+public interface BbsAuthDAO {
+
+ //AdminMemberService, ManagerMemberService
+ public List getBbsAuthList(Integer memberIdx);
+
+ //ManagerBbsAuthService
+ public T_BBS_AUTH getBbsAuthForm(Integer bbsAuthIdx);
+
+ //ManagerBbsAuthService
+ public T_BBS_AUTH getBbsAuthForm(Integer bbsSetIdx, Integer groupLevel);
+
+ //ManagerBbsAuthService
+ public List getBbsAuthList(Integer bbsSetIdx, String[] qryColumns);
+
+ //UserBbsAuthService
+ public List