From 85a5f4cadc907bedf742f42a5173975439083808 Mon Sep 17 00:00:00 2001 From: leebj Date: Mon, 20 Jan 2025 16:20:24 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B5=9C=EC=B4=88=EC=BB=A4=EB=B0=8B(=EC=9D=BC?= =?UTF-8?q?=EB=B6=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 547 +++++++++++++++++ .../cmm/AltibaseClobStringTypeHandler.java | 110 ++++ .../com/cmm/ComDefaultCodeVO.java | 189 ++++++ .../egovframework/com/cmm/ComDefaultVO.java | 167 ++++++ .../com/cmm/EgovComCrossSiteHndlr.java | 408 +++++++++++++ .../com/cmm/EgovComExcepHndlr.java | 34 ++ .../com/cmm/EgovComOthersExcepHndlr.java | 16 + .../com/cmm/EgovComTraceHandler.java | 34 ++ .../com/cmm/EgovComponentChecker.java | 63 ++ .../com/cmm/EgovMessageSource.java | 55 ++ .../com/cmm/ImagePaginationRenderer.java | 48 ++ .../com/cmm/IncludedCompInfoVO.java | 50 ++ .../java/egovframework/com/cmm/LoginVO.java | 270 +++++++++ .../java/egovframework/com/cmm/SessionVO.java | 120 ++++ .../com/cmm/annotation/IncludedInfo.java | 33 ++ .../com/cmm/filter/HTMLTagFilter.java | 46 ++ .../filter/HTMLTagFilterRequestWrapper.java | 109 ++++ .../cmm/interceptor/AuthenticInterceptor.java | 60 ++ .../com/cmm/service/CmmnDetailCode.java | 194 ++++++ .../com/cmm/service/EgovCmmUseService.java | 64 ++ .../com/cmm/service/EgovFileMngService.java | 115 ++++ .../com/cmm/service/EgovProperties.java | 244 ++++++++ .../cmm/service/EgovUserDetailsService.java | 26 + .../egovframework/com/cmm/service/FileVO.java | 243 ++++++++ .../com/cmm/service/Globals.java | 30 + .../com/cmm/service/impl/CmmUseDAO.java | 63 ++ .../service/impl/EgovCmmUseServiceImpl.java | 95 +++ .../cmm/service/impl/EgovComAbstractDAO.java | 34 ++ .../service/impl/EgovFileMngServiceImpl.java | 167 ++++++ .../impl/EgovTestUserDetailsServiceImpl.java | 87 +++ .../EgovUserDetailsSessionServiceImpl.java | 67 +++ .../com/cmm/service/impl/FileManageDAO.java | 182 ++++++ .../com/cmm/util/EgovUserDetailsHelper.java | 72 +++ .../com/cmm/web/EgovBindingInitializer.java | 22 + .../com/cmm/web/EgovComUtlController.java | 80 +++ .../cmm/web/EgovFileDownloadController.java | 201 +++++++ .../com/cmm/web/EgovFileMngController.java | 157 +++++ .../cmm/web/EgovImageProcessController.java | 145 +++++ .../com/cmm/web/EgovMultipartResolver.java | 134 +++++ .../icsmw/common/service/CommonService.java | 20 + .../common/service/impl/CommonMapper.java | 31 + .../service/impl/CommonServiceImpl.java | 36 ++ .../gtpa/icsmw/common/web/BaseController.java | 28 + .../icsmw/common/web/CommonController.java | 76 +++ .../gtpa/icsmw/handler/ClobTypeHandler.java | 45 ++ .../gtpa/icsmw/handler/StringTypeHandler.java | 58 ++ .../gtpa/icsmw/home/web/InitController.java | 188 ++++++ .../icsmanager/service/IcsManagerService.java | 53 ++ .../service/impl/IcsManagerMapper.java | 111 ++++ .../service/impl/IcsManagerServiceImpl.java | 318 ++++++++++ .../icsmanager/web/IcsManagerController.java | 558 ++++++++++++++++++ .../interceptor/AccessStaticInterceptor.java | 59 ++ .../interceptor/AuthenticInterceptor.java | 75 +++ .../gtpa/icsmw/interceptor/MessageAdvice.java | 100 ++++ .../interceptor/SessionCheckInterceptor.java | 122 ++++ .../icsmw/login/service/LoginService.java | 12 + .../icsmw/login/service/impl/LoginMapper.java | 23 + .../login/service/impl/LoginServiceImpl.java | 77 +++ .../gtpa/icsmw/login/web/LoginController.java | 247 ++++++++ .../java/gtpa/icsmw/user/dto/TempCarInfo.java | 123 ++++ .../java/gtpa/icsmw/user/dto/TempPayInfo.java | 73 +++ .../user/dto/TempUserSessionInfoDTO.java | 283 +++++++++ .../java/gtpa/icsmw/user/dto/UserInfo.java | 302 ++++++++++ .../gtpa/icsmw/user/service/UserService.java | 33 ++ .../icsmw/user/service/impl/UserMapper.java | 43 ++ .../user/service/impl/UserServiceImpl.java | 46 ++ .../gtpa/icsmw/user/web/UserController.java | 47 ++ .../java/gtpa/icsmw/util/BrsIdGnrUtil.java | 69 +++ src/main/java/gtpa/icsmw/util/CertifiDAO.java | 65 ++ .../icsmw/util/CertificationKeyGenerator.java | 46 ++ .../gtpa/icsmw/util/HttpSessionRenew.java | 52 ++ .../java/gtpa/icsmw/util/MessageType.java | 6 + .../java/gtpa/icsmw/util/MessageUtils.java | 33 ++ .../java/gtpa/icsmw/util/PageURIUtil.java | 60 ++ src/main/java/gtpa/icsmw/util/Result.java | 177 ++++++ src/main/java/gtpa/icsmw/util/SHA256Util.java | 31 + 76 files changed, 8507 insertions(+) create mode 100644 pom.xml create mode 100644 src/main/java/egovframework/com/cmm/AltibaseClobStringTypeHandler.java create mode 100644 src/main/java/egovframework/com/cmm/ComDefaultCodeVO.java create mode 100644 src/main/java/egovframework/com/cmm/ComDefaultVO.java create mode 100644 src/main/java/egovframework/com/cmm/EgovComCrossSiteHndlr.java create mode 100644 src/main/java/egovframework/com/cmm/EgovComExcepHndlr.java create mode 100644 src/main/java/egovframework/com/cmm/EgovComOthersExcepHndlr.java create mode 100644 src/main/java/egovframework/com/cmm/EgovComTraceHandler.java create mode 100644 src/main/java/egovframework/com/cmm/EgovComponentChecker.java create mode 100644 src/main/java/egovframework/com/cmm/EgovMessageSource.java create mode 100644 src/main/java/egovframework/com/cmm/ImagePaginationRenderer.java create mode 100644 src/main/java/egovframework/com/cmm/IncludedCompInfoVO.java create mode 100644 src/main/java/egovframework/com/cmm/LoginVO.java create mode 100644 src/main/java/egovframework/com/cmm/SessionVO.java create mode 100644 src/main/java/egovframework/com/cmm/annotation/IncludedInfo.java create mode 100644 src/main/java/egovframework/com/cmm/filter/HTMLTagFilter.java create mode 100644 src/main/java/egovframework/com/cmm/filter/HTMLTagFilterRequestWrapper.java create mode 100644 src/main/java/egovframework/com/cmm/interceptor/AuthenticInterceptor.java create mode 100644 src/main/java/egovframework/com/cmm/service/CmmnDetailCode.java create mode 100644 src/main/java/egovframework/com/cmm/service/EgovCmmUseService.java create mode 100644 src/main/java/egovframework/com/cmm/service/EgovFileMngService.java create mode 100644 src/main/java/egovframework/com/cmm/service/EgovProperties.java create mode 100644 src/main/java/egovframework/com/cmm/service/EgovUserDetailsService.java create mode 100644 src/main/java/egovframework/com/cmm/service/FileVO.java create mode 100644 src/main/java/egovframework/com/cmm/service/Globals.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/CmmUseDAO.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/EgovCmmUseServiceImpl.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/EgovComAbstractDAO.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/EgovFileMngServiceImpl.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/EgovTestUserDetailsServiceImpl.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/EgovUserDetailsSessionServiceImpl.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/FileManageDAO.java create mode 100644 src/main/java/egovframework/com/cmm/util/EgovUserDetailsHelper.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovBindingInitializer.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovComUtlController.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovFileDownloadController.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovFileMngController.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovImageProcessController.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovMultipartResolver.java create mode 100644 src/main/java/gtpa/icsmw/common/service/CommonService.java create mode 100644 src/main/java/gtpa/icsmw/common/service/impl/CommonMapper.java create mode 100644 src/main/java/gtpa/icsmw/common/service/impl/CommonServiceImpl.java create mode 100644 src/main/java/gtpa/icsmw/common/web/BaseController.java create mode 100644 src/main/java/gtpa/icsmw/common/web/CommonController.java create mode 100644 src/main/java/gtpa/icsmw/handler/ClobTypeHandler.java create mode 100644 src/main/java/gtpa/icsmw/handler/StringTypeHandler.java create mode 100644 src/main/java/gtpa/icsmw/home/web/InitController.java create mode 100644 src/main/java/gtpa/icsmw/icsmanager/service/IcsManagerService.java create mode 100644 src/main/java/gtpa/icsmw/icsmanager/service/impl/IcsManagerMapper.java create mode 100644 src/main/java/gtpa/icsmw/icsmanager/service/impl/IcsManagerServiceImpl.java create mode 100644 src/main/java/gtpa/icsmw/icsmanager/web/IcsManagerController.java create mode 100644 src/main/java/gtpa/icsmw/interceptor/AccessStaticInterceptor.java create mode 100644 src/main/java/gtpa/icsmw/interceptor/AuthenticInterceptor.java create mode 100644 src/main/java/gtpa/icsmw/interceptor/MessageAdvice.java create mode 100644 src/main/java/gtpa/icsmw/interceptor/SessionCheckInterceptor.java create mode 100644 src/main/java/gtpa/icsmw/login/service/LoginService.java create mode 100644 src/main/java/gtpa/icsmw/login/service/impl/LoginMapper.java create mode 100644 src/main/java/gtpa/icsmw/login/service/impl/LoginServiceImpl.java create mode 100644 src/main/java/gtpa/icsmw/login/web/LoginController.java create mode 100644 src/main/java/gtpa/icsmw/user/dto/TempCarInfo.java create mode 100644 src/main/java/gtpa/icsmw/user/dto/TempPayInfo.java create mode 100644 src/main/java/gtpa/icsmw/user/dto/TempUserSessionInfoDTO.java create mode 100644 src/main/java/gtpa/icsmw/user/dto/UserInfo.java create mode 100644 src/main/java/gtpa/icsmw/user/service/UserService.java create mode 100644 src/main/java/gtpa/icsmw/user/service/impl/UserMapper.java create mode 100644 src/main/java/gtpa/icsmw/user/service/impl/UserServiceImpl.java create mode 100644 src/main/java/gtpa/icsmw/user/web/UserController.java create mode 100644 src/main/java/gtpa/icsmw/util/BrsIdGnrUtil.java create mode 100644 src/main/java/gtpa/icsmw/util/CertifiDAO.java create mode 100644 src/main/java/gtpa/icsmw/util/CertificationKeyGenerator.java create mode 100644 src/main/java/gtpa/icsmw/util/HttpSessionRenew.java create mode 100644 src/main/java/gtpa/icsmw/util/MessageType.java create mode 100644 src/main/java/gtpa/icsmw/util/MessageUtils.java create mode 100644 src/main/java/gtpa/icsmw/util/PageURIUtil.java create mode 100644 src/main/java/gtpa/icsmw/util/Result.java create mode 100644 src/main/java/gtpa/icsmw/util/SHA256Util.java diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d4f1ec9 --- /dev/null +++ b/pom.xml @@ -0,0 +1,547 @@ + + 4.0.0 + ICSMW + ICSMW + war + 1.0.0 + ICSMW + http://www.egovframe.go.kr + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + 4.1.36.RELEASE + 3.8.0 + + + + + mvn2 + http://repo1.maven.org/maven2/ + + true + + + true + + + + egovframe + http://www.egovframe.go.kr/maven/ + + true + + + false + + + + egovframe2 + http://maven.egovframe.kr:8080/maven/ + + true + + + false + + + + + + + egovframework.rte + egovframework.rte.ptl.mvc + ${egovframework.rte.version} + + + egovframework.rte + egovframework.rte.psl.dataaccess + ${egovframework.rte.version} + + + egovframework.rte + egovframework.rte.fdl.idgnr + ${egovframework.rte.version} + + + egovframework.rte + egovframework.rte.fdl.property + ${egovframework.rte.version} + + + egovframework.rte + egovframework.rte.fdl.string + ${egovframework.rte.version} + + + + javax.servlet + servlet-api + provided + 2.5 + + + + javax.servlet + jstl + 1.2 + + + + commons-dbcp + commons-dbcp + 1.4 + + + + commons-codec + commons-codec + 1.9 + + + + taglibs + standard + 1.1.2 + + + + cglib + cglib + 3.1 + + + + org.antlr + antlr + 3.5 + + + + org.apache.commons + commons-compress + 1.8.1 + + + org.apache.commons + commons-collections4 + 4.0 + + + + org.apache.httpcomponents + httpclient + 4.5.2 + + + + + org.apache.httpcomponents + httpmime + 4.5.2 + + + + + + junit + junit + 4.12 + test + + + + + com.tmax.tibero + tibero-jdbc + 6.0 + system + ${basedir}/src/main/webapp/WEB-INF/lib/tibero6-jdbc.jar + + + + + com.zaxxer + HikariCP + 3.2.0 + + + + commons-fileupload + commons-fileupload + 1.3.1 + + + + javax.servlet.jsp + jsp-api + 2.2 + provided + + + + com.ibm.icu + icu4j + 53.1 + + + + commons-io + commons-io + 1.4 + + + commons-logging + commons-logging + 1.0.4 + + + dom4j + dom4j + 1.6.1 + + + com.googlecode.json-simple + json-simple + 1.1 + + + net.sf.opencsv + opencsv + 1.8 + + + org.apache.xmlgraphics + fop + 1.0 + + + org.apache.poi + poi + 3.12 + + + + org.apache.poi + poi-ooxml + 3.12 + + + org.apache.poi + poi-excelant + 3.12 + + + org.apache.poi + poi-scratchpad + 3.12 + + + org.apache.xmlgraphics + batik-all + 1.7 + system + ${basedir}/src/main/webapp/WEB-INF/lib/batik-all-1.7.1-20150510.jar + + + batik + pdf-transcoder + 1.0 + system + ${basedir}/src/main/webapp/WEB-INF/lib/pdf-transcoder-1.0beta2.jar + + + xalan + xalan + 2.7.0 + + + xmlbeans + xbean_xpath + 2.4.0 + system + ${basedir}/src/main/webapp/WEB-INF/lib/xmlbeans_xpath-2.4.0.jar + + + xerces + xercesImpl + 2.7.1 + + + xml-apis + xml-apis + 1.4.01 + + + org.apache.xmlbeans + xmlbeans + 2.3.0 + + + org.apache.xmlbeans + xmlbeans-qname + 2.3.0 + + + org.apache.xmlbeans + xmlbeans-xmlpublic + 2.5.0 + + + + + xbean + xbean + 2.5 + system + ${basedir}/src/main/webapp/WEB-INF/lib/xbean.jar + + + + + websquare + websquare + 5.0_3.3643B + system + ${basedir}/src/main/webapp/WEB-INF/lib/websquare_5.0_3.3643B.20190521.175836_1.5.jar + + + + com.fasterxml.jackson.core + jackson-databind + 2.5.1 + + + org.springframework + spring-test + 4.3.18.RELEASE + test + + + org.hibernate + hibernate-validator-annotation-processor + 4.1.0.Final + + + NiceID + NiceID + RELEASE + system + ${basedir}/src/main/webapp/WEB-INF/lib/NiceID.jar + + + NiceID + CACheck + RELEASE + system + ${basedir}/src/main/webapp/WEB-INF/lib/CACheck_custom.jar + + + VNOInterop + KISINFO + RELEASE + system + ${basedir}/src/main/webapp/WEB-INF/lib/VNOInterop_custom.jar + + + eu.bitwalker + UserAgentUtils + 1.21 + + + + com.clipsoft + clipreport + 4.0-1.0.0.217 + system + ${project.basedir}/src/main/webapp/WEB-INF/lib/ClipReport4.0-1.0.0.217.jar + + + com.clipsoft + clipreport-Common + 4.0 + system + ${project.basedir}/src/main/webapp/WEB-INF/lib/ClipReport4.0-Common.jar + + + + javax.media + jai_codec + 1.1.3 + system + ${project.basedir}/src/main/webapp/WEB-INF/lib/jai_codec-1.1.3.jar + + + + javax.media + jai_core + 1.1.3 + system + ${project.basedir}/src/main/webapp/WEB-INF/lib/jai_core-1.1.3.jar + + + + + install + ${basedir}/target + ICSMW + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + 80 + / + + -Xms256m -Xmx768m -XX:MaxPermSize=256m + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + UTF-8 + + + + org.codehaus.mojo + hibernate3-maven-plugin + 2.1 + + + + hbm2ddl + annotationconfiguration + + + + + + + + org.codehaus.mojo + emma-maven-plugin + 1.0-alpha-3 + + + + org.apache.maven.plugins + maven-pmd-plugin + 3.1 + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + once + xml + + **/Abstract*.java + **/*Suite.java + + + **/*Test.java + + + + + org.codehaus.mojo + emma-maven-plugin + true + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + + + + ${basedir}/target/site + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 2.7 + + + sunlink + + javadoc + + true + + + http://docs.oracle.com/javase/6/docs/api/ + + + + + + + + org.codehaus.mojo + emma-maven-plugin + true + + + org.codehaus.mojo + surefire-report-maven-plugin + true + + + + report-only + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + 128m + 512m + ${encoding} + ${encoding} + ${encoding} + + + + + org.apache.maven.plugins + maven-jxr-plugin + + ${encoding} + ${encoding} + true + apidocs + + + + + + diff --git a/src/main/java/egovframework/com/cmm/AltibaseClobStringTypeHandler.java b/src/main/java/egovframework/com/cmm/AltibaseClobStringTypeHandler.java new file mode 100644 index 0000000..b599bbf --- /dev/null +++ b/src/main/java/egovframework/com/cmm/AltibaseClobStringTypeHandler.java @@ -0,0 +1,110 @@ +package egovframework.com.cmm; +/* + * Copyright 2002-2005 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.io.IOException; +import java.io.Reader; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.jdbc.support.lob.LobCreator; +import org.springframework.jdbc.support.lob.LobHandler; +import egovframework.rte.psl.orm.ibatis.support.AbstractLobTypeHandler; + +/** + * iBATIS TypeHandler implementation for Strings that get mapped to CLOBs. + * Retrieves the LobHandler to use from SqlMapClientFactoryBean at config time. + * + *

Particularly useful for storing Strings with more than 4000 characters in an + * Oracle database (only possible via CLOBs), in combination with OracleLobHandler. + * + *

Can also be defined in generic iBATIS mappings, as DefaultLobCreator will + * work with most JDBC-compliant database drivers. In this case, the field type + * does not have to be BLOB: For databases like MySQL and MS SQL Server, any + * large enough binary type will work. + * + * @author Juergen Hoeller + * @since 1.1.5 + * @see org.springframework.orm.ibatis.SqlMapClientFactoryBean#setLobHandler + */ +@SuppressWarnings("deprecation") +public class AltibaseClobStringTypeHandler extends AbstractLobTypeHandler { + + private static final Logger LOGGER = LoggerFactory.getLogger(AltibaseClobStringTypeHandler.class); + + /** + * Constructor used by iBATIS: fetches config-time LobHandler from + * SqlMapClientFactoryBean. + * @see org.springframework.orm.ibatis.SqlMapClientFactoryBean#getConfigTimeLobHandler + */ + public AltibaseClobStringTypeHandler() { + super(); + } + + /** + * Constructor used for testing: takes an explicit LobHandler. + */ + protected AltibaseClobStringTypeHandler(LobHandler lobHandler) { + super(lobHandler); + } + + protected void setParameterInternal( + PreparedStatement ps, int index, Object value, String jdbcType, LobCreator lobCreator) + throws SQLException { + lobCreator.setClobAsString(ps, index, (String) value); + } + + + protected Object getResultInternal(ResultSet rs, int index, LobHandler lobHandler) + throws SQLException { + + StringBuffer read_data = new StringBuffer(""); + int read_length; + + char [] buf = new char[1024]; + + Reader rd = lobHandler.getClobAsCharacterStream(rs, index); + try { + while( (read_length=rd.read(buf)) != -1) { + read_data.append(buf, 0, read_length); + } + } catch (IOException ie) { + LOGGER.debug("ie: {}", ie);//SQLException sqle = new SQLException(ie.getMessage()); + //throw sqle; + // 2011.10.10 보안점검 후속조치 + } finally { + if (rd != null) { + try { + rd.close(); + } catch (Exception ignore) { + LOGGER.debug("IGNORE: {}", ignore.getMessage()); + } + } + } + + return read_data.toString(); + + //return lobHandler.getClobAsString(rs, index); + } + + public Object valueOf(String s) { + return s; + } + +} diff --git a/src/main/java/egovframework/com/cmm/ComDefaultCodeVO.java b/src/main/java/egovframework/com/cmm/ComDefaultCodeVO.java new file mode 100644 index 0000000..4c38c76 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/ComDefaultCodeVO.java @@ -0,0 +1,189 @@ +package egovframework.com.cmm; + +import java.io.Serializable; + +import org.apache.commons.lang3.builder.ToStringBuilder; + +/** + * 클래스 + * @author 공통서비스개발팀 이삼섭 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *

+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------       --------    ---------------------------
+ *   2009.3.11   이삼섭          최초 생성
+ *
+ * 
+ */ +public class ComDefaultCodeVO implements Serializable { + /** + * serialVersion UID + */ + private static final long serialVersionUID = -2020648489890016404L; + + /** 코드 ID */ + private String codeId = ""; + + /** 상세코드 */ + private String code = ""; + + /** 코드명 */ + private String codeNm = ""; + + /** 코드설명 */ + private String codeDc = ""; + + /** 특정테이블명 */ + private String tableNm = ""; //특정테이블에서 코드정보를추출시 사용 + + /** 상세 조건 여부 */ + private String haveDetailCondition = "N"; + + /** 상세 조건 */ + private String detailCondition = ""; + + /** + * codeId attribute를 리턴한다. + * + * @return the codeId + */ + public String getCodeId() { + return codeId; + } + + /** + * codeId attribute 값을 설정한다. + * + * @param codeId + * the codeId to set + */ + public void setCodeId(String codeId) { + this.codeId = codeId; + } + + /** + * code attribute를 리턴한다. + * + * @return the code + */ + public String getCode() { + return code; + } + + /** + * code attribute 값을 설정한다. + * + * @param code + * the code to set + */ + public void setCode(String code) { + this.code = code; + } + + /** + * codeNm attribute를 리턴한다. + * + * @return the codeNm + */ + public String getCodeNm() { + return codeNm; + } + + /** + * codeNm attribute 값을 설정한다. + * + * @param codeNm + * the codeNm to set + */ + public void setCodeNm(String codeNm) { + this.codeNm = codeNm; + } + + /** + * codeDc attribute를 리턴한다. + * + * @return the codeDc + */ + public String getCodeDc() { + return codeDc; + } + + /** + * codeDc attribute 값을 설정한다. + * + * @param codeDc + * the codeDc to set + */ + public void setCodeDc(String codeDc) { + this.codeDc = codeDc; + } + + /** + * tableNm attribute를 리턴한다. + * + * @return the tableNm + */ + public String getTableNm() { + return tableNm; + } + + /** + * tableNm attribute 값을 설정한다. + * + * @param tableNm + * the tableNm to set + */ + public void setTableNm(String tableNm) { + this.tableNm = tableNm; + } + + /** + * haveDetailCondition attribute를 리턴한다. + * + * @return the haveDetailCondition + */ + public String getHaveDetailCondition() { + return haveDetailCondition; + } + + /** + * haveDetailCondition attribute 값을 설정한다. + * + * @param haveDetailCondition + * the haveDetailCondition to set + */ + public void setHaveDetailCondition(String haveDetailCondition) { + this.haveDetailCondition = haveDetailCondition; + } + + /** + * detailCondition attribute를 리턴한다. + * + * @return the detailCondition + */ + public String getDetailCondition() { + return detailCondition; + } + + /** + * detailCondition attribute 값을 설정한다. + * + * @param detailCondition + * the detailCondition to set + */ + public void setDetailCondition(String detailCondition) { + this.detailCondition = detailCondition; + } + + /** + * toString 메소드를 대치한다. + */ + public String toString() { + return ToStringBuilder.reflectionToString(this); + } +} diff --git a/src/main/java/egovframework/com/cmm/ComDefaultVO.java b/src/main/java/egovframework/com/cmm/ComDefaultVO.java new file mode 100644 index 0000000..b4c5e5f --- /dev/null +++ b/src/main/java/egovframework/com/cmm/ComDefaultVO.java @@ -0,0 +1,167 @@ +package egovframework.com.cmm; + +import java.io.Serializable; + +import org.apache.commons.lang3.builder.ToStringBuilder; + +/** + * @Class Name : ComDefaultVO.java + * @Description : ComDefaultVO class + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.02.01 조재영 최초 생성 + * + * @author 공통서비스 개발팀 조재영 + * @since 2009.02.01 + * @version 1.0 + * @see + * + */ +public class ComDefaultVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** 검색조건 */ + private String searchCondition = ""; + + /** 검색Keyword */ + private String searchKeyword = ""; + + /** 검색사용여부 */ + private String searchUseYn = ""; + + /** 현재페이지 */ + private int pageIndex = 1; + + /** 페이지갯수 */ + private int pageUnit = 10; + + /** 페이지사이즈 */ + private int pageSize = 10; + + /** firstIndex */ + private int firstIndex = 1; + + /** lastIndex */ + private int lastIndex = 1; + + /** recordCountPerPage */ + private int recordCountPerPage = 10; + + /** 검색KeywordFrom */ + private String searchKeywordFrom = ""; + + /** 검색KeywordTo */ + private String searchKeywordTo = ""; + + public int getFirstIndex() { + return firstIndex; + } + + public void setFirstIndex(int firstIndex) { + this.firstIndex = firstIndex; + } + + public int getLastIndex() { + return lastIndex; + } + + public void setLastIndex(int lastIndex) { + this.lastIndex = lastIndex; + } + + public int getRecordCountPerPage() { + return recordCountPerPage; + } + + public void setRecordCountPerPage(int recordCountPerPage) { + this.recordCountPerPage = recordCountPerPage; + } + + public String getSearchCondition() { + return searchCondition; + } + + public void setSearchCondition(String searchCondition) { + this.searchCondition = searchCondition; + } + + public String getSearchKeyword() { + return searchKeyword; + } + + public void setSearchKeyword(String searchKeyword) { + this.searchKeyword = searchKeyword; + } + + public String getSearchUseYn() { + return searchUseYn; + } + + public void setSearchUseYn(String searchUseYn) { + this.searchUseYn = searchUseYn; + } + + public int getPageIndex() { + return pageIndex; + } + + public void setPageIndex(int pageIndex) { + this.pageIndex = pageIndex; + } + + public int getPageUnit() { + return pageUnit; + } + + public void setPageUnit(int pageUnit) { + this.pageUnit = pageUnit; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + + + /** + * searchKeywordFrom attribute를 리턴한다. + * @return String + */ + public String getSearchKeywordFrom() { + return searchKeywordFrom; + } + + /** + * searchKeywordFrom attribute 값을 설정한다. + * @param searchKeywordFrom String + */ + public void setSearchKeywordFrom(String searchKeywordFrom) { + this.searchKeywordFrom = searchKeywordFrom; + } + + /** + * searchKeywordTo attribute를 리턴한다. + * @return String + */ + public String getSearchKeywordTo() { + return searchKeywordTo; + } + + /** + * searchKeywordTo attribute 값을 설정한다. + * @param searchKeywordTo String + */ + public void setSearchKeywordTo(String searchKeywordTo) { + this.searchKeywordTo = searchKeywordTo; + } +} diff --git a/src/main/java/egovframework/com/cmm/EgovComCrossSiteHndlr.java b/src/main/java/egovframework/com/cmm/EgovComCrossSiteHndlr.java new file mode 100644 index 0000000..71de8bf --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovComCrossSiteHndlr.java @@ -0,0 +1,408 @@ +package egovframework.com.cmm; + +import java.io.IOException; +import java.io.Reader; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.taglibs.standard.tag.common.core.Util; + +/** + * Cross-Site Scripting 체크하여 값을 되돌려 받는 핸들러 JSP TLD, 자바에서 사용가능 + * + * @author 공통서비스 장동한 + * @since 2010.11.09 + * @version 1.0 + * @see
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2010.11.09  장동한          최초 생성
+ *
+ * 
+ */ +public class EgovComCrossSiteHndlr extends BodyTagSupport { + + /* + * (One almost wishes XML and JSP could support "anonymous tags," given the + * amount of trouble we had naming this one!) :-) - sb + */ + + // ********************************************************************* + // Internal state + + private static final long serialVersionUID = -6750233818675360686L; + protected Object value; // tag attribute + protected String def; // tag attribute + protected boolean escapeXml; // tag attribute + private boolean needBody; // non-space body needed? + + // ********************************************************************* + // Construction and initialization + + private String m_sDiffChar ="()[]{}\"',:;= \t\r\n%!+-"; + //private String m_sDiffChar ="()[]{}\"',:;=%!+-"; + private String m_sArrDiffChar [] = { + "(",")", + "[","]", + "{","}", + ""","'", + ",",":", + ";","=", + " ","\t", //" ","\t", + "\r","\n", //"\r","\n", + "%","!", + "+","-" + }; + + /** + * Constructs a new handler. As with TagSupport, subclasses should not + * provide other constructors and are expected to call the superclass + * constructor. + */ + public EgovComCrossSiteHndlr() { + super(); + init(); + } + + // resets local state + private void init() { + value = def = null; + escapeXml = true; + needBody = false; + } + + // Releases any resources we may have (or inherit) + @Override + public void release() { + super.release(); + init(); + } + + // ********************************************************************* + // Tag logic + + // evaluates 'value' and determines if the body should be evaluted + @Override + public int doStartTag() throws JspException { + + needBody = false; // reset state related to 'default' + this.bodyContent = null; // clean-up body (just in case container is + // pooling tag handlers) + + JspWriter out = pageContext.getOut(); + //System.out.println("EgovComCrossSiteFilter> ============================"); + try { + // print value if available; otherwise, try 'default' + if (value != null) { + //System.out.println("EgovComCrossSiteFilter> =value"); + String sWriteEscapedXml = getWriteEscapedXml(); + //System.out.println("EgovComCrossSiteFilter sWriteEscapedXml>" + sWriteEscapedXml); + out.print(sWriteEscapedXml); + return SKIP_BODY; + } else { + // if we don't have a 'default' attribute, just go to the body + if (def == null) { + needBody = true; + return EVAL_BODY_BUFFERED; + } + + //System.out.println("EgovComCrossSiteFilter def> ="+def); + + // if we do have 'default', print it + if (def != null) { + // good 'default' + out(pageContext, escapeXml, def); + //System.out.println("EgovComCrossSiteFilter> ="+def); + } + return SKIP_BODY; + } + } catch (IOException ex) { + throw new JspException(ex.toString(), ex); + } + } + + // prints the body if necessary; reports errors + @Override + public int doEndTag() throws JspException { + try { + //System.out.println("EgovComCrossSiteFilter ==== doEndTag"); + if (!needBody){ + return EVAL_PAGE; // nothing more to do + } + + // trim and print out the body + if (bodyContent != null && bodyContent.getString() != null){ + //String sWriteEscapedXml = getWriteEscapedXml(); + //out2(pageContext, escapeXml, sWriteEscapedXml.toString()); + //System.out.println("EgovComCrossSiteFilter> end"); + //System.out.println("EgovComCrossSiteFilter sWriteEscapedXml > sWriteEscapedXml"); + out(pageContext, escapeXml, bodyContent.getString().trim()); + + } + return EVAL_PAGE; + } catch (IOException ex) { + throw new JspException(ex.toString(), ex); + } + } + + // ********************************************************************* + // Public utility methods + + /** + * Outputs text to pageContext's current JspWriter. If + * escapeXml is true, performs the following substring replacements + * (to facilitate output to XML/HTML pages): + * + * & -> & < -> < > -> > " -> " ' -> ' + * + * See also Util.escapeXml(). + */ + public static void out(PageContext pageContext, boolean escapeXml, + Object obj) throws IOException { + JspWriter w = pageContext.getOut(); + + if (!escapeXml) { + // write chars as is + if (obj instanceof Reader) { + Reader reader = (Reader) obj; + char[] buf = new char[4096]; + int count; + while ((count = reader.read(buf, 0, 4096)) != -1) { + w.write(buf, 0, count); + } + } else { + w.write(obj.toString()); + } + } else { + // escape XML chars + if (obj instanceof Reader) { + Reader reader = (Reader) obj; + char[] buf = new char[4096]; + int count; + while ((count = reader.read(buf, 0, 4096)) != -1) { + writeEscapedXml(buf, count, w); + } + } else { + String text = obj.toString(); + writeEscapedXml(text.toCharArray(), text.length(), w); + } + } + + } + public static void out2(PageContext pageContext, boolean escapeXml, + Object obj) throws IOException { + JspWriter w = pageContext.getOut(); + + w.write(obj.toString()); + + } + + /** + * + * Optimized to create no extra objects and write directly to the JspWriter + * using blocks of escaped and unescaped characters + * + */ + private static void writeEscapedXml(char[] buffer, int length, JspWriter w) + throws IOException { + int start = 0; + + for (int i = 0; i < length; i++) { + char c = buffer[i]; + if (c <= Util.HIGHEST_SPECIAL) { + char[] escaped = Util.specialCharactersRepresentation[c]; + if (escaped != null) { + // add unescaped portion + if (start < i) { + w.write(buffer, start, i - start); + } + // add escaped xml + w.write(escaped); + start = i + 1; + } + } + } + // add rest of unescaped portion + if (start < length) { + w.write(buffer, start, length - start); + } + } + + /** + * + * Optimized to create no extra objects and write directly to the JspWriter + * using blocks of escaped and unescaped characters + * + */ + @SuppressWarnings("unused") + private String getWriteEscapedXml() throws IOException { + String sRtn = ""; + + Object obj = this.value; + + int start = 0; + String text = obj.toString(); + + int length = text.length(); + char[] buffer = text.toCharArray(); + boolean booleanDiff = false; + //String sDiffChar + //String sArrDiffChar + char[] cDiffChar = this.m_sDiffChar.toCharArray(); + + for(int i = 0; i < length; i++) { + char c = buffer[i]; + + booleanDiff = false; + + for(int k = 0; k < cDiffChar.length; k++){ + if(c == cDiffChar[k]){ + sRtn = sRtn + m_sArrDiffChar[k]; + booleanDiff = true; + continue; + } + } + + if(booleanDiff) continue; + + if (c <= Util.HIGHEST_SPECIAL) { + char[] escaped = Util.specialCharactersRepresentation[c]; + if (escaped != null) { + // add unescaped portion + //if (start < i) { + // sRtn = sRtn + text.substring(start, i - start); + //} + // add escaped xml + //sRtn = sRtn + escaped; + //System.out.println(buffer[i]+" :: " + escaped); + for (int j = 0; j < escaped.length; j++) { + //System.out.println(buffer[i]+" :>: " + escaped[j]); + sRtn = sRtn + escaped[j]; + } + //sRtn = sRtn+ escaped.toString(); + //sRtn = sRtn + String.valueOf(buffer[i]); + start = i + 1; + }else{ + sRtn = sRtn + c; + } + }else{ + sRtn = sRtn + c; + } + } + + return sRtn; + } + + /** + * + * Optimized to create no extra objects and write directly to the JspWriter + * using blocks of escaped and unescaped characters + * + */ + @SuppressWarnings("unused") + private String getWriteEscapedXml(String sWriteString) throws IOException { + + String sRtn = ""; + + Object obj = sWriteString; + + int start = 0; + String text = obj.toString(); + + int length = text.length(); + char[] buffer = text.toCharArray(); + boolean booleanDiff = false; + //String sDiffChar + //String sArrDiffChar + char[] cDiffChar = this.m_sDiffChar.toCharArray(); + + for(int i = 0; i < length; i++) { + char c = buffer[i]; + + booleanDiff = false; + + for(int k = 0; k < cDiffChar.length; k++){ + if(c == cDiffChar[k]){ + sRtn = sRtn + m_sArrDiffChar[k]; + booleanDiff = true; + continue; + } + } + + if(booleanDiff) continue; + + if (c <= Util.HIGHEST_SPECIAL) { + char[] escaped = Util.specialCharactersRepresentation[c]; + if (escaped != null) { + // add unescaped portion + //if (start < i) { + // sRtn = sRtn + text.substring(start, i - start); + //} + // add escaped xml + //sRtn = sRtn + escaped; + //System.out.println(buffer[i]+" :: " + escaped); + for (int j = 0; j < escaped.length; j++) { + //System.out.println(buffer[i]+" :>: " + escaped[j]); + sRtn = sRtn + escaped[j]; + } + //sRtn = sRtn+ escaped.toString(); + //sRtn = sRtn + String.valueOf(buffer[i]); + start = i + 1; + }else{ + sRtn = sRtn + c; + } + }else{ + sRtn = sRtn + c; + } + } + + return sRtn; + } + + // for tag attribute + public void setValue(Object value) { + this.value = value; + } + + // for tag attribute + public void setDefault(String def) { + this.def = def; + } + + // for tag attribute + public void setEscapeXml(boolean escapeXml) { + this.escapeXml = escapeXml; + } + /* + public static void main(String[] args) throws IOException + { + + EgovComCrossSiteHndlr egovComCrossSiteHndlr = new EgovComCrossSiteHndlr(); + + egovComCrossSiteHndlr.value = "TRNSMIT"; + + String sCrossSiteHndlr = egovComCrossSiteHndlr.getWriteEscapedXml(); + //System.out.println("writeEscapedXml " + egovComCrossSiteHndlr.getWriteEscapedXml()); + + System.out.println("sCrossSiteHndlr|"+ sCrossSiteHndlr + "|"); + + try{ + System.out.println("TRY TEST 1"); + throw new Exception(); + }catch(Exception e){ + System.out.println("TRY TEST 2"); + }finally{ + System.out.println("TRY TEST 3"); + + } + + } + */ + } + + diff --git a/src/main/java/egovframework/com/cmm/EgovComExcepHndlr.java b/src/main/java/egovframework/com/cmm/EgovComExcepHndlr.java new file mode 100644 index 0000000..089833d --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovComExcepHndlr.java @@ -0,0 +1,34 @@ +package egovframework.com.cmm; + +import egovframework.rte.fdl.cmmn.exception.handler.ExceptionHandler; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @Class Name : EgovComExcepHndlr.java + * @Description : 공통서비스의 exception 처리 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 13. 이삼섭 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 13. + * @version + * @see + * + */ +public class EgovComExcepHndlr implements ExceptionHandler { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovComExcepHndlr.class); + + /** + * 발생된 Exception을 처리한다. + */ + public void occur(Exception ex, String packageName) { + LOGGER.debug("[HANDLER][PACKAGE]::: {}", packageName); + LOGGER.debug("[HANDLER][Exception]:::", ex); + } +} diff --git a/src/main/java/egovframework/com/cmm/EgovComOthersExcepHndlr.java b/src/main/java/egovframework/com/cmm/EgovComOthersExcepHndlr.java new file mode 100644 index 0000000..cc7b2f1 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovComOthersExcepHndlr.java @@ -0,0 +1,16 @@ +package egovframework.com.cmm; + +import egovframework.rte.fdl.cmmn.exception.handler.ExceptionHandler; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class EgovComOthersExcepHndlr implements ExceptionHandler { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovComOthersExcepHndlr.class); + + public void occur(Exception exception, String packageName) { + //log.debug(" EgovServiceExceptionHandler run..............."); + LOGGER.error(packageName, exception); + } +} diff --git a/src/main/java/egovframework/com/cmm/EgovComTraceHandler.java b/src/main/java/egovframework/com/cmm/EgovComTraceHandler.java new file mode 100644 index 0000000..e2c7c22 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovComTraceHandler.java @@ -0,0 +1,34 @@ +package egovframework.com.cmm; + +import egovframework.rte.fdl.cmmn.trace.handler.TraceHandler; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @Class Name : EgovComTraceHandler.java + * @Description : 공통서비스의 trace 처리 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2011. 09. 30. JJY + * + * @author JJY + * @since 2011. 9. 30. + * + */ +public class EgovComTraceHandler implements TraceHandler { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovComTraceHandler.class); + + /** + * 발생된 메시지를 출력한다. + */ + public void todo(Class clazz, String message) { + //System.out.println("log ==> DefaultTraceHandler run..............."); + LOGGER.debug("[TRACE]CLASS::: {}", clazz.getName()); + LOGGER.debug("[TRACE]MESSAGE::: {}", message); + //이곳에서 후속처리로 필요한 액션을 취할 수 있다. + } +} diff --git a/src/main/java/egovframework/com/cmm/EgovComponentChecker.java b/src/main/java/egovframework/com/cmm/EgovComponentChecker.java new file mode 100644 index 0000000..357cdd8 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovComponentChecker.java @@ -0,0 +1,63 @@ +package egovframework.com.cmm; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Service; + + +/** + * EgovComUtil 클래스 + * + * @author 서준식 + * @since 2011.09.15 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    -------------    ----------------------
+ *   2011.09.15  서준식        최초 생성
+ * 
+ */ + +@Service("egovUtil") +public class EgovComponentChecker extends EgovAbstractServiceImpl implements ApplicationContextAware{ + + + public static ApplicationContext context; + + @Override + @SuppressWarnings("static-access") + public void setApplicationContext(ApplicationContext context) + throws BeansException { + + this.context = context; + } + + /** + * Spring MVC에서 설정한 빈이 아닌 서비스 빈(컴포넌트)만을 검색할 수 있음 + * + */ + public static boolean hasComponent(String componentName){ + + try{ + Object component = context.getBean(componentName); + + if(component == null){ + return false; + }else{ + return true; + } + + }catch(NoSuchBeanDefinitionException ex){// 해당 컴포넌트를 찾을 수없을 경우 false반환 + return false; + } + } + +} diff --git a/src/main/java/egovframework/com/cmm/EgovMessageSource.java b/src/main/java/egovframework/com/cmm/EgovMessageSource.java new file mode 100644 index 0000000..63a1d5b --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovMessageSource.java @@ -0,0 +1,55 @@ +package egovframework.com.cmm; + +import java.util.Locale; + +import org.springframework.context.MessageSource; +import org.springframework.context.support.ReloadableResourceBundleMessageSource; + +/** + * 메시지 리소스 사용을 위한 MessageSource 인터페이스 및 ReloadableResourceBundleMessageSource 클래스의 구현체 + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *   
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2009.03.11  이문준          최초 생성
+ *
+ * 
+ */ + +public class EgovMessageSource extends ReloadableResourceBundleMessageSource implements MessageSource { + + private ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource; + + /** + * getReloadableResourceBundleMessageSource() + * @param reloadableResourceBundleMessageSource - resource MessageSource + * @return ReloadableResourceBundleMessageSource + */ + public void setReloadableResourceBundleMessageSource(ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource) { + this.reloadableResourceBundleMessageSource = reloadableResourceBundleMessageSource; + } + + /** + * getReloadableResourceBundleMessageSource() + * @return ReloadableResourceBundleMessageSource + */ + public ReloadableResourceBundleMessageSource getReloadableResourceBundleMessageSource() { + return reloadableResourceBundleMessageSource; + } + + /** + * 정의된 메세지 조회 + * @param code - 메세지 코드 + * @return String + */ + public String getMessage(String code) { + return getReloadableResourceBundleMessageSource().getMessage(code, null, Locale.getDefault()); + } + +} diff --git a/src/main/java/egovframework/com/cmm/ImagePaginationRenderer.java b/src/main/java/egovframework/com/cmm/ImagePaginationRenderer.java new file mode 100644 index 0000000..ce1e152 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/ImagePaginationRenderer.java @@ -0,0 +1,48 @@ +package egovframework.com.cmm; + +import egovframework.rte.ptl.mvc.tags.ui.pagination.AbstractPaginationRenderer; + +import javax.servlet.ServletContext; + +import org.springframework.web.context.ServletContextAware; +/** + * ImagePaginationRenderer.java 클래스 + * + * @author 서준식 + * @since 2011. 9. 16. + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *   
+ *   수정일      수정자           수정내용
+ *  -------    -------------    ----------------------
+ *   2011. 9. 16.   서준식       이미지 경로에 ContextPath추가
+ * 
+ */ +public class ImagePaginationRenderer extends AbstractPaginationRenderer implements ServletContextAware{ + + private ServletContext servletContext; + + public ImagePaginationRenderer() { + + } + + public void initVariables(){ + firstPageLabel = "
  •  
  • \"처음\"
  • "; + previousPageLabel = "
  • \"이전\"
  • "; + currentPageLabel = "
  • {0}
  • "; + otherPageLabel = "
  • {2}
  • "; + nextPageLabel = "
  •  \"다음\"
  • "; + lastPageLabel = "
  • \"마지막\"
  • "; + } + + + + public void setServletContext(ServletContext servletContext) { + this.servletContext = servletContext; + initVariables(); + } + +} diff --git a/src/main/java/egovframework/com/cmm/IncludedCompInfoVO.java b/src/main/java/egovframework/com/cmm/IncludedCompInfoVO.java new file mode 100644 index 0000000..c4cfdbd --- /dev/null +++ b/src/main/java/egovframework/com/cmm/IncludedCompInfoVO.java @@ -0,0 +1,50 @@ +package egovframework.com.cmm; + +/** + * IncludedInfo annotation을 바탕으로 화면에 표시할 정보를 구성하기 위한 VO 클래스 + * @author 공통컴포넌트 정진오 + * @since 2011.08.26 + * @version 2.0.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *  수정일		수정자		수정내용
    + *  -------    	--------    ---------------------------
    + *  2011.08.26	정진오 		최초 생성
    + *
    + * 
    + */ +public class IncludedCompInfoVO { + + private String name; + private String listUrl; + private int order; + private int gid; + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getListUrl() { + return listUrl; + } + public void setListUrl(String listUrl) { + this.listUrl = listUrl; + } + public int getOrder() { + return order; + } + public void setOrder(int order) { + this.order = order; + } + public int getGid() { + return gid; + } + public void setGid(int gid) { + this.gid = gid; + } +} diff --git a/src/main/java/egovframework/com/cmm/LoginVO.java b/src/main/java/egovframework/com/cmm/LoginVO.java new file mode 100644 index 0000000..84dd358 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/LoginVO.java @@ -0,0 +1,270 @@ +package egovframework.com.cmm; + +import java.io.Serializable; + +/** + * @Class Name : LoginVO.java + * @Description : Login VO class + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.03 박지욱 최초 생성 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.03 + * @version 1.0 + * @see + * + */ +public class LoginVO implements Serializable{ + + /** + * + */ + private static final long serialVersionUID = -8274004534207618049L; + + /** 아이디 */ + private String id; + /** 이름 */ + private String name; + /** 주민등록번호 */ + private String ihidNum; + /** 이메일주소 */ + private String email; + /** 비밀번호 */ + private String password; + /** 비밀번호 힌트 */ + private String passwordHint; + /** 비밀번호 정답 */ + private String passwordCnsr; + /** 사용자구분 */ + private String userSe; + /** 조직(부서)ID */ + private String orgnztId; + /** 조직(부서)명 */ + private String orgnztNm; + /** 고유아이디 */ + private String uniqId; + /** 로그인 후 이동할 페이지 */ + private String url; + /** 사용자 IP정보 */ + private String ip; + /** GPKI인증 DN */ + private String dn; + /** + * id attribute 를 리턴한다. + * @return String + */ + public String getId() { + return id; + } + /** + * id attribute 값을 설정한다. + * @param id String + */ + public void setId(String id) { + this.id = id; + } + /** + * name attribute 를 리턴한다. + * @return String + */ + public String getName() { + return name; + } + /** + * name attribute 값을 설정한다. + * @param name String + */ + public void setName(String name) { + this.name = name; + } + /** + * ihidNum attribute 를 리턴한다. + * @return String + */ + public String getIhidNum() { + return ihidNum; + } + /** + * ihidNum attribute 값을 설정한다. + * @param ihidNum String + */ + public void setIhidNum(String ihidNum) { + this.ihidNum = ihidNum; + } + /** + * email attribute 를 리턴한다. + * @return String + */ + public String getEmail() { + return email; + } + /** + * email attribute 값을 설정한다. + * @param email String + */ + public void setEmail(String email) { + this.email = email; + } + /** + * password attribute 를 리턴한다. + * @return String + */ + public String getPassword() { + return password; + } + /** + * password attribute 값을 설정한다. + * @param password String + */ + public void setPassword(String password) { + this.password = password; + } + /** + * passwordHint attribute 를 리턴한다. + * @return String + */ + public String getPasswordHint() { + return passwordHint; + } + /** + * passwordHint attribute 값을 설정한다. + * @param passwordHint String + */ + public void setPasswordHint(String passwordHint) { + this.passwordHint = passwordHint; + } + /** + * passwordCnsr attribute 를 리턴한다. + * @return String + */ + public String getPasswordCnsr() { + return passwordCnsr; + } + /** + * passwordCnsr attribute 값을 설정한다. + * @param passwordCnsr String + */ + public void setPasswordCnsr(String passwordCnsr) { + this.passwordCnsr = passwordCnsr; + } + /** + * userSe attribute 를 리턴한다. + * @return String + */ + public String getUserSe() { + return userSe; + } + /** + * userSe attribute 값을 설정한다. + * @param userSe String + */ + public void setUserSe(String userSe) { + this.userSe = userSe; + } + /** + * orgnztId attribute 를 리턴한다. + * @return String + */ + public String getOrgnztId() { + return orgnztId; + } + /** + * orgnztId attribute 값을 설정한다. + * @param orgnztId String + */ + public void setOrgnztId(String orgnztId) { + this.orgnztId = orgnztId; + } + /** + * uniqId attribute 를 리턴한다. + * @return String + */ + public String getUniqId() { + return uniqId; + } + /** + * uniqId attribute 값을 설정한다. + * @param uniqId String + */ + public void setUniqId(String uniqId) { + this.uniqId = uniqId; + } + /** + * url attribute 를 리턴한다. + * @return String + */ + public String getUrl() { + return url; + } + /** + * url attribute 값을 설정한다. + * @param url String + */ + public void setUrl(String url) { + this.url = url; + } + /** + * ip attribute 를 리턴한다. + * @return String + */ + public String getIp() { + return ip; + } + /** + * ip attribute 값을 설정한다. + * @param ip String + */ + public void setIp(String ip) { + this.ip = ip; + } + /** + * dn attribute 를 리턴한다. + * @return String + */ + public String getDn() { + return dn; + } + /** + * dn attribute 값을 설정한다. + * @param dn String + */ + public void setDn(String dn) { + this.dn = dn; + } + /** + * @return the orgnztNm + */ + public String getOrgnztNm() { + return orgnztNm; + } + /** + * @param orgnztNm the orgnztNm to set + */ + public void setOrgnztNm(String orgnztNm) { + this.orgnztNm = orgnztNm; + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("LoginVO{"); + sb.append("id='").append(id).append('\''); + sb.append(", name='").append(name).append('\''); + sb.append(", ihidNum='").append(ihidNum).append('\''); + sb.append(", email='").append(email).append('\''); + sb.append(", password='").append(password).append('\''); + sb.append(", passwordHint='").append(passwordHint).append('\''); + sb.append(", passwordCnsr='").append(passwordCnsr).append('\''); + sb.append(", userSe='").append(userSe).append('\''); + sb.append(", orgnztId='").append(orgnztId).append('\''); + sb.append(", orgnztNm='").append(orgnztNm).append('\''); + sb.append(", uniqId='").append(uniqId).append('\''); + sb.append(", url='").append(url).append('\''); + sb.append(", ip='").append(ip).append('\''); + sb.append(", dn='").append(dn).append('\''); + sb.append('}'); + return sb.toString(); + } +} diff --git a/src/main/java/egovframework/com/cmm/SessionVO.java b/src/main/java/egovframework/com/cmm/SessionVO.java new file mode 100644 index 0000000..125bc2d --- /dev/null +++ b/src/main/java/egovframework/com/cmm/SessionVO.java @@ -0,0 +1,120 @@ +package egovframework.com.cmm; + +import java.io.Serializable; + +/** + * 세션 VO 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.06 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.06  박지욱          최초 생성
    + *
    + *  
    + */ +public class SessionVO implements Serializable { + + private static final long serialVersionUID = -2848741427493626376L; + /** 아이디 */ + private String sUserId; + /** 이름 */ + private String sUserNm; + /** 이메일 */ + private String sEmail; + /** 사용자구분 */ + private String sUserSe; + /** 조직(부서)ID */ + private String orgnztId; + /** 고유아이디 */ + private String uniqId; + /** + * sUserId attribute 를 리턴한다. + * @return String + */ + public String getSUserId() { + return sUserId; + } + /** + * sUserId attribute 값을 설정한다. + * @param sUserId String + */ + public void setSUserId(String userId) { + sUserId = userId; + } + /** + * sUserNm attribute 를 리턴한다. + * @return String + */ + public String getSUserNm() { + return sUserNm; + } + /** + * sUserNm attribute 값을 설정한다. + * @param sUserNm String + */ + public void setSUserNm(String userNm) { + sUserNm = userNm; + } + /** + * sEmail attribute 를 리턴한다. + * @return String + */ + public String getSEmail() { + return sEmail; + } + /** + * sEmail attribute 값을 설정한다. + * @param sEmail String + */ + public void setSEmail(String email) { + sEmail = email; + } + /** + * sUserSe attribute 를 리턴한다. + * @return String + */ + public String getSUserSe() { + return sUserSe; + } + /** + * sUserSe attribute 값을 설정한다. + * @param sUserSe String + */ + public void setSUserSe(String userSe) { + sUserSe = userSe; + } + /** + * orgnztId attribute 를 리턴한다. + * @return String + */ + public String getOrgnztId() { + return orgnztId; + } + /** + * orgnztId attribute 값을 설정한다. + * @param orgnztId String + */ + public void setOrgnztId(String orgnztId) { + this.orgnztId = orgnztId; + } + /** + * uniqId attribute 를 리턴한다. + * @return String + */ + public String getUniqId() { + return uniqId; + } + /** + * uniqId attribute 값을 설정한다. + * @param uniqId String + */ + public void setUniqId(String uniqId) { + this.uniqId = uniqId; + } +} diff --git a/src/main/java/egovframework/com/cmm/annotation/IncludedInfo.java b/src/main/java/egovframework/com/cmm/annotation/IncludedInfo.java new file mode 100644 index 0000000..a88f458 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/annotation/IncludedInfo.java @@ -0,0 +1,33 @@ +package egovframework.com.cmm.annotation; + +/** + * 컴포넌트의 포함 정보 표현을 위한 annotation 클래스 + * 기본적으로 Controller 클래스에 annotation을 부여하되, + * 하나의 Controller에 여러 개의 목록성 url mapping이 제공되는 경우에는 + * 메소드에 annotation을 부여한다. + * @author 공통컴포넌트 정진오 + * @since 2011.08.26 + * @version 2.0.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *  수정일		수정자		수정내용
    + *  -------    	--------    ---------------------------
    + *  2011.08.26	정진오 		최초 생성
    + *
    + * 
    + */ + + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface IncludedInfo { + String name() default ""; // 컴포넌트의 한글 이름 + String listUrl() default ""; // 컴포넌트의 목록정보조회를 위한 URL + int order() default 0; // 자동 생성되는 메뉴 목록에 표시되는 순서 + int gid() default 0; // 컴포넌트의 Group ID(대분류 구분) +} diff --git a/src/main/java/egovframework/com/cmm/filter/HTMLTagFilter.java b/src/main/java/egovframework/com/cmm/filter/HTMLTagFilter.java new file mode 100644 index 0000000..9be2b92 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/filter/HTMLTagFilter.java @@ -0,0 +1,46 @@ +/* + * Copyright 2008-2009 MOPAS(Ministry of Public Administration and Security). + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package egovframework.com.cmm.filter; + +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; + +public class HTMLTagFilter implements Filter{ + + @SuppressWarnings("unused") + private FilterConfig config; + + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + + chain.doFilter(new HTMLTagFilterRequestWrapper((HttpServletRequest)request), response); + } + + public void init(FilterConfig config) throws ServletException { + this.config = config; + } + + public void destroy() { + + } +} diff --git a/src/main/java/egovframework/com/cmm/filter/HTMLTagFilterRequestWrapper.java b/src/main/java/egovframework/com/cmm/filter/HTMLTagFilterRequestWrapper.java new file mode 100644 index 0000000..ece38a4 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/filter/HTMLTagFilterRequestWrapper.java @@ -0,0 +1,109 @@ +/* + * Copyright 2008-2009 MOPAS(Ministry of Public Administration and Security). + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package egovframework.com.cmm.filter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; + +public class HTMLTagFilterRequestWrapper extends HttpServletRequestWrapper { + + public HTMLTagFilterRequestWrapper(HttpServletRequest request) { + super(request); + } + + public String[] getParameterValues(String parameter) { + + String[] values = super.getParameterValues(parameter); + + if(values==null){ + return null; + } + + for (int i = 0; i < values.length; i++) { + if (values[i] != null) { + StringBuffer strBuff = new StringBuffer(); + for (int j = 0; j < values[i].length(); j++) { + char c = values[i].charAt(j); + switch (c) { + case '<': + strBuff.append("<"); + break; + case '>': + strBuff.append(">"); + break; + //case '&': + //strBuff.append("&"); + //break; + case '"': + strBuff.append("""); + break; + case '\'': + strBuff.append("'"); + break; + default: + strBuff.append(c); + break; + } + } + values[i] = strBuff.toString(); + } else { + values[i] = null; + } + } + + return values; + } + + public String getParameter(String parameter) { + + String value = super.getParameter(parameter); + + if(value==null){ + return null; + } + + StringBuffer strBuff = new StringBuffer(); + + for (int i = 0; i < value.length(); i++) { + char c = value.charAt(i); + switch (c) { + case '<': + strBuff.append("<"); + break; + case '>': + strBuff.append(">"); + break; + case '&': + strBuff.append("&"); + break; + case '"': + strBuff.append("""); + break; + case '\'': + strBuff.append("'"); + break; + default: + strBuff.append(c); + break; + } + } + + value = strBuff.toString(); + + return value; + } + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/cmm/interceptor/AuthenticInterceptor.java b/src/main/java/egovframework/com/cmm/interceptor/AuthenticInterceptor.java new file mode 100644 index 0000000..9cbf01f --- /dev/null +++ b/src/main/java/egovframework/com/cmm/interceptor/AuthenticInterceptor.java @@ -0,0 +1,60 @@ +package egovframework.com.cmm.interceptor; + +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.util.EgovUserDetailsHelper; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.ModelAndViewDefiningException; +import org.springframework.web.servlet.mvc.WebContentInterceptor; + +import java.io.IOException; + +/** + * 인증여부 체크 인터셉터 + * @author 공통서비스 개발팀 서준식 + * @since 2011.07.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011.07.01  서준식          최초 생성
    + *  2011.09.07  서준식          인증이 필요없는 URL을 패스하는 로직 추가
    + *  2014.06.11  이기하          인증이 필요없는 URL을 패스하는 로직 삭제(xml로 대체)
    + *  
    + */ + +public class AuthenticInterceptor extends WebContentInterceptor { + + /** + * 세션에 계정정보(LoginVO)가 있는지 여부로 인증 여부를 체크한다. + * 계정정보(LoginVO)가 없다면, 로그인 페이지로 이동한다. + */ + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { + LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + boolean isBool = EgovUserDetailsHelper.isAuthenticated(); + //System.out.println(isBool); + Object loginSession = request.getSession().getAttribute("LoginVO"); + //System.out.println(loginVO); + //System.out.println(loginSession); + String reqUrl = request.getRequestURI(); + String w2xPath = request.getParameter("w2xPath"); + + if (loginSession != null) { + return true; + } else { + ModelAndView modelAndView = new ModelAndView("redirect:/login/loginUsr.do"); + throw new ModelAndViewDefiningException(modelAndView); + } + } + +} diff --git a/src/main/java/egovframework/com/cmm/service/CmmnDetailCode.java b/src/main/java/egovframework/com/cmm/service/CmmnDetailCode.java new file mode 100644 index 0000000..620289b --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/CmmnDetailCode.java @@ -0,0 +1,194 @@ +package egovframework.com.cmm.service; + +import java.io.Serializable; + +/** + * 공통상세코드 모델 클래스 + * @author 공통서비스 개발팀 이중호 + * @since 2009.04.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.04.01  이중호          최초 생성
    + *
    + * 
    + */ +public class CmmnDetailCode implements Serializable { + + private static final long serialVersionUID = -6508801327314181679L; + + /* + * 코드ID + */ + private String codeId = ""; + + /* + * 코드ID명 + */ + private String codeIdNm = ""; + + /* + * 코드 + */ + private String code = ""; + + /* + * 코드명 + */ + private String codeNm = ""; + + /* + * 코드설명 + */ + private String codeDc = ""; + + /* + * 사용여부 + */ + private String useAt = ""; + + /* + * 최초등록자ID + */ + private String frstRegisterId = ""; + + /* + * 최종수정자ID + */ + private String lastUpdusrId = ""; + + /** + * codeId attribute 를 리턴한다. + * @return String + */ + public String getCodeId() { + return codeId; + } + + /** + * codeId attribute 값을 설정한다. + * @param codeId String + */ + public void setCodeId(String codeId) { + this.codeId = codeId; + } + + /** + * codeIdNm attribute 를 리턴한다. + * @return String + */ + public String getCodeIdNm() { + return codeIdNm; + } + + /** + * codeIdNm attribute 값을 설정한다. + * @param codeIdNm String + */ + public void setCodeIdNm(String codeIdNm) { + this.codeIdNm = codeIdNm; + } + + /** + * code attribute 를 리턴한다. + * @return String + */ + public String getCode() { + return code; + } + + /** + * code attribute 값을 설정한다. + * @param code String + */ + public void setCode(String code) { + this.code = code; + } + + /** + * codeNm attribute 를 리턴한다. + * @return String + */ + public String getCodeNm() { + return codeNm; + } + + /** + * codeNm attribute 값을 설정한다. + * @param codeNm String + */ + public void setCodeNm(String codeNm) { + this.codeNm = codeNm; + } + + /** + * codeDc attribute 를 리턴한다. + * @return String + */ + public String getCodeDc() { + return codeDc; + } + + /** + * codeDc attribute 값을 설정한다. + * @param codeDc String + */ + public void setCodeDc(String codeDc) { + this.codeDc = codeDc; + } + + /** + * useAt attribute 를 리턴한다. + * @return String + */ + public String getUseAt() { + return useAt; + } + + /** + * useAt attribute 값을 설정한다. + * @param useAt String + */ + public void setUseAt(String useAt) { + this.useAt = useAt; + } + + /** + * frstRegisterId attribute 를 리턴한다. + * @return String + */ + public String getFrstRegisterId() { + return frstRegisterId; + } + + /** + * frstRegisterId attribute 값을 설정한다. + * @param frstRegisterId String + */ + public void setFrstRegisterId(String frstRegisterId) { + this.frstRegisterId = frstRegisterId; + } + + /** + * lastUpdusrId attribute 를 리턴한다. + * @return String + */ + public String getLastUpdusrId() { + return lastUpdusrId; + } + + /** + * lastUpdusrId attribute 값을 설정한다. + * @param lastUpdusrId String + */ + public void setLastUpdusrId(String lastUpdusrId) { + this.lastUpdusrId = lastUpdusrId; + } + + +} diff --git a/src/main/java/egovframework/com/cmm/service/EgovCmmUseService.java b/src/main/java/egovframework/com/cmm/service/EgovCmmUseService.java new file mode 100644 index 0000000..54a0d03 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/EgovCmmUseService.java @@ -0,0 +1,64 @@ +package egovframework.com.cmm.service; + +import java.util.List; +import java.util.Map; + +import egovframework.com.cmm.ComDefaultCodeVO; + + + +/** + * + * 공통코드등 전체 업무에서 공용해서 사용해야 하는 서비스를 정의하기 위한 서비스 인터페이스 + * @author 공통서비스 개발팀 이삼섭 + * @since 2009.04.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.11  이삼섭          최초 생성
    + *
    + * 
    + */ +public interface EgovCmmUseService { + + /** + * 공통코드를 조회한다. + * + * @param vo + * @return List(코드) + * @throws Exception + */ + public List selectCmmCodeDetail(ComDefaultCodeVO vo) throws Exception; + + /** + * ComDefaultCodeVO의 리스트를 받아서 여러개의 코드 리스트를 맵에 담아서 리턴한다. + * + * @param voList + * @return Map(코드) + * @throws Exception + */ + public Map> selectCmmCodeDetails(List voList) throws Exception; + + /** + * 조직정보를 코드형태로 리턴한다. + * + * @param 조회조건정보 vo + * @return 조직정보 List + * @throws Exception + */ + public List selectOgrnztIdDetail(ComDefaultCodeVO vo) throws Exception; + + /** + * 그룹정보를 코드형태로 리턴한다. + * + * @param 조회조건정보 vo + * @return 그룹정보 List + * @throws Exception + */ + public List selectGroupIdDetail(ComDefaultCodeVO vo) throws Exception; +} diff --git a/src/main/java/egovframework/com/cmm/service/EgovFileMngService.java b/src/main/java/egovframework/com/cmm/service/EgovFileMngService.java new file mode 100644 index 0000000..677c16b --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/EgovFileMngService.java @@ -0,0 +1,115 @@ +package egovframework.com.cmm.service; + +import java.util.List; +import java.util.Map; + +/** + * @Class Name : EgovFileMngService.java + * @Description : 파일정보의 관리를 위한 서비스 인터페이스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 25. 이삼섭 최초생성 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 25. + * @version + * @see + * + */ +public interface EgovFileMngService { + + /** + * 파일에 대한 목록을 조회한다. + * + * @param fvo + * @return + * @throws Exception + */ + public List selectFileInfs(FileVO fvo) throws Exception; + + /** + * 하나의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @param fvo + * @throws Exception + */ + public String insertFileInf(FileVO fvo) throws Exception; + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @param fvoList + * @throws Exception + */ + public String insertFileInfs(List fvoList) throws Exception; + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 수정한다. + * + * @param fvoList + * @throws Exception + */ + public void updateFileInfs(List fvoList) throws Exception; + + /** + * 여러 개의 파일을 삭제한다. + * + * @param fvoList + * @throws Exception + */ + public void deleteFileInfs(List fvoList) throws Exception; + + /** + * 하나의 파일을 삭제한다. + * + * @param fvo + * @throws Exception + */ + public void deleteFileInf(FileVO fvo) throws Exception; + + /** + * 파일에 대한 상세정보를 조회한다. + * + * @param fvo + * @return + * @throws Exception + */ + public FileVO selectFileInf(FileVO fvo) throws Exception; + + /** + * 파일 구분자에 대한 최대값을 구한다. + * + * @param fvo + * @return + * @throws Exception + */ + public int getMaxFileSN(FileVO fvo) throws Exception; + + /** + * 전체 파일을 삭제한다. + * + * @param fvo + * @throws Exception + */ + public void deleteAllFileInf(FileVO fvo) throws Exception; + + /** + * 파일명 검색에 대한 목록을 조회한다. + * + * @param fvo + * @return + * @throws Exception + */ + public Map selectFileListByFileNm(FileVO fvo) throws Exception; + + /** + * 이미지 파일에 대한 목록을 조회한다. + * + * @param vo + * @return + * @throws Exception + */ + public List selectImageFileList(FileVO vo) throws Exception; +} diff --git a/src/main/java/egovframework/com/cmm/service/EgovProperties.java b/src/main/java/egovframework/com/cmm/service/EgovProperties.java new file mode 100644 index 0000000..f1236da --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/EgovProperties.java @@ -0,0 +1,244 @@ +package egovframework.com.cmm.service; + +import java.io.File; +import java.io.FileInputStream; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +//import java.io.FileNotFoundException; +//import java.io.IOException; +//import java.util.Properties; +/** + * Class Name : EgovProperties.java + * Description : properties값들을 파일로부터 읽어와 Globals클래스의 정적변수로 로드시켜주는 클래스로 + * 문자열 정보 기준으로 사용할 전역변수를 시스템 재시작으로 반영할 수 있도록 한다. + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.01.19 박지욱 최초 생성 + * 2011.07.20 서준식 Globals파일의 상대경로를 읽은 메서드 추가 + * 2011.08.31 JJY 경량환경 템플릿 커스터마이징버전 생성 + * + * @author 공통 서비스 개발팀 박지욱 + * @since 2009. 01. 19 + * @version 1.0 + * @see + * + */ + +public class EgovProperties{ + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovProperties.class); + + //프로퍼티값 로드시 에러발생하면 반환되는 에러문자열 + public static final String ERR_CODE =" EXCEPTION OCCURRED"; + public static final String ERR_CODE_FNFE =" EXCEPTION(FNFE) OCCURRED"; + public static final String ERR_CODE_IOE =" EXCEPTION(IOE) OCCURRED"; + + //파일구분자 + static final char FILE_SEPARATOR = File.separatorChar; + + //프로퍼티 파일의 물리적 위치 + /*public static final String GLOBALS_PROPERTIES_FILE + = System.getProperty("user.home") + System.getProperty("file.separator") + "egovProps" + + System.getProperty("file.separator") + "globals.properties";*/ + + public static final String RELATIVE_PATH_PREFIX = EgovProperties.class.getResource("").getPath() + + System.getProperty("file.separator") + ".." + System.getProperty("file.separator") + + ".." + System.getProperty("file.separator") + ".." + System.getProperty("file.separator"); + + public static final String GLOBALS_PROPERTIES_FILE + = RELATIVE_PATH_PREFIX + "egovProps" + System.getProperty("file.separator") + "globals.properties"; + + + + /** + * 인자로 주어진 문자열을 Key값으로 하는 상대경로 프로퍼티 값을 절대경로로 반환한다(Globals.java 전용) + * @param keyName String + * @return String + + public static String getPathProperty(String keyName){ + String value = ERR_CODE; + value="99"; + debug(GLOBALS_PROPERTIES_FILE + " : " + keyName); + FileInputStream fis = null; + try{ + Properties props = new Properties(); + fis = new FileInputStream(GLOBALS_PROPERTIES_FILE); + props.load(new java.io.BufferedInputStream(fis)); + value = props.getProperty(keyName).trim(); + value = RELATIVE_PATH_PREFIX + "egovProps" + System.getProperty("file.separator") + value; + }catch(FileNotFoundException fne){ + debug(fne); + }catch(IOException ioe){ + debug(ioe); + }catch(Exception e){ + debug(e); + }finally{ + try { + if (fis != null) fis.close(); + } catch (Exception ex) { + ex.printStackTrace(); + } + + } + return value; + } +*/ + + /** + * 인자로 주어진 문자열을 Key값으로 하는 프로퍼티 값을 반환한다(Globals.java 전용) + * @param keyName String + * @return String + + public static String getProperty(String keyName){ + String value = ERR_CODE; + value="99"; + debug(GLOBALS_PROPERTIES_FILE + " : " + keyName); + FileInputStream fis = null; + try{ + Properties props = new Properties(); + fis = new FileInputStream(GLOBALS_PROPERTIES_FILE); + props.load(new java.io.BufferedInputStream(fis)); + value = props.getProperty(keyName).trim(); + }catch(FileNotFoundException fne){ + debug(fne); + }catch(IOException ioe){ + debug(ioe); + }catch(Exception e){ + debug(e); + }finally{ + try { + if (fis != null) fis.close(); + } catch (Exception ex) { + ex.printStackTrace(); + } + + } + return value; + } + */ + /** + * 주어진 파일에서 인자로 주어진 문자열을 Key값으로 하는 프로퍼티 상대 경로값을 절대 경로값으로 반환한다 + * @param fileName String + * @param key String + * @return String + + public static String getPathProperty(String fileName, String key){ + FileInputStream fis = null; + try{ + java.util.Properties props = new java.util.Properties(); + fis = new FileInputStream(fileName); + props.load(new java.io.BufferedInputStream(fis)); + fis.close(); + + String value = props.getProperty(key); + value = RELATIVE_PATH_PREFIX + "egovProps" + System.getProperty("file.separator") + value; + return value; + }catch(java.io.FileNotFoundException fne){ + return ERR_CODE_FNFE; + }catch(java.io.IOException ioe){ + return ERR_CODE_IOE; + }finally{ + try { + if (fis != null) fis.close(); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + } + */ + + /** + * 주어진 파일에서 인자로 주어진 문자열을 Key값으로 하는 프로퍼티 값을 반환한다 + * @param fileName String + * @param key String + * @return String + + public static String getProperty(String fileName, String key){ + FileInputStream fis = null; + try{ + java.util.Properties props = new java.util.Properties(); + fis = new FileInputStream(fileName); + props.load(new java.io.BufferedInputStream(fis)); + fis.close(); + + String value = props.getProperty(key); + return value; + }catch(java.io.FileNotFoundException fne){ + return ERR_CODE_FNFE; + }catch(java.io.IOException ioe){ + return ERR_CODE_IOE; + }finally{ + try { + if (fis != null) fis.close(); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + } + */ + /** + * 주어진 프로파일의 내용을 파싱하여 (key-value) 형태의 구조체 배열을 반환한다. + * @param property String + * @return ArrayList + */ + @SuppressWarnings("unused") + public static ArrayList> loadPropertyFile(String property){ + + // key - value 형태로 된 배열 결과 + ArrayList> keyList = new ArrayList>(); + + String src = property.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + FileInputStream fis = null; + try + { + + File srcFile = new File(src); + if (srcFile.exists()) { + + java.util.Properties props = new java.util.Properties(); + fis = new FileInputStream(src); + props.load(new java.io.BufferedInputStream(fis)); + fis.close(); + + int i = 0; + Enumeration plist = props.propertyNames(); + if (plist != null) { + while (plist.hasMoreElements()) { + Map map = new HashMap(); + String key = (String)plist.nextElement(); + map.put(key, props.getProperty(key)); + keyList.add(map); + } + } + } + } catch (Exception ex){ + debug("EX:"+ex); + } finally { + try { + if (fis != null) fis.close(); + } catch (Exception ex) { + debug("EX:"+ex); + } + } + + return keyList; + } + + /** + * 시스템 로그를 출력한다. + * @param obj Object + */ + private static void debug(Object obj) { + if (obj instanceof java.lang.Exception) { + LOGGER.debug("IGNORED: {}", ((Exception)obj).getMessage()); + } + } +} + diff --git a/src/main/java/egovframework/com/cmm/service/EgovUserDetailsService.java b/src/main/java/egovframework/com/cmm/service/EgovUserDetailsService.java new file mode 100644 index 0000000..796f5ef --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/EgovUserDetailsService.java @@ -0,0 +1,26 @@ +package egovframework.com.cmm.service; + +import java.util.List; + +public interface EgovUserDetailsService { + + /** + * 인증된 사용자객체를 VO형식으로 가져온다. + * @return Object - 사용자 ValueObject + */ + public Object getAuthenticatedUser(); + + /** + * 인증된 사용자의 권한 정보를 가져온다. + * 예) [ROLE_ADMIN, ROLE_USER, ROLE_A, ROLE_B, ROLE_RESTRICTED, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED, IS_AUTHENTICATED_ANONYMOUSLY] + * @return List - 사용자 권한정보 목록 + */ + public List getAuthorities(); + + /** + * 인증된 사용자 여부를 체크한다. + * @return Boolean - 인증된 사용자 여부(TRUE / FALSE) + */ + public Boolean isAuthenticated(); + +} diff --git a/src/main/java/egovframework/com/cmm/service/FileVO.java b/src/main/java/egovframework/com/cmm/service/FileVO.java new file mode 100644 index 0000000..fc11853 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/FileVO.java @@ -0,0 +1,243 @@ +package egovframework.com.cmm.service; + +import java.io.Serializable; + +import org.apache.commons.lang3.builder.ToStringBuilder; + +/** + * @Class Name : FileVO.java + * @Description : 파일정보 처리를 위한 VO 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 25. 이삼섭 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 25. + * @version + * @see + * + */ +public class FileVO implements Serializable { + + /** + * serialVersion UID + */ + private static final long serialVersionUID = -287950405903719128L; + /** + * 첨부파일 아이디 + */ + public String atchFileId = ""; + /** + * 생성일자 + */ + public String creatDt = ""; + /** + * 파일내용 + */ + public String fileCn = ""; + /** + * 파일확장자 + */ + public String fileExtsn = ""; + /** + * 파일크기 + */ + public String fileMg = ""; + /** + * 파일연번 + */ + public String fileSn = ""; + /** + * 파일저장경로 + */ + public String fileStreCours = ""; + /** + * 원파일명 + */ + public String orignlFileNm = ""; + /** + * 저장파일명 + */ + public String streFileNm = ""; + + /** + * atchFileId attribute를 리턴한다. + * + * @return the atchFileId + */ + public String getAtchFileId() { + return atchFileId; + } + + /** + * atchFileId attribute 값을 설정한다. + * + * @param atchFileId + * the atchFileId to set + */ + public void setAtchFileId(String atchFileId) { + this.atchFileId = atchFileId; + } + + /** + * creatDt attribute를 리턴한다. + * + * @return the creatDt + */ + public String getCreatDt() { + return creatDt; + } + + /** + * creatDt attribute 값을 설정한다. + * + * @param creatDt + * the creatDt to set + */ + public void setCreatDt(String creatDt) { + this.creatDt = creatDt; + } + + /** + * fileCn attribute를 리턴한다. + * + * @return the fileCn + */ + public String getFileCn() { + return fileCn; + } + + /** + * fileCn attribute 값을 설정한다. + * + * @param fileCn + * the fileCn to set + */ + public void setFileCn(String fileCn) { + this.fileCn = fileCn; + } + + /** + * fileExtsn attribute를 리턴한다. + * + * @return the fileExtsn + */ + public String getFileExtsn() { + return fileExtsn; + } + + /** + * fileExtsn attribute 값을 설정한다. + * + * @param fileExtsn + * the fileExtsn to set + */ + public void setFileExtsn(String fileExtsn) { + this.fileExtsn = fileExtsn; + } + + /** + * fileMg attribute를 리턴한다. + * + * @return the fileMg + */ + public String getFileMg() { + return fileMg; + } + + /** + * fileMg attribute 값을 설정한다. + * + * @param fileMg + * the fileMg to set + */ + public void setFileMg(String fileMg) { + this.fileMg = fileMg; + } + + /** + * fileSn attribute를 리턴한다. + * + * @return the fileSn + */ + public String getFileSn() { + return fileSn; + } + + /** + * fileSn attribute 값을 설정한다. + * + * @param fileSn + * the fileSn to set + */ + public void setFileSn(String fileSn) { + this.fileSn = fileSn; + } + + /** + * fileStreCours attribute를 리턴한다. + * + * @return the fileStreCours + */ + public String getFileStreCours() { + return fileStreCours; + } + + /** + * fileStreCours attribute 값을 설정한다. + * + * @param fileStreCours + * the fileStreCours to set + */ + public void setFileStreCours(String fileStreCours) { + this.fileStreCours = fileStreCours; + } + + /** + * orignlFileNm attribute를 리턴한다. + * + * @return the orignlFileNm + */ + public String getOrignlFileNm() { + return orignlFileNm; + } + + /** + * orignlFileNm attribute 값을 설정한다. + * + * @param orignlFileNm + * the orignlFileNm to set + */ + public void setOrignlFileNm(String orignlFileNm) { + this.orignlFileNm = orignlFileNm; + } + + /** + * streFileNm attribute를 리턴한다. + * + * @return the streFileNm + */ + public String getStreFileNm() { + return streFileNm; + } + + /** + * streFileNm attribute 값을 설정한다. + * + * @param streFileNm + * the streFileNm to set + */ + public void setStreFileNm(String streFileNm) { + this.streFileNm = streFileNm; + } + + /** + * toString 메소드를 대치한다. + */ + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + +} diff --git a/src/main/java/egovframework/com/cmm/service/Globals.java b/src/main/java/egovframework/com/cmm/service/Globals.java new file mode 100644 index 0000000..75b758a --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/Globals.java @@ -0,0 +1,30 @@ +package egovframework.com.cmm.service; + +/** + * Class Name : Globals.java + * Description : 시스템 구동 시 프로퍼티를 통해 사용될 전역변수를 정의한다. + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.01.19 박지욱 최초 생성 + * + * @author 공통 서비스 개발팀 박지욱 + * @since 2009. 01. 19 + * @version 1.0 + * @see + * + */ + +public class Globals { + //파일 업로드 원 파일명 + public static final String ORIGIN_FILE_NM = "originalFileName"; + //파일 확장자 + public static final String FILE_EXT = "fileExtension"; + //파일크기 + public static final String FILE_SIZE = "fileSize"; + //업로드된 파일명 + public static final String UPLOAD_FILE_NM = "uploadFileName"; + //파일경로 + public static final String FILE_PATH = "filePath"; +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/CmmUseDAO.java b/src/main/java/egovframework/com/cmm/service/impl/CmmUseDAO.java new file mode 100644 index 0000000..0b744a4 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/CmmUseDAO.java @@ -0,0 +1,63 @@ +package egovframework.com.cmm.service.impl; + +import java.util.List; + +import egovframework.com.cmm.ComDefaultCodeVO; +import egovframework.com.cmm.service.CmmnDetailCode; + +import org.springframework.stereotype.Repository; + +/** + * @Class Name : CmmUseDAO.java + * @Description : 공통코드등 전체 업무에서 공용해서 사용해야 하는 서비스를 정의하기위한 데이터 접근 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 11. 이삼섭 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 11. + * @version + * @see + * + */ +@Repository("cmmUseDAO") +public class CmmUseDAO extends EgovComAbstractDAO { + + /** + * 주어진 조건에 따른 공통코드를 불러온다. + * + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectCmmCodeDetail(ComDefaultCodeVO vo) throws Exception { + return (List) list("CmmUseDAO.selectCmmCodeDetail", vo); + } + + /** + * 공통코드로 사용할 조직정보를 를 불러온다. + * + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectOgrnztIdDetail(ComDefaultCodeVO vo) throws Exception { + return (List) list("CmmUseDAO.selectOgrnztIdDetail", vo); + } + + /** + * 공통코드로 사용할그룹정보를 를 불러온다. + * + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectGroupIdDetail(ComDefaultCodeVO vo) throws Exception { + return (List) list("CmmUseDAO.selectGroupIdDetail", vo); + } +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/EgovCmmUseServiceImpl.java b/src/main/java/egovframework/com/cmm/service/impl/EgovCmmUseServiceImpl.java new file mode 100644 index 0000000..e344e8b --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/EgovCmmUseServiceImpl.java @@ -0,0 +1,95 @@ +package egovframework.com.cmm.service.impl; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import egovframework.com.cmm.ComDefaultCodeVO; +import egovframework.com.cmm.service.CmmnDetailCode; +import egovframework.com.cmm.service.EgovCmmUseService; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +/** + * @Class Name : EgovCmmUseServiceImpl.java + * @Description : 공통코드등 전체 업무에서 공용해서 사용해야 하는 서비스를 정의하기위한 서비스 구현 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 11. 이삼섭 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 11. + * @version + * @see + * + */ +@Service("EgovCmmUseService") +public class EgovCmmUseServiceImpl extends EgovAbstractServiceImpl implements EgovCmmUseService { + + @Resource(name = "cmmUseDAO") + private CmmUseDAO cmmUseDAO; + + /** + * 공통코드를 조회한다. + * + * @param vo + * @return + * @throws Exception + */ + @Override + public List selectCmmCodeDetail(ComDefaultCodeVO vo) throws Exception { + return cmmUseDAO.selectCmmCodeDetail(vo); + } + + /** + * ComDefaultCodeVO의 리스트를 받아서 여러개의 코드 리스트를 맵에 담아서 리턴한다. + * + * @param voList + * @return + * @throws Exception + */ + @Override + public Map> selectCmmCodeDetails(List voList) throws Exception { + ComDefaultCodeVO vo; + Map> map = new HashMap>(); + + Iterator iter = voList.iterator(); + while (iter.hasNext()) { + vo = (ComDefaultCodeVO) iter.next(); + map.put(vo.getCodeId(), cmmUseDAO.selectCmmCodeDetail(vo)); + } + + return map; + } + + /** + * 조직정보를 코드형태로 리턴한다. + * + * @param 조회조건정보 vo + * @return 조직정보 List + * @throws Exception + */ + @Override + public List selectOgrnztIdDetail(ComDefaultCodeVO vo) throws Exception { + return cmmUseDAO.selectOgrnztIdDetail(vo); + } + + /** + * 그룹정보를 코드형태로 리턴한다. + * + * @param 조회조건정보 vo + * @return 그룹정보 List + * @throws Exception + */ + @Override + public List selectGroupIdDetail(ComDefaultCodeVO vo) throws Exception { + return cmmUseDAO.selectGroupIdDetail(vo); + } +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/EgovComAbstractDAO.java b/src/main/java/egovframework/com/cmm/service/impl/EgovComAbstractDAO.java new file mode 100644 index 0000000..4719bdd --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/EgovComAbstractDAO.java @@ -0,0 +1,34 @@ +package egovframework.com.cmm.service.impl; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; + +import javax.annotation.Resource; + +import com.ibatis.sqlmap.client.SqlMapClient; + +/** + * EgovComAbstractDAO.java 클래스 + * + * @author 서준식 + * @since 2011. 9. 23. + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    -------------    ----------------------
    + *   2011. 9. 23.   서준식        최초 생성
    + * 
    + */ +public abstract class EgovComAbstractDAO extends EgovAbstractDAO{ + + + @Resource(name="egov.sqlMapClient") + public void setSuperSqlMapClient(SqlMapClient sqlMapClient) { + super.setSuperSqlMapClient(sqlMapClient); + } + + +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/EgovFileMngServiceImpl.java b/src/main/java/egovframework/com/cmm/service/impl/EgovFileMngServiceImpl.java new file mode 100644 index 0000000..d22b9b6 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/EgovFileMngServiceImpl.java @@ -0,0 +1,167 @@ +package egovframework.com.cmm.service.impl; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import egovframework.com.cmm.service.EgovFileMngService; +import egovframework.com.cmm.service.FileVO; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +/** + * @Class Name : EgovFileMngServiceImpl.java + * @Description : 파일정보의 관리를 위한 구현 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 25. 이삼섭 최초생성 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 25. + * @version + * @see + * + */ +@Service("EgovFileMngService") +public class EgovFileMngServiceImpl extends EgovAbstractServiceImpl implements EgovFileMngService { + + @Resource(name = "FileManageDAO") + private FileManageDAO fileMngDAO; + + /** + * 여러 개의 파일을 삭제한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#deleteFileInfs(java.util.List) + */ + @Override + public void deleteFileInfs(List fvoList) throws Exception { + fileMngDAO.deleteFileInfs(fvoList); + } + + /** + * 하나의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#insertFileInf(egovframework.com.cmm.service.FileVO) + */ + @Override + public String insertFileInf(FileVO fvo) throws Exception { + String atchFileId = fvo.getAtchFileId(); + + fileMngDAO.insertFileInf(fvo); + + return atchFileId; + } + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#insertFileInfs(java.util.List) + */ + @Override + public String insertFileInfs(List fvoList) throws Exception { + String atchFileId = ""; + + if (fvoList.size() != 0) { + atchFileId = fileMngDAO.insertFileInfs(fvoList); + } + if(atchFileId == ""){ + atchFileId = null; + } + return atchFileId; + } + + /** + * 파일에 대한 목록을 조회한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#selectFileInfs(egovframework.com.cmm.service.FileVO) + */ + @Override + public List selectFileInfs(FileVO fvo) throws Exception { + return fileMngDAO.selectFileInfs(fvo); + } + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 수정한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#updateFileInfs(java.util.List) + */ + @Override + public void updateFileInfs(List fvoList) throws Exception { + //Delete & Insert + fileMngDAO.updateFileInfs(fvoList); + } + + /** + * 하나의 파일을 삭제한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#deleteFileInf(egovframework.com.cmm.service.FileVO) + */ + @Override + public void deleteFileInf(FileVO fvo) throws Exception { + fileMngDAO.deleteFileInf(fvo); + } + + /** + * 파일에 대한 상세정보를 조회한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#selectFileInf(egovframework.com.cmm.service.FileVO) + */ + @Override + public FileVO selectFileInf(FileVO fvo) throws Exception { + return fileMngDAO.selectFileInf(fvo); + } + + /** + * 파일 구분자에 대한 최대값을 구한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#getMaxFileSN(egovframework.com.cmm.service.FileVO) + */ + @Override + public int getMaxFileSN(FileVO fvo) throws Exception { + return fileMngDAO.getMaxFileSN(fvo); + } + + /** + * 전체 파일을 삭제한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#deleteAllFileInf(egovframework.com.cmm.service.FileVO) + */ + @Override + public void deleteAllFileInf(FileVO fvo) throws Exception { + fileMngDAO.deleteAllFileInf(fvo); + } + + /** + * 파일명 검색에 대한 목록을 조회한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#selectFileListByFileNm(egovframework.com.cmm.service.FileVO) + */ + @Override + public Map selectFileListByFileNm(FileVO fvo) throws Exception { + List result = fileMngDAO.selectFileListByFileNm(fvo); + int cnt = fileMngDAO.selectFileListCntByFileNm(fvo); + + Map map = new HashMap(); + + map.put("resultList", result); + map.put("resultCnt", Integer.toString(cnt)); + + return map; + } + + /** + * 이미지 파일에 대한 목록을 조회한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#selectImageFileList(egovframework.com.cmm.service.FileVO) + */ + @Override + public List selectImageFileList(FileVO vo) throws Exception { + return fileMngDAO.selectImageFileList(vo); + } +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/EgovTestUserDetailsServiceImpl.java b/src/main/java/egovframework/com/cmm/service/impl/EgovTestUserDetailsServiceImpl.java new file mode 100644 index 0000000..f64190a --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/EgovTestUserDetailsServiceImpl.java @@ -0,0 +1,87 @@ +package egovframework.com.cmm.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.service.EgovUserDetailsService; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +/** + * + * @author 공통서비스 개발팀 서준식 + * @since 2011. 8. 12. + * @version 1.0 + * @see + * + *
    + * 개정이력(Modification Information)
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011. 8. 12.    서준식        최초생성
    + *
    + *  
    + */ + +public class EgovTestUserDetailsServiceImpl extends EgovAbstractServiceImpl implements + EgovUserDetailsService { + + @Override + public Object getAuthenticatedUser() { + + LoginVO loginVO = new LoginVO(); + loginVO.setId("TEST1"); + loginVO.setPassword("raHLBnHFcunwNzcDcfad4PhD11hHgXSUr7fc1Jk9uoQ="); + loginVO.setUserSe("USR"); + loginVO.setEmail("egovframe@nia.or.kr"); + loginVO.setIhidNum(""); + loginVO.setName("더미사용자"); + loginVO.setOrgnztId("ORGNZT_0000000000000"); + loginVO.setUniqId("USRCNFRM_00000000000"); + return loginVO; + + // return + // RequestContextHolder.getRequestAttributes().getAttribute("loginVO", + // RequestAttributes.SCOPE_SESSION); + + } + + @Override + public List getAuthorities() { + + // 권한 설정을 리턴한다. + + List listAuth = new ArrayList(); + listAuth.add("IS_AUTHENTICATED_ANONYMOUSLY"); + listAuth.add("IS_AUTHENTICATED_FULLY"); + listAuth.add("IS_AUTHENTICATED_REMEMBERED"); + listAuth.add("ROLE_ADMIN"); + listAuth.add("ROLE_ANONYMOUS"); + listAuth.add("ROLE_RESTRICTED"); + listAuth.add("ROLE_USER"); + + return listAuth; + } + + @Override + public Boolean isAuthenticated() { + // 인증된 유저인지 확인한다. + + /*if (RequestContextHolder.getRequestAttributes() == null) { + return false; + } else { + + if (RequestContextHolder.getRequestAttributes().getAttribute( + "loginVO", RequestAttributes.SCOPE_SESSION) == null) { + return false; + } else { + return true; + } + }*/ + + return true; + } + +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/EgovUserDetailsSessionServiceImpl.java b/src/main/java/egovframework/com/cmm/service/impl/EgovUserDetailsSessionServiceImpl.java new file mode 100644 index 0000000..011ecf6 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/EgovUserDetailsSessionServiceImpl.java @@ -0,0 +1,67 @@ +package egovframework.com.cmm.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import egovframework.com.cmm.service.EgovUserDetailsService; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; + +/** + * + * @author 공통서비스 개발팀 서준식 + * @since 2011. 6. 25. + * @version 1.0 + * @see + * + *
    + * 개정이력(Modification Information) 
    + * 
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011. 8. 12.    서준식        최초생성
    + *  
    + *  
    + */ + +public class EgovUserDetailsSessionServiceImpl extends EgovAbstractServiceImpl implements + EgovUserDetailsService { + + public Object getAuthenticatedUser() { + + + + return RequestContextHolder.getRequestAttributes().getAttribute("loginVO", RequestAttributes.SCOPE_SESSION); + + } + + public List getAuthorities() { + + // 권한 설정을 리턴한다. + List listAuth = new ArrayList(); + + return listAuth; + } + + public Boolean isAuthenticated() { + // 인증된 유저인지 확인한다. + + if (RequestContextHolder.getRequestAttributes() == null) { + return false; + } else { + + if (RequestContextHolder.getRequestAttributes().getAttribute( + "loginVO", RequestAttributes.SCOPE_SESSION) == null) { + return false; + } else { + return true; + } + } + + + } + +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/FileManageDAO.java b/src/main/java/egovframework/com/cmm/service/impl/FileManageDAO.java new file mode 100644 index 0000000..fd088ad --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/FileManageDAO.java @@ -0,0 +1,182 @@ +package egovframework.com.cmm.service.impl; + +import java.util.Iterator; +import java.util.List; + +import egovframework.com.cmm.service.FileVO; + +import org.springframework.stereotype.Repository; + +/** + * @Class Name : EgovFileMngDAO.java + * @Description : 파일정보 관리를 위한 데이터 처리 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 25. 이삼섭 최초생성 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 25. + * @version + * @see + * + */ +@Repository("FileManageDAO") +public class FileManageDAO extends EgovComAbstractDAO { + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @param fileList + * @return + * @throws Exception + */ + public String insertFileInfs(List fileList) throws Exception { + FileVO vo = (FileVO) fileList.get(0); + String atchFileId = vo.getAtchFileId(); + + insert("FileManageDAO.insertFileMaster", vo); + + Iterator iter = fileList.iterator(); + while (iter.hasNext()) { + vo = (FileVO) iter.next(); + + insert("FileManageDAO.insertFileDetail", vo); + } + + return atchFileId; + } + + /** + * 하나의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @param vo + * @throws Exception + */ + public void insertFileInf(FileVO vo) throws Exception { + insert("FileManageDAO.insertFileMaster", vo); + insert("FileManageDAO.insertFileDetail", vo); + } + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 수정한다. + * + * @param fileList + * @throws Exception + */ + public void updateFileInfs(List fileList) throws Exception { + FileVO vo; + Iterator iter = fileList.iterator(); + while (iter.hasNext()) { + vo = (FileVO) iter.next(); + + insert("FileManageDAO.insertFileDetail", vo); + } + } + + /** + * 여러 개의 파일을 삭제한다. + * + * @param fileList + * @throws Exception + */ + public void deleteFileInfs(List fileList) throws Exception { + Iterator iter = fileList.iterator(); + FileVO vo; + while (iter.hasNext()) { + vo = (FileVO) iter.next(); + + delete("FileManageDAO.deleteFileDetail", vo); + } + } + + /** + * 하나의 파일을 삭제한다. + * + * @param fvo + * @throws Exception + */ + public void deleteFileInf(FileVO fvo) throws Exception { + delete("FileManageDAO.deleteFileDetail", fvo); + } + + /** + * 파일에 대한 목록을 조회한다. + * + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectFileInfs(FileVO vo) throws Exception { + return (List) list("FileManageDAO.selectFileList", vo); + } + + /** + * 파일 구분자에 대한 최대값을 구한다. + * + * @param fvo + * @return + * @throws Exception + */ + public int getMaxFileSN(FileVO fvo) throws Exception { + return (Integer) select("FileManageDAO.getMaxFileSN", fvo); + } + + /** + * 파일에 대한 상세정보를 조회한다. + * + * @param fvo + * @return + * @throws Exception + */ + public FileVO selectFileInf(FileVO fvo) throws Exception { + return (FileVO) select("FileManageDAO.selectFileInf", fvo); + } + + /** + * 전체 파일을 삭제한다. + * + * @param fvo + * @throws Exception + */ + public void deleteAllFileInf(FileVO fvo) throws Exception { + update("FileManageDAO.deleteCOMTNFILE", fvo); + } + + /** + * 파일명 검색에 대한 목록을 조회한다. + * + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectFileListByFileNm(FileVO fvo) throws Exception { + return (List) list("FileManageDAO.selectFileListByFileNm", fvo); + } + + /** + * 파일명 검색에 대한 목록 전체 건수를 조회한다. + * + * @param fvo + * @return + * @throws Exception + */ + public int selectFileListCntByFileNm(FileVO fvo) throws Exception { + return (Integer) select("FileManageDAO.selectFileListCntByFileNm", fvo); + } + + /** + * 이미지 파일에 대한 목록을 조회한다. + * + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectImageFileList(FileVO vo) throws Exception { + return (List) list("FileManageDAO.selectImageFileList", vo); + } +} diff --git a/src/main/java/egovframework/com/cmm/util/EgovUserDetailsHelper.java b/src/main/java/egovframework/com/cmm/util/EgovUserDetailsHelper.java new file mode 100644 index 0000000..1999a19 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/util/EgovUserDetailsHelper.java @@ -0,0 +1,72 @@ +package egovframework.com.cmm.util; + +import java.util.ArrayList; +import java.util.List; + +import egovframework.com.cmm.LoginVO; + +import egovframework.rte.fdl.string.EgovObjectUtil; + +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; + +/** + * EgovUserDetails Helper 클래스 + * + * @author sjyoon + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    -------------    ----------------------
    + *   2009.03.10  sjyoon    최초 생성
    + *   2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
    + *
    + * 
    + */ + +public class EgovUserDetailsHelper { + + /** + * 인증된 사용자객체를 VO형식으로 가져온다. + * @return Object - 사용자 ValueObject + */ + public static Object getAuthenticatedUser() { + return (LoginVO)RequestContextHolder.getRequestAttributes().getAttribute("LoginVO", RequestAttributes.SCOPE_SESSION)==null ? + new LoginVO() : (LoginVO) RequestContextHolder.getRequestAttributes().getAttribute("LoginVO", RequestAttributes.SCOPE_SESSION); + + } + + /** + * 인증된 사용자의 권한 정보를 가져온다. + * 예) [ROLE_ADMIN, ROLE_USER, ROLE_A, ROLE_B, ROLE_RESTRICTED, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED, IS_AUTHENTICATED_ANONYMOUSLY] + * @return List - 사용자 권한정보 목록 + */ + public static List getAuthorities() { + List listAuth = new ArrayList(); + + if (EgovObjectUtil.isNull((LoginVO) RequestContextHolder.getRequestAttributes().getAttribute("LoginVO", RequestAttributes.SCOPE_SESSION))) { + // log.debug("## authentication object is null!!"); + return null; + } + + return listAuth; + } + + /** + * 인증된 사용자 여부를 체크한다. + * @return Boolean - 인증된 사용자 여부(TRUE / FALSE) + */ + public static Boolean isAuthenticated() { + + if (EgovObjectUtil.isNull((LoginVO) RequestContextHolder.getRequestAttributes().getAttribute("LoginVO", RequestAttributes.SCOPE_SESSION))) { + // log.debug("## authentication object is null!!"); + return Boolean.FALSE; + } + return Boolean.TRUE; + } +} diff --git a/src/main/java/egovframework/com/cmm/web/EgovBindingInitializer.java b/src/main/java/egovframework/com/cmm/web/EgovBindingInitializer.java new file mode 100644 index 0000000..33a1ab4 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovBindingInitializer.java @@ -0,0 +1,22 @@ +package egovframework.com.cmm.web; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.springframework.beans.propertyeditors.CustomDateEditor; +import org.springframework.beans.propertyeditors.StringTrimmerEditor; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.support.WebBindingInitializer; +import org.springframework.web.context.request.WebRequest; + +public class EgovBindingInitializer implements WebBindingInitializer { + + + public void initBinder(WebDataBinder binder, WebRequest request) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + dateFormat.setLenient(false); + binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false)); + binder.registerCustomEditor(String.class, new StringTrimmerEditor(false)); + } + +} diff --git a/src/main/java/egovframework/com/cmm/web/EgovComUtlController.java b/src/main/java/egovframework/com/cmm/web/EgovComUtlController.java new file mode 100644 index 0000000..021a8df --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovComUtlController.java @@ -0,0 +1,80 @@ +package egovframework.com.cmm.web; + +import egovframework.rte.fdl.property.EgovPropertyService; + +import javax.annotation.Resource; +import javax.servlet.http.HttpSession; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * 공통유틸리티성 작업을 위한 Controller 클래스 + * @author 공통 서비스 개발팀 JJY + * @since 2009.03.02 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + * 
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.02  JJY            최초 생성
    + *  2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성 
    + *  
    + *  
    + */ +@Controller +public class EgovComUtlController { + + /** EgovPropertyService */ + @Resource(name = "propertiesService") + protected EgovPropertyService propertiesService; + + /** + * JSP 호출작업만 처리하는 공통 함수 + */ + @RequestMapping(value="/EgovPageLink.do") + public String moveToPage(@RequestParam("link") String linkPage, + HttpSession session, + @RequestParam(value="menuNo", required=false) String menuNo){ + String link = linkPage; + // service 사용하여 리턴할 결과값 처리하는 부분은 생략하고 단순 페이지 링크만 처리함 + if (linkPage==null || linkPage.equals("")){ + link="cmm/egovError"; + }else{ + if(link.indexOf(",")>-1){ + link=link.substring(0,link.indexOf(",")); + } + } + // 선택된 메뉴정보를 세션으로 등록한다. + if (menuNo!=null && !menuNo.equals("")){ + session.setAttribute("menuNo",menuNo); + } + return link; + } + + /** + * JSP 호출작업만 처리하는 공통 함수 + */ + @RequestMapping(value="/EgovPageLink.action") + public String moveToPage_action(@RequestParam("link") String linkPage){ + String link = linkPage; + // service 사용하여 리턴할 결과값 처리하는 부분은 생략하고 단순 페이지 링크만 처리함 + if (linkPage==null || linkPage.equals("")){ + link="cmm/egovError"; + } + return link; + } + + /** + * validation rule dynamic java script + */ + @RequestMapping("/validator.do") + public String validate(){ + return "cmm/validator"; + } + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/cmm/web/EgovFileDownloadController.java b/src/main/java/egovframework/com/cmm/web/EgovFileDownloadController.java new file mode 100644 index 0000000..8746672 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovFileDownloadController.java @@ -0,0 +1,201 @@ +package egovframework.com.cmm.web; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URLEncoder; +import java.util.Map; + +import egovframework.com.cmm.service.EgovFileMngService; +import egovframework.com.cmm.service.FileVO; +import egovframework.com.cmm.util.EgovUserDetailsHelper; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * 파일 다운로드를 위한 컨트롤러 클래스 + * @author 공통서비스개발팀 이삼섭 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.3.25  이삼섭          최초 생성
    + *
    + * Copyright (C) 2009 by MOPAS  All right reserved.
    + * 
    + */ +@Controller +public class EgovFileDownloadController { + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileDownloadController.class); + + /** + * 브라우저 구분 얻기. + * + * @param request + * @return + */ + private String getBrowser(HttpServletRequest request) { + String header = request.getHeader("User-Agent"); + if (header.indexOf("MSIE") > -1) { + return "MSIE"; + } else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지 + return "Trident"; + } else if (header.indexOf("Chrome") > -1) { + return "Chrome"; + } else if (header.indexOf("Opera") > -1) { + return "Opera"; + } + return "Firefox"; + } + + /** + * Disposition 지정하기. + * + * @param filename + * @param request + * @param response + * @throws Exception + */ + private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws Exception { + String browser = getBrowser(request); + + String dispositionPrefix = "attachment; filename="; + String encodedFilename = null; + + if (browser.equals("MSIE")) { + encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); + } else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지 + encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20"); + } else if (browser.equals("Firefox")) { + encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; + } else if (browser.equals("Opera")) { + encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; + } else if (browser.equals("Chrome")) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < filename.length(); i++) { + char c = filename.charAt(i); + if (c > '~') { + sb.append(URLEncoder.encode("" + c, "UTF-8")); + } else { + sb.append(c); + } + } + encodedFilename = sb.toString(); + } else { + //throw new RuntimeException("Not supported browser"); + throw new IOException("Not supported browser"); + } + + response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename); + + if ("Opera".equals(browser)) { + response.setContentType("application/octet-stream;charset=UTF-8"); + } + } + + /** + * 첨부파일로 등록된 파일에 대하여 다운로드를 제공한다. + * + * @param commandMap + * @param response + * @throws Exception + */ + @RequestMapping(value = "/cmm/fms/FileDown.do") + public void cvplFileDownload(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { + + String atchFileId = (String) commandMap.get("atchFileId"); + String fileSn = (String) commandMap.get("fileSn"); + + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + + if (isAuthenticated) { + + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(atchFileId); + fileVO.setFileSn(fileSn); + FileVO fvo = fileService.selectFileInf(fileVO); + + File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); + long fSize = uFile.length(); + + if (fSize > 0) { + String mimetype = "application/x-msdownload"; + + //response.setBufferSize(fSize); // OutOfMemeory 발생 + response.setContentType(mimetype); + //response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(fvo.getOrignlFileNm(), "utf-8") + "\""); + setDisposition(fvo.getOrignlFileNm(), request, response); + //response.setContentLength(fSize); + + /* + * FileCopyUtils.copy(in, response.getOutputStream()); + * in.close(); + * response.getOutputStream().flush(); + * response.getOutputStream().close(); + */ + BufferedInputStream in = null; + BufferedOutputStream out = null; + + try { + in = new BufferedInputStream(new FileInputStream(uFile)); + out = new BufferedOutputStream(response.getOutputStream()); + + FileCopyUtils.copy(in, out); + out.flush(); + } catch (Exception ex) { + // 다음 Exception 무시 처리 + // Connection reset by peer: socket write error + LOGGER.debug("IGNORED: {}", ex.getMessage()); + } finally { + if (in != null) { + try { + in.close(); + } catch (Exception ignore) { + LOGGER.debug("IGNORED: {}", ignore.getMessage()); + } + } + if (out != null) { + try { + out.close(); + } catch (Exception ignore) { + LOGGER.debug("IGNORED: {}", ignore.getMessage()); + } + } + } + + } else { + response.setContentType("application/x-msdownload"); + + PrintWriter printwriter = response.getWriter(); + printwriter.println(""); + printwriter.println("


    Could not get file name:
    " + fvo.getOrignlFileNm() + "

    "); + printwriter.println("


    Back

    "); + printwriter.println("


    © webAccess"); + printwriter.println(""); + printwriter.flush(); + printwriter.close(); + } + } + } +} diff --git a/src/main/java/egovframework/com/cmm/web/EgovFileMngController.java b/src/main/java/egovframework/com/cmm/web/EgovFileMngController.java new file mode 100644 index 0000000..0105ef5 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovFileMngController.java @@ -0,0 +1,157 @@ +package egovframework.com.cmm.web; + +import java.util.List; +import java.util.Map; + +import egovframework.com.cmm.service.EgovFileMngService; +import egovframework.com.cmm.service.FileVO; +import egovframework.com.cmm.util.EgovUserDetailsHelper; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * 파일 조회, 삭제, 다운로드 처리를 위한 컨트롤러 클래스 + * @author 공통서비스개발팀 이삼섭 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.25  이삼섭          최초 생성
    + *   2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
    + *
    + * 
    + */ +@Controller +public class EgovFileMngController { + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + /** + * 첨부파일에 대한 목록을 조회한다. + * + * @param fileVO + * @param atchFileId + * @param sessionVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/cmm/fms/selectFileInfs.do") + public String selectFileInfs(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam Map commandMap, ModelMap model) throws Exception { + String atchFileId = (String)commandMap.get("param_atchFileId"); + + fileVO.setAtchFileId(atchFileId); + List result = fileService.selectFileInfs(fileVO); + + model.addAttribute("fileList", result); + model.addAttribute("updateFlag", "N"); + model.addAttribute("fileListCnt", result.size()); + model.addAttribute("atchFileId", atchFileId); + + return "cmm/fms/EgovFileList"; + } + + /** + * 첨부파일 변경을 위한 수정페이지로 이동한다. + * + * @param fileVO + * @param atchFileId + * @param sessionVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/cmm/fms/selectFileInfsForUpdate.do") + public String selectFileInfsForUpdate(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam Map commandMap, + ModelMap model) throws Exception { + + String atchFileId = (String)commandMap.get("param_atchFileId"); + + fileVO.setAtchFileId(atchFileId); + + List result = fileService.selectFileInfs(fileVO); + + model.addAttribute("fileList", result); + model.addAttribute("updateFlag", "Y"); + model.addAttribute("fileListCnt", result.size()); + model.addAttribute("atchFileId", atchFileId); + + return "cmm/fms/EgovFileList"; + } + + /** + * 첨부파일에 대한 삭제를 처리한다. + * + * @param fileVO + * @param returnUrl + * @param sessionVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/cmm/fms/deleteFileInfs.do") + public String deleteFileInf(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam("returnUrl") String returnUrl, + HttpServletRequest request, + ModelMap model) throws Exception { + + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + + if (isAuthenticated) { + fileService.deleteFileInf(fileVO); + } + + //-------------------------------------------- + // contextRoot가 있는 경우 제외 시켜야 함 + //-------------------------------------------- + ////return "forward:/cmm/fms/selectFileInfs.do"; + //return "forward:" + returnUrl; + + if ("".equals(request.getContextPath()) || "/".equals(request.getContextPath())) { + return "forward:" + returnUrl; + } + + if (returnUrl.startsWith(request.getContextPath())) { + return "forward:" + returnUrl.substring(returnUrl.indexOf("/", 1)); + } else { + return "forward:" + returnUrl; + } + ////------------------------------------------ + } + + /** + * 이미지 첨부파일에 대한 목록을 조회한다. + * + * @param fileVO + * @param atchFileId + * @param sessionVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/cmm/fms/selectImageFileInfs.do") + public String selectImageFileInfs(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam Map commandMap, + ModelMap model) throws Exception { + + String atchFileId = (String)commandMap.get("atchFileId"); + + fileVO.setAtchFileId(atchFileId); + List result = fileService.selectImageFileList(fileVO); + + model.addAttribute("fileList", result); + + return "cmm/fms/EgovImgFileList"; + } +} diff --git a/src/main/java/egovframework/com/cmm/web/EgovImageProcessController.java b/src/main/java/egovframework/com/cmm/web/EgovImageProcessController.java new file mode 100644 index 0000000..e114cc4 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovImageProcessController.java @@ -0,0 +1,145 @@ +package egovframework.com.cmm.web; + +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.util.Map; + +import egovframework.com.cmm.SessionVO; +import egovframework.com.cmm.service.EgovFileMngService; +import egovframework.com.cmm.service.FileVO; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + + +/** + * @Class Name : EgovImageProcessController.java + * @Description : + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 4. 2. 이삼섭 + * 2011.08.31. JJY 경량환경 템플릿 커스터마이징버전 생성 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 4. 2. + * @version + * @see + * + */ +@Controller +public class EgovImageProcessController extends HttpServlet { + + /** + * serialVersion UID + */ + private static final long serialVersionUID = -6339945210971171173L; + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovImageProcessController.class); + + /** + * 첨부된 이미지에 대한 미리보기 기능을 제공한다. + * + * @param atchFileId + * @param fileSn + * @param sessionVO + * @param model + * @param response + * @throws Exception + */ + @SuppressWarnings("resource") + @RequestMapping("/cmm/fms/getImage.do") + public void getImageInf(SessionVO sessionVO, ModelMap model, @RequestParam Map commandMap, HttpServletResponse response) throws Exception { + + //@RequestParam("atchFileId") String atchFileId, + //@RequestParam("fileSn") String fileSn, + String atchFileId = (String)commandMap.get("atchFileId"); + String fileSn = (String)commandMap.get("fileSn"); + + FileVO vo = new FileVO(); + + vo.setAtchFileId(atchFileId); + vo.setFileSn(fileSn); + + FileVO fvo = fileService.selectFileInf(vo); + + //String fileLoaction = fvo.getFileStreCours() + fvo.getStreFileNm(); + + File file = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); + FileInputStream fis = null; new FileInputStream(file); + + BufferedInputStream in = null; + ByteArrayOutputStream bStream = null; + try{ + fis = new FileInputStream(file); + in = new BufferedInputStream(fis); + bStream = new ByteArrayOutputStream(); + int imgByte; + while ((imgByte = in.read()) != -1) { + bStream.write(imgByte); + } + + String type = ""; + + if (fvo.getFileExtsn() != null && !"".equals(fvo.getFileExtsn())) { + if ("jpg".equals(fvo.getFileExtsn().toLowerCase())) { + type = "image/jpeg"; + } else { + type = "image/" + fvo.getFileExtsn().toLowerCase(); + } + type = "image/" + fvo.getFileExtsn().toLowerCase(); + + } else { + LOGGER.debug("Image fileType is null."); + } + + response.setHeader("Content-Type", type); + response.setContentLength(bStream.size()); + + bStream.writeTo(response.getOutputStream()); + + response.getOutputStream().flush(); + response.getOutputStream().close(); + + + }catch(Exception e){ + LOGGER.debug("{}", e); + }finally{ + if (bStream != null) { + try { + bStream.close(); + } catch (Exception est) { + LOGGER.debug("IGNORED: {}", est.getMessage()); + } + } + if (in != null) { + try { + in.close(); + } catch (Exception ei) { + LOGGER.debug("IGNORED: {}", ei.getMessage()); + } + } + if (fis != null) { + try { + fis.close(); + } catch (Exception efis) { + LOGGER.debug("IGNORED: {}", efis.getMessage()); + } + } + } + } +} diff --git a/src/main/java/egovframework/com/cmm/web/EgovMultipartResolver.java b/src/main/java/egovframework/com/cmm/web/EgovMultipartResolver.java new file mode 100644 index 0000000..9e17331 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovMultipartResolver.java @@ -0,0 +1,134 @@ +package egovframework.com.cmm.web; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the ";License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS"; BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.servlet.ServletContext; + +import org.apache.commons.fileupload.FileItem; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartException; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartResolver; + +/** + * 실행환경의 파일업로드 처리를 위한 기능 클래스 + * @author 공통서비스개발팀 이삼섭 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.3.25  이삼섭          최초 생성
    + *   2011.06.11 서준식          스프링 3.0 업그레이드 API변경으로인한 수정
    + *
    + * 
    + */ +public class EgovMultipartResolver extends CommonsMultipartResolver { + public EgovMultipartResolver() { + } + + + /** + * 첨부파일 처리를 위한 multipart resolver를 생성한다. + * + * @param servletContext + */ + public EgovMultipartResolver(ServletContext servletContext) { + super(servletContext); + } + + /** + * multipart에 대한 parsing을 처리한다. + */ + @SuppressWarnings("rawtypes") + @Override + protected MultipartParsingResult parseFileItems(List fileItems, String encoding) { + + //스프링 3.0변경으로 수정한 부분 + MultiValueMap multipartFiles = new LinkedMultiValueMap(); + Map multipartParameters = new HashMap(); + + // Extract multipart files and multipart parameters. + for (Iterator it = fileItems.iterator(); it.hasNext();) { + FileItem fileItem = (FileItem)it.next(); + + if (fileItem.isFormField()) { + + String value = null; + if (encoding != null) { + try { + value = fileItem.getString(encoding); + } catch (UnsupportedEncodingException ex) { + if (logger.isWarnEnabled()) { + logger.warn("Could not decode multipart item '" + fileItem.getFieldName() + "' with encoding '" + encoding + + "': using platform default"); + } + value = fileItem.getString(); + } + } else { + value = fileItem.getString(); + } + String[] curParam = multipartParameters.get(fileItem.getFieldName()); + if (curParam == null) { + // simple form field + multipartParameters.put(fileItem.getFieldName(), new String[] { value }); + } else { + // array of simple form fields + String[] newParam = StringUtils.addStringToArray(curParam, value); + multipartParameters.put(fileItem.getFieldName(), newParam); + } + } else { + + if (fileItem.getSize() > 0) { + // multipart file field + CommonsMultipartFile file = new CommonsMultipartFile(fileItem); + + + //스프링 3.0 업그레이드 API변경으로인한 수정 + List fileList = new ArrayList(); + fileList.add(file); + + + if (multipartFiles.put(fileItem.getName(), fileList) != null) { // CHANGED!! + throw new MultipartException("Multiple files for field name [" + file.getName() + + "] found - not supported by MultipartResolver"); + } + if (logger.isDebugEnabled()) { + logger.debug("Found multipart file [" + file.getName() + "] of size " + file.getSize() + " bytes with original filename [" + + file.getOriginalFilename() + "], stored " + file.getStorageDescription()); + } + } + + } + } + + return new MultipartParsingResult(multipartFiles, multipartParameters, null); + } +} diff --git a/src/main/java/gtpa/icsmw/common/service/CommonService.java b/src/main/java/gtpa/icsmw/common/service/CommonService.java new file mode 100644 index 0000000..65fc5fc --- /dev/null +++ b/src/main/java/gtpa/icsmw/common/service/CommonService.java @@ -0,0 +1,20 @@ +package gtpa.icsmw.common.service; + +import java.util.List; +import java.util.Map; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 23/04/2019 + * TIME : 1:30 PM + * Project : icsmw + * Class : CommonService + * Desc : + * ///////////////////////////////////////////////////// + */ +public interface CommonService { + List getCommonCode(); + List getCommonCode(Map param); +} diff --git a/src/main/java/gtpa/icsmw/common/service/impl/CommonMapper.java b/src/main/java/gtpa/icsmw/common/service/impl/CommonMapper.java new file mode 100644 index 0000000..13a22e8 --- /dev/null +++ b/src/main/java/gtpa/icsmw/common/service/impl/CommonMapper.java @@ -0,0 +1,31 @@ +package gtpa.icsmw.common.service.impl; + +import egovframework.rte.psl.dataaccess.EgovAbstractMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 23/04/2019 + * TIME : 1:33 PM + * Project : icsmw + * Class : CommonMapper + * Desc : + * ///////////////////////////////////////////////////// + */ +@Repository("commonDao") +public class CommonMapper extends EgovAbstractMapper{ + private String NAMESPACE = "CommonDAO"; + + public List getCommonCode() { + return selectList(NAMESPACE+".getAllCommonCode"); + } + + public List getCommonCode(Map param) { + return selectList(NAMESPACE+".getCommonCode",param); + } +} diff --git a/src/main/java/gtpa/icsmw/common/service/impl/CommonServiceImpl.java b/src/main/java/gtpa/icsmw/common/service/impl/CommonServiceImpl.java new file mode 100644 index 0000000..3c69d17 --- /dev/null +++ b/src/main/java/gtpa/icsmw/common/service/impl/CommonServiceImpl.java @@ -0,0 +1,36 @@ +package gtpa.icsmw.common.service.impl; + +import gtpa.icsmw.common.service.CommonService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 23/04/2019 + * TIME : 1:32 PM + * Project : icsmw + * Class : CommonServiceImpl + * Desc : + * ///////////////////////////////////////////////////// + */ +@Service("commonService") +public class CommonServiceImpl implements CommonService{ + + @Resource(name = "commonDao") + CommonMapper commonMapper; + + @Override + public List getCommonCode() { + return commonMapper.getCommonCode(); + } + + @Override + public List getCommonCode(Map param) { + return commonMapper.getCommonCode(param); + } +} diff --git a/src/main/java/gtpa/icsmw/common/web/BaseController.java b/src/main/java/gtpa/icsmw/common/web/BaseController.java new file mode 100644 index 0000000..1535cd4 --- /dev/null +++ b/src/main/java/gtpa/icsmw/common/web/BaseController.java @@ -0,0 +1,28 @@ +package gtpa.icsmw.common.web; + +import java.util.Enumeration; +import javax.servlet.http.HttpServletRequest; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.MessageSource; + +public class BaseController{ + + private Logger logger = LoggerFactory.getLogger(BaseController.class); + + @Autowired + protected MessageSource messageSource; + + public void printRequest(HttpServletRequest pReq) { + + Enumeration eParam = pReq.getParameterNames(); + while (eParam.hasMoreElements()) { + String pName = (String) eParam.nextElement(); + String pValue = pReq.getParameter(pName); + + logger.info("#### RequestParamMap = " + pName + " : " + pValue); + } + } +} diff --git a/src/main/java/gtpa/icsmw/common/web/CommonController.java b/src/main/java/gtpa/icsmw/common/web/CommonController.java new file mode 100644 index 0000000..2d23af2 --- /dev/null +++ b/src/main/java/gtpa/icsmw/common/web/CommonController.java @@ -0,0 +1,76 @@ +package gtpa.icsmw.common.web; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import gtpa.icsmw.common.service.CommonService; +import gtpa.icsmw.util.Result; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 23/04/2019 + * TIME : 1:30 PM + * Project : icsmw + * Class : CommonController + * Desc : + * ///////////////////////////////////////////////////// + */ +@Controller +public class CommonController { + + private Logger logger = LoggerFactory.getLogger(CommonController.class); + + @Autowired + CommonService commonService; + + @RequestMapping(value = "/common/getCommonCode.do", method = RequestMethod.GET) + public @ResponseBody + Result getCommonCode() { + Result result = new Result(); + List codeList = new ArrayList<>(); + try { + codeList = commonService.getCommonCode(); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE,re); + } catch (Exception e) { + logger.error("[process error::" + "" + "]", e); + result.setMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE,e); + } finally { + result.setData("code", codeList); + } + return result; + } + + @RequestMapping(value = "/common/getCommonCode.do", method = RequestMethod.POST) + public @ResponseBody + Result getCommonCode(@RequestBody Map param) { + Result result = new Result(); + List codeList = new ArrayList<>(); + Map params = (Map) param.get("param"); + try { + codeList = commonService.getCommonCode(params); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE,re); + } catch (Exception e) { + logger.error("[process error::" + "" + "]", e); + result.setMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE,e); + } finally { + result.setData("code", codeList); + } + return result; + } +} diff --git a/src/main/java/gtpa/icsmw/handler/ClobTypeHandler.java b/src/main/java/gtpa/icsmw/handler/ClobTypeHandler.java new file mode 100644 index 0000000..778797d --- /dev/null +++ b/src/main/java/gtpa/icsmw/handler/ClobTypeHandler.java @@ -0,0 +1,45 @@ +package gtpa.icsmw.handler; + +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 23/04/2019 + * TIME : 2:13 PM + * Project : icsmw + * Class : ClobTypeHandler + * Desc : + * ///////////////////////////////////////////////////// + */ +@MappedJdbcTypes(value = {JdbcType.CLOB}) +public class ClobTypeHandler extends BaseTypeHandler{ + + @Override + public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException { + preparedStatement.setString(i,s); + } + + @Override + public String getNullableResult(ResultSet resultSet, String s) throws SQLException { + return resultSet.getString(s); + } + + @Override + public String getNullableResult(ResultSet resultSet, int i) throws SQLException { + return resultSet.getString(i); + } + + @Override + public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException { + return callableStatement.getString(i); + } +} diff --git a/src/main/java/gtpa/icsmw/handler/StringTypeHandler.java b/src/main/java/gtpa/icsmw/handler/StringTypeHandler.java new file mode 100644 index 0000000..7e14a55 --- /dev/null +++ b/src/main/java/gtpa/icsmw/handler/StringTypeHandler.java @@ -0,0 +1,58 @@ +package gtpa.icsmw.handler; + +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 23/04/2019 + * TIME : 2:01 PM + * Project : icsmw + * Class : StringTypeHandler + * Desc : + * ///////////////////////////////////////////////////// + */ +@MappedJdbcTypes(value = {JdbcType.VARCHAR,JdbcType.CHAR}) +public class StringTypeHandler extends BaseTypeHandler{ + + @Override + public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException { + preparedStatement.setString(i,s); + } + + @Override + public String getNullableResult(ResultSet resultSet, String s) throws SQLException { + if(resultSet.getString(s) != null){ + return resultSet.getString(s).trim(); + }else{ + return resultSet.getString(s); + } + + } + + @Override + public String getNullableResult(ResultSet resultSet, int i) throws SQLException { + if(resultSet.getString(i) != null){ + return resultSet.getString(i).trim(); + }else{ + return resultSet.getString(i); + } + } + + @Override + public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException { + if(callableStatement.getString(i) != null){ + return callableStatement.getString(i).trim(); + }else{ + return callableStatement.getString(i); + } + } +} diff --git a/src/main/java/gtpa/icsmw/home/web/InitController.java b/src/main/java/gtpa/icsmw/home/web/InitController.java new file mode 100644 index 0000000..41e1b1d --- /dev/null +++ b/src/main/java/gtpa/icsmw/home/web/InitController.java @@ -0,0 +1,188 @@ +package gtpa.icsmw.home.web; + + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import gtpa.icsmw.user.dto.UserInfo; +import gtpa.icsmw.util.PageURIUtil; +import gtpa.icsmw.util.Result; +import eu.bitwalker.useragentutils.DeviceType; +import eu.bitwalker.useragentutils.OperatingSystem; +import eu.bitwalker.useragentutils.UserAgent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import java.util.Map; + + +@Controller +public class InitController { + + private Logger logger = LoggerFactory.getLogger(InitController.class); + @Autowired + private UserInfo userInfo; + + @Autowired + private PageURIUtil pageURIUtil; + + public InitController() { + } + + /** + * 다국어 처리 Root Url 처리 + * + * @date 2017.12.22 + * @author Inswave + * @example websquare 진입 후 세션과 설정 값에 따른 화면 xml 분기를 위한 controller. 고려 대상은 websquare.jsp와 I18N.jsp. 화면 페이지의 정보는 properties파일에서 일괄 관리. + * @todo 차후 interceptor에서 일괄 처리 가능한지 체크 해야 함. + */ + @RequestMapping("/I18N") + public String indexMultiLang(HttpServletRequest request, HttpServletResponse response, Model model) { + model.addAttribute("movePage", getInitPage(request.getParameter("w2xPath"))); + return "websquare/I18N"; + } + + /** + * 기본 Root Url 처리 + * + * @date 2017.12.22 + * @author Inswave + * @todo url의 경로가 /(root)인 경우 웹스퀘어 엔진에서 하위 컨텐츠 로딩 부분의 특이사항이 발견되어 redirect로 처리.수정 및 개선 필요. + */ +/* @RequestMapping(value = "/", method = RequestMethod.GET) + public String IndexBase(HttpServletRequest request, Model model) throws Exception { + return "redirect:/ws.do"; + }*/ + @RequestMapping(value = "/ws.do", method = RequestMethod.GET) + public ModelAndView IndexHideBase(HttpServletRequest request, HttpServletResponse response) { + ModelAndView mv = new ModelAndView(); + HttpSession session = request.getSession(false); + String movePage = request.getParameter("w2xPath"); + String linkPage = request.getParameter("link"); + + if(session.getAttribute("w2xPath") != null){ + movePage = (String)session.getAttribute("w2xPath"); + session.removeAttribute("w2xPath"); + }else{ + if (movePage == null || movePage.equals("")) { + movePage = getInitPage(movePage); + } + } + + if(linkPage == null && session.getAttribute("link") != null){ + linkPage = (String)session.getAttribute("link"); + session.removeAttribute("link"); + } + + mv.setViewName("websquare/websquare"); + mv.addObject("movePage", movePage); + mv.addObject("link", linkPage); + logger.info("movePage ::" + movePage); + logger.info("link ::" + linkPage); + UserAgent agent = UserAgent.parseUserAgentString(request.getHeader("user-agent")); + // operating system + OperatingSystem os = agent.getOperatingSystem(); + // device type + DeviceType deviceType = os.getDeviceType(); + logger.info("*Device: " + deviceType.getName()); + return mv; + } + + /** + * SPA IFrame에서 호출하는 Blank 페이지를 반환하다. + * + * @param request + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value = "/blank.xml", method = RequestMethod.GET) + public String callBlankPage(HttpServletRequest request, Model model) { + return "websquare/blank"; + } + + /** + * 로그인 페이지 Url을 반환한다. + * + * @param w2xPath w2xPath 파라미터 + * @return 로그인 페이지 Url + */ + private String getInitPage(String w2xPath) { + String movePage = w2xPath; + // session이 없을 경우 login 화면으로 이동. + if (!userInfo.isLogined()) { + // session이 있고 w2xPath가 없을 경우 index화면으로 이동. + if (movePage == null) { + //movePage = pageURIUtil.getLoginPage(); + movePage = pageURIUtil.getIndexPage(); + } else if (w2xPath.indexOf("/cm/main/") < 0) { + //movePage = pageURIUtil.getLoginPage(); + movePage = pageURIUtil.getIndexPage(); + } else if (w2xPath.indexOf("/cm/join/") < 0) { + // System.out.println(w2xPath); + } + } else { + if (movePage == null) { + // DB 설정조회 초기 page 구성 + movePage = pageURIUtil.getIndexPageURI(); + + // DB에 값이 저장되어 있지 않은 경우 기본 index화면으로 이동 + if (movePage == null) { + movePage = pageURIUtil.getIndexPageURI(); + } + } + } + logger.info("getInit movePage ::" + movePage); + return movePage; + } + + @RequestMapping(value = "/initTempData.do", method = RequestMethod.POST) + public @ResponseBody + Map initTempData(HttpServletRequest request) { + Result result = new Result(); + try { + HttpSession session = request.getSession(false); + if (session != null && session.getAttribute("scopedTarget.tempUserSessionInfoDTO") != null) { + session.invalidate(); + } + result.setMsg(Result.STATUS_SUCESS, Result.STATUS_SUCESS_MESSAGE); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE,re); + } catch (Exception e) { + logger.error("[process error::" + "" + "]", e); + result.setMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE,e); + } + return result.getResult(); + } + + @RequestMapping(value = "/refreshPage.do", method = RequestMethod.POST) + public @ResponseBody + Map refreshPage(HttpServletRequest request, @RequestBody Map param) { + Result result = new Result(); + try { + HttpSession session = request.getSession(false); + if (session != null) { + session.setAttribute("link",param.get("link")); + } + result.setMsg(Result.STATUS_SUCESS, Result.STATUS_SUCESS_MESSAGE); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE,re); + } catch (Exception e) { + logger.error("[process error::" + "" + "]", e); + result.setMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE,e); + } + return result.getResult(); + } +} diff --git a/src/main/java/gtpa/icsmw/icsmanager/service/IcsManagerService.java b/src/main/java/gtpa/icsmw/icsmanager/service/IcsManagerService.java new file mode 100644 index 0000000..b532e3d --- /dev/null +++ b/src/main/java/gtpa/icsmw/icsmanager/service/IcsManagerService.java @@ -0,0 +1,53 @@ +package gtpa.icsmw.icsmanager.service; + +import java.util.List; +import java.util.Map; + +public interface IcsManagerService { + + // ICS 관리 메인 메소드 + public List getIcsOperTroblMainList(Map param); + + public List getIcsMainList(Map param); + + // CCTV 관련 메소드 + public List getCctvList(Map param); + + public Map getCctvView(Map param); + + public Map getCctvErrorInfoView(Map param); + + public Map cctvErrorActionMemoSave(Map param); + + // ANPR 관련 메소드 + public List getAnprList(Map param); + + public Map getAnprView(Map param); + + public Map getAnprErrorInfoView(Map param); + + public Map anprErrorActionMemoSave(Map param); + + // VMS 관련 메소드 + public List getVmsList(Map param); + + public Map getVmsView(Map param); + + public Map getVmsErrorInfoView(Map param); + + public Map vmsErrorActionMemoSave(Map param); + + public Map errorActionMemoSave(Map param1, Map param2); + + public Map rtuReset(Map param); + +} + + + + + + + + + diff --git a/src/main/java/gtpa/icsmw/icsmanager/service/impl/IcsManagerMapper.java b/src/main/java/gtpa/icsmw/icsmanager/service/impl/IcsManagerMapper.java new file mode 100644 index 0000000..3d41dee --- /dev/null +++ b/src/main/java/gtpa/icsmw/icsmanager/service/impl/IcsManagerMapper.java @@ -0,0 +1,111 @@ +package gtpa.icsmw.icsmanager.service.impl; + +import java.util.List; +import java.util.Map; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractMapper; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : jackt + *

    + * Date : 08/08/2019 + * TIME : 9:34 AM + * Project : icsmw + * Class : IcsManagerMapper + * Desc : + * ///////////////////////////////////////////////////// + */ +@Repository("icsManagerDao") +public class IcsManagerMapper extends EgovAbstractMapper { + private String NAMESPACE = "IcsManagerDao"; + + //장애관리 메인 목록 + public List getOperTroblManagerList(Map param) { + return selectList(NAMESPACE + ".getOperTroblManagerList", param); + } + + ; + + //현장장비 메인 검색 목록 + public List getCctvAnprVmsList(Map param) { + return selectList(NAMESPACE + ".getCctvAnprVmsList", param); + } + + ; + + // cctv 현장장비 검색 목록 + public List getCctvList(Map param) { + return selectList(NAMESPACE + ".getCctvList", param); + } + + ; + + // anpr 현장장비 검색 목록 + public List getAnprList(Map param) { + return selectList(NAMESPACE + ".getAnprList", param); + } + + ; + + // cctv, anpr 현장장비 검색 목록 + public List getCctvAnprList(Map param) { + return selectList(NAMESPACE + ".getCctvAnprList", param); + } + + ; + + // 장애내역 처리 공통 메퍼 Start + // cctv anpr 현장장비 상세 + public Map getCctvAnprView(Map param) { + return selectOne(NAMESPACE + ".getCctvAnprView", param); + } + + ; + + // cctv anpr 장애내역 상세 + public Map getErrorInfoView(Map param) { + return selectOne(NAMESPACE + ".getErrorInfoView", param); + } + + ; + + // 장애내역 신규생성 및 업데이트 + public int errorActionMemoSave(Map param) { + return insert(NAMESPACE + ".errorActionMemoSave", param); + } + + ; + // 장애내역 처리 공통 메퍼 End + + + // vms 현장장비 검색 목록 + public List getVmsList(Map param) { + return selectList(NAMESPACE + ".getVmsList", param); + } + + ; + + // vms 현장장비 상세 + public Map getVmsView(Map param) { + return selectOne(NAMESPACE + ".getVmsView", param); + } + + ; + + // vms 장애내역 상세 + public Map getVmsErrorInfoView(Map param) { + return selectOne(NAMESPACE + ".getVmsErrorInfoView", param); + } + + ; + + +} + + + + diff --git a/src/main/java/gtpa/icsmw/icsmanager/service/impl/IcsManagerServiceImpl.java b/src/main/java/gtpa/icsmw/icsmanager/service/impl/IcsManagerServiceImpl.java new file mode 100644 index 0000000..cf105e9 --- /dev/null +++ b/src/main/java/gtpa/icsmw/icsmanager/service/impl/IcsManagerServiceImpl.java @@ -0,0 +1,318 @@ +package gtpa.icsmw.icsmanager.service.impl; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +import javax.annotation.Resource; + +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.ResponseHandler; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.BasicResponseHandler; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import gtpa.icsmw.icsmanager.service.IcsManagerService; + +@Service +public class IcsManagerServiceImpl implements IcsManagerService { + + @Resource(name = "icsManagerDao") + private IcsManagerMapper icsManagerMapper; + + @Resource(name = "globalsProperties") + private Properties env; + + private Logger logger = LoggerFactory.getLogger(IcsManagerServiceImpl.class); + + // 장애관리 메인 목록 + @Override + public List getIcsOperTroblMainList(Map param) { + List rsList = new ArrayList<>(); + rsList = icsManagerMapper.getOperTroblManagerList(param); + + logger.info("rsList : " + rsList); + + return rsList; + } + + // 현장장비 검색 메인 목록 + @Override + public List getIcsMainList(Map param) { + List rsList = new ArrayList<>(); + rsList = icsManagerMapper.getCctvAnprVmsList(param); + return rsList; + } + + @Override + public List getCctvList(Map param) { + List rsList = new ArrayList<>(); + rsList = icsManagerMapper.getCctvList(param); + + logger.info("rsList : " + rsList); + + return rsList; + } + + @Override + public Map getCctvView(Map param) { + Map tmpInfo = icsManagerMapper.getCctvAnprView(param); + logger.info("tmpInfo : " + tmpInfo); + + return tmpInfo; + } + + @Override + public Map getCctvErrorInfoView(Map param) { + Map tmpInfo = icsManagerMapper.getErrorInfoView(param); + logger.info("tmpInfo : " + tmpInfo); + + return tmpInfo; + } + + @Override + public Map cctvErrorActionMemoSave(Map param) { + int cnt = 0; + cnt = icsManagerMapper.errorActionMemoSave(param); + + HashMap result = new HashMap(); + if(cnt > 0) { + result.put("STATUS", "S"); + } else { + result.put("STATUS", "F"); + } + + return result; + } + + @Override + public List getAnprList(Map param) { + List rsList = new ArrayList<>(); + rsList = icsManagerMapper.getAnprList(param); + + logger.info("rsList : " + rsList); + + return rsList; + } + + @Override + public Map getAnprView(Map param) { + Map tmpInfo = icsManagerMapper.getCctvAnprView(param); + logger.info("tmpInfo : " + tmpInfo); + + return tmpInfo; + } + + @Override + public Map getAnprErrorInfoView(Map param) { + Map tmpInfo = icsManagerMapper.getErrorInfoView(param); + logger.info("tmpInfo : " + tmpInfo); + + return tmpInfo; + } + + @Override + public Map anprErrorActionMemoSave(Map param) { + int cnt = 0; + cnt = icsManagerMapper.errorActionMemoSave(param); + + HashMap result = new HashMap(); + if(cnt > 0) { + result.put("STATUS", "S"); + } else { + result.put("STATUS", "F"); + } + + return result; + } + + @Override + public List getVmsList(Map param) { + List rsList = new ArrayList<>(); + rsList = icsManagerMapper.getVmsList(param); + + logger.info("rsList : " + rsList); + + return rsList; + } + + @Override + public Map getVmsView(Map param) { + Map tmpInfo = icsManagerMapper.getVmsView(param); + logger.info("tmpInfo : " + tmpInfo); + + return tmpInfo; + } + + @Override + public Map getVmsErrorInfoView(Map param) { + Map tmpInfo = icsManagerMapper.getVmsErrorInfoView(param); + logger.info("tmpInfo : " + tmpInfo); + + return tmpInfo; + } + + @Override + public Map vmsErrorActionMemoSave(Map param) { + int cnt = 0; + cnt = icsManagerMapper.errorActionMemoSave(param); + + HashMap result = new HashMap(); + if(cnt > 0) { + result.put("STATUS", "S"); + } else { + result.put("STATUS", "F"); + } + + return result; + } + + @Override + public Map errorActionMemoSave(Map param1, Map param2) { + logger.info("param1::" + param1); + logger.info("param2::" + param2); + + param2.put("cctvAnprId", param1.get("cctvAnprId")); + param2.put("troblDt", param1.get("troblDt")); + + int cnt = 0; + cnt = icsManagerMapper.errorActionMemoSave(param2); + + HashMap result = new HashMap(); + if(cnt > 0) { + result.put("STATUS", "S"); + } else { + result.put("STATUS", "F"); + } + + result.put("cctvAnprId", param1.get("cctvAnprId")); + result.put("troblDt", param1.get("troblDt")); + + return result; + } + + @Override + public Map rtuReset(Map param) { + Map result = null; + String url = env.getProperty("Globals.SmartPlatform.Url") + env.getProperty("Globals.SmartPlatform.RTUResetURL"); + String ip = (String) param.get("IP_ADRES"); + int port = (int) param.get("PORT"); + String macAddress = (String) param.get("MAC_ADRES"); + String relayNum = (String) param.get("RELAY_NO"); + + Map reqData = new LinkedHashMap(); + reqData.put("ip", ip); + reqData.put("port", port); + //reqData.put("macAddress", macAddress); + reqData.put("macAddress", "000000000000");//맥 어드레스는 0 12자리로. + reqData.put("relayNum", 1+relayNum); + reqData.put("state", "2");//( 0 : off, 1:on, 2:reset(default) + + logger.info("url::" + url); + logger.info("reqData::" + reqData); + result = requestRtuResetApi(url, reqData); + logger.info("result:: " + result); + + return result; + } + + public Map requestRtuResetApi(String requestURL, + Map reqData + ) { + Map result = new HashMap(); + //CloseableHttpClient client = HttpClients.createDefault(); + RequestConfig defaultRequestConfig = RequestConfig.custom() + .setSocketTimeout(10000) + .setConnectTimeout(10000) + .setConnectionRequestTimeout(10000) + .setStaleConnectionCheckEnabled(true) + .build(); + CloseableHttpClient client = HttpClients.custom() + .setDefaultRequestConfig(defaultRequestConfig) + .build(); + try { + String token = env.getProperty("Globals.SmartPlatform.token"); + HttpPost postRequest = new HttpPost(requestURL); //POST 메소드 URL 새성 + postRequest.setHeader("Accept", "application/json"); + postRequest.setHeader("BROKER_TOKEN", token); + List pairs = new ArrayList<>(); + Iterator keys = reqData.keySet().iterator(); + while (keys.hasNext()) { + String key = keys.next(); + String val = ""; + if("port".equals(key)) { + int port = (int) reqData.get("port"); + val = String.valueOf(port); + } else { + val = (String)reqData.get(key); + } + pairs.add(new BasicNameValuePair(key, val)); + } + postRequest.setEntity(new UrlEncodedFormEntity(pairs, "UTF-8")); + HttpResponse response = client.execute(postRequest); + //Response 출력 + if (response.getStatusLine().getStatusCode() == 200) { + ResponseHandler handler = new BasicResponseHandler(); + String body = handler.handleResponse(response); + JSONParser parser = new JSONParser(); + Object obj = parser.parse(body); + JSONObject jsonObj = (JSONObject) obj; + JSONArray datas = (JSONArray) jsonObj.get("data"); + logger.info("body::" + jsonObj.toJSONString()); + if (jsonObj.get("result").equals("SUCCESS")) { + if (jsonObj.get("resultCode").equals("")) { + result.put("rspnsResult", "S"); + result.put("data", datas); + } else { + result.put("rspnsResult", "E"); + } + result.put("rspnsCode", "0000"); + result.put("rspnsMssage", jsonObj.get("rspnsMssage")); + } else { + result.put("rspnsResult", "E"); + result.put("rspnsCode", "9999"); + result.put("rspnsMssage", jsonObj.get("resultMessage")); + } + } else { + logger.error("response is error : " + response.getStatusLine().getStatusCode()); + result.put("rspnsResult", "E"); + result.put("rspnsCode", "9999"); + result.put("rspnsMssage", "response is error"); + } + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.put("rspnsResult", "E"); + result.put("rspnsCode", "9999"); + result.put("rspnsMssage", "시스템 오류가 발생하였습니다."); + } catch (Exception e) { + logger.error("[process error::" + "" + "]", e); + result.put("rspnsResult", "E"); + result.put("rspnsCode", "9999"); + result.put("rspnsMssage", "연결 오류가 발생하였습니다."); + } finally { + try { + client.close(); + } catch (IOException io) { + logger.error("[process error::" + "" + "]", io); + } + } + return result; + } + +} diff --git a/src/main/java/gtpa/icsmw/icsmanager/web/IcsManagerController.java b/src/main/java/gtpa/icsmw/icsmanager/web/IcsManagerController.java new file mode 100644 index 0000000..53ffb12 --- /dev/null +++ b/src/main/java/gtpa/icsmw/icsmanager/web/IcsManagerController.java @@ -0,0 +1,558 @@ +package gtpa.icsmw.icsmanager.web; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import gtpa.icsmw.user.dto.UserInfo; +import gtpa.icsmw.common.web.BaseController; +import gtpa.icsmw.icsmanager.service.IcsManagerService; +import gtpa.icsmw.util.Result; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : jackt + * Date : 22/07/2019 + * TIME : 14:00 PM + * Project : ICSMOBILE + * Class : IcsManagerController + * Desc : + * ///////////////////////////////////////////////////// + */ +@Controller +public class IcsManagerController extends BaseController { + + @Autowired + private IcsManagerService icsManagerService; + + @Autowired + private UserInfo userInfo; + + private Logger logger = LoggerFactory.getLogger(IcsManagerController.class); + + /** + * 장애관리 메인 조회 + * + * @param param the param + * @return the ics oper trobl main list + */ + + @RequestMapping(value = "/icsmanager/getIcsOperTroblMainList.do", method = RequestMethod.POST) + public @ResponseBody + Map getIcsOperTroblMainList(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== getIcsOperTroblMainList POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + + Map dbParam = (Map) param.get("dma_searchParm"); + + result.setData("dlt_resultIcsOperTroblMainList", icsManagerService.getIcsOperTroblMainList(dbParam)); + + logger.info("getIcsOperTroblMainList Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "조회시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "조회시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * 현장장비관리 메인검색 조회 + * + * @param param the param + * @return the ics main list + */ + @RequestMapping(value = "/icsmanager/getIcsMainList.do", method = RequestMethod.POST) + public @ResponseBody + Map getIcsMainList(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== getIcsMainList POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + + Map dbParam = (Map) param.get("dma_searchParm"); + List resultList = new ArrayList<>(); + resultList = icsManagerService.getIcsMainList(dbParam); + + result.setData("dlt_resultIcsMainList", resultList); + + logger.info("getIcsMainList Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "조회시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "조회시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * CCTV 목록 조회 + * + * @param param the param + * @return the cctv list + */ + @RequestMapping(value = "/icsmanager/getCctvList.do", method = RequestMethod.POST) + public @ResponseBody + Map getCctvList(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== getCctvList POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + + Map dbParam = (Map) param.get("dma_searchParm"); + + result.setData("dlt_resultList", icsManagerService.getCctvList(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "조회시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "조회시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * CCTV 상세 조회 + * + * @param param the param + * @return the cctv view + */ + @RequestMapping(value = "/icsmanager/getCctvView.do", method = RequestMethod.POST) + public @ResponseBody + Map getCctvView(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== getCctvView POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + + Map dbParam = (Map) param.get("dma_searchParm"); + + result.setData("dma_result", icsManagerService.getCctvView(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "조회시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "조회시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * CCTV 장애 조치내역 조회 + * + * @param param the param + * @return the cctv error info view + */ + @RequestMapping(value = "/icsmanager/getCctvErrorInfoView.do", method = RequestMethod.POST) + public @ResponseBody + Map getCctvErrorInfoView(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== getCctvErrorInfoView POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + + Map dbParam = (Map) param.get("dma_searchParm"); + + result.setData("dma_result", icsManagerService.getCctvErrorInfoView(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "조회시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "조회시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * CCTV 장애 조치내역 저장 + * + * @param param the param + * @return the map + */ + @RequestMapping(value = "/icsmanager/cctvErrorActionMemoSave.do", method = RequestMethod.POST) + public @ResponseBody + Map cctvErrorActionMemoSave(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== cctvErrorActionMemoSave POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_saveParm")); + + Map dbParam = (Map) param.get("dma_saveParm"); + + result.setData("dma_result", icsManagerService.cctvErrorActionMemoSave(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_WARNING, "저장시 에러가 발생하였습니다.
    입력파라미터 또는 로그를 확인해주세요.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "저장시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * ANPR 목록 조회 + * + * @param param the param + * @return the anpr list + */ + @RequestMapping(value = "/icsmanager/getAnprList.do", method = RequestMethod.POST) + public @ResponseBody + Map getAnprList(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== getAnprList POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + + Map dbParam = (Map) param.get("dma_searchParm"); + + result.setData("dlt_resultList", icsManagerService.getAnprList(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "조회시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "조회시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * ANPR 상세 조회 + * + * @param param the param + * @return the anpr view + */ + @RequestMapping(value = "/icsmanager/getAnprView.do", method = RequestMethod.POST) + public @ResponseBody + Map getAnprView(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== getAnprView POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + + Map dbParam = (Map) param.get("dma_searchParm"); + + result.setData("dma_result", icsManagerService.getAnprView(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "조회시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "조회시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * ANPR 장애 조치내역 조회 + * + * @param param the param + * @return the anpr error info view + */ + @RequestMapping(value = "/icsmanager/getAnprErrorInfoView.do", method = RequestMethod.POST) + public @ResponseBody + Map getAnprErrorInfoView(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== getAnprErrorInfoView POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + + Map dbParam = (Map) param.get("dma_searchParm"); + + result.setData("dma_result", icsManagerService.getAnprErrorInfoView(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "조회시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "조회시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * ANPR 장애 조치내역 저장 + * + * @param param the param + * @return the map + */ + @RequestMapping(value = "/icsmanager/anprErrorActionMemoSave.do", method = RequestMethod.POST) + public @ResponseBody + Map anprErrorActionMemoSave(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== anprErrorActionMemoSave POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + logger.info("Param Data : " + (Map) param.get("dma_result")); + + Map dbParam = (Map) param.get("dma_saveParm"); + + result.setData("dma_result", icsManagerService.anprErrorActionMemoSave(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_WARNING, "저장시 에러가 발생하였습니다.
    입력파라미터 또는 로그를 확인해주세요.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "저장시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + + /** + * VMS 목록 조회 + * + * @param param the param + * @return the vms list + */ + @RequestMapping(value = "/icsmanager/getVmsList.do", method = RequestMethod.POST) + public @ResponseBody + Map getVmsList(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== getVmsList POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + + Map dbParam = (Map) param.get("dma_searchParm"); + + result.setData("dlt_resultList", icsManagerService.getVmsList(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "조회시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "조회시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * VMS 상세 조회 + * + * @param param the param + * @return the vms view + */ + @RequestMapping(value = "/icsmanager/getVmsView.do", method = RequestMethod.POST) + public @ResponseBody + Map getVmsView(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== getVmsView POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + + Map dbParam = (Map) param.get("dma_searchParm"); + + result.setData("dma_result", icsManagerService.getVmsView(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "조회시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "조회시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * VMS 장애 조치내역 조회 + * + * @param param the param + * @return the vms error info view + */ + @RequestMapping(value = "/icsmanager/getVmsErrorInfoView.do", method = RequestMethod.POST) + public @ResponseBody + Map getVmsErrorInfoView(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== getVmsErrorInfoView POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_searchParm")); + + Map dbParam = (Map) param.get("dma_searchParm"); + + result.setData("dma_result", icsManagerService.getVmsErrorInfoView(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "조회시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "조회시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * VMS 장애 조치내역 저장 + * + * @param param the param + * @return the map + */ + @RequestMapping(value = "/icsmanager/vmsErrorActionMemoSave.do", method = RequestMethod.POST) + public @ResponseBody + Map vmsErrorActionMemoSave(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== vmsErrorActionMemoSave POST ======="); + logger.info("Param Data : " + (Map) param.get("dma_saveParm")); + + Map dbParam = (Map) param.get("dma_saveParm"); + + result.setData("dma_result", icsManagerService.vmsErrorActionMemoSave(dbParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 죄회되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_WARNING, "저장시 에러가 발생하였습니다.
    입력파라미터 또는 로그를 확인해주세요.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "저장시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * ANPR 장애 조치내역 저장 + * + * @param param the param + * @return the map + */ + @RequestMapping(value = "/icsmanager/errorActionMemoSave.do", method = RequestMethod.POST) + public @ResponseBody + Map errorActionMemoSave(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== anprErrorActionMemoSave POST ======="); + + Map resultMap = new HashMap(); + Map dbSearchParam = (Map) param.get("dma_searchParm"); + Map dbInputParam = (Map) param.get("dma_result"); + resultMap = userInfo.getUserInfoByBase(); + + logger.info("dbSearchParam::" + dbSearchParam); + logger.info("dbInputParam::" + dbInputParam); + logger.info("resultMap::" + resultMap); + dbInputParam.put("MBER_ID", resultMap.get("MBER_ID")); + + result.setData("dma_result", icsManagerService.errorActionMemoSave(dbSearchParam, dbInputParam)); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 저장되었습니다."); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_WARNING, "저장시 에러가 발생하였습니다.
    입력파라미터 또는 로그를 확인해주세요.",re); + } catch (Exception ex) { + result.setMsg(result.STATUS_ERROR, "저장시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + + /** + * 현장장비 재가동 API 호출 + * + * @param param the param + * @return the map + */ + @RequestMapping(value = "/icsmanager/rtuReset.do", method = RequestMethod.POST) + public @ResponseBody + Map rtuReset(@RequestBody Map param) { + + Result result = new Result(); + try { + logger.info("====#####== rtuReset POST ======="); + + Map resultMap = new HashMap(); + Map resetParam = (Map) param.get("dma_rtu_reset"); + + logger.info("resetParam::" + resetParam); + resultMap = icsManagerService.rtuReset(resetParam); + logger.info("resultMap::" + resultMap); + + result.setData("dma_rtu_reset", resultMap); + + logger.info("Result Data: " + result.getResult()); + result.setMsg(result.STATUS_SUCESS, "정상적으로 전송되었습니다."); + + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, "전송시 에러가 발생하였습니다.",re); + } catch (Exception ex) { + logger.error("[process error::" + "" + "]", ex); + result.setMsg(result.STATUS_ERROR, "전송시 에러가 발생하였습니다.", ex); + } + + return result.getResult(); + } + +} diff --git a/src/main/java/gtpa/icsmw/interceptor/AccessStaticInterceptor.java b/src/main/java/gtpa/icsmw/interceptor/AccessStaticInterceptor.java new file mode 100644 index 0000000..9db46d9 --- /dev/null +++ b/src/main/java/gtpa/icsmw/interceptor/AccessStaticInterceptor.java @@ -0,0 +1,59 @@ +package gtpa.icsmw.interceptor; + +import eu.bitwalker.useragentutils.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.servlet.mvc.WebContentInterceptor; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 31/05/2019 + * TIME : 5:30 PM + * Project : icsmw + * Class : AccessStaticInterceptor + * Desc : + * ///////////////////////////////////////////////////// + */ +public class AccessStaticInterceptor extends WebContentInterceptor { + private Logger logger = LoggerFactory.getLogger(AccessStaticInterceptor.class); + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { + logger.info("=== refresh browser"); + logger.info("=== access Browser:"+request.getHeader("user-agent")); + + UserAgent agent = UserAgent.parseUserAgentString(request.getHeader("user-agent")); + // browser + Browser browser = agent.getBrowser(); + logger.info("Browser type: " + browser.getBrowserType().getName()); + logger.info("*Browser name: " + browser.getName()); + logger.info("Browser render engine: " + browser.getRenderingEngine()); + + Version version = agent.getBrowserVersion(); + if (version != null){ + logger.info("*Browser version: " + version.getVersion()); + logger.info("Browser major version: " + version.getMajorVersion()); + logger.info("Browser minor version: " + version.getMinorVersion()); + } + logger.info("Browser manufacturer: " + browser.getManufacturer().getName()); + + // operating system + OperatingSystem os = agent.getOperatingSystem(); + logger.info("*OS Name: " + os.getName()); + logger.info("OS Manufacturer: " + os.getManufacturer()); + OperatingSystem group = os.getGroup(); + logger.info("OS group: " + group.getName()); + + // device type + DeviceType deviceType = os.getDeviceType(); + logger.info("*Device: " + deviceType.getName()); + + return super.preHandle(request, response, handler); + } +} diff --git a/src/main/java/gtpa/icsmw/interceptor/AuthenticInterceptor.java b/src/main/java/gtpa/icsmw/interceptor/AuthenticInterceptor.java new file mode 100644 index 0000000..c343ec9 --- /dev/null +++ b/src/main/java/gtpa/icsmw/interceptor/AuthenticInterceptor.java @@ -0,0 +1,75 @@ +package gtpa.icsmw.interceptor; + +import gtpa.icsmw.user.dto.UserInfo; +import gtpa.icsmw.util.Result; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.WebContentInterceptor; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 17/04/2019 + * TIME : 5:59 PM + * Project : icsmw + * Class : AuthenticInterceptor + * Desc : + * ///////////////////////////////////////////////////// + */ +public class AuthenticInterceptor extends WebContentInterceptor { + + private Logger logger = LoggerFactory.getLogger(AuthenticInterceptor.class); + + @Autowired + private UserInfo userInfo; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { + boolean result = true; + try { + logger.info("== AuthenticInterceptor preHandle start =======" + request.getRequestURI()); + HandlerMethod handlerMethod = (HandlerMethod) handler; + Method method = handlerMethod.getMethod(); + logger.info("== method ======" + method); + logger.info("== bean ======" + handlerMethod.getBean()); + + //logger.info("== UserInfo ============================" + userInfo.getUserInfo()); + if(request.getSession(false) != null){ + logger.info("== tempUserSessionInfoDTO =====================" + request.getSession(false).getAttribute("scopedTarget.tempUserSessionInfoDTO")); + } + + if (userInfo.getUserId() != null) { + result = true; + } else { + result = false; + response.setContentType("application/json"); + response.setCharacterEncoding("UTF-8"); + response.getWriter().write("{\"rsMsg\":{\"statusCode\":\"E\", \"errorCode\" : \"E0001\", \"message\":\"장시간 서비스 이용이 없어 접속 종료되었습니다.\",\"status\":\"Error\"}}"); + } + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + } catch (Exception e) { + logger.error("[process error::" + "" + "]", e); + }finally { + logger.info("== result ============================" + result); + } + + return result; + } + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + super.postHandle(request, response, handler, modelAndView); + logger.info("== AuthenticInterceptor postHandle start =======" + request.getRequestURI()); + } +} + diff --git a/src/main/java/gtpa/icsmw/interceptor/MessageAdvice.java b/src/main/java/gtpa/icsmw/interceptor/MessageAdvice.java new file mode 100644 index 0000000..11033ca --- /dev/null +++ b/src/main/java/gtpa/icsmw/interceptor/MessageAdvice.java @@ -0,0 +1,100 @@ +package gtpa.icsmw.interceptor; + +import gtpa.icsmw.login.service.LoginService; +import eu.bitwalker.useragentutils.*; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.EnableAspectJAutoProxy; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.HashMap; + +@Aspect // AOP bean : AOP 애노테이션 +@Component +@EnableAspectJAutoProxy +public class MessageAdvice { + + @Autowired + private LoginService loginService; + private Logger logger = LoggerFactory.getLogger(MessageAdvice.class); + + // 매개변수 확인, @Before(대상:호출전) + @Before("execution(* gtpa.icsmw.login.web.LoginController.login(..)) || execution(* gtpa.icsmw.login.web.LoginController.deUserLogin(..))") + public void startLog(JoinPoint jp){ + // 핵심업무의 클래스,매서드, 매개변수 로깅 + logger.info("핵심업무 코드정보 : "+jp.getSignature()); + logger.info("메서드 : "+jp.getSignature().getName()); + logger.info("매개변수:"+ Arrays.toString(jp.getArgs())); + } + + // method 실행 시간 확인, @Around : 핵심업무 전후에 자동호출, ProceedingJoinPoint + @Around("execution(* gtpa.icsmw.login.web.LoginController.login(..)) || execution(* gtpa.icsmw.login.web.LoginController.deUserLogin(..))") + public Object timeLog(ProceedingJoinPoint pjp) throws Throwable { + // 핵심업무 실행 전 + long start = System.currentTimeMillis(); + // 핵심업무 실행 + Object result = pjp.proceed(); + // 핵심업무 실행 후 + long end = System.currentTimeMillis(); + // 핵심업무 실행시간 연산 + logger.info("매개변수:"+Arrays.toString(pjp.getArgs())); + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); + UserAgent agent = UserAgent.parseUserAgentString(request.getHeader("user-agent")); + // browser + Browser browser = agent.getBrowser(); + //logger.info("Browser type: " + browser.getBrowserType().getName()); + logger.info("*Browser name: " + browser.getName()); + //logger.info("Browser render engine: " + browser.getRenderingEngine()); + + Version version = agent.getBrowserVersion(); + if (version != null){ + //logger.info("Browser version: " + version.getVersion()); + //logger.info("Browser major version: " + version.getMajorVersion()); + //logger.info("Browser minor version: " + version.getMinorVersion()); + } + //logger.info("Browser manufacturer: " + browser.getManufacturer().getName()); + + // operating system + OperatingSystem os = agent.getOperatingSystem(); + //logger.info("*OS Name: " + os.getName()); + //logger.info("OS Manufacturer: " + os.getManufacturer()); + OperatingSystem group = os.getGroup(); + //logger.info("*OS group: " + group.getName()); + + // device type + DeviceType deviceType = os.getDeviceType(); + logger.info("**Device: " + deviceType.getName()); + logger.info("SESSION::"+request.getSession().getAttribute("MBER_NO")); + HashMap param = new HashMap(); + param.put("MBER_NO",request.getSession().getAttribute("MBER_NO")); + param.put("DEVICE",deviceType.getName()); + param.put("BROWSER",browser.getName()); + boolean isLogined = false; + boolean isTempMber = false; + if(request.getSession().getAttribute("IS_LOGIN") != null) { + isLogined = (boolean)request.getSession().getAttribute("IS_LOGIN"); + if(request.getSession().getAttribute("IS_TEMPMBER") != null){ + isTempMber = (boolean)request.getSession().getAttribute("IS_TEMPMBER"); + } + } + if(isLogined) { + if(isTempMber){ + param.put("MBER_NO",request.getSession().getAttribute("MBER_ID")); + } + //loginService.insertConnInfo(param); + } + logger.info(pjp.getSignature().getName()+"메서드 실행시간:"+(end-start)); + logger.info("=========================================="); + return result; + } +} \ No newline at end of file diff --git a/src/main/java/gtpa/icsmw/interceptor/SessionCheckInterceptor.java b/src/main/java/gtpa/icsmw/interceptor/SessionCheckInterceptor.java new file mode 100644 index 0000000..32dc03a --- /dev/null +++ b/src/main/java/gtpa/icsmw/interceptor/SessionCheckInterceptor.java @@ -0,0 +1,122 @@ +package gtpa.icsmw.interceptor; + +import gtpa.icsmw.user.dto.UserInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 11/04/2019 + * TIME : 2:57 PM + * Project : icsmw + * Class : SessionCheckInterceptor + * Desc : + * ///////////////////////////////////////////////////// + */ +public class SessionCheckInterceptor extends HandlerInterceptorAdapter { + + private Logger logger = LoggerFactory.getLogger(SessionCheckInterceptor.class); + + @Autowired + private UserInfo userInfo; + + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { + String loginInfo; + HttpSession session = request.getSession(); + String reqUrl = request.getRequestURI(); + String w2xPath = request.getParameter("w2xPath"); + String link = request.getParameter("link"); + logger.info("== sessionId ============================" + session.getId()); + logger.info("== preHandle start ============================" + reqUrl); + logger.info("== w2xPath ============================" + w2xPath); + logger.info("== link ============================" + link); + //logger.info("== userInfo =====================" + userInfo.getUserInfo()); + + boolean result = true; + try { + loginInfo = (String) session.getAttribute("MBER_ID"); + logger.info("== loginInfo =====================" + loginInfo); + if (loginInfo != null) { + userInfo.setUserInfo(session); + } else { + if (!isSkipURI(request)) { + if ((w2xPath != null) || (reqUrl.indexOf(".xml") > -1)) { + // 웹스퀘어 화면 호출 시 세션이 종료된 경우, 로그인 페이지로 Redirect 처리한다. + result = false; + //response.sendRedirect("/ws.do?w2xPath=/cm/main/sub.xml&link=/cm/main/auth_check.xml"); + session.setAttribute("w2xPath", "/cm/main/auth_check.xml"); + response.sendRedirect("/"); + } else { + // 서비스 호출 시 세션이 종료된 경우, Session 종료 Alert 후, 로그인 페이지로 Redirect 처리 한다. + result = false; + response.setContentType("application/json"); + response.setCharacterEncoding("UTF-8"); + response.getWriter().write("{\"rsMsg\":{\"statusCode\":\"E\", \"errorCode\" : \"E0001\", \"message\":\"장시간 서비스 이용이 없어 접속 종료되었습니다.\",\"status\":\"Error\"}}"); + /*response.getWriter().write("{\"statusCode\":\"E\", \"errorCode\" : \"E0001\", \"message\":\"Session이 종료 되었습니다.\",\"status\":\"Error\"}");*/ + } + } + + if (link != null) { + if (link.indexOf("/ui") > -1) { + result = false; + //response.sendRedirect("/ws.do?w2xPath=/cm/main/sub.xml&link=/cm/main/auth_check.xml"); + session.setAttribute("w2xPath", "/cm/main/auth_check.xml"); + response.sendRedirect("/"); + } + } + } + + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + } catch (Exception e) { + logger.error("[process error::" + "" + "]", e); + } finally { + logger.info("== result ============================" + result); + } + return result; + } + + /** + * Session 체크 대상에서 예외 URI 구성 + * + * @param request 파라미터 정보 + * @date 2016. 8. 29. + * @returns 반환 변수 및 객체 + * @author InswaveSystems + * @example 샘플 코드 + */ + private boolean isSkipURI(HttpServletRequest request) { + + String[] skipUrl = {"/", "/I18N", "/ws.do"}; + String[] skipw2xPath = {"/cm", "/pub"}; + boolean result = false; + String uri = (request.getRequestURI()).replace(request.getContextPath(), ""); + String w2xPath = request.getParameter("w2xPath"); + + for (int i = 0; i < skipUrl.length; i++) { + if (uri.equals(skipUrl[i])) { + result = true; + break; + } + } + if (w2xPath != null) { + for (int i = 0; i < skipw2xPath.length; i++) { + if (w2xPath.contains(skipw2xPath[i])) { + if (!result) result = true; + break; + } else { + result = false; + } + } + } + return result; + } +} diff --git a/src/main/java/gtpa/icsmw/login/service/LoginService.java b/src/main/java/gtpa/icsmw/login/service/LoginService.java new file mode 100644 index 0000000..2125238 --- /dev/null +++ b/src/main/java/gtpa/icsmw/login/service/LoginService.java @@ -0,0 +1,12 @@ +package gtpa.icsmw.login.service; + +import java.util.Map; + +public interface LoginService { + + // 사용자 정보 조회 (로그인 체크용도로 사용 ) + Map selectMemberInfoForLogin(Map param); + + Map checkSecsnAt(Map defInfo); + +} \ No newline at end of file diff --git a/src/main/java/gtpa/icsmw/login/service/impl/LoginMapper.java b/src/main/java/gtpa/icsmw/login/service/impl/LoginMapper.java new file mode 100644 index 0000000..e19df1f --- /dev/null +++ b/src/main/java/gtpa/icsmw/login/service/impl/LoginMapper.java @@ -0,0 +1,23 @@ +package gtpa.icsmw.login.service.impl; + +import java.util.Map; + +import egovframework.rte.psl.dataaccess.EgovAbstractMapper; +import org.springframework.stereotype.Repository; + +@Repository("loginDao") +public class LoginMapper extends EgovAbstractMapper { + private String NAMESPACE = "LoginDAO"; + + public Map selectMemberInfoForLogin(Map param){ + return selectOne(NAMESPACE+".selectMemberInfoForLogin",param); + } + + public Map checkSecsnAt(Map defInfo) { + return selectOne(NAMESPACE+".checkSecsnAt",defInfo); + } + + public void updateMemberLoginErrCount(Map param) { + update(NAMESPACE + ".updateMemberLoginErrCount", param); + } +} diff --git a/src/main/java/gtpa/icsmw/login/service/impl/LoginServiceImpl.java b/src/main/java/gtpa/icsmw/login/service/impl/LoginServiceImpl.java new file mode 100644 index 0000000..4734f82 --- /dev/null +++ b/src/main/java/gtpa/icsmw/login/service/impl/LoginServiceImpl.java @@ -0,0 +1,77 @@ +package gtpa.icsmw.login.service.impl; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; + +import gtpa.icsmw.login.service.LoginService; +import org.springframework.stereotype.Service; + +@Service +public class LoginServiceImpl implements LoginService { + + @Resource(name = "loginDao") + private LoginMapper loginMapper; + + //@Value("${system.admin.id}") + private String adminId = "admin"; + + /** + * 사용자 정보 조회 (로그인 체크용도로 사용 ) + */ + @Override + public Map selectMemberInfoForLogin(Map param) { + Map memberMap = loginMapper.selectMemberInfoForLogin(param); + + // 사용자가 존재하지 않을 경우 + if (memberMap == null) { + memberMap = new HashMap(); + memberMap.put("LOGIN", "notexist"); + + // 사용자가 존재할 경우 + } else { + int promptLogin = Integer.parseInt(String.valueOf(memberMap.get("CONECT_FAILR_CO"))); + if( promptLogin > 4) { + memberMap.put("LOGIN", "promptover"); + return memberMap; + } + String PASSWORD = (String) memberMap.get("PASSWORD"); + //String reqPASSWORD = (String) param.get("pw"); + //reqPASSWORD = SHA256Util.encryptSHA256(reqPASSWORD); + String pw = (String) param.get("pw"); + // 패스워드 일치 + if (PASSWORD.equals(pw)) { + //memberMap.put("PW", ""); + memberMap.put("LOGIN", "success"); + } else { // 패스워드 불일치 + memberMap.put("LOGIN", "error"); + promptLogin = promptLogin + 1; + memberMap.put("CONECT_FAILR_CO",promptLogin); + loginMapper.updateMemberLoginErrCount(memberMap); + } + } + return memberMap; + } + + /** + * 해당 사용자 아이디가 관리자 아이디인지를 검사한다. + */ +/* @Override + public boolean isAdmin(String userId) { + String[] adminIdList = adminId.split(","); + + for (String adminId : adminIdList) { + if (adminId.trim().equals(userId)) { + return true; + } + } + + return false; + }*/ + + @Override + public Map checkSecsnAt(Map defInfo) { + return loginMapper.checkSecsnAt(defInfo); + } +} diff --git a/src/main/java/gtpa/icsmw/login/web/LoginController.java b/src/main/java/gtpa/icsmw/login/web/LoginController.java new file mode 100644 index 0000000..849f634 --- /dev/null +++ b/src/main/java/gtpa/icsmw/login/web/LoginController.java @@ -0,0 +1,247 @@ +package gtpa.icsmw.login.web; + +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import gtpa.icsmw.common.web.BaseController; +import gtpa.icsmw.login.service.LoginService; +import gtpa.icsmw.user.dto.UserInfo; +import gtpa.icsmw.util.Result; + +/** + * The type Login controller. + */ +@Controller +public class LoginController extends BaseController { + + @Autowired + private UserInfo userInfo; + + @Autowired + private LoginService loginService; + + @Resource(name = "globalsProperties") + private Properties env; + + private Logger logger = LoggerFactory.getLogger(LoginController.class); + + /** + * Gets init main info. + * + * @param request the request + * @return the init main info + */ + @RequestMapping("/common/init.do") + public @ResponseBody Map getInitMainInfo(HttpServletRequest request) { + Result result = new Result(); + //Map memberParam = null; + //Map setInfo = null; + Map defInfo = null; + try { + //memberParam = userInfo.getUserInfoByBase(); + defInfo = new HashMap(); + //request.getSession().invalidate(); + String loginInfo = (String) request.getSession().getAttribute("MBER_ID"); + if (loginInfo != null) { + userInfo.setUserInfo(request.getSession()); + } + defInfo.put("MBER_NO", userInfo.getUserNo()); + defInfo.put("MBER_ID", userInfo.getUserId()); + defInfo.put("MBER_NM", userInfo.getUserName()); + //defInfo.put("IS_ADMIN", userInfo.getIsAdmin()); + //defInfo.put("IS_TEMPMBER", userInfo.isTempMber()); + defInfo.put("IS_ADMIN", ""); + defInfo.put("IS_TEMPMBER", ""); + defInfo.put("IS_LOGIN",userInfo.isLogined()); + /*if(!"".equals(loginInfo)){ + Map checkData = loginService.checkSecsnAt(defInfo); + if(checkData!= null && "Y".equals(checkData.get("SECSN_AT"))){ + request.getSession().invalidate(); + }else{ + result.setData("dma_defInfo", defInfo); + } + }else{ + result.setData("dma_defInfo", defInfo); + }*/ + + logger.info("dma_defInfo::" + defInfo); + result.setData("dma_defInfo", defInfo); + + /*result.setData("dlt_menu", commonService.selectMenuList(memberParam)); + result.setData("dlt_fav", commonService.selectFavListByEmpCd(user.getUserId())); + result.setData("dlt_programAuthority", commonService.selectProgramAuthorityList(memberParam));*/ + result.setMsg(Result.STATUS_SUCESS, Result.STATUS_SUCESS_MESSAGE); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + result.setMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE,re); + } catch (Exception ex) { + logger.error("[process error::" + "" + "]", ex); + result.setMsg(Result.STATUS_ERROR, Result.STATUS_ERROR_MESSAGE, ex); + }finally { + request.getSession().setAttribute("IS_LOGIN", userInfo.isLogined()); + } + + return result.getResult(); + } + + /** + * Session check map. + * + * @param session the session + * @return the map + */ + @RequestMapping(value = "/login/sessionCheck.do", method = RequestMethod.GET) + public @ResponseBody + Map sessionCheck(HttpSession session) { + Map result = new HashMap(); + Map header = new HashMap(); + try { + logger.info("sessionCheck"); + + if (session.getAttribute("LoginVO") != null) { + header.put("resultCode", "001"); + header.put("resultMessage", "성공했습니다."); + } else { + header.put("resultCode", "002"); + header.put("resultMessage", "실패했습니다."); + } + result.put("header", header); + } catch (RuntimeException re) { + logger.error("[process error::" + "" + "]", re); + header.put("resultCode", "002"); + header.put("resultMessage", "오류가 발생하였습니다."); + } catch (Exception e) { + logger.error("[process error::" + "" + "]", e); + header.put("resultCode", "002"); + header.put("resultMessage", "오류가 발생하였습니다."); + } + return result; + } + + + + /** + * Login map. + * + * @param param the param + * @param request the request + * @param response the response + * @return the map + */ + @RequestMapping(value = "/login/login.do") + public @ResponseBody + Map login(@RequestBody Map param, HttpServletRequest request, HttpServletResponse response) { + HttpSession session = request.getSession(); + Map memberMap = null; + String status = null; + Map loginParam = null; + + Result result = new Result(); + if (session.getAttribute("IS_LOGIN") != null && (boolean) session.getAttribute("IS_LOGIN") == true) { + result.setMsg(Result.STATUS_WARNING, "이미 로그인중입니다."); + return result.getResult(); + } + try { + // loginParam은 param(EMP_CD/PW)의 값을 꺼내는 용도 + loginParam = (Map) param.get("dma_loginCheck"); + + memberMap = loginService.selectMemberInfoForLogin(loginParam); + status = (String) memberMap.get("LOGIN"); + + // 로그인 성공 + if (status.equals("success")) { + //String mainLayout = (String) memberMap.get("MAIN_LAYOUT_PAGE_CODE"); + + // main setting에 값이 저장되어 있지 않는 경우 insert. + //if (mainLayout == null) { + //mainLayout = userInfo.getDefaultMainLayoutCode(); + //} + + userInfo.setUserInfo(memberMap); + //session.setAttribute("MBER_CI", memberMap.get("MBER_CI")); + session.setAttribute("MBER_NO", memberMap.get("MBER_NO")); + session.setAttribute("MBER_ID", memberMap.get("MBER_ID")); + session.setAttribute("MBER_NM", memberMap.get("MBER_NM")); + //session.setAttribute("MBER_TY", memberMap.get("MBER_TY")); + + //session.setAttribute("MAIN_LAYOUT_PAGE_CODE", mainLayout); + + // 로그인한 아이디가 시스템 관리자인지 여부를 체크한다. + // 시스템 관리자 아이디는 websquareConfig.properties 파일의 system.admin.id 속성에 정의하면 된다. + // 시스템 관자자 아이디가 여러 개일 경우 콤마(",") 구분해서 작성할 수 있다. + //boolean isAdmin = loginService.isAdmin((String) memberMap.get("MBER_ID")); + //session.setAttribute("IS_ADMIN", isAdmin); + //session.setAttribute("IS_ADMIN", ""); + //session.setAttribute("IS_TEMPMBER", false); + + // 클라이언트(UI)에 전달하는 IS_ADMIN 정보는 관리자인지의 여부에 따라 화면 제어가 필요한 로직 처리를 위해서만 사용한다. + // 서버 서비스에서의 로직 처리는 보안을 위해서 클라이언트에서 전달하는 IS_ADMIN 정보가 아닌 + // 서버 서비스에서 관리하는 UserInfo.getIsAdmin()에서 관리자 여부를 받아와서 판단해야 한다. + session.setMaxInactiveInterval(60 * 60); + userInfo.setUserInfo(session); + logger.info("UserLogin after::" + userInfo.toString()); + result.setMsg(Result.STATUS_SUCESS, "로그인 성공"); + result.setData("dc_result", memberMap); + } else if (status.equals("promptover")) { + result.setMsg("O", "비밀번호 오류가 5회이상 발생하여 로그인이 불가하오니
    관리자를 통하여 로그인횟수 초기화 후 다시 로그인하여 주시기 바랍니다."); + return result.getResult(); + } else if (status.equals("error")) { + result.setMsg(result.STATUS_ERROR, "아이디 또는 패스워드가 잘못 되었습니다."); + } else { + result.setMsg(result.STATUS_ERROR, "아이디 또는 패스워드가 잘못 되었습니다."); + } + } catch (RuntimeException re) {// DB커넥션 없음 + logger.error("[process error::" + "" + "]", re); + result.setMsg(result.STATUS_ERROR, result.STATUS_ERROR_MESSAGE, re); + } catch (Exception ex) {// DB커넥션 없음 + logger.error("[process error::" + "" + "]", ex); + result.setMsg(result.STATUS_ERROR, result.STATUS_ERROR_MESSAGE, ex); + } finally { + session.setAttribute("IS_LOGIN", userInfo.isLogined()); + } + return result.getResult(); + } + + /** + * Logout map. + * + * @param request the request + * @param response the response + * @return the map + */ + @RequestMapping(value = "/login/logout.do") + public @ResponseBody + Map logout(HttpServletRequest request, HttpServletResponse response) { + Result result = new Result(); + try { + result.setMsg(Result.STATUS_SUCESS, "정상적으로 로그아웃 되었습니다."); + } catch (RuntimeException re) {// DB커넥션 없음 + logger.error("[process error::" + "" + "]", re); + result.setMsg(result.STATUS_ERROR, result.STATUS_ERROR_MESSAGE, re); + } catch (Exception ex) { + logger.error("[process error::" + "" + "]", ex); + result.setMsg(Result.STATUS_ERROR, "로그아웃 도중 오류가 발생하였습니다.", ex); + } finally { + request.getSession().invalidate(); + userInfo.init(); + logger.info(userInfo.toString()); + } + return result.getResult(); + } + +} diff --git a/src/main/java/gtpa/icsmw/user/dto/TempCarInfo.java b/src/main/java/gtpa/icsmw/user/dto/TempCarInfo.java new file mode 100644 index 0000000..b6d1154 --- /dev/null +++ b/src/main/java/gtpa/icsmw/user/dto/TempCarInfo.java @@ -0,0 +1,123 @@ +package gtpa.icsmw.user.dto; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 12/04/2019 + * TIME : 4:04 PM + * Project : icsmw + * Class : TempCarInfo + * Desc : + * ///////////////////////////////////////////////////// + */ +public class TempCarInfo { + //차량정보 + String mberNo = ""; + String vhcleManageNo = ""; + String vhclePosesnTy= ""; + String vhcleNo= ""; + String vhcleOwnerCi= ""; + String useBeginDt= ""; + String useEndDt= ""; + String vhcleSttusTy= ""; + String setleAgreTy= ""; + String penaltyAgreTy= ""; + + public String getMberNo() { + return mberNo; + } + + public void setMberNo(String mberNo) { + this.mberNo = mberNo; + } + + public String getVhcleManageNo() { + return vhcleManageNo; + } + + public void setVhcleManageNo(String vhcleManageNo) { + this.vhcleManageNo = vhcleManageNo; + } + + public String getVhclePosesnTy() { + return vhclePosesnTy; + } + + public void setVhclePosesnTy(String vhclePosesnTy) { + this.vhclePosesnTy = vhclePosesnTy; + } + + public String getVhcleNo() { + return vhcleNo; + } + + public void setVhcleNo(String vhcleNo) { + this.vhcleNo = vhcleNo; + } + + public String getVhcleOwnerCi() { + return vhcleOwnerCi; + } + + public void setVhcleOwnerCi(String vhcleOwnerCi) { + this.vhcleOwnerCi = vhcleOwnerCi; + } + + public String getUseBeginDt() { + return useBeginDt; + } + + public void setUseBeginDt(String useBeginDt) { + this.useBeginDt = useBeginDt; + } + + public String getUseEndDt() { + return useEndDt; + } + + public void setUseEndDt(String useEndDt) { + this.useEndDt = useEndDt; + } + + public String getVhcleSttusTy() { + return vhcleSttusTy; + } + + public void setVhcleSttusTy(String vhcleSttusTy) { + this.vhcleSttusTy = vhcleSttusTy; + } + + public String getSetleAgreTy() { + return setleAgreTy; + } + + public void setSetleAgreTy(String setleAgreTy) { + this.setleAgreTy = setleAgreTy; + } + + public String getPenaltyAgreTy() { + return penaltyAgreTy; + } + + public void setPenaltyAgreTy(String penaltyAgreTy) { + this.penaltyAgreTy = penaltyAgreTy; + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("TempCarInfo{"); + sb.append("mberNo='").append(mberNo).append('\''); + sb.append(", vhcleManageNo='").append(vhcleManageNo).append('\''); + sb.append(", vhclePosesnTy='").append(vhclePosesnTy).append('\''); + sb.append(", vhcleNo='").append(vhcleNo).append('\''); + sb.append(", vhcleOwnerCi='").append(vhcleOwnerCi).append('\''); + sb.append(", useBeginDt='").append(useBeginDt).append('\''); + sb.append(", useEndDt='").append(useEndDt).append('\''); + sb.append(", vhcleSttusTy='").append(vhcleSttusTy).append('\''); + sb.append(", setleAgreTy='").append(setleAgreTy).append('\''); + sb.append(", penaltyAgreTy='").append(penaltyAgreTy).append('\''); + sb.append('}'); + return sb.toString(); + } +} diff --git a/src/main/java/gtpa/icsmw/user/dto/TempPayInfo.java b/src/main/java/gtpa/icsmw/user/dto/TempPayInfo.java new file mode 100644 index 0000000..3d2f712 --- /dev/null +++ b/src/main/java/gtpa/icsmw/user/dto/TempPayInfo.java @@ -0,0 +1,73 @@ +package gtpa.icsmw.user.dto; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 12/04/2019 + * TIME : 4:04 PM + * Project : icsmw + * Class : TempCarInfo + * Desc : + * ///////////////////////////////////////////////////// + */ +public class TempPayInfo { + //결제수단 + String payOrd; + String payType; + String payComp; + String payName; + String payKey; + + public String getPayOrd() { + return payOrd; + } + + public void setPayOrd(String payOrd) { + this.payOrd = payOrd; + } + + public String getPayType() { + return payType; + } + + public void setPayType(String payType) { + this.payType = payType; + } + + public String getPayComp() { + return payComp; + } + + public void setPayComp(String payComp) { + this.payComp = payComp; + } + + public String getPayName() { + return payName; + } + + public void setPayName(String payName) { + this.payName = payName; + } + + public String getPayKey() { + return payKey; + } + + public void setPayKey(String payKey) { + this.payKey = payKey; + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("TempPayInfo{"); + sb.append("payOrd='").append(payOrd).append('\''); + sb.append(", payType='").append(payType).append('\''); + sb.append(", payComp='").append(payComp).append('\''); + sb.append(", payName='").append(payName).append('\''); + sb.append(", payKey='").append(payKey).append('\''); + sb.append('}'); + return sb.toString(); + } +} diff --git a/src/main/java/gtpa/icsmw/user/dto/TempUserSessionInfoDTO.java b/src/main/java/gtpa/icsmw/user/dto/TempUserSessionInfoDTO.java new file mode 100644 index 0000000..de9f2de --- /dev/null +++ b/src/main/java/gtpa/icsmw/user/dto/TempUserSessionInfoDTO.java @@ -0,0 +1,283 @@ +package gtpa.icsmw.user.dto; + +import gtpa.icsmw.util.SHA256Util; +import org.springframework.context.annotation.Scope; +import org.springframework.context.annotation.ScopedProxyMode; +import org.springframework.stereotype.Component; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 12/04/2019 + * TIME : 10:25 AM + * Project : icsmw + * Class : TempUserSessionDTO + * Desc : + * ///////////////////////////////////////////////////// + */ +@Component +@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) +public class TempUserSessionInfoDTO implements Serializable { + + public Date makeTime; + // 회원정보 + public String mberNo; + public String mberId; + public String mberty; + public String mberPw; + public String mberNm; + public String mberCi; + // 사업자정보 + public String entrprsNm ; + public String bsnmRegistNo; + public String cprRegistNo; + public String chargerNm; + public String chargerCi; + public String infoProvdAgreAt; + public Map tempUserInfo; + public List tempCarInfos; + public List tempCreditInfos; + public List tempBankInfos; + //약관동의 + public String termsCheck1; + public String termsCheck2; + public String termsCheck3; + public String termsCheck4; + public String termsCheck5; + + //문자인증키 + public String phoneNum; + public String smsKey; + + public TempUserSessionInfoDTO() { + this.makeTime = new Date(); + } + + public long getMakeTime() { + return makeTime.getTime(); + } + + public Map getTempUserInfo() { + return tempUserInfo; + } + + public void setTempUserInfo(Map tempUserInfo) { + this.tempUserInfo = tempUserInfo; + } + + public String getMberNo() { + return mberNo; + } + + public void setMberNo(String mberNo) { + this.mberNo = mberNo; + } + + public String getMberId() { + return mberId; + } + + public void setMberId(String mberId) { + this.mberId = mberId; + } + + public String getMberty() { + return mberty; + } + + public void setMberty(String mberty) { + this.mberty = mberty; + } + + public String getMberPw() { + return mberPw; + } + + public void setMberPw(String mberPw) { + this.mberPw = SHA256Util.encryptSHA256(mberPw); + } + + public String getMberNm() { + return mberNm; + } + + public void setMberNm(String mberNm) { + this.mberNm = mberNm; + } + + public String getMberCi() { + return mberCi; + } + + public void setMberCi(String mberCi) { + this.mberCi = mberCi; + } + + public String getEntrprsNm() { + return entrprsNm; + } + + public void setEntrprsNm(String entrprsNm) { + this.entrprsNm = entrprsNm; + } + + public String getBsnmRegistNo() { + return bsnmRegistNo; + } + + public void setBsnmRegistNo(String bsnmRegistNo) { + this.bsnmRegistNo = bsnmRegistNo; + } + + public String getCprRegistNo() { + return cprRegistNo; + } + + public void setCprRegistNo(String cprRegistNo) { + this.cprRegistNo = cprRegistNo; + } + + public String getChargerNm() { + return chargerNm; + } + + public void setChargerNm(String chargerNm) { + this.chargerNm = chargerNm; + } + + public String getChargerCi() { + return chargerCi; + } + + public void setChargerCi(String chargerCi) { + this.chargerCi = chargerCi; + } + + public String getInfoProvdAgreAt() { + return infoProvdAgreAt; + } + + public void setInfoProvdAgreAt(String infoProvdAgreAt) { + this.infoProvdAgreAt = infoProvdAgreAt; + } + + public List getTempCarInfos() { + return tempCarInfos; + } + + public void setTempCarInfos(List tempCarInfos) { + for (Map carInfo: tempCarInfos) { + carInfo.put("mberNo",this.mberNo); + } + this.tempCarInfos = tempCarInfos; + } + + public List getTempCreditInfos() { + return tempCreditInfos; + } + + public void setTempCreditInfos(List tempCreditInfos) { + this.tempCreditInfos = tempCreditInfos; + } + + public List getTempBankInfos() { + return tempBankInfos; + } + + public void setTempBankInfos(List tempBankInfos) { + this.tempBankInfos = tempBankInfos; + } + + public String getTermsCheck1() { + return termsCheck1; + } + + public void setTermsCheck1(String termsCheck1) { + this.termsCheck1 = termsCheck1; + } + + public String getTermsCheck2() { + return termsCheck2; + } + + public void setTermsCheck2(String termsCheck2) { + this.termsCheck2 = termsCheck2; + } + + public String getTermsCheck3() { + return termsCheck3; + } + + public void setTermsCheck3(String termsCheck3) { + this.termsCheck3 = termsCheck3; + } + + public String getTermsCheck4() { + return termsCheck4; + } + + public void setTermsCheck4(String termsCheck4) { + this.termsCheck4 = termsCheck4; + } + + public String getTermsCheck5() { + return termsCheck5; + } + + public void setTermsCheck5(String termsCheck5) { + this.termsCheck5 = termsCheck5; + } + + public String getPhoneNum() { + return phoneNum; + } + + public void setPhoneNum(String phoneNum) { + this.phoneNum = phoneNum; + } + + public String getSmsKey() { + return smsKey; + } + + public void setSmsKey(String smsKey) { + this.smsKey = smsKey; + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("TempUserSessionInfoDTO{"); + sb.append("makeTime=").append(makeTime); + sb.append(", mberNo='").append(mberNo).append('\''); + sb.append(", mberId='").append(mberId).append('\''); + sb.append(", mberty='").append(mberty).append('\''); + sb.append(", mberPw='").append(mberPw).append('\''); + sb.append(", mberNm='").append(mberNm).append('\''); + sb.append(", mberCi='").append(mberCi).append('\''); + sb.append(", entrprsNm='").append(entrprsNm).append('\''); + sb.append(", bsnmRegistNo='").append(bsnmRegistNo).append('\''); + sb.append(", cprRegistNo='").append(cprRegistNo).append('\''); + sb.append(", chargerNm='").append(chargerNm).append('\''); + sb.append(", chargerCi='").append(chargerCi).append('\''); + sb.append(", infoProvdAgreAt='").append(infoProvdAgreAt).append('\''); + sb.append(", tempUserInfo=").append(tempUserInfo); + sb.append(", tempCarInfos=").append(tempCarInfos); + sb.append(", tempCreditInfos=").append(tempCreditInfos); + sb.append(", tempBankInfos=").append(tempBankInfos); + sb.append(", termsCheck1='").append(termsCheck1).append('\''); + sb.append(", termsCheck2='").append(termsCheck2).append('\''); + sb.append(", termsCheck3='").append(termsCheck3).append('\''); + sb.append(", termsCheck4='").append(termsCheck4).append('\''); + sb.append(", termsCheck5='").append(termsCheck5).append('\''); + sb.append(", phoneNum='").append(phoneNum).append('\''); + sb.append(", smsKey='").append(smsKey).append('\''); + sb.append('}'); + return sb.toString(); + } +} diff --git a/src/main/java/gtpa/icsmw/user/dto/UserInfo.java b/src/main/java/gtpa/icsmw/user/dto/UserInfo.java new file mode 100644 index 0000000..182ae04 --- /dev/null +++ b/src/main/java/gtpa/icsmw/user/dto/UserInfo.java @@ -0,0 +1,302 @@ +package gtpa.icsmw.user.dto; + +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpSession; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Scope; +import org.springframework.context.annotation.ScopedProxyMode; +import org.springframework.stereotype.Component; + +@Component +@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) +public class UserInfo implements Serializable { + + // MBER_No + private String userNo; + // MBER_ID + private String userId; + + // MBER_TY + private String userType; + + // MBER_NM + private String userName; + + private String userCi; + + // 시스템 관리자 여부 + private boolean isAdmin; + + private boolean isTempMber; + + // MAIN_LAYOUT_PAGE_CODE - 메인화면 layout + private String mainLayoutCode; + + // FAVORITE_STORAGE - 즐겨찾기 저장 위치 + private String favoriteStorage; + + private Date makeTime; + + public UserInfo() { + this.makeTime = new Date(); + } + + public long getMakeTime() { + return makeTime.getTime(); + } + + @Value("${main.setting.default.layout}") + private String defaultMainLayoutCode; + + @Value("${main.setting.default.favoriteLocation}") + private String defaultFavoriteStorage; + + public String getUserNo() { + return userNo; + } + + public void setUserNo(String userNo) { + this.userNo = userNo; + } + + public String getUserId() { + return userId; + } + + private void setUserId(String userId) { + this.userId = userId; + } + + public String getUserType() { + return userType; + } + + private void setUserType(String userType) { + this.userType = userType; + } + + public String getUserName() { + return userName; + } + + private void setUserName(String userName) { + this.userName = userName; + } + + public String getUserCi() { + return userCi; + } + + public void setUserCi(String userCi) { + this.userCi = userCi; + } + + public boolean getIsAdmin() { + return isAdmin; + } + + public void setIsAdmin(boolean isAdmin) { + this.isAdmin = isAdmin; + } + + public boolean isTempMber() { + return isTempMber; + } + + public void setIsTempMber(boolean tempMber) { + isTempMber = tempMber; + } + + public String getMainLayoutCode() { + return mainLayoutCode; + } + + public void setMainLayoutCode(String mainLayoutCode) { + if (mainLayoutCode == null || mainLayoutCode.equals("")) { + this.mainLayoutCode = this.defaultMainLayoutCode; + } else { + this.mainLayoutCode = mainLayoutCode; + } + } + + public String getFavoriteStorage() { + return favoriteStorage; + } + + public void setFavoriteStorage(String favoriteStorage) { + if (favoriteStorage == null || favoriteStorage.equals("")) { + this.mainLayoutCode = this.defaultFavoriteStorage; + } else { + this.favoriteStorage = favoriteStorage; + } + } + + public String getDefaultMainLayoutCode() { + return this.defaultMainLayoutCode; + } + + public String getDefaultFavoriteStorage() { + return this.defaultFavoriteStorage; + } + + public Map getUserInfo() { + Map userInfo = new HashMap(); + userInfo.put("MBER_NO", this.getUserNo()); + userInfo.put("MBER_ID", this.getUserId()); + //userInfo.put("MBER_TY", this.getUserType()); + userInfo.put("MBER_NM", this.getUserName()); + //userInfo.put("MBER_CI", this.getUserCi()); + userInfo.put("MAIN_LAYOUT", this.getMainLayoutCode()); + userInfo.put("FV_STORAGE", this.getFavoriteStorage()); + return userInfo; + } + + public Map getDeUserInfo() { + Map userInfo = new HashMap(); + userInfo.put("MBER_NO", this.getUserNo()); + userInfo.put("MBER_ID", this.getUserId()); + userInfo.put("MBER_TY", this.getUserType()); + userInfo.put("MBER_NM", this.getUserName()); + userInfo.put("MBER_CI", this.getUserCi()); + userInfo.put("MAIN_LAYOUT", this.getMainLayoutCode()); + userInfo.put("FV_STORAGE", this.getFavoriteStorage()); + return userInfo; + } + + public Map getUserInfoWithoutUserID() { + Map userInfo = new HashMap(); + userInfo.put("MBER_NM", this.getUserName()); + userInfo.put("MAIN_LAYOUT", this.getMainLayoutCode()); + userInfo.put("FV_STORAGE", this.getFavoriteStorage()); + return userInfo; + } + + /** + * Map객체에 사원번호만 담아서 return한다. + * + * @date 2016.08.22 + * @returns MBER_ID 담긴 map + * @author InswaveSystems + * @example 샘플 코드 + * @todo 추가해야 할 작업 + */ + public Map getUserInfoByBase() { + Map userInfo = new HashMap(); + userInfo.put("MBER_ID", this.getUserId()); + userInfo.put("MBER_NO", this.getUserNo()); + return userInfo; + } + + /** + * session 값을 참조하여 dataSetting + * + * @param session 사용자 정보가 담긴 session객체 + * @date 2016.08.19 + * @author InswaveSystems + * @example 샘플 코드 + * @todo 추가해야 할 작업 + */ + public void setUserInfo(HttpSession session) { + this.setUserNo((String) session.getAttribute("MBER_NO")); + this.setUserId((String) session.getAttribute("MBER_ID")); + //this.setUserType((String) session.getAttribute("MBER_TY")); + this.setUserName((String) session.getAttribute("MBER_NM")); + //this.setUserCi((String) session.getAttribute("MBER_CI")); + //this.setIsAdmin((boolean) session.getAttribute("IS_ADMIN")); + //this.setIsTempMber((boolean) session.getAttribute("IS_TEMPMBER")); + //this.setMainLayoutCode((String) session.getAttribute("MAIN_LAYOUT_PAGE_CODE")); + } + + /** + * session 값을 참조하여 dataSetting + * + * @param session 사용자 정보가 담긴 session객체 + * @date 2016. 8. 19. + * @author InswaveSystems + * @example 샘플 코드 + * @todo 추가해야 할 작업 + */ + public void updateMainLayoutCode(HttpSession session, String mainLayoutPageCode) { + this.setMainLayoutCode(mainLayoutPageCode); + session.setAttribute("MAIN_LAYOUT_PAGE_CODE", this.getMainLayoutCode()); + } + + /** + * Map값을 참조하여 dataSetting + * + * @param memberInfo 사용자 정보가 담긴 map객체 + * @date 2016. 8. 19. + * @author InswaveSystems + * @example 샘플 코드 + * @todo 추가해야 할 작업 + */ + public void setUserInfo(Map memberInfo) { + //this.setUserCi((String) memberInfo.get("MBER_CI")); + this.setUserNo((String) memberInfo.get("MBER_NO")); + this.setUserId((String) memberInfo.get("MBER_ID")); + //this.setUserType((String) memberInfo.get("MBER_TY")); + this.setUserName((String) memberInfo.get("MBER_NM")); + //this.setUserCi((String) memberInfo.get("MBER_CI")); + //this.setMainLayoutCode((String) memberInfo.get("MAIN_LAYOUT_PAGE_CODE")); + //this.setFavoriteStorage((String) memberInfo.get("FAVORITE_STORAGE")); + } + + /** + * data 초기화 + * + * @date 2016. 8. 19. + * @returns 반환 변수 및 객체 + * @author InswaveSystems + * @example 샘플 코드 + * @todo 추가해야 할 작업 + */ + public void init() { + this.setUserNo(null); + this.setUserId(null); + this.setUserName(null); + this.setUserCi(null); + this.setMainLayoutCode(null); + this.setFavoriteStorage(null); + } + + /** + * 사용자(로그인) 정보가 있는 경우 + * + * @date 2016. 8. 19. + * @returns 반환 변수 및 객체 + * @author InswaveSystems + * @example 샘플 코드 + * @todo 추가해야 할 작업 + */ + public Boolean isLogined() { + String userId = this.getUserId(); + if (userId == null || userId.equals("")) { + return false; + } + return true; + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("UserInfo{"); + sb.append("userNo='").append(userNo).append('\''); + sb.append(", userId='").append(userId).append('\''); + sb.append(", userType='").append(userType).append('\''); + sb.append(", userName='").append(userName).append('\''); + sb.append(", userCi='").append(userCi).append('\''); + sb.append(", isAdmin=").append(isAdmin); + sb.append(", isTempMember=").append(isTempMber); + sb.append(", mainLayoutCode='").append(mainLayoutCode).append('\''); + sb.append(", favoriteStorage='").append(favoriteStorage).append('\''); + sb.append(", makeTime=").append(makeTime); + sb.append(", defaultMainLayoutCode='").append(defaultMainLayoutCode).append('\''); + sb.append(", defaultFavoriteStorage='").append(defaultFavoriteStorage).append('\''); + sb.append('}'); + return sb.toString(); + } +} diff --git a/src/main/java/gtpa/icsmw/user/service/UserService.java b/src/main/java/gtpa/icsmw/user/service/UserService.java new file mode 100644 index 0000000..14c8f08 --- /dev/null +++ b/src/main/java/gtpa/icsmw/user/service/UserService.java @@ -0,0 +1,33 @@ +package gtpa.icsmw.user.service; + +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 24/04/2019 + * TIME : 9:51 AM + * Project : icsmw + * Class : UserService + * Desc : + * ///////////////////////////////////////////////////// + */ +public interface UserService { + + @Transactional + public int updatePassword(Map userData); + + @Transactional + public int updateCompChargerInfo(Map chargerData); + + @Transactional + public int updateVhcleInfo(List vhcleData); + + @Transactional + public int secessionUser(Map userData); + +} diff --git a/src/main/java/gtpa/icsmw/user/service/impl/UserMapper.java b/src/main/java/gtpa/icsmw/user/service/impl/UserMapper.java new file mode 100644 index 0000000..e31fb5b --- /dev/null +++ b/src/main/java/gtpa/icsmw/user/service/impl/UserMapper.java @@ -0,0 +1,43 @@ +package gtpa.icsmw.user.service.impl; + +import egovframework.rte.psl.dataaccess.EgovAbstractMapper; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 24/04/2019 + * TIME : 9:53 AM + * Project : icsmw + * Class : UserMapper + * Desc : + * ///////////////////////////////////////////////////// + */ +@Repository("userDao") +public class UserMapper extends EgovAbstractMapper{ + + private String NAMESPACE = "UserDAO"; + + public int updatePassword(Map userData) { + return update(NAMESPACE+".updatePassword",userData); + } + + public int updateCompChargerInfo(Map chargerData) { + return update(NAMESPACE+".updateCompChargerInfo",chargerData); + } + + public int updateVhcleInfo(List vhcleData) { + int rsltCnt = 0; + rsltCnt = update(NAMESPACE+".updateVhcleInfo",vhcleData); + rsltCnt += update(NAMESPACE+".insertVhcleInfo",vhcleData); + return rsltCnt; + } + + public int secessionUser(Map userData) { + return update(NAMESPACE+".secessionUser",userData); + } +} diff --git a/src/main/java/gtpa/icsmw/user/service/impl/UserServiceImpl.java b/src/main/java/gtpa/icsmw/user/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..4d8ac73 --- /dev/null +++ b/src/main/java/gtpa/icsmw/user/service/impl/UserServiceImpl.java @@ -0,0 +1,46 @@ +package gtpa.icsmw.user.service.impl; + +import gtpa.icsmw.user.service.UserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 24/04/2019 + * TIME : 9:52 AM + * Project : icsmw + * Class : UserServiceImpl + * Desc : + * ///////////////////////////////////////////////////// + */ +@Service +public class UserServiceImpl implements UserService{ + + @Resource(name = "userDao") + UserMapper userMapper; + + @Override + public int updatePassword(Map userData) { + return userMapper.updatePassword(userData); + } + + @Override + public int updateCompChargerInfo(Map chargerData) { + return userMapper.updateCompChargerInfo(chargerData); + } + + @Override + public int updateVhcleInfo(List vhcleData) { + return userMapper.updateVhcleInfo(vhcleData); + } + + @Override + public int secessionUser(Map userData) { + return userMapper.secessionUser(userData); + } +} diff --git a/src/main/java/gtpa/icsmw/user/web/UserController.java b/src/main/java/gtpa/icsmw/user/web/UserController.java new file mode 100644 index 0000000..77e158e --- /dev/null +++ b/src/main/java/gtpa/icsmw/user/web/UserController.java @@ -0,0 +1,47 @@ +package gtpa.icsmw.user.web; + +//import gtpa.icsmw.fee.service.FeeService; +import gtpa.icsmw.login.service.LoginService; +//import gtpa.icsmw.penalty.service.PenaltyService; +import gtpa.icsmw.user.dto.UserInfo; +import gtpa.icsmw.user.service.UserService; +//import gtpa.icsmw.vehicle.service.VehicleService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 24/04/2019 + * TIME : 9:30 AM + * Project : icsmw + * Class : UserController + * Desc : + * ///////////////////////////////////////////////////// + */ +//@Controller +public class UserController { + + private Logger logger = LoggerFactory.getLogger(UserController.class); + + /** + * The User info. + */ + @Autowired + UserInfo userInfo; + + /** + * The User service. + */ + @Autowired + UserService userService; + + /** + * The Login service. + */ + @Autowired + LoginService loginService; + +} diff --git a/src/main/java/gtpa/icsmw/util/BrsIdGnrUtil.java b/src/main/java/gtpa/icsmw/util/BrsIdGnrUtil.java new file mode 100644 index 0000000..9693e50 --- /dev/null +++ b/src/main/java/gtpa/icsmw/util/BrsIdGnrUtil.java @@ -0,0 +1,69 @@ +package gtpa.icsmw.util; + +import java.util.Date; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 11/04/2019 + * TIME : 4:14 PM + * Project : icsmw + * Class : BrsIdGnrUtil + * Desc : + * ///////////////////////////////////////////////////// + */ + +public class BrsIdGnrUtil { + private String prefix; + private String group; + private int cipers; + private String fillChar; + private String gnrID; + + public String getPrefix() { + return prefix; + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + public String getGroup() { + return group; + } + + public void setGroup(String group) { + this.group = group; + } + + public int getCipers() { + return cipers; + } + + public void setCipers(int cipers) { + this.cipers = cipers; + } + + public String getFillChar() { + return fillChar; + } + + public void setFillChar(String fillChar) { + this.fillChar = fillChar; + } + + public String getGnrID() { + return gnrID; + } + + public void setGnrID() { + this.gnrID = makeGnrID(); + } + + public String makeGnrID(){ + Date date = new Date(); + String generateID = this.getPrefix()+this.getGroup()+ + date.getTime(); + return generateID; + } +} diff --git a/src/main/java/gtpa/icsmw/util/CertifiDAO.java b/src/main/java/gtpa/icsmw/util/CertifiDAO.java new file mode 100644 index 0000000..e8d1533 --- /dev/null +++ b/src/main/java/gtpa/icsmw/util/CertifiDAO.java @@ -0,0 +1,65 @@ +package gtpa.icsmw.util; + +import java.util.HashMap; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 08/04/2019 + * TIME : 9:54 AM + * Project : icsmw + * Class : CertifiDAO + * Desc : + * ///////////////////////////////////////////////////// + */ +public class CertifiDAO { + /* + * + INSERT INTO certification_tempkey (phone , tempkey) + VALUES (#phone#, #tempKey#) + + + + delete + from certification_tempkey + where phone = #value# + + + +출처: https://cusmaker.tistory.com/105 [Custum + Maker] + * + * */ + public void insertCertificationKey(HashMap param) { + + // TODO Auto-generated method stub + + //insert("insertCertificationKey", param); + + } + + + + public String getTempKey(String phone) { + + // TODO Auto-generated method stub + + //return (String)getSqlMapClientTemplate().queryForObject("getTempKey", phone); + return ""; + + } + + + + public void deleteTempKey(String phone) { + + // TODO Auto-generated method stub + + //getSqlMapClientTemplate().delete("deleteTempKey", phone); + + } +} diff --git a/src/main/java/gtpa/icsmw/util/CertificationKeyGenerator.java b/src/main/java/gtpa/icsmw/util/CertificationKeyGenerator.java new file mode 100644 index 0000000..def187e --- /dev/null +++ b/src/main/java/gtpa/icsmw/util/CertificationKeyGenerator.java @@ -0,0 +1,46 @@ +package gtpa.icsmw.util; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 08/04/2019 + * TIME : 9:53 AM + * Project : icsmw + * Class : CertificationKeyGenerator + * Desc : + * ///////////////////////////////////////////////////// + */ + +import java.util.HashMap; + + +/** + * @author lejewk + * sms인증시 전화번호에대한 키 제네레이터 + */ +public class CertificationKeyGenerator { + public static CertificationKeyGenerator newInstance(){ + return new CertificationKeyGenerator(); + } + + private CertificationKeyGenerator(){} + + /** + * 인증키 생성 유틸 + * 인증키는 아래와 같이 시간을 전번 뒤에 섞고 끝에서 6자리를 서브스트링한다. + * @param Number + * @return + */ + public String tempKeyGenarator(String Number){ + String lastNumberString = null; + String numberArray[] = Number.split("-"); + if(numberArray[2].charAt(0) == '0'){ + lastNumberString = "1"+numberArray[2].substring(1, numberArray[2].length()); + }else{ + lastNumberString = numberArray[2]; + } + String last = Long.toString((Integer.parseInt(lastNumberString) * System.currentTimeMillis())); + return last.substring(last.length()-6, last.length()); + } +} diff --git a/src/main/java/gtpa/icsmw/util/HttpSessionRenew.java b/src/main/java/gtpa/icsmw/util/HttpSessionRenew.java new file mode 100644 index 0000000..97e343d --- /dev/null +++ b/src/main/java/gtpa/icsmw/util/HttpSessionRenew.java @@ -0,0 +1,52 @@ +package gtpa.icsmw.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionEvent; +import javax.servlet.http.HttpSessionListener; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 15/05/2019 + * TIME : 10:37 AM + * Project : icsmw + * Class : HttpSessionRenew + * Desc : + * ///////////////////////////////////////////////////// + */ +public class HttpSessionRenew implements HttpSessionListener { + private Logger logger = LoggerFactory.getLogger(HttpSessionRenew.class); + + private SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + + public HttpSessionRenew() { + super(); + } + + public void sessionCreated(HttpSessionEvent event) { + HttpSession session = event.getSession(); + logger.info("TIME: " + session.getMaxInactiveInterval()); + logger.info("ID Session "+session.getId()+" create "+session.getCreationTime()); + } + + public void sessionDestroyed(HttpSessionEvent event) { + HttpSession session = event.getSession(); + + // print out the session id + if(session != null) { + logger.info("Session Id: " + session.getId()); + synchronized(session) { + // invalidating a session destroys it + session.invalidate(); + logger.info("DESTROYD SESSION"); + } + } + logger.info("ID Session "+session.getId()+" destroyd "+ f.format(new Date())); + } +} diff --git a/src/main/java/gtpa/icsmw/util/MessageType.java b/src/main/java/gtpa/icsmw/util/MessageType.java new file mode 100644 index 0000000..30fdb5d --- /dev/null +++ b/src/main/java/gtpa/icsmw/util/MessageType.java @@ -0,0 +1,6 @@ +package gtpa.icsmw.util; + +public final class MessageType { + public static final String VEHICLE_SEARCH_SUCCESS = ""; + public static final String VEHICLE_SEARCH_SUCCESS_CODE = ""; +} diff --git a/src/main/java/gtpa/icsmw/util/MessageUtils.java b/src/main/java/gtpa/icsmw/util/MessageUtils.java new file mode 100644 index 0000000..e2b1d6f --- /dev/null +++ b/src/main/java/gtpa/icsmw/util/MessageUtils.java @@ -0,0 +1,33 @@ +package gtpa.icsmw.util; + +import java.util.Locale; + +import org.springframework.context.support.MessageSourceAccessor; +/** + * ///////////////////////////////////////////////////// + * Company : MQNIC + * Create : seunghyun + * Date : 30/04/2019 + * TIME : 4:16 PM + * Project : icsmw + * Class : MessageUtils + * Desc : + * ///////////////////////////////////////////////////// + */ + + +public class MessageUtils { + private static MessageSourceAccessor msAcc = null; + + public void setMessageSourceAccessor(MessageSourceAccessor msAcc) { + MessageUtils.msAcc = msAcc; + } + + public static String getMessage(String code) { + return msAcc.getMessage(code, Locale.getDefault()); + } + + public static String getMessage(String code, Object[] objs) { + return msAcc.getMessage(code, objs, Locale.getDefault()); + } +} diff --git a/src/main/java/gtpa/icsmw/util/PageURIUtil.java b/src/main/java/gtpa/icsmw/util/PageURIUtil.java new file mode 100644 index 0000000..3040529 --- /dev/null +++ b/src/main/java/gtpa/icsmw/util/PageURIUtil.java @@ -0,0 +1,60 @@ +package gtpa.icsmw.util; + +public class PageURIUtil { + private String INDEX_PAGE; + private String LOGIN_PAGE; + private String AUTH_CHECK; + + public void setIndexPage(String indexPage) { + this.INDEX_PAGE = indexPage; + } + + public void setLoginPage(String loginPage) { + LOGIN_PAGE = loginPage; + } + + public void setAuthCheck(String authCheck) { + AUTH_CHECK = authCheck; + } + + /** + * getIndexPageURI Main Layout URI 가져오기 + * + * @param {String} [default:def, tab, win, null]URI정보를 가지고 오기 위한 string. + * @date 2016. 08. 08 + * @returns {String} properties에 등록된 main layout URI정보를 가져온다. default값은 w5xml.defIndex에 등록된 값이다. + * @author InswaveSytems + * @example getIndexPageURI(" def "); return 예시 : "/test/test.xml" + */ + public String getIndexPageURI() { + return INDEX_PAGE; + } + + /** + * Default login page URI 가져오기 + * + * @date 2016. 08. 08 + * @returns {String} login page uri + * @author InswaveSystems + * @example getLoginPage(); return 예시 : "/test/test.xml" + */ + public String getLoginPage() { + return LOGIN_PAGE; + } + + public String getIndexPage() { + return INDEX_PAGE; + } + + /** + * 권한없는 페이지 호출시 보여주는 page url 가져오기 + * + * @date 2016. 09. 12 + * @returns {String} 권한없는 페이지 호출시 보여주는 page url + * @author InswaveSystems + * @example getLoginPage(); return 예시 : "/test/test.xml" + */ + public String getAuthCheck() { + return AUTH_CHECK; + } +} diff --git a/src/main/java/gtpa/icsmw/util/Result.java b/src/main/java/gtpa/icsmw/util/Result.java new file mode 100644 index 0000000..e7cce73 --- /dev/null +++ b/src/main/java/gtpa/icsmw/util/Result.java @@ -0,0 +1,177 @@ +package gtpa.icsmw.util; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Result { + + public Map resultMap = new HashMap<>(); + + // 성공메세지 + public final static String STATUS_SUCESS = "S"; + + // 성공 메세지 + public final static String STATUS_SUCESS_MESSAGE = "정상 처리되었습니다."; + + // 오류메세지 + public final static String STATUS_ERROR = "E"; + + // 기본 에러 상세 코드 + public final static String STATUS_ERROR_DEFAULT_DETAIL_CODE = "E9999"; + + // 오류메세지 + public final static String STATUS_ERROR_MESSAGE = "처리 도중 오류가 발생되었습니다. 다시 시도 해주세요."; + + // 경고메세지 + public final static String STATUS_WARNING = "W"; + + // 경고메세지 + public final static String STATUS_WARNING_MESSAGE = "처리 도중 오류가 발생되었습니다. 다시 시도 해주세요."; + + // 기본(map 타입) 웹스퀘어 view + public final static String VIEW_DEFAULT = "wqView"; + + // 결과값에 대한 메세지 key명 + public final static String MESSAGE_KEY = "rsMsg"; + + // viewType이 VIEW_STRING 일 경우 참조하는 key + public final static String RESULT_KEY_DEFAULT = "result"; + + public void setData(String id, String data) { + resultMap.put(id, data); + } + + public void setData(String id, Map data) { + resultMap.put(id, data); + } + + public void setData(String id, List data) { + resultMap.put(id, data); + } + + public Map getResult() { + if (resultMap.get(MESSAGE_KEY) == null) { + setMsg(STATUS_SUCESS); + } + + return resultMap; + } + + /** + * 메세지 처리 - 상태 기본 메세지 처리 + * + * @param {} status : 메세지 상태 + * @date 2017.12.02 + * @memberOf + * @returns void + * @author Inswave + * @example WqModel.setMsg(STATUS_SUCCESS); + */ + public void setMsg(String status) { + String msg = ""; + if (status == STATUS_ERROR) { + msg = STATUS_ERROR_MESSAGE; + } else if (status == STATUS_SUCESS) { + msg = STATUS_SUCESS_MESSAGE; + } else if (status == STATUS_WARNING) { + msg = STATUS_WARNING_MESSAGE; + } + setMsg(status, msg); + } + + /** + * 메세지 처리 + * + * @param {} status : 메세지 상태, message : 메세지 내용 + * @date 2017.12.02 + * @memberOf + * @returns void + * @author Inswave + * @example WqModel.setMsg(STATUS_SUCCESS, " 정상 처리되었습니다. "); + */ + public void setMsg(String status, String message) { + setMsg(status, message, null); + } + + /** + * 메세지 처리 + * + * @param {} status : 메세지 상태, message : 메세지 내용 + * @date 2017.12.02 + * @memberOf + * @returns void + * @author Inswave + * @example WqModel.setMsg(returnData, MsgUtil.STATUS_SUCCESS, " 정상 처리되었습니다. ", exception 객체); + */ + public void setMsg(String status, String message, Exception ex) { + + Map result = new HashMap<>(); + + if (status.equals(STATUS_SUCESS)) { + result.put("statusCode", STATUS_SUCESS); + result.put("message", getDefaultStatusMessage(message, STATUS_SUCESS_MESSAGE)); + } else if (status.equals(STATUS_WARNING)) { + result.put("statusCode", STATUS_WARNING); + result.put("message", getDefaultStatusMessage(message, STATUS_WARNING_MESSAGE)); + } else if (status.equals(STATUS_ERROR)) { + setErrorMsg(STATUS_ERROR_DEFAULT_DETAIL_CODE, message, ex); + return; + }else{ + result.put("statusCode", status); + result.put("message", message); + } + + if (ex != null) { + result.put("messageDetail", ex.getMessage()); + } + + resultMap.put(MESSAGE_KEY, result); + } + + /** + * 오류 메세지 처리 + * + * @param {} errorCode : 오류코드, message : 메세지 내용 + * @date 2017.12.02 + * @memberOf + * @returns void + * @author Inswave + * @example WqModel.setErrorMsg(" E0001 ", " 세션이없습니다. "); + */ + public void setErrorMsg(String errorCode, String message) { + setErrorMsg(errorCode, message, null); + } + + /** + * 오류 메세지 처리 + * + * @param {} errorCode : 오류코드, message : 메세지 내용 + * @date 2017.12.02 + * @memberOf + * @returns void + * @author Inswave + * @example WqModel.setErrorMsg(" E0001 ", " 세션이없습니다. ", exception 객체); + */ + public void setErrorMsg(String errorCode, String message, Exception ex) { + Map result = new HashMap<>(); + + result.put("statusCode", STATUS_ERROR); + result.put("errorCode", errorCode); + result.put("message", getDefaultStatusMessage(message, STATUS_ERROR_MESSAGE)); + + if (ex != null) { + result.put("messageDetail", "" + ex.getMessage()); + } + resultMap.put(MESSAGE_KEY, result); + } + + public String getDefaultStatusMessage(String message, String defMessage) { + if (message == null) { + return defMessage; + } + return message; + } + + ; +} \ No newline at end of file diff --git a/src/main/java/gtpa/icsmw/util/SHA256Util.java b/src/main/java/gtpa/icsmw/util/SHA256Util.java new file mode 100644 index 0000000..8f7415a --- /dev/null +++ b/src/main/java/gtpa/icsmw/util/SHA256Util.java @@ -0,0 +1,31 @@ +package gtpa.icsmw.util; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.security.MessageDigest; + +public class SHA256Util { + private static Logger logger = LoggerFactory.getLogger(SHA256Util.class); + + public static String encryptSHA256(String str) { + String result = ""; + try { + MessageDigest sh = MessageDigest.getInstance("SHA-256"); + sh.update(str.getBytes()); + byte[] byteData = sh.digest(); + StringBuffer sb = new StringBuffer(); + + for (int i = 0; i < byteData.length; i++) { + sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1)); + } + result = sb.toString(); + } catch (RuntimeException re) { + logger.error("[RuntimeException::" + "" + "]", re); + } catch (Exception e) { + logger.error("SHA256Util Encrypt Error::" + "e.getMessage()", e); + } + return result; + } +}