This commit is contained in:
hylee 2023-06-12 11:15:02 +09:00
commit c59398486d
8446 changed files with 1322138 additions and 0 deletions

40
.classpath Normal file
View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="test" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="src/main/webapp/WEB-INF/classes"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>

1
.codetogether.ignore Normal file
View File

@ -0,0 +1 @@
/**

54
.project Normal file
View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>mjon</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.springframework.ide.eclipse.core.springbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.springframework.ide.eclipse.boot.validation.springbootbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.zeroturnaround.eclipse.rebelXmlBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.springframework.ide.eclipse.core.springnature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>org.zeroturnaround.eclipse.jrebelNature</nature>
</natures>
</projectDescription>

13
.settings/.jsdtscope Normal file
View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="src/main/webapp"/>
<classpathentry kind="src" path="target/m2e-wtp/web-resources"/>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
<attributes>
<attribute name="hide" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
<classpathentry kind="output" path=""/>
</classpath>

View File

@ -0,0 +1,6 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding//src/test/java=UTF-8
encoding//src/test/resources=UTF-8
encoding/<project>=UTF-8

View File

@ -0,0 +1,9 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8

View File

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="mjon">
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<property name="context-root" value="mjon"/>
<property name="java-output-path" value="/mjon/target/classes"/>
</wb-module>
</project-modules>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="java" version="1.8"/>
<installed facet="jst.web" version="2.5"/>
<installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>

View File

@ -0,0 +1 @@
org.eclipse.wst.jsdt.launching.baseBrowserLibrary

View File

@ -0,0 +1 @@
Window

View File

@ -0,0 +1,2 @@
disabled=06target
eclipse.preferences.version=1

Binary file not shown.

View File

@ -0,0 +1,365 @@
#아래순서로 테이블생성 및 기초데이터 입력
# ID Generation
INSERT INTO IDS(TABLE_NAME,NEXT_ID) VALUES ('BBS_ID',1);
INSERT INTO IDS(TABLE_NAME,NEXT_ID) VALUES ('FILE_ID',1);
INSERT INTO IDS(TABLE_NAME,NEXT_ID) VALUES ('GROUP_ID',1);
INSERT INTO IDS(TABLE_NAME,NEXT_ID) VALUES ('LOGINLOG_ID',1);
INSERT INTO IDS(TABLE_NAME,NEXT_ID) VALUES ('ROLE_ID',1);
INSERT INTO IDS(TABLE_NAME,NEXT_ID) VALUES ('SAMPLE',1);
INSERT INTO IDS(TABLE_NAME,NEXT_ID) VALUES ('SYSLOG_ID',1);
INSERT INTO IDS(TABLE_NAME,NEXT_ID) VALUES ('TMPLAT_ID',1);
INSERT INTO IDS(TABLE_NAME,NEXT_ID) VALUES ('USRCNFRM_ID',2);
# 분류코드
INSERT INTO LETTCCMMNCLCODE(CL_CODE,CL_CODE_NM,CL_CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('LET','전자정부 프레임워크 경량환경 템플릿','전자정부 프레임워크 경량환경 템플릿1','Y','2011-08-02 21:13:03','SYSTEM','2011-08-09 17:17:08',null);
# 공통코드
INSERT INTO LETTCCMMNCODE(CODE_ID,CODE_ID_NM,CODE_ID_DC,USE_AT,CL_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM001','등록구분','게시판, 커뮤니티, 동호회 등록구분코드1','Y','LET','2011-08-02 21:13:03','SYSTEM','2011-08-09 17:56:24',null);
INSERT INTO LETTCCMMNCODE(CODE_ID,CODE_ID_NM,CODE_ID_DC,USE_AT,CL_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM003','업무구분','업무구분코드','Y','LET','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNCODE(CODE_ID,CODE_ID_NM,CODE_ID_DC,USE_AT,CL_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM004','게시판유형','게시판유형구분코드','Y','LET','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNCODE(CODE_ID,CODE_ID_NM,CODE_ID_DC,USE_AT,CL_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM005','템플릿유형','템플릿유형구분코드','Y','LET','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNCODE(CODE_ID,CODE_ID_NM,CODE_ID_DC,USE_AT,CL_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM009','게시판속성','게시판 속성','Y','LET','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNCODE(CODE_ID,CODE_ID_NM,CODE_ID_DC,USE_AT,CL_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM013','회원상태','회원 가입 신청/승인/삭제를 위한 상태 구분','Y','LET','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNCODE(CODE_ID,CODE_ID_NM,CODE_ID_DC,USE_AT,CL_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM014','성별구분','남녀 성별 구분','Y','LET','2011-08-11 11:32:50','SYSTEM','2011-08-11 11:32:50','SYSTEM');
INSERT INTO LETTCCMMNCODE(CODE_ID,CODE_ID_NM,CODE_ID_DC,USE_AT,CL_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM022','비밀번호 힌트','비밀번호 힌트 구분코드','Y','LET','2011-08-11 11:31:02','SYSTEM','2011-08-11 11:31:02','SYSTEM');
INSERT INTO LETTCCMMNCODE(CODE_ID,CODE_ID_NM,CODE_ID_DC,USE_AT,CL_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM025','소속기관','소속기관정보를 관리할때 사용하는 구분코드(시스템별로 재정의)','Y','LET','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNCODE(CODE_ID,CODE_ID_NM,CODE_ID_DC,USE_AT,CL_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM029','롤유형코드','','Y','LET','2011-08-12 10:45:16','SYSTEM','2011-08-12 10:45:16','SYSTEM');
# 공통상세코드
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM001','REGC01','단일 게시판 이용등록','단일 게시판 이용등록','Y','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM001','REGC07','게시판사용자등록','게시판사용자등록','Y','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM003','BBS','게시판','게시판','Y','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM004','BBST01','일반게시판','일반게시판','Y','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM004','BBST02','익명게시판','익명게시판','N','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM004','BBST03','공지게시판','공지게시판','Y','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM005','TMPT01','게시판템플릿','게시판템플릿','Y','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM009','BBSA01','유효게시판','유효게시판','N','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM009','BBSA02','갤러리','갤러리','Y','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM009','BBSA03','일반게시판','일반게시판','Y','2011-08-02 21:13:03','SYSTEM','2011-08-02 21:13:03','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM013','A','회원 가입 신청 상태','회원 가입 신청 상태','Y','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM013','D','회원 가입 삭제 상태','회원 가입 삭제 상태','Y','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM013','P','회원 가입 승인 상태','회원 가입 승인 상태','Y','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM014','F','여자','여자','Y','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM014','M','남자','남자','Y','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM022',' P01','가장 기억에 남는 장소는?','가장 기억에 남는 장소는?','Y','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM022',' P02','나의 좌우명은?','나의 좌우명은?','Y','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM022',' P03','나의 보물 제1호는?','나의 보물 제1호는?','Y','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM022',' P04','가장 기억에 남는 선생님 성함은?','가장 기억에 남는 선생님 성함은?','Y','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM022',' P05','다른 사람은 모르는 나만의 신체비밀은?','다른 사람은 모르는 나만의 신체비밀은?','Y','2011-08-11 11:32:57','SYSTEM','2011-08-11 11:32:57','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM025','00000001','공공기관','공공기관','Y','2011-08-11 11:33:10','SYSTEM','2011-08-11 11:33:10','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM025','00000002','금융기관','금융기관','Y','2011-08-11 11:33:10','SYSTEM','2011-08-11 11:33:10','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM025','00000003','교육기관','교육기관','Y','2011-08-11 11:33:10','SYSTEM','2011-08-11 11:33:10','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM025','00000004','의료기관','의료기관','Y','2011-08-11 11:33:10','SYSTEM','2011-08-11 11:33:10','SYSTEM');
INSERT INTO LETTCCMMNDETAILCODE(CODE_ID,CODE,CODE_NM,CODE_DC,USE_AT,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('COM029','url','URL','URL','Y','2011-08-12 10:46:18','SYSTEM','2011-08-12 10:46:18','SYSTEM');
# 조직정보
INSERT INTO LETTNORGNZTINFO(ORGNZT_ID,ORGNZT_NM,ORGNZT_DC) VALUES ('ORGNZT_0000000000000','기본조직','기본조직');
# 그룹정보
INSERT INTO LETTNAUTHORGROUPINFO(GROUP_ID,GROUP_NM,GROUP_CREAT_DE,GROUP_DC) VALUES ('GROUP_00000000000000','기본 그룹입니다','2011-08-02 21:01:59','기본 그룹');
# 권한정보
INSERT INTO LETTNAUTHORINFO(AUTHOR_CODE,AUTHOR_NM,AUTHOR_DC,AUTHOR_CREAT_DE) VALUES ('ROLE_ADMIN','관리자','시스템관리자','2011-08-03');
INSERT INTO LETTNAUTHORINFO(AUTHOR_CODE,AUTHOR_NM,AUTHOR_DC,AUTHOR_CREAT_DE) VALUES ('ROLE_ANONYMOUS','오픈기능','오픈기능','2011-08-03');
INSERT INTO LETTNAUTHORINFO(AUTHOR_CODE,AUTHOR_NM,AUTHOR_DC,AUTHOR_CREAT_DE) VALUES ('ROLE_USER_MEMBER','사용자','일반사용자','2011-08-03');
# 권한(롤)계층정보
INSERT INTO LETTNROLES_HIERARCHY(PARNTS_ROLE,CHLDRN_ROLE) VALUES ('ROLE_USER_MEMBER','ROLE_ADMIN');
INSERT INTO LETTNROLES_HIERARCHY(PARNTS_ROLE,CHLDRN_ROLE) VALUES ('ROLE_ANONYMOUS','ROLE_USER_MEMBER');
# 롤정보
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('cop-bbs','cop-bbs','/cop/bbs/.*.do.*','게시판','url','1','2011-08-31 15:41:24');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('cop-com','cop-com','/cop/com/.*.do.*','게시판사용','url','2','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sec-gmt','sec-gmt','/sec/gmt/.*.do.*','그룹관리','url','3','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sec-ram','sec-ram','/sec/ram/.*.do.*','권한관리','url','4','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sec-rgm','sec-rgm','/sec/rgm/.*.do.*','권한그룹관리','url','5','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sec-rmt','sec-rmt','/sec/rmt/.*.do.*','롤관리','url','6','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sts-cst','sts-cst','/sts/cst/.*.do.*','접속통계','url','7','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sym-ccm-cca','sym-ccm-cca','/sym/ccm/cca/.*.do.*','공통코드 등록','url','8','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sym-ccm-ccc','sym-ccm-ccc','/sym/ccm/ccc/.*.do.*','공통분류코드 상세조회','url','9','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sym-ccm-cde','sym-ccm-cde','/sym/ccm/cde/.*.do.*','공통상세코드 등록','url','10','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sym-ccm-zip','sym-ccm-zip','/sym/ccm/zip/.*.do.*','우편번호','url','11','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sym-cmm','sym-cmm','/sym/cmm/.*.do.*','우편번호 찾기','url','12','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sym-log-clg','sym-log-clg','/sym/log/clg/.*.do.*','로그인로그조회','url','13','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sym-mnu-mcm','sym-mnu-mcm','/sym/mnu/mcm/.*.do.*','메뉴생성관리','url','14','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sym-mnu-mpm','sym-mnu-mpm','/sym/mnu/mpm/.*.do.*','메뉴관리','url','15','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('sym-prm','sym-prm','/sym/prm/.*.do.*','프로그램목록관리','url','16','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('uat-uap','uat-uap','/uat/uap/.*.do.*','로그인정책관리','url','17','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('uat-uia','uat-uia','/uat/uia/.*.do.*','로그인메인','url','18','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('uss-ion-uas','uss-ion-uas','/uss/ion/uas/.*.do.*','사용자부재관리','url','19','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('uss-umt-cmm','uss-umt-cmm','/uss/umt/cmm/.*.do.*','아이디중복확인','url','20','2011-08-24 0:00');
INSERT INTO LETTNROLEINFO(ROLE_CODE,ROLE_NM,ROLE_PTTRN,ROLE_DC,ROLE_TY,ROLE_SORT,ROLE_CREAT_DE) VALUES ('uss-umt-user','uss-umt-user','/uss/umt/user/.*.do.*','사용자등록','url','21','2011-08-24 0:00');
# 권한별 롤
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','sec-gmt','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','sec-ram','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','sec-rgm','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','sec-rmt','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','sym-ccm-cca','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','sym-ccm-ccc','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','sym-ccm-cde','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','sym-ccm-zip','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','sym-mnu-mcm','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','sym-mnu-mpm','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','sym-prm','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','uat-uap','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','uss-umt-cmm','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ADMIN','uss-umt-user','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ANONYMOUS','cop-bbs','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ANONYMOUS','sym-cmm','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_ANONYMOUS','uat-uia','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_USER_MEMBER','cop-com','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_USER_MEMBER','sts-cst','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_USER_MEMBER','sym-log-clg','2009-08-25 00:00:00');
INSERT INTO LETTNAUTHORROLERELATE(AUTHOR_CODE,ROLE_CODE,CREAT_DT) VALUES ('ROLE_USER_MEMBER','uss-ion-uas','2009-08-25 00:00:00');
# 사용자정보
INSERT INTO LETTNEMPLYRINFO(EMPLYR_ID,ORGNZT_ID,USER_NM,PASSWORD,EMPL_NO,IHIDNUM,SEXDSTN_CODE,BRTHDY,FXNUM,HOUSE_ADRES,PASSWORD_HINT,PASSWORD_CNSR,HOUSE_END_TELNO,AREA_NO,DETAIL_ADRES,ZIP,OFFM_TELNO,MBTLNUM,EMAIL_ADRES,OFCPS_NM,HOUSE_MIDDLE_TELNO,GROUP_ID,PSTINST_CODE,EMPLYR_STTUS_CODE,ESNTL_ID,CRTFC_DN_VALUE,SBSCRB_DE) VALUES ('admin','ORGNZT_0000000000000','관리자','JfQ7FIatlaE5jj7rPYO8QBABX8yb7bNbQy4AKY1QIfc=','','','','','','','P01','123','','','','','','123456789','admin@test.com','','','GROUP_00000000000000','00000000','P','USRCNFRM_00000000000','','2011-08-02 21:13:03');
INSERT INTO LETTNEMPLYRINFO(EMPLYR_ID,ORGNZT_ID,USER_NM,PASSWORD,EMPL_NO,IHIDNUM,SEXDSTN_CODE,BRTHDY,FXNUM,HOUSE_ADRES,PASSWORD_HINT,PASSWORD_CNSR,HOUSE_END_TELNO,AREA_NO,DETAIL_ADRES,ZIP,OFFM_TELNO,MBTLNUM,EMAIL_ADRES,OFCPS_NM,HOUSE_MIDDLE_TELNO,GROUP_ID,PSTINST_CODE,EMPLYR_STTUS_CODE,ESNTL_ID,CRTFC_DN_VALUE,SBSCRB_DE) VALUES ('user1','ORGNZT_0000000000000','유저1','gRFeMeIqWAGxl3UOwS16Ua1pOqAX7Mi8oDPL1QCpKLY=','','','','','','','P01','123','','','','','','123456789','test01@test.com','','','GROUP_00000000000000','00000000','P','USRCNFRM_00000000001','','2011-08-11 17:00:18');
# 사용자별권한설정
INSERT INTO LETTNEMPLYRSCRTYESTBS(SCRTY_DTRMN_TRGET_ID,MBER_TY_CODE,AUTHOR_CODE) VALUES ('USRCNFRM_00000000000','USR','ROLE_ADMIN');
INSERT INTO LETTNEMPLYRSCRTYESTBS(SCRTY_DTRMN_TRGET_ID,MBER_TY_CODE,AUTHOR_CODE) VALUES ('USRCNFRM_00000000001','USR','ROLE_USER_MEMBER');
# 게시판템플릿
INSERT INTO LETTNTMPLATINFO(TMPLAT_ID,TMPLAT_NM,TMPLAT_COURS,USE_AT,TMPLAT_SE_CODE,FRST_REGISTER_ID,FRST_REGIST_PNTTM,LAST_UPDUSR_ID,LAST_UPDT_PNTTM) VALUES ('TMPLAT_BOARD_DEFAULT','게시판 기본템플릿','/css/egovframework/cop/bbs/egovbbsTemplate.css','Y','TMPT01','USRCNFRM_00000000000','2011-08-02 21:01:59','USRCNFRM_00000000000','2011-08-08 16:12:57');
# 게시판마스터
INSERT INTO LETTNBBSMASTER(BBS_ID,BBS_NM,BBS_INTRCN,BBS_TY_CODE,BBS_ATTRB_CODE,REPLY_POSBL_AT,FILE_ATCH_POSBL_AT,ATCH_POSBL_FILE_NUMBER,ATCH_POSBL_FILE_SIZE,USE_AT,TMPLAT_ID,FRST_REGISTER_ID,FRST_REGIST_PNTTM,LAST_UPDUSR_ID,LAST_UPDT_PNTTM) VALUES ('BBSMSTR_AAAAAAAAAAAA','공지사항','공지사항게시판','BBST03','BBSA03','Y','Y',2,5242880,'Y','TMPLAT_BOARD_DEFAULT','USRCNFRM_00000000000','2011-08-31 12:00:00','USRCNFRM_00000000000','2011-08-31 12:00:00');
INSERT INTO LETTNBBSMASTER(BBS_ID,BBS_NM,BBS_INTRCN,BBS_TY_CODE,BBS_ATTRB_CODE,REPLY_POSBL_AT,FILE_ATCH_POSBL_AT,ATCH_POSBL_FILE_NUMBER,ATCH_POSBL_FILE_SIZE,USE_AT,TMPLAT_ID,FRST_REGISTER_ID,FRST_REGIST_PNTTM,LAST_UPDUSR_ID,LAST_UPDT_PNTTM) VALUES ('BBSMSTR_BBBBBBBBBBBB','갤러리','갤러리게시판','BBST01','BBSA02','Y','Y',2,5242880,'Y','TMPLAT_BOARD_DEFAULT','USRCNFRM_00000000000','2011-08-31 12:00:00','USRCNFRM_00000000000','2011-08-31 12:00:00');
INSERT INTO LETTNBBSMASTER(BBS_ID,BBS_NM,BBS_INTRCN,BBS_TY_CODE,BBS_ATTRB_CODE,REPLY_POSBL_AT,FILE_ATCH_POSBL_AT,ATCH_POSBL_FILE_NUMBER,ATCH_POSBL_FILE_SIZE,USE_AT,TMPLAT_ID,FRST_REGISTER_ID,FRST_REGIST_PNTTM,LAST_UPDUSR_ID,LAST_UPDT_PNTTM) VALUES ('BBSMSTR_CCCCCCCCCCCC','자료실','자료실게시판','BBST01','BBSA03','Y','Y',2,5242880,'Y','TMPLAT_BOARD_DEFAULT','USRCNFRM_00000000000','2011-08-31 12:00:00','USRCNFRM_00000000000','2011-08-31 12:00:00');
# 게시판사용
INSERT INTO LETTNBBSUSE(BBS_ID,TRGET_ID,USE_AT,REGIST_SE_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('BBSMSTR_AAAAAAAAAAAA','SYSTEM_DEFAULT_BOARD','Y','REGC01','2011-08-31 12:00:00','USRCNFRM_00000000000','2011-08-31 12:00:00','USRCNFRM_00000000000');
INSERT INTO LETTNBBSUSE(BBS_ID,TRGET_ID,USE_AT,REGIST_SE_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('BBSMSTR_BBBBBBBBBBBB','SYSTEM_DEFAULT_BOARD','Y','REGC01','2011-08-31 12:00:00','USRCNFRM_00000000000','2011-08-31 12:00:00','USRCNFRM_00000000000');
INSERT INTO LETTNBBSUSE(BBS_ID,TRGET_ID,USE_AT,REGIST_SE_CODE,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES ('BBSMSTR_CCCCCCCCCCCC','SYSTEM_DEFAULT_BOARD','Y','REGC01','2011-08-31 12:00:00','USRCNFRM_00000000000','2011-08-31 12:00:00','USRCNFRM_00000000000');
#프로그램목록
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('dir','/','디렉토리','디렉토리','/');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovAuthorGroupManage','/sec/rgm/','권한그룹관리','권한그룹관리','/sec/rgm/EgovAuthorGroupListView.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovAuthorInsert','/sec/ram/','권한등록','권한등록','/sec/ram/EgovAuthorInsertView.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovAuthorManage','/sec/ram/','권한관리','권한관리','/sec/ram/EgovAuthorList.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovAuthorRoleManage','/sec/ram/','사용자별권한관리','사용자별권한롤관리','/sec/rgm/EgovAuthorGroupListView.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovAuthorUpdt','/sec/ram/','권한수정','권한수정','/sec/ram/EgovAuthor.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovBoardMstrList','/cop/bbs/','게시판 목록조회','게시판 목록조회','/cop/bbs/SelectBBSMasterInfs.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovBoardMstrRegist','/cop/bbs/','게시판 생성','게시판 생성','/cop/bbs/addBBSMaster.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovBoardMstrUpdt','/cop/bbs/','게시판 수정','게시판 수정','/cop/bbs/SelectBBSMasterInf.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovBoardUseInfInqire','/cop/com/','게시판사용여부 상세조회','게시판사용여부 상세조회','/cop/com/selectBBSUseInf.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovBoardUseInfList','/cop/com/','게시판사용여부 목록 조회','게시판사용여부 목록 조회','/cop/com/selectBBSUseInfs.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovBoardUseInfRegist','/cop/com/','게시판사용여부 등록','게시판사용여부 등록','/cop/com/addBBSUseInf.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnClCodeDetail','/sym/ccm/ccc/','공통분류코드 상세조회','공통분류코드 상세조회','/sym/ccm/ccc/EgovCcmCmmnClCodeDetail.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnClCodeList','/sym/ccm/ccc/','공통분류코드목록 조회','공통분류코드목록 조회','/sym/ccm/ccc/EgovCcmCmmnClCodeList.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnClCodeModify','/sym/ccm/ccc/','공통분류코드 수정','공통분류코드 수정','/sym/ccm/ccc/EgovCcmCmmnClCodeModify.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnClCodeRegist','/sym/ccm/ccc/','공통분류코드 등록','공통분류코드 등록','/sym/ccm/ccc/EgovCcmCmmnClCodeRegist.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnCodeDetail','/sym/ccm/cca/','공통코드 상세조회','공통코드 상세조회','/sym/ccm/cca/EgovCcmCmmnCodeDetail.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnCodeList','/sym/ccm/cca/','공통코드목록 조회','공통코드목록 조회','/sym/ccm/cca/EgovCcmCmmnCodeList.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnCodeModify','/sym/ccm/cca/','공통코드 수정','공통코드 수정','/sym/ccm/cca/EgovCcmCmmnCodeModify.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnCodeRegist','/sym/ccm/cca/','공통코드 등록','공통코드 등록','/sym/ccm/cca/EgovCcmCmmnCodeRegist.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnDetailCodeDetail','/sym/ccm/cde/','공통상세코드 상세조회','공통상세코드 상세조회','/sym/ccm/cde/EgovCcmCmmnDetailCodeDetail.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnDetailCodeList','/sym/ccm/cde/','공통상세코드목록 조회','공통상세코드목록 조회','/sym/ccm/cde/EgovCcmCmmnDetailCodeList.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnDetailCodeModify','/sym/ccm/cde/','공통상세코드 수정','공통상세코드 수정','/sym/ccm/cde/EgovCcmCmmnDetailCodeModify.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmCmmnDetailCodeRegist','/sym/ccm/cde/','공통상세코드 등록','공통상세코드 등록','/sym/ccm/cde/EgovCcmCmmnDetailCodeRegist.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmExcelZipRegist','/sym/ccm/zip/','우편번호 엑셀파일 등록','우편번호 엑셀파일 등록','/sym/ccm/zip/EgovCcmExcelZipRegist.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmZipDetail','/sym/ccm/zip/','우편번호 상세조회','우편번호 상세조회','/sym/ccm/zip/EgovCcmZipDetail.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmZipList','/sym/ccm/zip/','우편번호목록 조회','우편번호목록 조회','/sym/ccm/zip/EgovCcmZipList.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmZipModify','/sym/ccm/zip/','우편번호 수정','우편번호 수정','/sym/ccm/zip/EgovCcmZipModify.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmZipRegist','/sym/ccm/zip/','우편번호 등록','우편번호 등록','/sym/ccm/zip/EgovCcmZipRegist.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovCcmZipSearchPopup','/sym/cmm/','우편번호 찾기','우편번호 찾기','/sym/cmm/EgovCcmZipSearchPopup.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovConectStats','/sts/cst/','접속통계','접속통계','/sts/cst/selectConectStats.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovFileNmSearch','/sym/prm/','파일명검색','파일명검색','/sym/prm/EgovProgramListSearch.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovGroupInsert','/sec/gmt/','그룹등록','그룹등록','/sec/gmt/EgovGroupInsertView.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovGroupManage','/sec/gmt/','그룹관리','그룹관리','/sec/gmt/EgovGroupList.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovGroupUpdt','/sec/gmt/','그룹수정','그룹수정','/sec/gmt/EgovGroup.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovIdDplctCnfirm','/uss/umt/cmm/','아이디중복확인','아이디중복확인','/uss/umt/cmm/EgovIdDplctCnfirmView.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovInfoNotice','/cop/bbs/','공지사항','공지사항','/cop/bbs/selectBoardList.do?bbsId=BBSMSTR_AAAAAAAAAAAA');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovInfoNoticeAdmin','/cop/bbs/','공지사항관리','공지사항관리','/cop/bbs/selectBoardList.do?bbsId=BBSMSTR_AAAAAAAAAAAA');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovInfoWork','/cop/bbs/','업무게시판','업무게시판','/cop/bbs/selectBoardList.do?bbsId=BBSMSTR_CCCCCCCCCCCC');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovInfoWorkAdmin','/cop/bbs/','업무게시판관리','업무게시판관리','/cop/bbs/selectBoardList.do?bbsId=BBSMSTR_CCCCCCCCCCCC');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovJoinHistory','/','입퇴사정보 관리','입퇴사정보 관리','/EgovPageLink.do?link=main/sample_menu/Sample');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovLoginLogInqire','/sym/log/clg/','로그인로그상세조회','로그인로그상세조회','/sym/log/clg/SelectLoginLogList.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovLoginLogList','/sym/log/clg/','로그인로그조회','로그인로그조회','/sym/log/clg/SelectLoginLogList.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovLoginPolicyList','/uat/uap/','로그인정책관리','로그인정책관리','/uat/uap/selectLoginPolicyList.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovLoginPolicyRegist','/uat/uap/','로그인정책등록','로그인정책등록','/uat/uap/getLoginPolicy.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovLoginPolicyUpdt','/uat/uia/','로그인정책수정','로그인정책수정','/uat/uap/getLoginPolicy.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovLoginUsr','/uat/uia/','내부업무 로그인','내부업무 로그인','/uat/uia/egovLoginUsr.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovMainHome','/uat/uia/','내부업무 메인','내부업무 메인','/uat/uia/actionMain.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovMberPositionl','/','직위정보 관리','직위정보 관리','/EgovPageLink.do?link=main/sample_menu/Sample');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovMberRank','/','직급정보 관리','직급정보 관리','/EgovPageLink.do?link=main/sample_menu/Sample');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovMenuBndeRegist','/sym/mnu/mpm/','메뉴일괄등록','메뉴일괄등록','/sym/mnu/mpm/EgovMenuBndeRegist.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovMenuCreat','/sym/mnu/mcm/','메뉴생성','메뉴생성','/sym/mnu/mcm/EgovMenuCreatSelect.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovMenuCreatManage','/sym/mnu/mcm/','메뉴생성관리','메뉴생성관리','/sym/mnu/mcm/EgovMenuCreatManageSelect.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovMenuDetailSelectUpdt','/sym/mnu/mpm/','메뉴상세조회/수정','메뉴상세조회/수정','/sym/mnu/mpm/EgovMenuManageListDetailSelect.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovMenuManage','/sym/mnu/mpm/','메뉴관리','메뉴관리','/sym/mnu/mpm/EgovMenuManageSelect.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovMenuRegist','/sym/mnu/mpm/','메뉴등록','메뉴등록','/sym/mnu/mpm/EgovMenuRegistInsert.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovNoticeInqire','/cop/bbs/','게시물조회','게시물조회','/cop/bbs/selectBoardArticle.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovNoticeList','/cop/bbs/','게시물 목록','게시물 목록','/cop/bbs/selectBoardList.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovNoticeRegist','/cop/bbs/','게시물 등록','게시물 등록','/cop/bbs/addBoardArticle.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovNoticeReply','/cop/bbs/','답글 작성','답글 작성','/cop/bbs/addReplyBoardArticle.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovNoticeUpdt','/cop/bbs/','게시물 수정','게시물 수정','/cop/bbs/forUpdateBoardArticle.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovProgramListDetailSelectUpdt','/sym/prm/','프로그램목록상세조회/수정','프로그램목록상세조회/수정','/sym/prm/EgovProgramListDetailSelect.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovProgramListManage','/sym/prm/','프로그램목록관리','프로그램목록관리','/sym/prm/EgovProgramListManageSelect.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovProgramListRegist','/sym/prm/','프로그램목록등록','프로그램목록등록','/sym/prm/EgovProgramListRegist.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovRoleInsert','/sec/rmt/','롤등록','롤등록','/sec/rmt/EgovRoleInsertView.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovRoleManage','/sec/rmt/','롤관리','롤관리','/sec/rmt/EgovRoleList.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovRoleUpdt','/sec/rmt/','롤수정','롤수정','/sec/rmt/EgovRole.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovTemplateInqirePopup','/cop/com/','템플릿 조회팝업','템플릿 조회팝업','/cop/com/selectTemplateInfs.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovTemplateList','/cop/com/','템플릿 목록 조회','템플릿 목록 조회','/cop/com/selectTemplateInfs.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovTemplateRegist','/cop/com/','템플릿 등록','템플릿 등록','/cop/com/addTemplateInf.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovTemplateUpdt','/cop/com/','템플릿 수정','템플릿 수정','/cop/com/selectTemplateInf.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovUserAbsnceList','/uss/ion/uas/','사용자부재관리','사용자부재관리','/uss/ion/uas/selectUserAbsnceListView.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovUserAbsnceRegist','/uss/ion/uas/','사용자부재등록','사용자부재등록','/uss/ion/uas/addViewUserAbsnce.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovUserAbsnceUpdt','/uss/ion/uas/','사용자부재수정','사용자부재수정','/uss/ion/uas/getUserAbsnce.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovUserInsert','/uss/umt/user/','사용자등록','사용자등록','/uss/umt/user/EgovUserInsertView.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovUserManage','/uss/umt/user/','사용자관리(조회,삭제)','사용자관리(조회,삭제)','/uss/umt/user/EgovUserManage.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovUserPasswordUpdt','/uss/umt/user/','사용자암호수정','사용자암호수정','/uss/umt/user/EgovUserPasswordUpdtView.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovUserSelectUpdt','/uss/umt/user/','사용자상세조회,수정','사용자상세조회,수정','/uss/umt/user/EgovUserSelectUpdtView.do');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovWorkAttendance','/','출퇴근정보 관리','출퇴근정보 관리','/EgovPageLink.do?link=main/sample_menu/Sample');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovWorkAward','/','상벌정보 관리','상벌정보 관리','/EgovPageLink.do?link=main/sample_menu/Sample');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovWorkEstimation','/','업무평가점수 관리','업무평가점수 관리','/EgovPageLink.do?link=main/sample_menu/Sample');
INSERT INTO LETTNPROGRMLIST(PROGRM_FILE_NM,PROGRM_STRE_PATH,PROGRM_KOREAN_NM,PROGRM_DC,URL) VALUES ('EgovWorkVacation','/','휴무정보 관리','휴무정보 관리','/EgovPageLink.do?link=main/sample_menu/Sample');
#메뉴목록
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('root','dir',0,0,1,'root','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('알림정보','dir',1000000,0,1,'알림정보','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('공지사항','EgovInfoNotice',1010000,1000000,1,'공지사항','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('업무게시판','EgovInfoWork',1020000,1000000,2,'업무게시판','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('직급체계관리','dir',2000000,0,2,'직급체계관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('입퇴사정보 관리','EgovJoinHistory',2010000,2000000,1,'입퇴사정보 관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('직급정보 관리','EgovMberRank',2020000,2000000,2,'직급정보 관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('직위정보 관리','EgovMberPositionl',2030000,2000000,3,'직위정보 관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('진급관리','dir',3000000,0,3,'진급관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('업무평가점수 관리','EgovWorkEstimation',3010000,3000000,1,'업무평가점수 관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('상벌정보 관리','EgovWorkAward',3040000,3000000,2,'상벌정보 관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('근태관리','dir',4000000,0,4,'근태관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('출퇴근정보 관리','EgovWorkAttendance',4010000,4000000,1,'출퇴근정보 관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('휴무정보 관리','EgovWorkVacation',4020000,4000000,2,'휴무정보 관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('내부서비스관리','dir',5000000,0,5,'내부서비스관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('내부업무게시판관리','dir',5010000,5000000,1,'내부업무게시판관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('게시판템플릿관리','EgovTemplateList',5010100,5010000,1,'게시판템플릿관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('게시판생성관리','EgovBoardMstrList',5010200,5010000,2,'게시판생성관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('게시판사용관리','EgovBoardUseInfList',5010300,5010000,3,'게시판사용관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('공지사항관리','EgovInfoNoticeAdmin',5010400,5010000,4,'공지사항관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('업무게시판관리','EgovInfoWorkAdmin',5010500,5010000,5,'업무게시판관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('사용현황관리','dir',5020000,5000000,2,'사용현황관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('접속로그관리','EgovLoginLogList',5020100,5020000,1,'접속로그관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('접속통계관리','EgovConectStats',5020200,5020000,2,'접속통계관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('로그인정책관리','EgovLoginPolicyList',5020300,5020000,3,'로그인정책관리','','');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('내부시스템관리','dir',6000000,0,6,'내부시스템관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('사용자관리','dir',6010000,6000000,1,'사용자관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('사용자등록관리','EgovUserManage',6010100,6010000,1,'사용자등록관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('사용자부재관리','EgovUserAbsnceList',6010200,6010000,2,'사용자부재관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('사용자권한관리','dir',6020000,6000000,2,'사용자권한관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('권한관리','EgovAuthorManage',6020100,6020000,1,'권한관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('사용자그룹관리','EgovGroupManage',6020200,6020000,2,'사용자그룹관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('사용자별권한관리','EgovAuthorRoleManage',6020300,6020000,3,'사용자별권한관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('롤관리','EgovRoleManage',6020400,6020000,4,'롤관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('메뉴관리','dir',6030000,6000000,3,'메뉴관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('프로그램목록관리','EgovProgramListManage',6030100,6030000,1,'프로그램목록관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('메뉴생성관리','EgovMenuCreatManage',6030200,6030000,2,'메뉴생성관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('메뉴목록관리','EgovMenuManage',6030300,6030000,4,'메뉴목록관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('코드관리','dir',6040000,6000000,4,'코드관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('분류코드관리','EgovCcmCmmnClCodeList',6040100,6040000,1,'분류코드관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('공통코드관리','EgovCcmCmmnCodeList',6040200,6040000,2,'공통코드관리','/','/');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('상세코드관리','EgovCcmCmmnDetailCodeList',6040300,6040000,3,'상세코드관리','','');
INSERT INTO LETTNMENUINFO(MENU_NM,PROGRM_FILE_NM,MENU_NO,UPPER_MENU_NO,MENU_ORDR,MENU_DC,RELATE_IMAGE_PATH,RELATE_IMAGE_NM) VALUES ('우편번호관리','EgovCcmZipList',6040400,6040000,4,'우편번호관리','/','/');
#메뉴생성목록
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (1000000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (1000000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (1010000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (1010000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (1020000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (1020000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (2000000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (2000000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (2010000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (2010000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (2020000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (2020000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (2030000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (2030000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (3000000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (3000000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (3010000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (3010000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (3040000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (3040000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (4000000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (4000000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (4010000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (4010000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (4020000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (4020000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5000000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5000000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010100,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010100,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010200,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010200,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010300,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010300,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010400,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010400,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010500,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5010500,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5020000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5020000,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5020100,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5020100,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5020200,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5020200,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5020300,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (5020300,'ROLE_USER_MEMBER',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6000000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6010000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6010100,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6010200,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6020000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6020100,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6020200,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6020300,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6020400,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6030000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6030100,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6030200,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6030300,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6040000,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6040100,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6040200,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6040300,'ROLE_ADMIN',null);
INSERT INTO LETTNMENUCREATDTLS(MENU_NO,AUTHOR_CODE,MAPNG_CREAT_ID) VALUES (6040400,'ROLE_ADMIN',null);
#게시물
INSERT INTO LETTNBBS(NTT_ID,BBS_ID,NTT_NO,NTT_SJ,NTT_CN,ANSWER_AT,PARNTSCTT_NO,ANSWER_LC,SORT_ORDR,RDCNT,USE_AT,NTCE_BGNDE,NTCE_ENDDE,NTCR_ID,NTCR_NM,PASSWORD,ATCH_FILE_ID,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES (1,'BBSMSTR_AAAAAAAAAAAA',1,'홈페이지 샘플공지1','홈페이지 샘플공지1','N',0,0,2,0,'Y','10000101','99991231','','','',null,NOW(),'USRCNFRM_00000000000',null,null);
INSERT INTO LETTNBBS(NTT_ID,BBS_ID,NTT_NO,NTT_SJ,NTT_CN,ANSWER_AT,PARNTSCTT_NO,ANSWER_LC,SORT_ORDR,RDCNT,USE_AT,NTCE_BGNDE,NTCE_ENDDE,NTCR_ID,NTCR_NM,PASSWORD,ATCH_FILE_ID,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES (2,'BBSMSTR_AAAAAAAAAAAA',1,'홈페이지 샘플공지2','홈페이지 샘플공지2','N',0,0,2,0,'Y','10000101','99991231','','','',null,NOW(),'USRCNFRM_00000000000',null,null);
INSERT INTO LETTNBBS(NTT_ID,BBS_ID,NTT_NO,NTT_SJ,NTT_CN,ANSWER_AT,PARNTSCTT_NO,ANSWER_LC,SORT_ORDR,RDCNT,USE_AT,NTCE_BGNDE,NTCE_ENDDE,NTCR_ID,NTCR_NM,PASSWORD,ATCH_FILE_ID,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES (3,'BBSMSTR_AAAAAAAAAAAA',1,'홈페이지 샘플공지3','홈페이지 샘플공지3','N',0,0,2,0,'Y','10000101','99991231','','','',null,NOW(),'USRCNFRM_00000000000',null,null);
INSERT INTO LETTNBBS(NTT_ID,BBS_ID,NTT_NO,NTT_SJ,NTT_CN,ANSWER_AT,PARNTSCTT_NO,ANSWER_LC,SORT_ORDR,RDCNT,USE_AT,NTCE_BGNDE,NTCE_ENDDE,NTCR_ID,NTCR_NM,PASSWORD,ATCH_FILE_ID,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES (4,'BBSMSTR_AAAAAAAAAAAA',1,'홈페이지 샘플공지4','홈페이지 샘플공지4','N',0,0,2,0,'Y','10000101','99991231','','','',null,NOW(),'USRCNFRM_00000000000',null,null);
INSERT INTO LETTNBBS(NTT_ID,BBS_ID,NTT_NO,NTT_SJ,NTT_CN,ANSWER_AT,PARNTSCTT_NO,ANSWER_LC,SORT_ORDR,RDCNT,USE_AT,NTCE_BGNDE,NTCE_ENDDE,NTCR_ID,NTCR_NM,PASSWORD,ATCH_FILE_ID,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES (5,'BBSMSTR_AAAAAAAAAAAA',1,'홈페이지 샘플공지5','홈페이지 샘플공지5','N',0,0,2,0,'Y','10000101','99991231','','','',null,NOW(),'USRCNFRM_00000000000',null,null);
INSERT INTO LETTNBBS(NTT_ID,BBS_ID,NTT_NO,NTT_SJ,NTT_CN,ANSWER_AT,PARNTSCTT_NO,ANSWER_LC,SORT_ORDR,RDCNT,USE_AT,NTCE_BGNDE,NTCE_ENDDE,NTCR_ID,NTCR_NM,PASSWORD,ATCH_FILE_ID,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES (6,'BBSMSTR_CCCCCCCCCCCC',1,'홈페이지 샘플업무1','홈페이지 샘플업무1','N',0,0,2,0,'Y','10000101','99991231','','','',null,NOW(),'USRCNFRM_00000000000',null,null);
INSERT INTO LETTNBBS(NTT_ID,BBS_ID,NTT_NO,NTT_SJ,NTT_CN,ANSWER_AT,PARNTSCTT_NO,ANSWER_LC,SORT_ORDR,RDCNT,USE_AT,NTCE_BGNDE,NTCE_ENDDE,NTCR_ID,NTCR_NM,PASSWORD,ATCH_FILE_ID,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES (7,'BBSMSTR_CCCCCCCCCCCC',1,'홈페이지 샘플업무2','홈페이지 샘플업무2','N',0,0,2,0,'Y','10000101','99991231','','','',null,NOW(),'USRCNFRM_00000000000',null,null);
INSERT INTO LETTNBBS(NTT_ID,BBS_ID,NTT_NO,NTT_SJ,NTT_CN,ANSWER_AT,PARNTSCTT_NO,ANSWER_LC,SORT_ORDR,RDCNT,USE_AT,NTCE_BGNDE,NTCE_ENDDE,NTCR_ID,NTCR_NM,PASSWORD,ATCH_FILE_ID,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES (8,'BBSMSTR_CCCCCCCCCCCC',1,'홈페이지 샘플업무3','홈페이지 샘플업무3','N',0,0,2,0,'Y','10000101','99991231','','','',null,NOW(),'USRCNFRM_00000000000',null,null);
INSERT INTO LETTNBBS(NTT_ID,BBS_ID,NTT_NO,NTT_SJ,NTT_CN,ANSWER_AT,PARNTSCTT_NO,ANSWER_LC,SORT_ORDR,RDCNT,USE_AT,NTCE_BGNDE,NTCE_ENDDE,NTCR_ID,NTCR_NM,PASSWORD,ATCH_FILE_ID,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES (9,'BBSMSTR_CCCCCCCCCCCC',1,'홈페이지 샘플업무4','홈페이지 샘플업무4','N',0,0,2,0,'Y','10000101','99991231','','','',null,NOW(),'USRCNFRM_00000000000',null,null);
INSERT INTO LETTNBBS(NTT_ID,BBS_ID,NTT_NO,NTT_SJ,NTT_CN,ANSWER_AT,PARNTSCTT_NO,ANSWER_LC,SORT_ORDR,RDCNT,USE_AT,NTCE_BGNDE,NTCE_ENDDE,NTCR_ID,NTCR_NM,PASSWORD,ATCH_FILE_ID,FRST_REGIST_PNTTM,FRST_REGISTER_ID,LAST_UPDT_PNTTM,LAST_UPDUSR_ID) VALUES (10,'BBSMSTR_CCCCCCCCCCCC',1,'홈페이지 샘플업무5','홈페이지 샘플업무5','N',0,0,2,0,'Y','10000101','99991231','','','',null,NOW(),'USRCNFRM_00000000000',null,null);
#우편번호
INSERT INTO LETTCZIP(ZIP, SN, CTPRVN_NM, SIGNGU_NM, EMD_NM, LI_BULD_NM, LNBR_DONG_HO, FRST_REGIST_PNTTM, FRST_REGISTER_ID, LAST_UPDT_PNTTM, LAST_UPDUSR_ID) VALUES ('100775',7381,'서울','중구','무교동','한국정보화진흥원','',SYSDATE(),'SYSTEM',SYSDATE(),'SYSTEM');

View File

@ -0,0 +1,495 @@
CREATE TABLE IDS (
TABLE_NAME varchar(20) NOT NULL,
NEXT_ID decimal(30,0) NOT NULL DEFAULT '0',
PRIMARY KEY (TABLE_NAME)
) ;
CREATE TABLE LETTCCMMNCLCODE (
CL_CODE char(3) NOT NULL,
CL_CODE_NM varchar(60) DEFAULT NULL,
CL_CODE_DC varchar(200) DEFAULT NULL,
USE_AT char(1) DEFAULT NULL,
FRST_REGIST_PNTTM datetime DEFAULT NULL,
FRST_REGISTER_ID varchar(20) DEFAULT NULL,
LAST_UPDT_PNTTM datetime DEFAULT NULL,
LAST_UPDUSR_ID varchar(20) DEFAULT NULL,
PRIMARY KEY (CL_CODE)
) ;
CREATE TABLE LETTCCMMNCODE (
CODE_ID varchar(6) NOT NULL,
CODE_ID_NM varchar(60) DEFAULT NULL,
CODE_ID_DC varchar(200) DEFAULT NULL,
USE_AT char(1) DEFAULT NULL,
CL_CODE char(3) DEFAULT NULL,
FRST_REGIST_PNTTM datetime DEFAULT NULL,
FRST_REGISTER_ID varchar(20) DEFAULT NULL,
LAST_UPDT_PNTTM datetime DEFAULT NULL,
LAST_UPDUSR_ID varchar(20) DEFAULT NULL,
PRIMARY KEY (CODE_ID),
KEY R_179 (CL_CODE),
CONSTRAINT LETTCCMMNCODE_ibfk_1 FOREIGN KEY (CL_CODE) REFERENCES LETTCCMMNCLCODE (CL_CODE)
) ;
CREATE TABLE LETTCCMMNDETAILCODE (
CODE_ID varchar(6) NOT NULL,
CODE varchar(15) NOT NULL,
CODE_NM varchar(60) DEFAULT NULL,
CODE_DC varchar(200) DEFAULT NULL,
USE_AT char(1) DEFAULT NULL,
FRST_REGIST_PNTTM datetime DEFAULT NULL,
FRST_REGISTER_ID varchar(20) DEFAULT NULL,
LAST_UPDT_PNTTM datetime DEFAULT NULL,
LAST_UPDUSR_ID varchar(20) DEFAULT NULL,
PRIMARY KEY (CODE_ID,CODE),
CONSTRAINT LETTCCMMNDETAILCODE_ibfk_1 FOREIGN KEY (CODE_ID) REFERENCES LETTCCMMNCODE (CODE_ID)
) ;
CREATE TABLE LETTNORGNZTINFO (
ORGNZT_ID char(20) NOT NULL DEFAULT '',
ORGNZT_NM varchar(20) NOT NULL,
ORGNZT_DC varchar(100) DEFAULT NULL,
PRIMARY KEY (ORGNZT_ID)
) ;
CREATE TABLE LETTNAUTHORGROUPINFO (
GROUP_ID char(20) NOT NULL DEFAULT '',
GROUP_NM varchar(60) NOT NULL,
GROUP_CREAT_DE char(20) NOT NULL,
GROUP_DC varchar(100) DEFAULT NULL,
PRIMARY KEY (GROUP_ID)
) ;
CREATE TABLE LETTNAUTHORINFO (
AUTHOR_CODE varchar(30) NOT NULL DEFAULT '',
AUTHOR_NM varchar(60) NOT NULL,
AUTHOR_DC varchar(200) DEFAULT NULL,
AUTHOR_CREAT_DE char(20) NOT NULL,
PRIMARY KEY (AUTHOR_CODE)
) ;
CREATE TABLE LETTNROLES_HIERARCHY (
PARNTS_ROLE varchar(30) NOT NULL,
CHLDRN_ROLE varchar(30) NOT NULL,
PRIMARY KEY (PARNTS_ROLE,CHLDRN_ROLE),
KEY R_308 (CHLDRN_ROLE),
CONSTRAINT LETTNROLES_HIERARCHY_ibfk_2 FOREIGN KEY (CHLDRN_ROLE) REFERENCES LETTNAUTHORINFO (AUTHOR_CODE) ON DELETE CASCADE,
CONSTRAINT LETTNROLES_HIERARCHY_ibfk_1 FOREIGN KEY (PARNTS_ROLE) REFERENCES LETTNAUTHORINFO (AUTHOR_CODE) ON DELETE CASCADE
) ;
CREATE TABLE LETTNROLEINFO (
ROLE_CODE varchar(50) NOT NULL DEFAULT '',
ROLE_NM varchar(60) NOT NULL,
ROLE_PTTRN varchar(300) DEFAULT NULL,
ROLE_DC varchar(200) DEFAULT NULL,
ROLE_TY varchar(80) DEFAULT NULL,
ROLE_SORT varchar(10) DEFAULT NULL,
ROLE_CREAT_DE char(20) NOT NULL,
PRIMARY KEY (ROLE_CODE)
) ;
CREATE TABLE LETTNAUTHORROLERELATE (
AUTHOR_CODE varchar(30) NOT NULL,
ROLE_CODE varchar(50) NOT NULL,
CREAT_DT datetime DEFAULT NULL,
PRIMARY KEY (AUTHOR_CODE,ROLE_CODE),
KEY R_292 (ROLE_CODE),
CONSTRAINT LETTNAUTHORROLERELATE_ibfk_2 FOREIGN KEY (ROLE_CODE) REFERENCES LETTNROLEINFO (ROLE_CODE) ON DELETE CASCADE,
CONSTRAINT LETTNAUTHORROLERELATE_ibfk_1 FOREIGN KEY (AUTHOR_CODE) REFERENCES LETTNAUTHORINFO (AUTHOR_CODE) ON DELETE CASCADE
) ;
CREATE TABLE LETTNEMPLYRINFO (
EMPLYR_ID varchar(20) NOT NULL,
ORGNZT_ID char(20) DEFAULT NULL,
USER_NM varchar(60) NOT NULL,
PASSWORD varchar(200) NOT NULL,
EMPL_NO varchar(20) DEFAULT NULL,
IHIDNUM varchar(200) DEFAULT NULL,
SEXDSTN_CODE char(1) DEFAULT NULL,
BRTHDY char(20) DEFAULT NULL,
FXNUM varchar(20) DEFAULT NULL,
HOUSE_ADRES varchar(100) DEFAULT NULL,
PASSWORD_HINT varchar(100) NOT NULL,
PASSWORD_CNSR varchar(100) NOT NULL,
HOUSE_END_TELNO varchar(4) DEFAULT NULL,
AREA_NO varchar(4) DEFAULT NULL,
DETAIL_ADRES varchar(100) DEFAULT NULL,
ZIP varchar(6) DEFAULT NULL,
OFFM_TELNO varchar(20) DEFAULT NULL,
MBTLNUM varchar(20) DEFAULT NULL,
EMAIL_ADRES varchar(50) DEFAULT NULL,
OFCPS_NM varchar(60) DEFAULT NULL,
HOUSE_MIDDLE_TELNO varchar(4) DEFAULT NULL,
GROUP_ID char(20) DEFAULT NULL,
PSTINST_CODE char(8) DEFAULT NULL,
EMPLYR_STTUS_CODE varchar(15) NOT NULL,
ESNTL_ID char(20) NOT NULL,
CRTFC_DN_VALUE varchar(20) DEFAULT NULL,
SBSCRB_DE datetime DEFAULT NULL,
PRIMARY KEY (EMPLYR_ID),
KEY LETTNEMPLYRINFO_ibfk_2 (GROUP_ID),
KEY LETTNEMPLYRINFO_ibfk_1 (ORGNZT_ID),
CONSTRAINT LETTNEMPLYRINFO_ibfk_2 FOREIGN KEY (GROUP_ID) REFERENCES LETTNAUTHORGROUPINFO (GROUP_ID) ON DELETE CASCADE,
CONSTRAINT LETTNEMPLYRINFO_ibfk_1 FOREIGN KEY (ORGNZT_ID) REFERENCES LETTNORGNZTINFO (ORGNZT_ID) ON DELETE CASCADE
) ;
CREATE TABLE LETTNEMPLYRSCRTYESTBS (
SCRTY_DTRMN_TRGET_ID varchar(20) NOT NULL,
MBER_TY_CODE varchar(15) DEFAULT NULL,
AUTHOR_CODE varchar(30) NOT NULL,
PRIMARY KEY (SCRTY_DTRMN_TRGET_ID),
KEY LETTNEMPLYRSCRTYESTBS_ibfk_4 (AUTHOR_CODE),
CONSTRAINT LETTNEMPLYRSCRTYESTBS_ibfk_4 FOREIGN KEY (AUTHOR_CODE) REFERENCES LETTNAUTHORINFO (AUTHOR_CODE)
) ;
CREATE TABLE LETTNTMPLATINFO (
TMPLAT_ID char(20) NOT NULL DEFAULT '',
TMPLAT_NM varchar(255) DEFAULT NULL,
TMPLAT_COURS varchar(2000) DEFAULT NULL,
USE_AT char(1) DEFAULT NULL,
TMPLAT_SE_CODE char(6) DEFAULT NULL,
FRST_REGISTER_ID varchar(20) DEFAULT NULL,
FRST_REGIST_PNTTM datetime DEFAULT NULL,
LAST_UPDUSR_ID varchar(20) DEFAULT NULL,
LAST_UPDT_PNTTM datetime DEFAULT NULL,
PRIMARY KEY (TMPLAT_ID)
) ;
CREATE TABLE LETTNBBSMASTER (
BBS_ID char(20) NOT NULL,
BBS_NM varchar(255) NOT NULL,
BBS_INTRCN varchar(2400) DEFAULT NULL,
BBS_TY_CODE char(6) NOT NULL,
BBS_ATTRB_CODE char(6) NOT NULL,
REPLY_POSBL_AT char(1) DEFAULT NULL,
FILE_ATCH_POSBL_AT char(1) NOT NULL,
ATCH_POSBL_FILE_NUMBER decimal(2,0) NOT NULL,
ATCH_POSBL_FILE_SIZE decimal(8,0) DEFAULT NULL,
USE_AT char(1) NOT NULL,
TMPLAT_ID char(20) DEFAULT NULL,
FRST_REGISTER_ID varchar(20) NOT NULL,
FRST_REGIST_PNTTM datetime NOT NULL,
LAST_UPDUSR_ID varchar(20) DEFAULT NULL,
LAST_UPDT_PNTTM datetime DEFAULT NULL,
PRIMARY KEY (BBS_ID)
) ;
CREATE TABLE LETTNBBSUSE (
BBS_ID char(20) NOT NULL,
TRGET_ID char(20) NOT NULL DEFAULT '',
USE_AT char(1) NOT NULL,
REGIST_SE_CODE char(6) DEFAULT NULL,
FRST_REGIST_PNTTM datetime DEFAULT NULL,
FRST_REGISTER_ID varchar(20) NOT NULL,
LAST_UPDT_PNTTM datetime DEFAULT NULL,
LAST_UPDUSR_ID varchar(20) DEFAULT NULL,
PRIMARY KEY (BBS_ID,TRGET_ID),
CONSTRAINT LETTNBBSUSE_ibfk_1 FOREIGN KEY (BBS_ID) REFERENCES LETTNBBSMASTER (BBS_ID)
) ;
CREATE TABLE LETTNBBS (
NTT_ID decimal(20,0) NOT NULL,
BBS_ID char(20) NOT NULL,
NTT_NO decimal(20,0) DEFAULT NULL,
NTT_SJ varchar(2000) DEFAULT NULL,
NTT_CN mediumtext,
ANSWER_AT char(1) DEFAULT NULL,
PARNTSCTT_NO decimal(10,0) DEFAULT NULL,
ANSWER_LC int(11) DEFAULT NULL,
SORT_ORDR decimal(8,0) DEFAULT NULL,
RDCNT decimal(10,0) DEFAULT NULL,
USE_AT char(1) NOT NULL,
NTCE_BGNDE char(20) DEFAULT NULL,
NTCE_ENDDE char(20) DEFAULT NULL,
NTCR_ID varchar(20) DEFAULT NULL,
NTCR_NM varchar(20) DEFAULT NULL,
PASSWORD varchar(200) DEFAULT NULL,
ATCH_FILE_ID char(20) DEFAULT NULL,
FRST_REGIST_PNTTM datetime NOT NULL,
FRST_REGISTER_ID varchar(20) NOT NULL,
LAST_UPDT_PNTTM datetime DEFAULT NULL,
LAST_UPDUSR_ID varchar(20) DEFAULT NULL,
PRIMARY KEY (NTT_ID,BBS_ID),
KEY LETTNBBS_ibfk_1 (BBS_ID),
CONSTRAINT LETTNBBS_ibfk_1 FOREIGN KEY (BBS_ID) REFERENCES LETTNBBSMASTER (BBS_ID)
) ;
CREATE TABLE LETTCZIP (
ZIP varchar(6) NOT NULL,
SN decimal(10,0) NOT NULL DEFAULT '0',
CTPRVN_NM varchar(20) DEFAULT NULL,
SIGNGU_NM varchar(20) DEFAULT NULL,
EMD_NM varchar(60) DEFAULT NULL,
LI_BULD_NM varchar(60) DEFAULT NULL,
LNBR_DONG_HO varchar(20) DEFAULT NULL,
FRST_REGIST_PNTTM datetime DEFAULT NULL,
FRST_REGISTER_ID varchar(20) DEFAULT NULL,
LAST_UPDT_PNTTM datetime DEFAULT NULL,
LAST_UPDUSR_ID varchar(20) DEFAULT NULL,
PRIMARY KEY (ZIP,SN)
) ;
CREATE TABLE LETTHEMPLYRINFOCHANGEDTLS (
EMPLYR_ID varchar(20) NOT NULL,
CHANGE_DE DATETIME NOT NULL,
ORGNZT_ID char(20) DEFAULT NULL,
GROUP_ID char(20) DEFAULT NULL,
EMPL_NO varchar(20) DEFAULT NULL,
SEXDSTN_CODE char(1) DEFAULT NULL,
BRTHDY char(20) DEFAULT NULL,
FXNUM varchar(20) DEFAULT NULL,
HOUSE_ADRES varchar(100) DEFAULT NULL,
HOUSE_END_TELNO varchar(4) DEFAULT NULL,
AREA_NO varchar(4) DEFAULT NULL,
DETAIL_ADRES varchar(100) DEFAULT NULL,
ZIP varchar(6) DEFAULT NULL,
OFFM_TELNO varchar(20) DEFAULT NULL,
MBTLNUM varchar(20) DEFAULT NULL,
EMAIL_ADRES varchar(50) DEFAULT NULL,
HOUSE_MIDDLE_TELNO varchar(4) DEFAULT NULL,
PSTINST_CODE char(8) DEFAULT NULL,
EMPLYR_STTUS_CODE varchar(15) DEFAULT NULL,
ESNTL_ID char(20) DEFAULT NULL,
PRIMARY KEY (EMPLYR_ID,CHANGE_DE)
) ;
CREATE TABLE LETTNBBSMASTEROPTN (
BBS_ID char(20) NOT NULL DEFAULT '',
ANSWER_AT char(1) NOT NULL DEFAULT '',
STSFDG_AT char(1) NOT NULL DEFAULT '',
FRST_REGIST_PNTTM datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
LAST_UPDT_PNTTM datetime DEFAULT NULL,
FRST_REGISTER_ID varchar(20) NOT NULL DEFAULT '',
LAST_UPDUSR_ID varchar(20) DEFAULT NULL,
PRIMARY KEY (BBS_ID)
) ;
CREATE TABLE LETTNENTRPRSMBER (
ENTRPRS_MBER_ID varchar(20) NOT NULL DEFAULT '',
ENTRPRS_SE_CODE char(15) DEFAULT NULL,
BIZRNO varchar(10) DEFAULT NULL,
JURIRNO varchar(13) DEFAULT NULL,
CMPNY_NM varchar(60) NOT NULL,
CXFC varchar(50) DEFAULT NULL,
ZIP varchar(6) DEFAULT NULL,
ADRES varchar(100) DEFAULT NULL,
ENTRPRS_MIDDLE_TELNO varchar(4) DEFAULT NULL,
FXNUM varchar(20) DEFAULT NULL,
INDUTY_CODE char(15) DEFAULT NULL,
APPLCNT_NM varchar(50) DEFAULT NULL,
APPLCNT_IHIDNUM varchar(200) DEFAULT NULL,
SBSCRB_DE datetime DEFAULT NULL,
ENTRPRS_MBER_STTUS varchar(15) DEFAULT NULL,
ENTRPRS_MBER_PASSWORD varchar(200) NOT NULL,
ENTRPRS_MBER_PASSWORD_HINT varchar(100) NOT NULL,
ENTRPRS_MBER_PASSWORD_CNSR varchar(100) NOT NULL,
GROUP_ID char(20) DEFAULT NULL,
DETAIL_ADRES varchar(100) DEFAULT NULL,
ENTRPRS_END_TELNO varchar(4) DEFAULT NULL,
AREA_NO varchar(4) DEFAULT NULL,
APPLCNT_EMAIL_ADRES varchar(50) DEFAULT NULL,
ESNTL_ID char(20) NOT NULL,
PRIMARY KEY (ENTRPRS_MBER_ID),
KEY LETTNENTRPRSMBER_ibfk_1 (GROUP_ID),
CONSTRAINT LETTNENTRPRSMBER_ibfk_1 FOREIGN KEY (GROUP_ID) REFERENCES LETTNAUTHORGROUPINFO (GROUP_ID) ON DELETE CASCADE
) ;
CREATE TABLE LETTNFILE (
ATCH_FILE_ID char(20) NOT NULL,
CREAT_DT datetime NOT NULL,
USE_AT char(1) DEFAULT NULL,
PRIMARY KEY (ATCH_FILE_ID)
) ;
CREATE TABLE LETTNFILEDETAIL (
ATCH_FILE_ID char(20) NOT NULL,
FILE_SN decimal(10,0) NOT NULL,
FILE_STRE_COURS varchar(2000) NOT NULL,
STRE_FILE_NM varchar(255) NOT NULL,
ORIGNL_FILE_NM varchar(255) DEFAULT NULL,
FILE_EXTSN varchar(20) NOT NULL,
FILE_CN mediumtext,
FILE_SIZE decimal(8,0) DEFAULT NULL,
PRIMARY KEY (ATCH_FILE_ID,FILE_SN),
CONSTRAINT LETTNFILEDETAIL_ibfk_1 FOREIGN KEY (ATCH_FILE_ID) REFERENCES LETTNFILE (ATCH_FILE_ID)
) ;
CREATE TABLE LETTNGNRLMBER (
MBER_ID varchar(20) NOT NULL DEFAULT '',
PASSWORD varchar(200) NOT NULL,
PASSWORD_HINT varchar(100) DEFAULT NULL,
PASSWORD_CNSR varchar(100) DEFAULT NULL,
IHIDNUM varchar(200) DEFAULT NULL,
MBER_NM varchar(50) NOT NULL,
ZIP varchar(6) DEFAULT NULL,
ADRES varchar(100) DEFAULT NULL,
AREA_NO varchar(4) DEFAULT NULL,
MBER_STTUS varchar(15) DEFAULT NULL,
DETAIL_ADRES varchar(100) DEFAULT NULL,
END_TELNO varchar(4) DEFAULT NULL,
MBTLNUM varchar(20) DEFAULT NULL,
GROUP_ID char(20) DEFAULT NULL,
MBER_FXNUM varchar(20) DEFAULT NULL,
MBER_EMAIL_ADRES varchar(50) DEFAULT NULL,
MIDDLE_TELNO varchar(4) DEFAULT NULL,
SBSCRB_DE datetime DEFAULT NULL,
SEXDSTN_CODE char(1) DEFAULT NULL,
ESNTL_ID char(20) NOT NULL,
PRIMARY KEY (MBER_ID),
KEY LETTNGNRLMBER_ibfk_1 (GROUP_ID),
CONSTRAINT LETTNGNRLMBER_ibfk_1 FOREIGN KEY (GROUP_ID) REFERENCES LETTNAUTHORGROUPINFO (GROUP_ID) ON DELETE CASCADE
) ;
CREATE TABLE LETTNLOGINLOG (
LOG_ID char(20) NOT NULL,
CONECT_ID varchar(20) DEFAULT NULL,
CONECT_IP varchar(23) DEFAULT NULL,
CONECT_MTHD char(4) DEFAULT NULL,
ERROR_OCCRRNC_AT char(1) DEFAULT NULL,
ERROR_CODE char(3) DEFAULT NULL,
CREAT_DT datetime DEFAULT NULL,
PRIMARY KEY (LOG_ID)
) ;
CREATE TABLE LETTNLOGINPOLICY (
EMPLYR_ID varchar(20) NOT NULL DEFAULT '',
IP_INFO varchar(23) NOT NULL,
DPLCT_PERM_AT char(1) NOT NULL,
LMTT_AT char(1) NOT NULL,
FRST_REGISTER_ID varchar(20) DEFAULT NULL,
FRST_REGIST_PNTTM datetime DEFAULT NULL,
LAST_UPDUSR_ID varchar(20) DEFAULT NULL,
LAST_UPDT_PNTTM datetime DEFAULT NULL,
PRIMARY KEY (EMPLYR_ID)
) ;
CREATE TABLE LETTNPROGRMLIST (
PROGRM_FILE_NM varchar(60) NOT NULL DEFAULT '',
PROGRM_STRE_PATH varchar(100) NOT NULL,
PROGRM_KOREAN_NM varchar(60) DEFAULT NULL,
PROGRM_DC varchar(200) DEFAULT NULL,
URL varchar(100) NOT NULL,
PRIMARY KEY (PROGRM_FILE_NM)
) ;
CREATE TABLE LETTNMENUINFO (
MENU_NM varchar(60) NOT NULL,
PROGRM_FILE_NM varchar(60) NOT NULL,
MENU_NO decimal(20,0) NOT NULL,
UPPER_MENU_NO decimal(20,0) DEFAULT NULL,
MENU_ORDR decimal(5,0) NOT NULL,
MENU_DC varchar(250) DEFAULT NULL,
RELATE_IMAGE_PATH varchar(100) DEFAULT NULL,
RELATE_IMAGE_NM varchar(60) DEFAULT NULL,
PRIMARY KEY (MENU_NO),
KEY R_2 (PROGRM_FILE_NM),
KEY R_4 (UPPER_MENU_NO),
CONSTRAINT LETTNMENUINFO_ibfk_2 FOREIGN KEY (UPPER_MENU_NO) REFERENCES LETTNMENUINFO (MENU_NO),
CONSTRAINT LETTNMENUINFO_ibfk_1 FOREIGN KEY (PROGRM_FILE_NM) REFERENCES LETTNPROGRMLIST (PROGRM_FILE_NM) ON DELETE CASCADE
) ;
CREATE TABLE LETTNMENUCREATDTLS (
MENU_NO decimal(20,0) NOT NULL,
AUTHOR_CODE varchar(30) NOT NULL,
MAPNG_CREAT_ID varchar(30) DEFAULT NULL,
PRIMARY KEY (MENU_NO,AUTHOR_CODE),
KEY R_247 (MAPNG_CREAT_ID),
KEY R_303 (AUTHOR_CODE),
CONSTRAINT LETTNMENUCREATDTLS_ibfk_3 FOREIGN KEY (AUTHOR_CODE) REFERENCES LETTNAUTHORINFO (AUTHOR_CODE),
CONSTRAINT LETTNMENUCREATDTLS_ibfk_1 FOREIGN KEY (MENU_NO) REFERENCES LETTNMENUINFO (MENU_NO) ON DELETE CASCADE
) ;
CREATE TABLE LETTNUSERABSNCE (
EMPLYR_ID varchar(20) NOT NULL DEFAULT '',
USER_ABSNCE_AT char(1) NOT NULL,
FRST_REGISTER_ID varchar(20) DEFAULT NULL,
FRST_REGIST_PNTTM datetime DEFAULT NULL,
LAST_UPDUSR_ID varchar(20) DEFAULT NULL,
LAST_UPDT_PNTTM datetime DEFAULT NULL,
PRIMARY KEY (EMPLYR_ID)
) ;
CREATE TABLE LETTSSYSLOGSUMMARY (
OCCRRNC_DE char(20) NOT NULL,
SRVC_NM varchar(255) NOT NULL,
METHOD_NM varchar(60) NOT NULL,
CREAT_CO decimal(10,0) DEFAULT NULL,
UPDT_CO decimal(10,0) DEFAULT NULL,
RDCNT decimal(10,0) DEFAULT NULL,
DELETE_CO decimal(10,0) DEFAULT NULL,
OUTPT_CO decimal(10,0) DEFAULT NULL,
ERROR_CO decimal(10,0) DEFAULT NULL,
PRIMARY KEY (OCCRRNC_DE,SRVC_NM,METHOD_NM)
) ;
CREATE OR REPLACE VIEW COMVNUSERMASTER ( ESNTL_ID,USER_ID,PASSWORD,USER_NM,USER_ZIP,USER_ADRES,USER_EMAIL,GROUP_ID, USER_SE, ORGNZT_ID )
AS
SELECT ESNTL_ID, MBER_ID,PASSWORD,MBER_NM,ZIP,ADRES,MBER_EMAIL_ADRES,' ','GNR' AS USER_SE, ' ' ORGNZT_ID
FROM LETTNGNRLMBER
UNION ALL
SELECT ESNTL_ID,EMPLYR_ID,PASSWORD,USER_NM,ZIP,HOUSE_ADRES,EMAIL_ADRES,GROUP_ID ,'USR' AS USER_SE, ORGNZT_ID
FROM LETTNEMPLYRINFO
UNION ALL
SELECT ESNTL_ID,ENTRPRS_MBER_ID,ENTRPRS_MBER_PASSWORD,CMPNY_NM,ZIP,ADRES,APPLCNT_EMAIL_ADRES,' ' ,'ENT' AS USER_SE, ' ' ORGNZT_ID
FROM LETTNENTRPRSMBER
;

732
pom.xml Normal file
View File

@ -0,0 +1,732 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>mjon</artifactId>
<packaging>war</packaging>
<version>1.0.0</version>
<name>mjon</name>
<url>http://www.egovframe.go.kr</url>
<!-- <profiles>
<profile>
<id>local</id>
<activation>
<activeByDefault>true</activeByDefault> activeByDefault 기본
</activation>
<properties>
resource 필터 사용시 개발자 PC에 적용되는 필터 properties 의 폴더 위치
<env>local</env>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
resource 필터 사용시 개발자 PC에 적용되는 필터 properties 의 폴더 위치
<env>dev</env>
</properties>
</profile>
<profile>
<id>real</id>
<properties>
resource 필터 사용시 개발자 PC에 적용되는 필터 properties 의 폴더 위치
<env>real</env>
</properties>
</profile>
</profiles> -->
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<properties>
<spring.maven.artifact.version>4.3.22.RELEASE</spring.maven.artifact.version>
<egovframework.rte.version>3.9.0</egovframework.rte.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<repositories>
<repository>
<id>mvn2</id>
<url>https://repo1.maven.org/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>egovframe</id>
<url>https://www.egovframe.go.kr/maven/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>egovframe2</id>
<url>http://maven.egovframe.kr:8080/maven/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<!-- Komoran 형태소분석기 -->
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<!-- Komoran 형태소분석기 -->
</repositories>
<dependencies>
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.fdl.security</artifactId>
<version>${egovframework.rte.version}</version>
</dependency>
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.fdl.excel</artifactId>
<version>${egovframework.rte.version}</version>
</dependency>
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.ptl.mvc</artifactId>
<version>${egovframework.rte.version}</version>
</dependency>
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.fdl.idgnr</artifactId>
<version>${egovframework.rte.version}</version>
</dependency>
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.fdl.property</artifactId>
<version>${egovframework.rte.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>oro</groupId>
<artifactId>oro</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
<!-- oracle 10g driver -->
<!-- <dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
<version>14</version>
</dependency> -->
<!-- altibase driver -->
<!--
<dependency>
<groupId>altibase</groupId>
<artifactId>altibase-jdbc-driver</artifactId>
<version>5.1.3.18</version>
</dependency>
-->
<!-- tibero driver -->
<!--
<dependency>
<groupId>com.tmax.tibero</groupId>
<artifactId>tibero-jdbc</artifactId>
<version>3.0</version>
</dependency>
-->
<!-- cubrid driver -->
<!--
<dependency>
<groupId>cubrid</groupId>
<artifactId>cubrid-jdbc</artifactId>
<version>8.4</version>
</dependency>
-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<!-- Cross-Site Scripting -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
<version>53.1</version>
</dependency>
<!-- quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-weblogic</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jboss</artifactId>
<version>2.1.7</version>
</dependency>
<!-- 공통 -->
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-spring</artifactId>
<version>2.5.0</version>
</dependency>
<!-- JDBC TEMPLATE -->
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-provider-jdbc-template</artifactId>
<version>2.5.0</version>
</dependency>
<!-- user config add -->
<!-- json 추가 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.2</version>
</dependency>
<!-- site mesh -->
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>2.4.2</version>
</dependency>
<!--// site mesh -->
<!-- log4j -->
<dependency>
<groupId>org.lazyluke</groupId>
<artifactId>log4jdbc-remix</artifactId>
<version>0.2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.20.0</version>
</dependency>
<!-- ckeditor -->
<dependency>
<groupId>com.ckeditor</groupId>
<artifactId>ckeditor-java-core</artifactId>
<version>3.5.3</version>
</dependency>
<!-- json-simple -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>nl.captcha</groupId>
<artifactId>simplecaptcha</artifactId>
<version>1.2.1</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/simplecaptcha-1.2.1_exp.jar</systemPath>
</dependency>
<!-- sci 평가 siren24. 본인인증 -->
<dependency>
<groupId>sciSecuPCC</groupId>
<artifactId>sciSecuPCC</artifactId>
<version>2</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/sciSecuPCC.jar</systemPath>
</dependency>
<dependency>
<groupId>sciSecuPIN_v3</groupId>
<artifactId>sciSecuPIN_v3</artifactId>
<version>2</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/sciSecuIPIN_v3.jar</systemPath>
</dependency>
<!-- KG모빌리언스 결제모듈 -->
<dependency>
<groupId>McashCipher</groupId>
<artifactId>McashCipher</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/McashCipher.jar</systemPath>
</dependency>
<!-- NiceID 본인인증 -->
<dependency>
<groupId>NiceID</groupId>
<artifactId>NiceID</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/NiceID.jar</systemPath>
</dependency>
<!-- 디아모 모듈 -->
<dependency>
<groupId>damo</groupId>
<artifactId>damo</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/scpdb.jar</systemPath>
</dependency>
<!-- ARS 전화인증 -->
<dependency>
<groupId>arsAuto</groupId>
<artifactId>arsAuto</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/hjhseed.jar</systemPath>
</dependency>
<dependency>
<groupId>hjhauth</groupId>
<artifactId>hjhauth_1.8</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/hjhauth.jar</systemPath>
</dependency>
<!-- Jsoup HTML 파서 -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/jsoup-1.11.3.jar</systemPath>
</dependency>
<!-- Email -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>egovframework.com.ems</groupId>
<artifactId>sndng-mail</artifactId>
<version>1.0</version>
</dependency>
<!-- eGov 호환성 인증을 위한 패키지명 변경 작업하고, was 에러가 발생하여 추가함. -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>4.1.0.Final</version>
</dependency>
<!-- Solr -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5</version>
</dependency>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>5.3.1</version>
</dependency>
<!-- Java thumbnailator -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>[0.4, 0.5)</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.16</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
</dependency>
<!-- <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.22</version>
<scope>provided</scope>
</dependency> -->
<!-- 자동완성기능 gson 사용 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.1</version>
</dependency>
<!-- ITN 홈페이지 메일전송(네이버 SMTP 사용) -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.0-jre</version>
</dependency>
<!-- html parse -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>
<!-- kmc 본인인증 -->
<dependency>
<groupId>kmc</groupId>
<artifactId>ICERTSecu_JDK18</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ICERTSecu_JDK18.jar</systemPath>
</dependency>
<!-- crpyto -->
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.fdl.crypto</artifactId>
<version>${egovframework.rte.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.mashape.unirest/unirest-java -->
<dependency>
<groupId>com.mashape.unirest</groupId>
<artifactId>unirest-java</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>com.thetransactioncompany</groupId>
<artifactId>cors-filter</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.3.1</version>
</dependency>
<!-- Komoran 형태소 분석기 -->
<dependency>
<groupId>com.github.shin285</groupId>
<artifactId>KOMORAN</artifactId>
<version>3.3.4</version>
</dependency>
<!-- Komoran 형태소 분석기 -->
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<!-- <resource>
<directory>src/main/resources-${env}</directory>
</resource> -->
</resources>
<defaultGoal>install</defaultGoal>
<directory>${basedir}/target</directory>
<finalName>mjon</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port>
<path>/</path>
<systemProperties>
<JAVA_OPTS>-Xms256m -Xmx768m -XX:MaxPermSize=256m</JAVA_OPTS>
</systemProperties>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<version>3.8.1</version>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>annotationconfiguration</implementation>
</component>
</components>
</configuration>
<dependencies>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.3.2</version>
</dependency>
</dependencies>
</plugin>
<!-- EMMA -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<version>1.0-alpha-3</version>
</plugin>
<!-- PMD manven plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<!-- EMMA -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
<forkMode>once</forkMode>
<reportFormat>xml</reportFormat>
<excludes>
<exclude>**/Abstract*.java</exclude>
<exclude>**/*Suite.java</exclude>
</excludes>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<inherited>true</inherited>
</plugin>
<!-- JavaDoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</build>
<reporting>
<outputDirectory>${basedir}/target/site</outputDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.7</version>
<reportSets>
<reportSet>
<id>sunlink</id>
<reports>
<report>javadoc</report>
</reports>
<inherited>true</inherited>
<configuration>
<links>
<link>http://docs.oracle.com/javase/6/docs/api/</link>
</links>
</configuration>
</reportSet>
</reportSets>
</plugin>
<!-- JUnit Test Results & EMMA Coverage Reporting -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<inherited>true</inherited>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>surefire-report-maven-plugin</artifactId>
<inherited>true</inherited>
<reportSets>
<reportSet>
<reports>
<report>report-only</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<!-- Generating JavaDoc Report -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<minmemory>128m</minmemory>
<maxmemory>512m</maxmemory>
<encoding>${encoding}</encoding>
<docencoding>${encoding}</docencoding>
<charset>${encoding}</charset>
</configuration>
</plugin>
<!-- Generating Java Source in HTML -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<configuration>
<inputEncoding>${encoding}</inputEncoding>
<outputEncoding>${encoding}</outputEncoding>
<linkJavadoc>true</linkJavadoc>
<javadocDir>apidocs</javadocDir>
</configuration>
</plugin>
</plugins>
</reporting>
<groupId>mjon</groupId>
</project>

View File

@ -0,0 +1,10 @@
package egovframework.migration.impl;
import org.springframework.stereotype.Repository;
import itn.com.cmm.service.impl.EgovComAbstractDAO;
@Repository("mariaMigrationDAO")
public class MariaMigrationDAO extends EgovComAbstractDAO {
}

View File

@ -0,0 +1,169 @@
package egovframework.migration.service;
import java.io.Serializable;
import itn.com.cmm.ComDefaultVO;
public class KcdfNewBbsVO extends ComDefaultVO implements Serializable{
String NTT_ID = "" ;
String BBS_ID = "" ;
String NTT_NO = "" ;
String NTT_SJ = "" ;
String NTT_CN = "" ;
String ANSWER_AT = "" ;
String PARNTSCTT_NO = "" ;
String ANSWER_LC = "" ;
String SORT_ORDR = "" ;
String RDCNT = "" ;
String USE_AT = "" ;
String NTCE_BGNDE = "" ;
String NTCE_ENDDE = "" ;
String NTCR_ID = "" ;
String NTCR_NM = "" ;
String PASSWORD = "" ;
String ATCH_FILE_ID = "" ;
String FRST_REGIST_PNTTM = "" ;
String FRST_REGISTER_ID = "" ;
String LAST_UPDT_PNTTM = "" ;
String LAST_UPDUSR_ID = "" ;
String NOTICE_AT = "" ;
String SECRET_AT = "" ;
public String getNTT_ID() {
return NTT_ID;
}
public void setNTT_ID(String nTT_ID) {
NTT_ID = nTT_ID;
}
public String getNTT_NO() {
return NTT_NO;
}
public void setNTT_NO(String nTT_NO) {
NTT_NO = nTT_NO;
}
public String getNTT_SJ() {
return NTT_SJ;
}
public void setNTT_SJ(String nTT_SJ) {
NTT_SJ = nTT_SJ;
}
public String getNTT_CN() {
return NTT_CN;
}
public void setNTT_CN(String nTT_CN) {
NTT_CN = nTT_CN;
}
public String getANSWER_AT() {
return ANSWER_AT;
}
public void setANSWER_AT(String aNSWER_AT) {
ANSWER_AT = aNSWER_AT;
}
public String getPARNTSCTT_NO() {
return PARNTSCTT_NO;
}
public void setPARNTSCTT_NO(String pARNTSCTT_NO) {
PARNTSCTT_NO = pARNTSCTT_NO;
}
public String getANSWER_LC() {
return ANSWER_LC;
}
public void setANSWER_LC(String aNSWER_LC) {
ANSWER_LC = aNSWER_LC;
}
public String getSORT_ORDR() {
return SORT_ORDR;
}
public void setSORT_ORDR(String sORT_ORDR) {
SORT_ORDR = sORT_ORDR;
}
public String getRDCNT() {
return RDCNT;
}
public void setRDCNT(String rDCNT) {
RDCNT = rDCNT;
}
public String getUSE_AT() {
return USE_AT;
}
public void setUSE_AT(String uSE_AT) {
USE_AT = uSE_AT;
}
public String getNTCE_BGNDE() {
return NTCE_BGNDE;
}
public void setNTCE_BGNDE(String nTCE_BGNDE) {
NTCE_BGNDE = nTCE_BGNDE;
}
public String getNTCE_ENDDE() {
return NTCE_ENDDE;
}
public void setNTCE_ENDDE(String nTCE_ENDDE) {
NTCE_ENDDE = nTCE_ENDDE;
}
public String getNTCR_ID() {
return NTCR_ID;
}
public void setNTCR_ID(String nTCR_ID) {
NTCR_ID = nTCR_ID;
}
public String getNTCR_NM() {
return NTCR_NM;
}
public void setNTCR_NM(String nTCR_NM) {
NTCR_NM = nTCR_NM;
}
public String getPASSWORD() {
return PASSWORD;
}
public void setPASSWORD(String pASSWORD) {
PASSWORD = pASSWORD;
}
public String getATCH_FILE_ID() {
return ATCH_FILE_ID;
}
public void setATCH_FILE_ID(String aTCH_FILE_ID) {
ATCH_FILE_ID = aTCH_FILE_ID;
}
public String getFRST_REGIST_PNTTM() {
return FRST_REGIST_PNTTM;
}
public void setFRST_REGIST_PNTTM(String fRST_REGIST_PNTTM) {
FRST_REGIST_PNTTM = fRST_REGIST_PNTTM;
}
public String getFRST_REGISTER_ID() {
return FRST_REGISTER_ID;
}
public void setFRST_REGISTER_ID(String fRST_REGISTER_ID) {
FRST_REGISTER_ID = fRST_REGISTER_ID;
}
public String getLAST_UPDT_PNTTM() {
return LAST_UPDT_PNTTM;
}
public void setLAST_UPDT_PNTTM(String lAST_UPDT_PNTTM) {
LAST_UPDT_PNTTM = lAST_UPDT_PNTTM;
}
public String getLAST_UPDUSR_ID() {
return LAST_UPDUSR_ID;
}
public void setLAST_UPDUSR_ID(String lAST_UPDUSR_ID) {
LAST_UPDUSR_ID = lAST_UPDUSR_ID;
}
public String getNOTICE_AT() {
return NOTICE_AT;
}
public void setNOTICE_AT(String nOTICE_AT) {
NOTICE_AT = nOTICE_AT;
}
public String getSECRET_AT() {
return SECRET_AT;
}
public void setSECRET_AT(String sECRET_AT) {
SECRET_AT = sECRET_AT;
}
public String getBBS_ID() {
return BBS_ID;
}
public void setBBS_ID(String bBS_ID) {
BBS_ID = bBS_ID;
}
}

View File

@ -0,0 +1,31 @@
package egovframework.migration.service;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Repository;
import com.ibatis.sqlmap.client.SqlMapClient;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
@Repository("KcdfNewDAO")
public class KcdfNewDAO extends EgovAbstractDAO {
@Override
@Resource(name ="kcdfSqlMapClient")
public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
super.setSuperSqlMapClient(sqlMapClient);
}
public int selectKcdfBasicCount() {
return (int)select("KcdfNewDAO.selectKcdfBasicCount");
}
@SuppressWarnings("unchecked")
public List<KcdfNewBbsVO> selectKcdfBbsList(KcdfNewBbsVO tempKcdfNewBbsVO) throws Exception{
return (List<KcdfNewBbsVO>)list("KcdfNewDAO.selectKcdfBbsList", tempKcdfNewBbsVO);
}
}

View File

@ -0,0 +1,126 @@
package egovframework.migration.service;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
@Service("MariaMigrationService")
public class MariaMigrationService {
@Resource(name = "KcdfNewDAO")
private KcdfNewDAO kcdfNewDAO;
@Resource(name = "NcmsDAO")
private NcmsDAO ncmsDAO;
public int selectOracleBasicCount() {
// TODO Auto-generated method stub
return 0;
}
public int selectMariaBasicCount() {
// TODO Auto-generated method stub
return 0;
}
public int selectOraclePublishCount() {
// TODO Auto-generated method stub
return 0;
}
public int selectMariaPublishCount() {
// TODO Auto-generated method stub
return 0;
}
public int selectOracleFileCount() {
// TODO Auto-generated method stub
return 0;
}
public int selectMariaFileCount() {
// TODO Auto-generated method stub
return 0;
}
public int selectOracleResrvationCount() {
// TODO Auto-generated method stub
return 0;
}
public int selectMariaResrvationCount() {
// TODO Auto-generated method stub
return 0;
}
public void selectOracleBasicList() {
// TODO Auto-generated method stub
}
public void selectOraclePublishList() {
// TODO Auto-generated method stub
}
public void selectOracleFileList() {
// TODO Auto-generated method stub
}
public void selectOracleResrvationList() {
// TODO Auto-generated method stub
}
public int selectKcdfBasicCount() {
return kcdfNewDAO.selectKcdfBasicCount();
}
public void kcdfMigration() {
try {
int selectKcdfBasicCount = kcdfNewDAO.selectKcdfBasicCount();
List<KcdfNewBbsVO> list = new ArrayList<KcdfNewBbsVO>();
KcdfNewBbsVO tempKcdfNewBbsVO = new KcdfNewBbsVO(); //limit 위해 사용
int enterval = 100;
int i = 0;
if(selectKcdfBasicCount > enterval){
for(i=0; i< selectKcdfBasicCount; i++){ //enterval 개씩 끊어서 insert
if (i % enterval == 0 ){ //0
tempKcdfNewBbsVO.setRecordCountPerPage(enterval);
tempKcdfNewBbsVO.setFirstIndex(i);
list = kcdfNewDAO.selectKcdfBbsList(tempKcdfNewBbsVO);
for(int j=0; j< list.size(); j++){
ncmsDAO.insertNcmsBbsInfo(list.get(j));
}
}
}
/*if(selectKcdfBasicCount != tempKcdfNewBbsVO.getFirstIndex()) { // enterval 개씩 끊어서 insert 남은 데이터 insert
tempKcdfNewBbsVO.setFirstIndex(selectKcdfBasicCount);
tempKcdfNewBbsVO.setRecordCountPerPage(enterval);
list = kcdfNewDAO.selectKcdfBbsList(tempKcdfNewBbsVO);
for(i=0; i< list.size(); i++){
kcdfNewDAO.insertNcmsBbsInfo(list.get(i));
}
}*/
}else{ //enterval 미만
tempKcdfNewBbsVO.setFirstIndex(0);
tempKcdfNewBbsVO.setRecordCountPerPage(enterval);
list = kcdfNewDAO.selectKcdfBbsList(tempKcdfNewBbsVO);
for(i=0; i< selectKcdfBasicCount; i++){
ncmsDAO.insertNcmsBbsInfo(list.get(i));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,16 @@
package egovframework.migration.service;
import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
@Repository("NcmsDAO")
public class NcmsDAO extends EgovAbstractDAO{
public void insertNcmsBbsInfo(KcdfNewBbsVO kcdfNewBbsVO) {
insert("NcmsDAO.insertNcmsBbsInfo",kcdfNewBbsVO);
}
}

View File

@ -0,0 +1,163 @@
package egovframework.migration.service;
import java.io.Serializable;
import itn.com.cmm.ComDefaultVO;
public class NcmsVO extends ComDefaultVO implements Serializable{
String NTT_ID = "" ;
String NTT_NO = "" ;
String NTT_SJ = "" ;
String NTT_CN = "" ;
String ANSWER_AT = "" ;
String PARNTSCTT_NO = "" ;
String ANSWER_LC = "" ;
String SORT_ORDR = "" ;
String RDCNT = "" ;
String USE_AT = "" ;
String NTCE_BGNDE = "" ;
String NTCE_ENDDE = "" ;
String NTCR_ID = "" ;
String NTCR_NM = "" ;
String PASSWORD = "" ;
String ATCH_FILE_ID = "" ;
String FRST_REGIST_PNTTM = "" ;
String FRST_REGISTER_ID = "" ;
String LAST_UPDT_PNTTM = "" ;
String LAST_UPDUSR_ID = "" ;
String NOTICE_AT = "" ;
String SECRET_AT = "" ;
public String getNTT_ID() {
return NTT_ID;
}
public void setNTT_ID(String nTT_ID) {
NTT_ID = nTT_ID;
}
public String getNTT_NO() {
return NTT_NO;
}
public void setNTT_NO(String nTT_NO) {
NTT_NO = nTT_NO;
}
public String getNTT_SJ() {
return NTT_SJ;
}
public void setNTT_SJ(String nTT_SJ) {
NTT_SJ = nTT_SJ;
}
public String getNTT_CN() {
return NTT_CN;
}
public void setNTT_CN(String nTT_CN) {
NTT_CN = nTT_CN;
}
public String getANSWER_AT() {
return ANSWER_AT;
}
public void setANSWER_AT(String aNSWER_AT) {
ANSWER_AT = aNSWER_AT;
}
public String getPARNTSCTT_NO() {
return PARNTSCTT_NO;
}
public void setPARNTSCTT_NO(String pARNTSCTT_NO) {
PARNTSCTT_NO = pARNTSCTT_NO;
}
public String getANSWER_LC() {
return ANSWER_LC;
}
public void setANSWER_LC(String aNSWER_LC) {
ANSWER_LC = aNSWER_LC;
}
public String getSORT_ORDR() {
return SORT_ORDR;
}
public void setSORT_ORDR(String sORT_ORDR) {
SORT_ORDR = sORT_ORDR;
}
public String getRDCNT() {
return RDCNT;
}
public void setRDCNT(String rDCNT) {
RDCNT = rDCNT;
}
public String getUSE_AT() {
return USE_AT;
}
public void setUSE_AT(String uSE_AT) {
USE_AT = uSE_AT;
}
public String getNTCE_BGNDE() {
return NTCE_BGNDE;
}
public void setNTCE_BGNDE(String nTCE_BGNDE) {
NTCE_BGNDE = nTCE_BGNDE;
}
public String getNTCE_ENDDE() {
return NTCE_ENDDE;
}
public void setNTCE_ENDDE(String nTCE_ENDDE) {
NTCE_ENDDE = nTCE_ENDDE;
}
public String getNTCR_ID() {
return NTCR_ID;
}
public void setNTCR_ID(String nTCR_ID) {
NTCR_ID = nTCR_ID;
}
public String getNTCR_NM() {
return NTCR_NM;
}
public void setNTCR_NM(String nTCR_NM) {
NTCR_NM = nTCR_NM;
}
public String getPASSWORD() {
return PASSWORD;
}
public void setPASSWORD(String pASSWORD) {
PASSWORD = pASSWORD;
}
public String getATCH_FILE_ID() {
return ATCH_FILE_ID;
}
public void setATCH_FILE_ID(String aTCH_FILE_ID) {
ATCH_FILE_ID = aTCH_FILE_ID;
}
public String getFRST_REGIST_PNTTM() {
return FRST_REGIST_PNTTM;
}
public void setFRST_REGIST_PNTTM(String fRST_REGIST_PNTTM) {
FRST_REGIST_PNTTM = fRST_REGIST_PNTTM;
}
public String getFRST_REGISTER_ID() {
return FRST_REGISTER_ID;
}
public void setFRST_REGISTER_ID(String fRST_REGISTER_ID) {
FRST_REGISTER_ID = fRST_REGISTER_ID;
}
public String getLAST_UPDT_PNTTM() {
return LAST_UPDT_PNTTM;
}
public void setLAST_UPDT_PNTTM(String lAST_UPDT_PNTTM) {
LAST_UPDT_PNTTM = lAST_UPDT_PNTTM;
}
public String getLAST_UPDUSR_ID() {
return LAST_UPDUSR_ID;
}
public void setLAST_UPDUSR_ID(String lAST_UPDUSR_ID) {
LAST_UPDUSR_ID = lAST_UPDUSR_ID;
}
public String getNOTICE_AT() {
return NOTICE_AT;
}
public void setNOTICE_AT(String nOTICE_AT) {
NOTICE_AT = nOTICE_AT;
}
public String getSECRET_AT() {
return SECRET_AT;
}
public void setSECRET_AT(String sECRET_AT) {
SECRET_AT = sECRET_AT;
}
}

View File

@ -0,0 +1,81 @@
package egovframework.migration.web;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import egovframework.migration.service.MariaMigrationService;
@Controller
public class MariaMigrationController {
@Resource(name = "MariaMigrationService")
private MariaMigrationService mariaMigrationService;
@RequestMapping(value="/maria/migration.do")
public String mariaTestPage(ModelMap model) throws Exception{
int selectKcdfBasicCount = mariaMigrationService.selectKcdfBasicCount();
mariaMigrationService.kcdfMigration();
/*List<OrcaleTestVO> list = orcalTestDAO.selectOracleBasicList();*/
mariaMigrationService.selectOracleBasicList();
int selectMariaBasicCount = mariaMigrationService.selectMariaBasicCount();
int selectOraclePublishCount = mariaMigrationService.selectOraclePublishCount();
int selectMariaPublishCount = mariaMigrationService.selectMariaPublishCount();
int selectOracleFileCount = mariaMigrationService.selectOracleFileCount();
int selectMariaFileCount = mariaMigrationService.selectMariaFileCount();
int selectOracleResrvationCount = mariaMigrationService.selectOracleResrvationCount();
int selectMariaResrvationCount = mariaMigrationService.selectMariaResrvationCount();
/*model.addAttribute("selectOracleBasicCount", selectOracleBasicCount );
model.addAttribute("selectMariaBasicCount", selectMariaBasicCount );
model.addAttribute("selectOraclePublishCount", selectOraclePublishCount );
model.addAttribute("selectMariaPublishCount", selectMariaPublishCount );
model.addAttribute("selectOracleFileCount", selectOracleFileCount );
model.addAttribute("selectMariaFileCount", selectMariaFileCount );
model.addAttribute("selectOracleResrvationCount", selectOracleResrvationCount );
model.addAttribute("selectMariaResrvationCount", selectMariaResrvationCount );*/
return "test/oracle/TestOracle";
}
@RequestMapping(value="/maria/dataBaseAjax.do")
public ModelAndView mariaDataBaseAjax(@RequestParam Map<String, Object> commandMap){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String type = (String) commandMap.get("type");
System.out.println("type : " + type);
if(type =="basic" || type.equals("basic")){
mariaMigrationService.selectOracleBasicList();
}else if(type =="Publish" || type.equals("Publish")){
mariaMigrationService.selectOraclePublishList();
}else if(type =="file" || type.equals("file")){
mariaMigrationService.selectOracleFileList();
}else if(type =="Resrvation" || type.equals("Resrvation")){
mariaMigrationService.selectOracleResrvationList();
}
modelAndView.addObject("result", "TEST");
return modelAndView;
}
}

View File

@ -0,0 +1,89 @@
package itn.com.api.web;
import java.time.LocalDateTime;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import itn.let.kakao.admin.kakaoAt.service.MjonKakaoAtStatVO;
import itn.let.kakao.admin.statistics.service.KakaoStatisticsService;
import itn.let.mail.service.StatusResponse;
import itn.let.mjo.msg.service.MjonMsgService;
import itn.let.mjo.msg.service.MjonMsgStatVO;
/**
*
* @author : 이호영
* @fileName : ApiRestController.java
* @date : 2023.01.05
* @description :
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2023.01.05 이호영 최초 생성
*
*
*
*/
@RestController
public class ApiRestController {
private static final Logger log = LoggerFactory.getLogger(ApiRestController.class);
@Resource(name = "mjonMsgService")
private MjonMsgService mjonMsgService;
@Resource(name = "KakaoStatisticsService")
private KakaoStatisticsService kakaoStatisticsService;
/**
* @methodName : mailSendItnContactUs
* @author : 이호영
* @date : 2023.01.05
* @description :
* @param mjonMsgStatVO
* @return
* @throws Exception
*/
@GetMapping(value = "/web/api/insertAgentSmsCountStatApi.do")
public ResponseEntity<StatusResponse> insertAgentSmsCountStatApi(MjonMsgStatVO mjonMsgStatVO) throws Exception {
try {
mjonMsgService.insertAgentSmsCountStat(mjonMsgStatVO);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "문자 발송건수 통계 생성을 실패하였습니다.", LocalDateTime.now()));
}
return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "문자 발송건수 통계 생성을 성공적으로 마쳤습니다.", LocalDateTime.now()));
}
/**
* @methodName : insertKakaoAtCountStatApi
* @author : 안주영
* @date : 2023.03.23
* @description :
* @param kakaoAtStatVO
* @return
* @throws Exception
*/
@GetMapping(value = "/web/api/insertKakaoAtCountStatApi.do")
public ResponseEntity<StatusResponse> insertKakaoAtCountStatApi(MjonKakaoAtStatVO kakaoAtStatVO) throws Exception {
try {
kakaoStatisticsService.insertKakaoAtCountStat(kakaoAtStatVO);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "알림톡 발송건수 통계 생성을 실패하였습니다.", LocalDateTime.now()));
}
return ResponseEntity.ok().body(new StatusResponse(HttpStatus.OK, "알림톡 발송건수 통계 생성을 성공적으로 마쳤습니다.", LocalDateTime.now()));
}
}

View File

@ -0,0 +1,106 @@
package itn.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.
*
* <p>Particularly useful for storing Strings with more than 4000 characters in an
* Oracle database (only possible via CLOBs), in combination with OracleLobHandler.
*
* <p>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);
}
@Override
protected void setParameterInternal(PreparedStatement ps, int index, Object value, String jdbcType, LobCreator lobCreator) throws SQLException {
lobCreator.setClobAsString(ps, index, (String) value);
}
@Override
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);
} finally {
if (rd != null) {
try {
rd.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORE: {}", ignore.getMessage());
}
}
}
return read_data.toString();
}
@Override
public Object valueOf(String s) {
return s;
}
}

View File

@ -0,0 +1,185 @@
package itn.com.cmm;
import java.io.Serializable;
import org.apache.commons.lang3.builder.ToStringBuilder;
/**
* 클래스
* @author 공통서비스개발팀 이삼섭
* @since 2009.06.01
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.3.11 이삼섭 최초 생성
*
* </pre>
*/
@SuppressWarnings("serial")
public class ComDefaultCodeVO implements Serializable {
/** 코드 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);
}
}

View File

@ -0,0 +1,392 @@
package itn.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 = -6062858939907510631L;
/** 검색조건 */
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 = "";
/** 최초등록 일자 */
private String frstRegistPnttm = "";
/** 최초등록 ID */
private String frstRegisterId = "";
/** 마지막 수정 일자 */
private String lastUpdtPnttm = "";
/** 마지막 수정 ID*/
private String lastUpdusrId = "";
private String siteId = "";
private String siteNm = "";
private String searchConditionSite;
private String sortOver = "A"; //재정렬시 차순(A:오름차순 , D:내림차순)
private String seCd = ""; //게시판 구분 게시판ID추가 구분
private int sort = 0;
private int beSort = 0; //이전 sort번호
private int totCnt = 0;
private String searchSortCnd = ""; // 정렬 항목
private String searchSortOrd = ""; // 정렬 구분(오름/내림)
private String searchStartDate = ""; // 검색 시작일자
private String searchEndDate = ""; // 검색 종료일자
private String searchNm = ""; //상세검색 이름
private String tempSortNum ;
private String pageType = "";
private String searchCampaignYn;
private String calMonth; // select 기간 조건 [관리자]
public String getPageType() {
return pageType;
}
public String getSearchStartDate() {
return searchStartDate;
}
public void setSearchStartDate(String searchStartDate) {
this.searchStartDate = searchStartDate;
}
public String getSearchEndDate() {
return searchEndDate;
}
public void setSearchEndDate(String searchEndDate) {
this.searchEndDate = searchEndDate;
}
public void setPageType(String pageType) {
this.pageType = pageType;
}
public String getFrstRegistPnttm() {
return frstRegistPnttm;
}
public void setFrstRegistPnttm(String frstRegistPnttm) {
this.frstRegistPnttm = frstRegistPnttm;
}
public String getFrstRegisterId() {
return frstRegisterId;
}
public void setFrstRegisterId(String frstRegisterId) {
this.frstRegisterId = frstRegisterId;
}
public String getLastUpdtPnttm() {
return lastUpdtPnttm;
}
public void setLastUpdtPnttm(String lastUpdtPnttm) {
this.lastUpdtPnttm = lastUpdtPnttm;
}
public String getLastUpdusrId() {
return lastUpdusrId;
}
public void setLastUpdusrId(String lastUpdusrId) {
this.lastUpdusrId = lastUpdusrId;
}
public int getBeSort() {
return beSort;
}
public void setBeSort(int beSort) {
this.beSort = beSort;
}
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;
}
public String getSiteId() {
return siteId;
}
public void setSiteId(String siteId) {
this.siteId = siteId;
}
public String getSortOver() {
return sortOver;
}
public void setSortOver(String sortOver) {
this.sortOver = sortOver;
}
public String getSiteNm() {
return siteNm;
}
public void setSiteNm(String siteNm) {
this.siteNm = siteNm;
}
public String getSearchConditionSite() {
return searchConditionSite;
}
public void setSearchConditionSite(String searchConditionSite) {
this.searchConditionSite = searchConditionSite;
}
public String getSeCd() {
return seCd;
}
public void setSeCd(String seCd) {
this.seCd = seCd;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public int getTotCnt() {
return totCnt;
}
public void setTotCnt(int totCnt) {
this.totCnt = totCnt;
}
public String getSearchSortCnd() {
return searchSortCnd;
}
public void setSearchSortCnd(String searchSortCnd) {
this.searchSortCnd = searchSortCnd;
}
public String getSearchSortOrd() {
return searchSortOrd;
}
public void setSearchSortOrd(String searchSortOrd) {
this.searchSortOrd = searchSortOrd;
}
public String getTempSortNum() {
return tempSortNum;
}
public void setTempSortNum(String tempSortNum) {
this.tempSortNum = tempSortNum;
}
public String getSearchNm() {
return searchNm;
}
public void setSearchNm(String searchNm) {
this.searchNm = searchNm;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public String getSearchCampaignYn() {
return searchCampaignYn;
}
public void setSearchCampaignYn(String searchCampaignYn) {
this.searchCampaignYn = searchCampaignYn;
}
public String getCalMonth() {
return calMonth;
}
public void setCalMonth(String calMonth) {
this.calMonth = calMonth;
}
}

View File

@ -0,0 +1,406 @@
package itn.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 <pre>
* &lt;&lt; 개정이력(Modification Information) &gt;&gt;
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2010.11.09 장동한 최초 생성
*
* </pre>
*/
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 [] = {
"&#40;","&#41;",
"&#91;","&#93;",
"&#123;","&#125;",
"&#34;","&#39;",
"&#44;","&#58;",
"&#59;","&#61;",
" ","\t", //" ","\t",
"\r","\n", //"\r","\n",
"&#37;","&#33;",
"&#43;","&#45;"
};
/**
* 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)
public void release() {
super.release();
init();
}
// *********************************************************************
// Tag logic
// evaluates 'value' and determines if the body should be evaluted
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
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 <tt>text</tt> to <tt>pageContext</tt>'s current JspWriter. If
* <tt>escapeXml</tt> is true, performs the following substring replacements
* (to facilitate output to XML/HTML pages):
*
* & -> &amp; < -> &lt; > -> &gt; " -> &#034; ' -> &#039;
*
* 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
*
*/
private String getWriteEscapedXml() throws IOException {
String sRtn = "";
Object obj = this.value;
@SuppressWarnings("unused")
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");
}
}
*/
}

View File

@ -0,0 +1,35 @@
package itn.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을 처리한다.
*/
@Override
public void occur(Exception ex, String packageName) {
LOGGER.debug("[HANDLER][PACKAGE]::: {}", packageName);
LOGGER.debug("[HANDLER][Exception]:::", ex);
}
}

View File

@ -0,0 +1,17 @@
package itn.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);
}
}

View File

@ -0,0 +1,34 @@
package itn.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);
/**
* 발생된 메시지를 출력한다.
*/
@Override
public void todo(Class<?> clazz, String message) {
LOGGER.debug("[TRACE]CLASS::: {}", clazz.getName());
LOGGER.debug("[TRACE]MESSAGE::: {}", message);
//이곳에서 후속처리로 필요한 액션을 취할 있다.
}
}

View File

@ -0,0 +1,55 @@
package itn.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
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.03.11 이문준 최초 생성
*
* </pre>
*/
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());
}
}

View File

@ -0,0 +1,213 @@
package itn.com.cmm;
import java.io.Serializable;
import java.net.MalformedURLException;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;
import org.springframework.mail.MailException;
/**
* 발송메일에 첨부파일용으로 사용되는 VO 클래스
* @author 공통서비스 개발팀 이기하
* @since 2011.12.06
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
* 2011.12.06 이기하 최초 생성
* 2013.05.23 이기하 thread-safe 하게 변경
*
* </pre>
*/
public class EgovMultiPartEmail implements Serializable {
private static final long serialVersionUID = -4322006921324597283L;
private String id;
private String password;
private int port;
private String host;
private String emailAddress;
private String senderName;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public String getSenderName() {
return senderName;
}
public void setSenderName(String senderName) {
this.senderName = senderName;
}
@Deprecated
public String send() throws EmailException {
MultiPartEmail email = new MultiPartEmail();
email.setCharset("UTF-8");
email.setHostName(this.host);
email.setSmtpPort(this.port);
email.setStartTLSEnabled(true);
email.setAuthenticator(new DefaultAuthenticator(this.id, this.password));
email.setSocketConnectionTimeout(60000);
email.setSocketTimeout(60000);
email.setFrom(this.emailAddress, this.senderName);
return email.send();
}
// Simple 메일
public String send(String addTo, String subject, String msg) throws Exception {
SimpleEmail email = new SimpleEmail();
setEmailInfo(addTo, subject, msg, email);
return email.send();
}
// HTML 메일
public String send(String addTo, String subject, String textMsg, String htmlMsg) throws MailException, MalformedURLException {
String result = "";
try {
HtmlEmail email = new HtmlEmail();
// 3번째 파라미터 'html' 의미 없음. 문자 없으면 error
setEmailInfo(addTo, subject, "html", email);
email.setHtmlMsg(htmlMsg);
// HTML 이메일을 지원하지 않는 클라이언트라면 다음 메세지를 뿌려웁니다
email.setTextMsg("Your email client does not support HTML messages");
// email.setTextMsg(textMsg);
// 이미지 Sample
// 삽입할 이미지와 Content Id를 설정합니다. URL 이미지 사용 메일전송 지연될 있음
// URL url = new URL("https://www.google.co.kr/images/branding/googlelogo/2x/googlelogo_color_120x44dp.png");
// String cid = email.embed(url, "Apache logo");
// // HTML 메세지를 설정합니다
// email.setHtmlMsg("<html>The apache logo - <img src=\"cid:"+cid+"\"></html>");
result = email.send();
} catch (EmailException e) {
e.printStackTrace();
}
return result;
}
/**
* @methodName : send
* @author : hylee
* @date : 2022.07.04
* @description :
* @param addTo
* @param subject
* @param textMsg
* @param htmlMsg
* @param attachment
* @return
* @throws MailException
* @throws MalformedURLException
*/
public String send(String addTo, String subject, String textMsg, String htmlMsg, EmailAttachment attachment) throws MailException, MalformedURLException {
String result = "";
try {
HtmlEmail email = new HtmlEmail();
// 3번째 파라미터 'html' 의미 없음. 문자 없으면 error
setEmailInfo(addTo, subject, "html", email);
email.setHtmlMsg(htmlMsg);
email.setTextMsg("Your email client does not support HTML messages");
if (attachment != null) {
email.attach(attachment);
}
result = email.send();
} catch (EmailException e) {
e.printStackTrace();
}
return result;
}
// 파일첨부 메일
public String send(String addTo, String subject, String msg, EmailAttachment attachment) throws Exception {
MultiPartEmail email = new MultiPartEmail();
setEmailInfo(addTo, subject, msg, email);
if (attachment != null) {
email.attach(attachment);
}
return email.send();
}
private void setEmailInfo(String addTo, String subject, String msg, Email email) throws EmailException {
// 테스트 네이버s
email.setAuthenticator(new DefaultAuthenticator(this.id, this.password));
email.setStartTLSEnabled(true);
email.setSSLOnConnect(true);
// 테스트 네이버e
email.setCharset("UTF-8");
email.setHostName(this.host);
email.setSmtpPort(this.port);
email.setSocketConnectionTimeout(60000);
email.setSocketTimeout(60000);
email.setFrom(this.emailAddress, this.senderName);
email.addTo(addTo);
email.setSubject(subject);
email.setMsg(msg);
}
}

View File

@ -0,0 +1,109 @@
package itn.com.cmm;
import java.util.regex.Pattern;
/**
* 교차접속 스크립트 공격 취약성 방지(파라미터 문자열 교체)
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2011.10.10 한성곤 최초 생성
*
* </pre>
*/
public class EgovWebUtil {
public static String clearXSSMinimum(String value) {
if (value == null || value.trim().equals("")) {
return "";
}
String returnValue = value;
returnValue = returnValue.replaceAll("&", "&amp;");
returnValue = returnValue.replaceAll("<", "&lt;");
returnValue = returnValue.replaceAll(">", "&gt;");
returnValue = returnValue.replaceAll("\"", "&#34;");
returnValue = returnValue.replaceAll("\'", "&#39;");
returnValue = returnValue.replaceAll("[.]", "&#46;");
returnValue = returnValue.replaceAll("%2E", "&#46;");
returnValue = returnValue.replaceAll("%2F", "&#47;");
return returnValue;
}
public static String clearXSSMaximum(String value) {
String returnValue = value;
returnValue = clearXSSMinimum(returnValue);
returnValue = returnValue.replaceAll("%00", null);
returnValue = returnValue.replaceAll("%", "&#37;");
// \\. => .
returnValue = returnValue.replaceAll("\\.\\./", ""); // ../
returnValue = returnValue.replaceAll("\\.\\.\\\\", ""); // ..\
returnValue = returnValue.replaceAll("\\./", ""); // ./
returnValue = returnValue.replaceAll("%2F", "");
return returnValue;
}
public static String filePathBlackList(String value) {
String returnValue = value;
if (returnValue == null || returnValue.trim().equals("")) {
return "";
}
returnValue = returnValue.replaceAll("\\.\\./", ""); // ../
returnValue = returnValue.replaceAll("\\.\\.\\\\", ""); // ..\
return returnValue;
}
/**
* 행안부 보안취약점 점검 조치 방안.
*
* @param value
* @return
*/
public static String filePathReplaceAll(String value) {
String returnValue = value;
if (returnValue == null || returnValue.trim().equals("")) {
return "";
}
returnValue = returnValue.replaceAll("/", "");
returnValue = returnValue.replaceAll("\\", "");
returnValue = returnValue.replaceAll("\\.\\.", ""); // ..
returnValue = returnValue.replaceAll("&", "");
return returnValue;
}
public static String filePathWhiteList(String value) {
return value;
}
public static boolean isIPAddress(String str) {
Pattern ipPattern = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
return ipPattern.matcher(str).matches();
}
public static String removeCRLF(String parameter) {
return parameter.replaceAll("\r", "").replaceAll("\n", "");
}
public static String removeSQLInjectionRisk(String parameter) {
return parameter.replaceAll("\\p{Space}", "").replaceAll("\\*", "").replaceAll("%", "").replaceAll(";", "").replaceAll("-", "").replaceAll("\\+", "").replaceAll(",", "");
}
public static String removeOSCmdRisk(String parameter) {
return parameter.replaceAll("\\p{Space}", "").replaceAll("\\*", "").replaceAll("|", "").replaceAll(";", "");
}
}

View File

@ -0,0 +1,56 @@
package itn.com.cmm;
import javax.servlet.ServletContext;
import org.springframework.web.context.ServletContextAware;
import egovframework.rte.ptl.mvc.tags.ui.pagination.AbstractPaginationRenderer;
/**
* ImagePaginationRenderer.java 클래스
*
* @author 서준식
* @since 2011. 9. 16.
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- ------------- ----------------------
* 2011. 9. 16. 서준식 이미지 경로에 ContextPath추가
* </pre>
*/
public class ImagePaginationRenderer extends AbstractPaginationRenderer implements ServletContextAware{
private ServletContext servletContext;
public ImagePaginationRenderer() {
// no-op
}
public void initVariables(){
/*firstPageLabel = "<li>&#160;</li><li><a href=\"?pageIndex={1}\" onclick=\"{0}({1});return false; \"><img src=\"" + servletContext.getContextPath() + "/images/egovframework/com/cmm/mod/icon/icon_prevend.gif\" alt=\"처음\" border=\"0\"/></a></li>";
previousPageLabel = "<li><a href=\"?pageIndex={1}\" onclick=\"{0}({1});return false; \"><img src=\"" + servletContext.getContextPath() + "/images/egovframework/com/cmm/mod/icon/icon_prev.gif\" alt=\"이전\" border=\"0\"/></a></li>";
currentPageLabel = "<li><strong>{0}</strong></li>";
otherPageLabel = "<li><a href=\"?pageIndex={1}\" onclick=\"{0}({1});return false; \">{2}</a></li>";
nextPageLabel = "<li>&#160;<a href=\"?pageIndex={1}\" onclick=\"{0}({1});return false; \"><img src=\"" + servletContext.getContextPath() + "/images/egovframework/com/cmm/mod/icon/icon_next.gif\" alt=\"다음\" border=\"0\"/></a></li>";
lastPageLabel = "<li><a href=\"?pageIndex={1}\" onclick=\"{0}({1});return false; \"><img src=\"" + servletContext.getContextPath() + "/images/egovframework/com/cmm/mod/icon/icon_nextend.gif\" alt=\"마지막\" border=\"0\"/></a></li>";*/
firstPageLabel = "<li><input type='button' class='pageFirst' onclick=\"{0}({1});return false;\"></li>";
previousPageLabel = "<li><input type='button' class='pageBefore' onclick=\"{0}({1});return false;\"></li>";
currentPageLabel = "<li><strong style='font-weight:bold;'>{0}</strong></li>";
otherPageLabel = "<li onclick=\"{0}({1});return false;\" style='cursor:pointer'>{2}</li>";
nextPageLabel = "<li><input type='button' class='pageNext' onclick=\"{0}({1});return false;\"></li>";
lastPageLabel = "<li><input type='button' class='pageLast' onclick=\"{0}({1});return false;\"></li>";
}
@Override
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
initVariables();
}
}

View File

@ -0,0 +1,47 @@
package itn.com.cmm;
import javax.servlet.ServletContext;
import org.springframework.web.context.ServletContextAware;
import egovframework.rte.ptl.mvc.tags.ui.pagination.AbstractPaginationRenderer;
/**
* ImagePaginationRenderer.java 클래스
*
* @author 서준식
* @since 2011. 9. 16.
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- ------------- ----------------------
* 2011. 9. 16. 서준식 이미지 경로에 ContextPath추가
* </pre>
*/
public class ImagePaginationRendererWeb extends AbstractPaginationRenderer implements ServletContextAware{
private ServletContext servletContext;
public ImagePaginationRendererWeb() {
// no-op
}
public void initVariables(){
firstPageLabel = "<li class=\"page_first\"><a href='#' title='첫페이지' onclick=\"{0}({1});return false;\"><button type=\"button\"><img src=\"/publish/images/content/page_first.png\" alt=\"첫페이지\"></button></a></li>";
previousPageLabel = "<li class=\"page_prev\"><a href='#' title='이전10페이지' onclick=\"{0}({1});return false;\"><button type=\"button\"><img src=\"/publish/images/content/page_prev.png\" alt=\"이전10페이지\"></button></a></li>";
currentPageLabel = "<li class=\"on\"><button type=\"button\"><a href='#' title='현재페이지'>{0}</a></button></li>";
otherPageLabel = "<li><button type=\"button\" onclick=\"{0}({1});return false;\"><a href='#' title={2}페이지 >{2}</a></button></li>";
nextPageLabel = "<li class=\"page_next\"><a href='#' title='다음10페이지' onclick=\"{0}({1});return false;\"><button type=\"button\"><img src=\"/publish/images/content/page_next.png\" alt=\"다음10페이지\"></button></a></li>";
lastPageLabel = "<li class=\"page_last\"><a href='#' title='마지막페이지' onclick=\"{0}({1});return false;\"><button type=\"button\"><img src=\"/publish/images/content/page_last.png\" alt=\"마지막페이지\"></button></a></li>";
}
@Override
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
initVariables();
}
}

View File

@ -0,0 +1,106 @@
package itn.com.cmm;
import java.io.Serializable;
/**
* 공용 JSON 리턴 모델
* @author wimy
*
*/
public class JsonResult implements Serializable{
/**
*
*/
private static final long serialVersionUID = -6362971805582357050L;
private boolean success;
private String code;
private String message;
private Object data;
private String redirectUrl = "";
/**
* json 성공 여부
* @return
*/
public boolean isSuccess() {
return success;
}
/**
* json 성공 여부
* @param success
*/
public void setSuccess(boolean success) {
this.success = success;
}
/**
* 코드
* @return
*/
public String getCode() {
return code;
}
/**
* 코드
* @param code
*/
public void setCode(String code) {
this.code = code;
}
/**
* 메시지
* @return
*/
public String getMessage() {
return message;
}
/**
* 메시지
* @param message
*/
public void setMessage(String message) {
this.message = message;
}
/**
* JSON 데이터
* @return
*/
public Object getData() {
return data;
}
/**
* JSON 데이터
* @param data
*/
public void setData(Object data) {
this.data = data;
}
/**
* 리다이렉트 URL
* @return
*/
public String getRedirectUrl() {
return redirectUrl;
}
/**
* 리다이렉트 URL
* @param redirectUrl
*/
public void setRedirectUrl(String redirectUrl) {
this.redirectUrl = redirectUrl;
}
}

View File

@ -0,0 +1,407 @@
package itn.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 password2;
/** 비밀번호 힌트 */
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;
private String siteId;
private String siteNm;
private String authority;
/** 로그인 후 리턴 url */
private String beforeUrl;
/** 회원탈퇴 사유 */
private String message;
private int passMiss;
/** 등록안된 사용자도 검색(값이 있으면 모두 조회) */
private String statusAll; // 가입승인상태 상태값 없으면 'Y' 설정 요망.
private String emplyrSttusCode; //상태코드
private int snsIdCnt = 0;
private String snsSite;
private String snsId; // SNS 회원정보 ID
private String snsEmail;
private String tel;
private String orgnztNo;
private String orgnztPosi ;
private String emplNo ;
private String userWork ;
private String loginYn;
//사용자 문자 추가정보
private float shortPrice;
private float longPrice;
private float picturePrice;
private float userMoney;
//IP 조회 KMC본인인증에 필요한 정보
private String mberNm; //사용자,회사명
private String managerNm; //기업회원일 담당자명
private String dept; //개인, 기업 회원 구분
private String moblphonNo; //핸드폰번호
private String birth; //생일
private String sexdstnCode; // 성별코드
private String nationality; //내국인 외국인
//관리자로그인 허용 IP에서 접속할때 인증 정보
// KMC 보인인증
private String crtfcDnValue;
//대리로그인 기록할 관리자 ID
private String adminId;
//미허용 IP 관리자 로그인 SMS인증번호
private String checkNo;
//관리자 SMS 문자인증 여부( Y : 문자인증함, N : 문자인증 안함)
private String outerCertYn;
public String getLoginYn() {
return loginYn;
}
public void setLoginYn(String loginYn) {
this.loginYn = loginYn;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIhidNum() {
return ihidNum;
}
public void setIhidNum(String ihidNum) {
this.ihidNum = ihidNum;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword2() {
return password2;
}
public void setPassword2(String password2) {
this.password2 = password2;
}
public String getPasswordHint() {
return passwordHint;
}
public void setPasswordHint(String passwordHint) {
this.passwordHint = passwordHint;
}
public String getPasswordCnsr() {
return passwordCnsr;
}
public void setPasswordCnsr(String passwordCnsr) {
this.passwordCnsr = passwordCnsr;
}
public String getUserSe() {
return userSe;
}
public void setUserSe(String userSe) {
this.userSe = userSe;
}
public String getOrgnztId() {
return orgnztId;
}
public void setOrgnztId(String orgnztId) {
this.orgnztId = orgnztId;
}
public String getOrgnztNm() {
return orgnztNm;
}
public void setOrgnztNm(String orgnztNm) {
this.orgnztNm = orgnztNm;
}
public String getUniqId() {
return uniqId;
}
public void setUniqId(String uniqId) {
this.uniqId = uniqId;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getDn() {
return dn;
}
public void setDn(String dn) {
this.dn = dn;
}
public String getSiteId() {
return siteId;
}
public void setSiteId(String siteId) {
this.siteId = siteId;
}
public String getSiteNm() {
return siteNm;
}
public void setSiteNm(String siteNm) {
this.siteNm = siteNm;
}
public String getAuthority() {
return authority;
}
public void setAuthority(String authority) {
this.authority = authority;
}
public String getBeforeUrl() {
return beforeUrl;
}
public void setBeforeUrl(String beforeUrl) {
this.beforeUrl = beforeUrl;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getPassMiss() {
return passMiss;
}
public void setPassMiss(int passMiss) {
this.passMiss = passMiss;
}
public String getStatusAll() {
return statusAll;
}
public void setStatusAll(String statusAll) {
this.statusAll = statusAll;
}
public String getEmplyrSttusCode() {
return emplyrSttusCode;
}
public void setEmplyrSttusCode(String emplyrSttusCode) {
this.emplyrSttusCode = emplyrSttusCode;
}
public int getSnsIdCnt() {
return snsIdCnt;
}
public void setSnsIdCnt(int snsIdCnt) {
this.snsIdCnt = snsIdCnt;
}
public String getSnsSite() {
return snsSite;
}
public void setSnsSite(String snsSite) {
this.snsSite = snsSite;
}
public String getSnsId() {
return snsId;
}
public void setSnsId(String snsId) {
this.snsId = snsId;
}
public String getSnsEmail() {
return snsEmail;
}
public void setSnsEmail(String snsEmail) {
this.snsEmail = snsEmail;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getOrgnztNo() {
return orgnztNo;
}
public void setOrgnztNo(String orgnztNo) {
this.orgnztNo = orgnztNo;
}
public String getOrgnztPosi() {
return orgnztPosi;
}
public void setOrgnztPosi(String orgnztPosi) {
this.orgnztPosi = orgnztPosi;
}
public String getEmplNo() {
return emplNo;
}
public void setEmplNo(String emplNo) {
this.emplNo = emplNo;
}
public String getUserWork() {
return userWork;
}
public void setUserWork(String userWork) {
this.userWork = userWork;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public float getShortPrice() {
return shortPrice;
}
public void setShortPrice(float shortPrice) {
this.shortPrice = shortPrice;
}
public float getLongPrice() {
return longPrice;
}
public void setLongPrice(float longPrice) {
this.longPrice = longPrice;
}
public float getPicturePrice() {
return picturePrice;
}
public void setPicturePrice(float picturePrice) {
this.picturePrice = picturePrice;
}
public float getUserMoney() {
return userMoney;
}
public void setUserMoney(float userMoney) {
this.userMoney = userMoney;
}
public String getMberNm() {
return mberNm;
}
public void setMberNm(String mberNm) {
this.mberNm = mberNm;
}
public String getManagerNm() {
return managerNm;
}
public void setManagerNm(String managerNm) {
this.managerNm = managerNm;
}
public String getMoblphonNo() {
return moblphonNo;
}
public void setMoblphonNo(String moblphonNo) {
this.moblphonNo = moblphonNo;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getSexdstnCode() {
return sexdstnCode;
}
public void setSexdstnCode(String sexdstnCode) {
this.sexdstnCode = sexdstnCode;
}
public String getNationality() {
return nationality;
}
public void setNationality(String nationality) {
this.nationality = nationality;
}
public String getCrtfcDnValue() {
return crtfcDnValue;
}
public void setCrtfcDnValue(String crtfcDnValue) {
this.crtfcDnValue = crtfcDnValue;
}
public String getAdminId() {
return adminId;
}
public void setAdminId(String adminId) {
this.adminId = adminId;
}
public String getCheckNo() {
return checkNo;
}
public void setCheckNo(String checkNo) {
this.checkNo = checkNo;
}
public String getOuterCertYn() {
return outerCertYn;
}
public void setOuterCertYn(String outerCertYn) {
this.outerCertYn = outerCertYn;
}
}

View File

@ -0,0 +1,39 @@
package itn.com.cmm;
import java.io.Serializable;
public class ReadVO implements Serializable {
private String menuNo = ""; //메뉴 번호
private String readId = ""; //읽음처리 ID
private String loginId = "";//로그인 ID
public String getMenuNo() {
return menuNo;
}
public void setMenuNo(String menuNo) {
this.menuNo = menuNo;
}
public String getReadId() {
return readId;
}
public void setReadId(String readId) {
this.readId = readId;
}
public String getLoginId() {
return loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
}

View File

@ -0,0 +1,121 @@
package itn.com.cmm;
import java.io.Serializable;
/**
* 세션 VO 클래스
* @author 공통서비스 개발팀 박지욱
* @since 2009.03.06
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.03.06 박지욱 최초 생성
*
* </pre>
*/
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;
}
}

View File

@ -0,0 +1,139 @@
package itn.com.cmm;
import java.io.Serializable;
/**
* @Class Name : UserVO.java
* @Description : Login VO class
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2018.09.27 ITN 최초 생성
*
* @author ITN
* @since 2018.09.27
* @version 1.0
* @see
*
*/
public class UserVO implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
/** 이름 */
private String name;
/** 이메일주소 */
private String email;
/** 사용자구분 */
private String userSe;
/** 고유아이디 */
private String uniqId;
/** 로그인 후 이동할 페이지 */
private String url;
/** 사용자 IP정보 */
private String ip;
/** GPKI인증 DN */
private String dn;
/** 핸드폰인증 DN */
private String mblDn;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the email
*/
public String getEmail() {
return email;
}
/**
* @param email the email to set
*/
public void setEmail(String email) {
this.email = email;
}
/**
* @return the userSe
*/
public String getUserSe() {
return userSe;
}
/**
* @param userSe the userSe to set
*/
public void setUserSe(String userSe) {
this.userSe = userSe;
}
/**
* @return the uniqId
*/
public String getUniqId() {
return uniqId;
}
/**
* @param uniqId the uniqId to set
*/
public void setUniqId(String uniqId) {
this.uniqId = uniqId;
}
/**
* @return the url
*/
public String getUrl() {
return url;
}
/**
* @param url the url to set
*/
public void setUrl(String url) {
this.url = url;
}
/**
* @return the ip
*/
public String getIp() {
return ip;
}
/**
* @param ip the ip to set
*/
public void setIp(String ip) {
this.ip = ip;
}
/**
* @return the dn
*/
public String getDn() {
return dn;
}
/**
* @param dn the dn to set
*/
public void setDn(String dn) {
this.dn = dn;
}
/**
* @return the mblDn
*/
public String getMblDn() {
return mblDn;
}
/**
* @param mblDn the mblDn to set
*/
public void setMblDn(String mblDn) {
this.mblDn = mblDn;
}
}

View File

@ -0,0 +1,106 @@
package itn.com.cmm.aspect;
import java.util.Enumeration;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.aspectj.lang.ProceedingJoinPoint;
import org.json.simple.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.ModelAndView;
import com.google.common.collect.Lists;
import itn.com.cmm.util.IpUtil;
@Component
public class LoggerAspect {
private static final Logger log = LoggerFactory.getLogger(LoggerAspect.class);
public Object methodLogger(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
try {
StringBuffer logBuffer = new StringBuffer();
List<Object> logList = Lists.newArrayList();
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); // request 정보를 가져온다.
String controllerName = proceedingJoinPoint.getSignature().getDeclaringType().getSimpleName();
String methodName = proceedingJoinPoint.getSignature().getName();
logBuffer.append("\n┌ [●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 요청정보 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●]\n");
logBuffer.append("│ [Method] URL : [{}] {}\n");
logList.add(request.getMethod());
logList.add(request.getRequestURI());
logBuffer.append("│ Request IP : {}\n");
logList.add(IpUtil.getClientIP(request));
logBuffer.append("│ Request Browser : {}\n");
logList.add(IpUtil.getBrowser(request));
logBuffer.append("│ Controller : [{}] - [{}] \n");
logList.add(controllerName);
logList.add(methodName);
logBuffer.append("│ 요청Param : {}\n");
logList.add(getParams(request));
long start = System.currentTimeMillis();
Object result = proceedingJoinPoint.proceed();
long end = System.currentTimeMillis();
logBuffer.append("│ Time : [{}] sec\n");
logList.add( (double)(end - start)/1000d );
if( result instanceof ModelAndView ) {
logBuffer.append("│ Result : {}\n");
logList.add(result);
}else if( result instanceof String ) {
logBuffer.append("│ View : {}\n");
logList.add(result);
} else {
logBuffer.append("│ Result : {}\n");
logList.add(result);
}
proceedingJoinPoint.getArgs();
logBuffer.append("└ [●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●]");
if(result!=null && result.toString().indexOf("web/com")<0) { // heder, footer, navi 로그는 찍지 않음.
log.info(logBuffer.toString(), logList.toArray());
}
return result;
} catch (Throwable throwable) {
throwable.printStackTrace();
throw throwable;
}
}
/**
* request 담긴 정보를 JSONObject 형태로 반환한다.
*
* @param request
* @return
*/
@SuppressWarnings("unchecked")
private static JSONObject getParams(HttpServletRequest request) {
JSONObject jsonObject = new JSONObject();
Enumeration<String> params = request.getParameterNames();
while (params.hasMoreElements()) {
String param = params.nextElement();
String replaceParam = param.replaceAll("\\.", "-");
jsonObject.put(replaceParam, request.getParameter(param));
}
return jsonObject;
}
}

View File

@ -0,0 +1,40 @@
package itn.com.cmm.captcha;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import nl.captcha.Captcha;
import nl.captcha.audio.AudioCaptcha;
import nl.captcha.audio.producer.VoiceProducer;
import nl.captcha.servlet.CaptchaServletUtil;
public class AudioCaptCha {
public void getAudioCaptCha(HttpServletRequest req, HttpServletResponse resp, String answer) throws IOException
{
HttpSession session = req.getSession();
Captcha captcha = (Captcha) session.getAttribute(Captcha.NAME);
String getAnswer = answer;
AudioCaptcha audiocaptcha = null;
if ( getAnswer == null || "".equals(getAnswer) ) getAnswer = captcha.getAnswer();
String lan = req.getParameter("lan");
if( lan != null && "kor".equals(lan)) {
VoiceProducer vProd = new SetKorVoiceProducer(); //한글 음성을 생성해주는 객체 생성
audiocaptcha = new AudioCaptcha.Builder()
.addAnswer(new SetTextProducer(getAnswer))
.addVoice(vProd) //한글음성생성기를 AudioCaptcha에 적용
.addNoise()
.build();
} else {
audiocaptcha = new AudioCaptcha.Builder()
.addAnswer(new SetTextProducer(getAnswer))
.addNoise()
.build();
}
String agent = req.getParameter("agent"); //브라우저마다 응답을 달리해야할경우 이용.
CaptchaServletUtil.writeAudio(resp, audiocaptcha.getChallenge());
}
}

View File

@ -0,0 +1,66 @@
package itn.com.cmm.captcha;
import static nl.captcha.Captcha.NAME;
import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import nl.captcha.Captcha;
import nl.captcha.backgrounds.GradiatedBackgroundProducer;
import nl.captcha.gimpy.DropShadowGimpyRenderer;
import nl.captcha.servlet.CaptchaServletUtil;
import nl.captcha.text.producer.NumbersAnswerProducer;
import nl.captcha.text.renderer.DefaultWordRenderer;
public class CaptCha {
private static final long serialVersionUID = 1L;
private static int _width = 150; //이미지 가로크기
private static int _height = 50; //이미지 높이
private static int _fontsize = 44; //폰트크기
public CaptCha() {
super();
}
public void getCaptCha(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
try {
// 폰트 설정 =========================================================
List<Font> fontList = new ArrayList<Font>();
fontList.add(new Font("", Font.HANGING_BASELINE, 40));//
fontList.add(new Font("Courier", Font.ITALIC, 40));
fontList.add(new Font("", Font.PLAIN, 40));
List<Color> colorList = new ArrayList<Color>();
// colorList.add(Color.green);
// colorList.add(Color.pink);
// colorList.add(Color.gray);
colorList.add(Color.black);
// colorList.add(Color.blue);
// 폰트 설정 =========================================================
Captcha captcha = new Captcha.Builder( _width, _height)
// .addText(wordRenderer)
.addText(new NumbersAnswerProducer(6), //6자리 숫자로 문자를 추가
new DefaultWordRenderer(colorList, fontList)) //글자 꾸미기(색상, 폰트)
.gimp(new DropShadowGimpyRenderer()).gimp()
// BlockGimpyRenderer,FishEyeGimpyRenderer,RippleGimpyRenderer,ShearGimpyRenderer,StretchGimpyRenderer
.addNoise().addNoise().addBorder()
.addBackground(new GradiatedBackgroundProducer())
// FlatColorBackgroundProducer,SquigglesBackgroundProducer,TransparentBackgroundProducer
.build();
req.getSession().setAttribute(NAME, captcha);
CaptchaServletUtil.writeImage(resp, captcha.getImage());
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,59 @@
package itn.com.cmm.captcha;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import nl.captcha.Captcha;
import nl.captcha.audio.AudioCaptcha;
import nl.captcha.audio.producer.VoiceProducer;
import nl.captcha.backgrounds.GradiatedBackgroundProducer;
import nl.captcha.servlet.CaptchaServletUtil;
import nl.captcha.text.producer.NumbersAnswerProducer;
public class CaptchaUtil {
public CaptchaUtil() {
}
public void captchaImg(HttpServletRequest request, HttpServletResponse response){
Captcha captcha = new Captcha.Builder(200, 60)
.addText(new NumbersAnswerProducer(6))
.addNoise().addNoise().addNoise()
.addBackground(new GradiatedBackgroundProducer())
.addBorder()
.build();
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Max-Age", 0);
response.setContentType("image/png");
CaptchaServletUtil.writeImage(response, captcha.getImage());;
request.getSession().setAttribute("captcha", captcha.getAnswer());
}
public void captchaAudio(HttpServletRequest request, HttpServletResponse response){
String getAnswer = (String) request.getSession().getAttribute("captcha");
VoiceProducer vProd = new SetKorVoiceProducer(); //한글 음성을 생성해주는 객체 생성
/* AudioCaptcha ac = new AudioCaptcha.Builder()
.addAnswer(new SetTextProducer(getAnswer))
.addVoice()
.addNoise()
.build();*/
AudioCaptcha ac = new AudioCaptcha.Builder()
.addAnswer(new SetTextProducer(getAnswer))
.addVoice(vProd)
.addNoise()
.build() ;
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Max-Age", 0);
CaptchaServletUtil.writeAudio(response, ac.getChallenge());;
request.getSession().setAttribute("captcha", ac.getAnswer());
}
}

View File

@ -0,0 +1,50 @@
package itn.com.cmm.captcha;
import java.util.HashMap;
import java.util.Map;
import nl.captcha.audio.Sample;
import nl.captcha.audio.producer.VoiceProducer;
import nl.captcha.util.FileUtil;
public class SetKorVoiceProducer implements VoiceProducer
{
private static final Map<Integer, String> DEFAULT_VOICES_MAP;
static {
DEFAULT_VOICES_MAP = new HashMap<Integer, String>();
StringBuilder sb;
for (int i = 0; i < 10; i++) {
sb = new StringBuilder("/sounds/ko/numbers/");
sb.append(i);
sb.append(".wav");
DEFAULT_VOICES_MAP.put(i, sb.toString());
}
}
private final Map<Integer, String> _voices;
public SetKorVoiceProducer() {
this(DEFAULT_VOICES_MAP);
}
public SetKorVoiceProducer(Map<Integer, String> voices) {
_voices = voices;
}
@Override
public Sample getVocalization(char num) {
try {
Integer.parseInt(num + "");
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Expected <num> to be a number, got '" + num + "' instead.",e);
}
int idx = Integer.parseInt(num + "");
String filename = _voices.get(idx);
return FileUtil.readSample(filename);
}
}

View File

@ -0,0 +1,19 @@
package itn.com.cmm.captcha;
/**
* 전달받은 문자열을 그대로 오디오캡차가 이용할수있도록 생성한 클래스
*/
import nl.captcha.text.producer.TextProducer;
public class SetTextProducer implements TextProducer {
private final String _getAnswer;
public SetTextProducer(String getAnswer){
_getAnswer = getAnswer;
}
@Override
public String getText() {
return _getAnswer;
}
}

View File

@ -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 itn.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() {
}
}

View File

@ -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 itn.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("&lt;");
break;
case '>':
strBuff.append("&gt;");
break;
//case '&':
//strBuff.append("&amp;");
//break;
case '"':
strBuff.append("&quot;");
break;
case '\'':
strBuff.append("&apos;");
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("&lt;");
break;
case '>':
strBuff.append("&gt;");
break;
case '&':
strBuff.append("&amp;");
break;
case '"':
strBuff.append("&quot;");
break;
case '\'':
strBuff.append("&apos;");
break;
default:
strBuff.append(c);
break;
}
}
value = strBuff.toString();
return value;
}
}

View File

@ -0,0 +1,48 @@
/*
* 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 itn.com.cmm.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class XssFilter implements Filter{
@SuppressWarnings("unused")
private FilterConfig config;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
ServletContext context = config.getServletContext();
chain.doFilter(new XssFilterRequestWrapper((HttpServletRequest)request), response);
//chain.doFilter(new XssFilterRequestWrapper((HttpServletRequest)request , response , context ), response);
}
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
public void destroy() {
this.config = null;
}
}

View File

@ -0,0 +1,151 @@
/*
* 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 itn.com.cmm.filter;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class XssFilterRequestWrapper extends HttpServletRequestWrapper {
ServletContext context ;
HttpServletRequest request ;
ServletResponse response;
public XssFilterRequestWrapper(HttpServletRequest request) {
super(request);
}
public XssFilterRequestWrapper(HttpServletRequest request, ServletContext context) {
super(request);
this.context = context ;
this.request = request;
}
public XssFilterRequestWrapper(HttpServletRequest request, ServletResponse response, ServletContext context) {
super(request);
this.context = context ;
this.request = request;
this.response = response ;
}
public String[] getParameterValues(String parameter) {
String[] values = super.getParameterValues(parameter);
if(values==null){
return null;
}
int count = values.length;
String[] encodedValues = new String[count];
for (int i = 0; i < count; i++) {
encodedValues[i] = cleanXSS(values[i]);
}
return encodedValues;
}
public String getParameter(String parameter) {
String value = super.getParameter(parameter);
if (value == null) {
return null;
}
return cleanXSS(value);
}
public String getHeader(String name) {
String value = super.getHeader(name);
if (value == null)
return null;
return cleanXSS(value);
}
private String cleanXSS(String test_str) {
// 특수 구문 필터링 (데이터베이스가 Oracle 경우)
String test_str_low= test_str.toLowerCase();
if(test_str_low.contains("union")||
test_str_low.contains("select") ||
test_str_low.contains("insert") ||
test_str_low.contains("drop") ||
test_str_low.contains("update") ||
test_str_low.contains("delete") ||
test_str_low.contains("join") ||
test_str_low.contains("from") ||
test_str_low.contains("where") ||
test_str_low.contains("substr") ||
test_str_low.contains("user_tables")||
test_str_low.contains("script")||
test_str_low.contains("<")||
test_str_low.contains(">")||
test_str_low.contains("alert")||
test_str_low.contains("javascript")||
test_str_low.contains("=")||
test_str_low.contains("!")||
test_str_low.contains("or")||
test_str_low.contains("user_tables")||
test_str_low.contains("\\(")||
test_str_low.contains("\\)")||
test_str_low.contains("user_tables")||
test_str_low.contains("&lt;") ||
test_str_low.contains("\"") ||
test_str_low.contains("%") ||
test_str_low.contains("()") ||
test_str_low.contains("+") ||
test_str_low.contains("%") ||
test_str_low.contains("&gt;")
)
{
try {
context.getRequestDispatcher("/blank.do").forward(request, response);
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
test_str = test_str_low;
test_str = test_str.replaceAll("union", "q-union");
test_str = test_str.replaceAll("select", "q-select");
test_str = test_str.replaceAll("insert", "q-insert");
test_str = test_str.replaceAll("drop", "q-drop");
test_str = test_str.replaceAll("update", "q-update");
test_str = test_str.replaceAll("delete", "q-delete");
test_str = test_str.replaceAll("and", "q-and");
test_str = test_str.replaceAll("or", "q-or");
test_str = test_str.replaceAll("join", "q-join");
test_str = test_str.replaceAll("substr", "q-substr");
test_str = test_str.replaceAll("from", "q-from");
test_str = test_str.replaceAll("where", "q-where");
test_str = test_str.replaceAll("declare", "q-declare");
test_str = test_str.replaceAll("openrowset", "q-openrowset");
test_str = test_str.replaceAll("user_tables","q-user_tables");
test_str = test_str.replaceAll("user_tab_columns","q-user_tab_columns");
test_str = test_str.replaceAll("table_name","q-table_name");
test_str = test_str.replaceAll("column_name","q-column_name");
test_str = test_str.replaceAll("row_num","q-row_num");
}
return test_str ;
}
}

View File

@ -0,0 +1,239 @@
package itn.com.cmm.interceptor;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import itn.com.cmm.LoginVO;
import itn.com.uss.olh.hpc.service.HackIpService;
import itn.com.uss.olh.hpc.service.HackIpVO;
import itn.let.sym.log.clg.service.EgovLoginLogService;
import itn.let.sym.log.clg.service.LoginLog;
public class IPIgnoreInterceptorHandler extends HandlerInterceptorAdapter{
@Autowired
private HackIpService hackIpService;
@Autowired
private EgovLoginLogService loginLogService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String userIP = this.getClientIP(request);
boolean v_ret = true;
try {
System.out.println("request.getRequestURI()");
System.out.println(request.getRequestURI());
//ignoreIp
//오류콜에 대해서만 IP 체크를 한다
//정상적인 경우는 MainController.java의 firstSiteCheck 에서 확인함
if (request.getRequestURI().indexOf("web/error/errorLogInsert")>-1) {
System.out.println("IPIgnoreInterceptorHandler-preHandle-check");
HackIpVO hackIpVO = new HackIpVO();
hackIpVO.setIgnoreIp(userIP);
int i_ignoreCnt = hackIpService.selectIgnoreIpCnt(hackIpVO);
//System.out.println("result=="+hackIpService.selectIgnoreIpCnt(hackIpVO));
if (i_ignoreCnt>0) {
//제한 아이피인 경우는 화면 안나옴 처리
System.out.println("IPIgnoreInterceptorHandler-preHandle");
System.out.println("preHandle4==="+userIP+" is ignored");
v_ret = false;
}
}else if(request.getRequestURI().indexOf("ListAjax.do")>-1
|| request.getRequestURI().indexOf("ViewAjax.do")>-1
|| request.getRequestURI().indexOf("DataAjax.do")>-1
|| request.getRequestURI().indexOf("web/cop/bbs/NoticeDetail.do")>-1
|| request.getRequestURI().indexOf("insertEditImageAjax")>-1
|| request.getRequestURI().indexOf("selectSwearWordFilterAjax")>-1
|| request.getRequestURI().indexOf("uat/uia/actionMain")>-1
|| request.getRequestURI().indexOf("web/cop/bbs/deleteBoardArticle")>-1
|| request.getRequestURI().indexOf("common/error")>-1
|| request.getRequestURI().indexOf("cmm/fms/getImage2")>-1
|| request.getRequestURI().indexOf("MapUrl")>-1
|| request.getRequestURI().indexOf("uss/ion/fms/FmsFileInsertAjax")>-1
|| request.getRequestURI().indexOf("web/mjon/addr/sendExelFilePhoneNumAjax")>-1
/*
|| request.getRequestURI().indexOf("common/error.jsp")>-1
*/
) {
System.out.println("IPIgnoreInterceptorHandler-preHandle-ListAjax-check");
HackIpVO hackIpVO = new HackIpVO();
hackIpVO.setIgnoreIp(userIP);
int i_ignoreCnt = hackIpService.selectIgnoreIpCnt(hackIpVO);
//System.out.println("result=="+hackIpService.selectIgnoreIpCnt(hackIpVO));
if (i_ignoreCnt>0) {
//제한 아이피인 경우는 화면 안나옴 처리
System.out.println("IPIgnoreInterceptorHandler-preHandle");
System.out.println("preHandle4==="+userIP+" is ignored");
v_ret = false;
}
else {
//오늘날짜의 IP조회
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyyMMdd", Locale.KOREA );
Date currentTime = new Date ();
String mTime = mSimpleDateFormat.format ( currentTime );
HttpServletRequest req = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();
String ip = req.getHeader("X-FORWARDED-FOR");
if (ip == null){ ip = req.getRemoteAddr();}
LoginLog loginLog = new LoginLog();
loginLog.setLoginIp(ip);
loginLog.setCreatDt(mTime);
loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O
loginLog.setErrOccrrAt("N");
loginLog.setErrorCode("");
loginLog.setUserAt("U");
loginLog.setErrorCode("0000000000");
loginLog.setErrOccrrAt("ListAjax 호출");
if(!"anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser() )) {
LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
loginLog.setLoginId(loginVO.getId());
}else {
loginLog.setLoginId("");
}
if(isMobile(request)){
loginLog.setDeviceType("M");
}else{
loginLog.setDeviceType("P");
}
if(null != request.getQueryString() && !"".equals(request.getQueryString())){
loginLog.setUrl(request.getRequestURI()+"?"+request.getQueryString());
}else {
loginLog.setUrl(request.getRequestURI());
}
// JSPark 2023.03.27 => 아이피 길이체크(Data too long for column 오류 방지)
/*
if (ip != null) {
if (ip.length() <= 23) {
loginLogService.logInsertLoginLog4Ajax(loginLog);
}
}
*/
try {
//IP 컬럼 길이를 늘려서 비교 조건 제거함 2023-04-05
if (loginLog.getUrl().length()>200){ //길이문제로 오류가 발생하는 경우도 처리하도록 수정
loginLog.setUrl(loginLog.getUrl().substring(0,199));
}
loginLogService.logInsertLoginLog4Ajax(loginLog);
}catch(Exception ex) {
ex.printStackTrace();
}
}
}
else {
System.out.println("IPIgnoreInterceptorHandler-preHandle-skip");
}
}catch(Exception ex) {
ex.printStackTrace();
}
return v_ret;
}
/*
* view 화면으로 데이터가 넘어가기 이전에 실행
* modelAndView 값을 체크할 있음
* */
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
}
/*
*
* view에서 모든 처리를 완료한 후에 실행
* */
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
super.afterCompletion(request, response, handler, ex);
}
private String getClientIP(HttpServletRequest request) {
String ip = "";
try {
ip = request.getHeader("X-Forwarded-For");
//logger.info("> X-FORWARDED-FOR : " + ip);
//System.out.println("> X-FORWARDED-FOR : " + ip);
if (ip == null) {
ip = request.getHeader("Proxy-Client-IP");
//System.out.println("> Proxy-Client-IP : " + ip);
}
if (ip == null) {
ip = request.getHeader("WL-Proxy-Client-IP");
//System.out.println("> WL-Proxy-Client-IP : " + ip);
}
if (ip == null) {
ip = request.getHeader("HTTP_CLIENT_IP");
//System.out.println("> HTTP_CLIENT_IP : " + ip);
}
if (ip == null) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
//System.out.println("> HTTP_X_FORWARDED_FOR : " + ip);
}
if (ip == null) {
ip = request.getRemoteAddr();
//System.out.println("> getRemoteAddr : "+ip);
}
//System.out.println("> Result : IP Address : "+ip);
}catch(Exception ex)
{
ex.printStackTrace();
}
return ip;
}
/*모바일접속 유무*/
private boolean isMobile(HttpServletRequest request) {
String userAgent = request.getHeader("user-agent");
boolean mobile1 = userAgent.matches(".*(iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson).*");
boolean mobile2 = userAgent.matches(".*(LG|SAMSUNG|Samsung).*");
if(mobile1 || mobile2) {
return true;
}
return false;
}
}

View File

@ -0,0 +1,145 @@
package itn.com.cmm.interceptor;
import java.util.Collection;
import java.util.Enumeration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.http.HttpHeaders;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import itn.com.cmm.LoginVO;
import itn.com.cmm.util.XssFilterUtil;
public class InterceptorHandler extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//SameSite 설정하기
addSameSite(response , "None");
/**
* URL 호출 넘어오는 파라미터 체크
* request로 넘어오는 모든 파라미터 데이터를 검사하여 XSS 문자가 포함되어 있으면 메인화면으로 튕김
* */
boolean returnSts1 = true;
Enumeration e = request.getParameterNames();
while ( e.hasMoreElements() ){
String name = (String) e.nextElement();
if(!name.toLowerCase().contains("url")
&& !name.toLowerCase().contains("pagetype")
&& !name.toLowerCase().contains("searchsortcnd")
&& !name.toLowerCase().contains("imgfilepath")
&& !name.toLowerCase().contains("msgpreview")
&& !name.toLowerCase().contains("smstxtarea")
&& !name.toLowerCase().contains("smstxt")
&& !name.toLowerCase().contains("rep1list")
&& !name.toLowerCase().contains("rep2list")
&& !name.toLowerCase().contains("rep3list")
&& !name.toLowerCase().contains("rep4list")
&& !name.toLowerCase().contains("namelist")
&& !name.toLowerCase().contains("memolist")
&& !name.toLowerCase().contains("info1list")
&& !name.toLowerCase().contains("info2list")
&& !name.toLowerCase().contains("info3list")
&& !name.toLowerCase().contains("info4list")
) {
//파라미터 중에 URL 주소를 넘겨주는 부분이 있어서 해당 부분에것 select~, update~, delete~ 시작하는 주소경로가 있어서 제외처리를 하였음
String[] values = request.getParameterValues(name);
//HTML 태그 관련 부분이 들어있으면 필터링 해주는 정규식 <> ~ </> 구문 찾아줌
Pattern regex = Pattern.compile("<(/)?([a-zA-Z]*)(\\\\s[a-zA-Z]*=[^>]*)?(\\\\s)*(/)?>");
for (String value : values) {
//정규식과 동일한 패턴인지 비교해준다.
Matcher matcher = regex.matcher(value);
boolean rsltMatch = matcher.find();
//패턴이 일치하면 오류 발생
if(rsltMatch) {
returnSts1 = false;
System.out.println("+++++++++++++++++++++++++++XSS Html 필터 처리 Filter Start::: ");
System.out.println("name="+ name + ", value="+ value);
System.out.println("+++++++++++++++++++++++++++XSS Html 필터 처리 Filter End::: ");
response.sendRedirect(request.getContextPath() + "/");
}
boolean returnSts = XssFilterUtil.cleanXSS(value);
if(!returnSts) {//XSS 문자 체크 결과 false일 경우 메인화면으로 이동
returnSts1 = returnSts;
System.out.println("+++++++++++++++++++++++++++XSS 필터 처리 Filter::: ");
System.out.println("name="+ name + ", value="+ value);
System.out.println("+++++++++++++++++++++++++++XSS 필터 처리 Filter End::: ");
response.sendRedirect(request.getContextPath() + "/");
}
}
}
}
if(!returnSts1) {//XSS 포함문자가 있는경우 메인화면으로 이동시킨다.
response.sendRedirect(request.getContextPath() + "/");
return true;
}
//관리자 페이지 로그인 사용자 페이지 접근시 로그아웃 처리_220421_이준호
HttpSession session = request.getSession();
LoginVO loginVO = (LoginVO) session.getAttribute("LoginVO");
if(
!request.getServletPath().contains("/utl/wed/imageSrc.do")
&& !request.getServletPath().contains("/utl/wed/insertImage.do")
&& !request.getServletPath().contains("/cmm/fms/getImage2.do")
) {
if(loginVO != null) {
if("USR".equals(loginVO.getUserSe())) {
request.getSession().invalidate();
response.sendRedirect(request.getContextPath() + "/");
return true;
}
}
}
return true;
}
/*
* view 화면으로 데이터가 넘어가기 이전에 실행
* modelAndView 값을 체크할 있음
* */
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
}
/*
*
* view에서 모든 처리를 완료한 후에 실행
* */
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
super.afterCompletion(request, response, handler, ex);
}
private void addSameSite(HttpServletResponse response, String sameSite) {
Collection<String> headers = response.getHeaders(HttpHeaders.SET_COOKIE);
boolean firstHeader = true;
for (String header : headers) { // there can be multiple Set-Cookie attributes
if (firstHeader) {
response.setHeader(HttpHeaders.SET_COOKIE, String.format("%s; Secure; %s", header, "SameSite=" + sameSite));
firstHeader = false;
continue;
}
response.addHeader(HttpHeaders.SET_COOKIE, String.format("%s; Secure; %s", header, "SameSite=" + sameSite));
}
}
}

View File

@ -0,0 +1,41 @@
package itn.com.cmm.interceptor.ipCheck;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class HttpClientConfig {
private static final int MAX_CONNECTION_PER_ROUTE = 20;
private static final int MAX_CONNECTION_TOTAL = 200;
private static final int CONNECTION_TIMEOUT = 10;
private static final int SOCKET_TIMEOUT = 5;
private static final int CONNECTION_REQUEST_TIMEOUT = 5;
@Bean
public CloseableHttpClient closeableHttpClient() {
CloseableHttpClient closeableHttpClient = HttpClients.custom().setConnectionManager(poolingHttpClientConnectionManager()).build();
return closeableHttpClient;
}
private PoolingHttpClientConnectionManager poolingHttpClientConnectionManager() {
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setDefaultMaxPerRoute(MAX_CONNECTION_PER_ROUTE);
connectionManager.setMaxTotal(MAX_CONNECTION_TOTAL);
return connectionManager;
}
@Bean
public RequestConfig requestConfig() {
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(SOCKET_TIMEOUT * 1000)
.setConnectTimeout(CONNECTION_TIMEOUT * 1000)
.setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT * 1000)
.build();
return requestConfig;
}
}

View File

@ -0,0 +1,97 @@
package itn.com.cmm.interceptor.ipCheck;
import java.io.PrintWriter;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import net.sf.cglib.core.Constants;
@Component
public class IPCheckInterceptor implements HandlerInterceptor, Constants {
@Autowired
private WSOpenAPIService WSService;
private String LOCAL_HOST ="127.0.0.1";
private String WHO_IS_COUNTRY_CODE ="countryCode";
private String KOREA_COUNTRY_CODE ="KR";
private final Logger logger = LoggerFactory.getLogger(getClass());
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String clientIp = request.getHeader("X-Forwarded-For");
if (ObjectUtils.isEmpty(clientIp) || "unknown".equalsIgnoreCase(clientIp)) {
clientIp = request.getHeader("Proxy-Client-IP");
}
if (ObjectUtils.isEmpty(clientIp) || "unknown".equalsIgnoreCase(clientIp)) {
clientIp = request.getHeader("WL-Proxy-Client-IP");
}
if (ObjectUtils.isEmpty(clientIp) || "unknown".equalsIgnoreCase(clientIp)) {
clientIp = request.getHeader("HTTP_CLIENT_IP");
}
if (ObjectUtils.isEmpty(clientIp) || "unknown".equalsIgnoreCase(clientIp)) {
clientIp = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ObjectUtils.isEmpty(clientIp) || "unknown".equalsIgnoreCase(clientIp)) {
clientIp = request.getRemoteAddr();
}
//로컬 테스트 주석 해제해주세요. 미국 IP입니다.
// clientIp = "54.211.120.28";
// clientIp = "219.240.88.15";
if(!LOCAL_HOST.equals(clientIp)) {
Map<String,String> clientInfo = WSService.getClientInfoByIPAddress(clientIp);
if(clientInfo == null) {
logger.error("IP에 대한 클라이언트 정보 조회에 실패하였습니다.");
response.sendRedirect(request.getContextPath() + "/");
return false;
}
String country = clientInfo.get(WHO_IS_COUNTRY_CODE);
if(!KOREA_COUNTRY_CODE.equals(country)) {
logger.error("해외 IP가 감지되었습니다. 접근을 차단합니다. IP : {}, Country : {}", clientIp, country);
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<script>alert('해외 IP가 감지되었습니다. 로그인 접근을 차단 합니다.'); location.href='/web/main/mainPage.do';</script>");
out.flush();
return false;
}
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
}
}

View File

@ -0,0 +1,82 @@
package itn.com.cmm.interceptor.ipCheck;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.CloseableHttpClient;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import net.sf.cglib.core.Constants;
@Service("WSOpenAPIService")
public class WSOpenAPIService implements Constants{
@Value("${whois.api.key}")
private String apiKey;
@Value("${whois.api.url}")
private String apiUrl;
private String WHO_IS = "whois";
@Autowired
private CloseableHttpClient closeableHttpClient;
@Autowired
private RequestConfig requestConfig;
private final Logger logger = LoggerFactory.getLogger(getClass());
@SuppressWarnings("unchecked")
public Map<String,String> getClientInfoByIPAddress(String ip) throws Exception{
StringBuilder urlBuilder = new StringBuilder(apiUrl); /*URL*/
urlBuilder.append("?" + URLEncoder.encode("serviceKey","UTF-8") + "="+URLEncoder.encode(apiKey, "UTF-8")); /*Service Key*/
urlBuilder.append("&" + URLEncoder.encode("query","UTF-8") + "=" + URLEncoder.encode(ip, "UTF-8")); /*IP 주소 또는 AS 번호*/
urlBuilder.append("&" + URLEncoder.encode("answer","UTF-8") + "=" + URLEncoder.encode("JSON", "UTF-8")); /*응답형식(XML/JSON) 을 지정(없으면 XML으로 응답)*/
URL url = new URL(urlBuilder.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-type", "application/json");
System.out.println("Response code: " + conn.getResponseCode());
BufferedReader rd;
if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
} else {
rd = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
}
String result = "";
String line;
while ((line = rd.readLine()) != null) {
result = result + line.trim();// result = URL로 XML을 읽은
}
rd.close();
conn.disconnect();
System.out.println(result);
JSONParser jsonParser = new JSONParser();
JSONObject jsonObj = (JSONObject) jsonParser.parse(result);
JSONObject inf = (JSONObject) jsonObj.get("response");
JSONObject info1 = (JSONObject) inf.get("result");
JSONObject info2 = (JSONObject) inf.get("whois");
Map<String, String> workplace = (Map<String, String>) inf.get("whois");
return workplace;
}
}

View File

@ -0,0 +1,242 @@
package itn.com.cmm.service;
import java.io.Serializable;
/**
* 공통상세코드 모델 클래스
* @author 공통서비스 개발팀 이중호
* @since 2009.04.01
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.04.01 이중호 최초 생성
*
* </pre>
*/
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
*/
private String clCode = "";
private String searchSortCnd = ""; // 정렬 항목
private String searchSortOrd = ""; // 정렬 구분(오름/내림)
private String tempCodeId = "";
private int sort = 0;
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;
}
public String getClCode() {
return clCode;
}
public void setClCode(String clCode) {
this.clCode = clCode;
}
public String getSearchSortCnd() {
return searchSortCnd;
}
public void setSearchSortCnd(String searchSortCnd) {
this.searchSortCnd = searchSortCnd;
}
public String getSearchSortOrd() {
return searchSortOrd;
}
public void setSearchSortOrd(String searchSortOrd) {
this.searchSortOrd = searchSortOrd;
}
public String getTempCodeId() {
return tempCodeId;
}
public void setTempCodeId(String tempCodeId) {
this.tempCodeId = tempCodeId;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
}

View File

@ -0,0 +1,64 @@
package itn.com.cmm.service;
import java.util.List;
import java.util.Map;
import itn.com.cmm.ComDefaultCodeVO;
/**
*
* 공통코드등 전체 업무에서 공용해서 사용해야 하는 서비스를 정의하기 위한 서비스 인터페이스
* @author 공통서비스 개발팀 이삼섭
* @since 2009.04.01
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.03.11 이삼섭 최초 생성
*
* </pre>
*/
public interface EgovCmmUseService {
/**
* 공통코드를 조회한다.
*
* @param vo
* @return List(코드)
* @throws Exception
*/
public List<CmmnDetailCode> selectCmmCodeDetail(ComDefaultCodeVO vo) throws Exception;
/**
* ComDefaultCodeVO의 리스트를 받아서 여러개의 코드 리스트를 맵에 담아서 리턴한다.
*
* @param voList
* @return Map(코드)
* @throws Exception
*/
public Map<String, List<CmmnDetailCode>> selectCmmCodeDetails(List<?> voList) throws Exception;
/**
* 조직정보를 코드형태로 리턴한다.
*
* @param 조회조건정보 vo
* @return 조직정보 List
* @throws Exception
*/
public List<CmmnDetailCode> selectOgrnztIdDetail(ComDefaultCodeVO vo) throws Exception;
/**
* 그룹정보를 코드형태로 리턴한다.
*
* @param 조회조건정보 vo
* @return 그룹정보 List
* @throws Exception
*/
public List<CmmnDetailCode> selectGroupIdDetail(ComDefaultCodeVO vo) throws Exception;
}

View File

@ -0,0 +1,126 @@
package itn.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<FileVO> 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<String, Object> selectFileListByFileNm(FileVO fvo) throws Exception;
/**
* 이미지 파일에 대한 목록을 조회한다.
*
* @param vo
* @return
* @throws Exception
*/
public List<FileVO> selectImageFileList(FileVO vo) throws Exception;
/**
* 이미지 파일에 대한 목록을 업데이트하다.
*
* @param vo
* @return
* @throws Exception
*/
public void updateFileInfo(List<FileVO> _result) throws Exception;
public void deleteFmsFileInf(FileVO fileVO) throws Exception;
}

View File

@ -0,0 +1,785 @@
package itn.com.cmm.service;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.ImageIcon;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.fdl.property.EgovPropertyService;
import itn.let.utl.fcc.service.EgovStringUtil;
import net.coobird.thumbnailator.Thumbnails;
/**
* @Class Name : EgovFileMngUtil.java
* @Description : 메시지 처리 관련 유틸리티
* @Modification Information
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.02.13 이삼섭 최초 생성
* 2011.08.31 JJY 경량환경 템플릿 커스터마이징버전 생성
*
* @author 공통 서비스 개발팀 이삼섭
* @since 2009. 02. 13
* @version 1.0
* @see
*
*/
@Component("EgovFileMngUtil")
public class EgovFileMngUtil {
public static final int BUFF_SIZE = 2048;
public static final int MAX_WIDTH = 740;
public static final int MAX_HEIGHT = 960;
@Resource(name = "propertiesService")
protected EgovPropertyService propertyService;
@Resource(name = "egovFileIdGnrService")
private EgovIdGnrService idgenService;
private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileMngUtil.class);
/**
* 첨부파일에 대한 목록 정보를 취득한다.
*
* @param files
* @return
* @throws Exception
*/
public List<FileVO> parseFileInf(Map<String, MultipartFile> files, String KeyStr, int fileKeyParam, String atchFileId, String storePath, String isThumbFile) throws Exception {
int fileKey = fileKeyParam;
String storePathString = "";
String atchFileIdString = "";
if ("".equals(storePath) || storePath == null) {
storePathString = propertyService.getString("Globals.fileStorePath");
} else {
storePathString = propertyService.getString(storePath);
}
if ("".equals(atchFileId) || atchFileId == null) {
atchFileIdString = idgenService.getNextStringId();
} else {
atchFileIdString = atchFileId;
}
File saveFolder = new File(storePathString);
if (!saveFolder.exists() || saveFolder.isFile()) {
saveFolder.mkdirs();
}
// Iterator<Entry<String, MultipartFile>> itr = files.entrySet().iterator();
List<MultipartFile> tmp = new ArrayList<MultipartFile>(files.values());
ListIterator<MultipartFile> itr = tmp.listIterator(tmp.size());
MultipartFile file;
String filePath = "";
List<FileVO> result = new ArrayList<FileVO>();
FileVO fvo;
while (itr.hasPrevious()) {
// Entry<String, MultipartFile> entry = itr.next();
// file = entry.getValue();
file = itr.previous();
String orginFileName = file.getOriginalFilename();
//--------------------------------------
// 파일명이 없는 경우 처리
// (첨부가 되지 않은 input file type)
//--------------------------------------
if ("".equals(orginFileName)) {
continue;
}
////------------------------------------
int index = orginFileName.lastIndexOf(".");
String fileExt = orginFileName.substring(index + 1);
String newName = KeyStr + EgovStringUtil.getTimeStamp() + fileKey;
long _size = file.getSize();
if (!"".equals(orginFileName)) {
filePath = storePathString + File.separator + newName;
file.transferTo(new File(filePath));
}
String thumbName = "";
if(("thumbFile").equals(isThumbFile)) {
// file inputstream 으로 섬네일 생성후 저장
// BufferedImage originalImage = ImageIO.read(new File("original.png"));
BufferedImage originalImage = ImageIO.read(file.getInputStream());
// BufferedImage thumbnail = Thumbnails.of(originalImage).scale(0.25).asBufferedImage(); // 해상도
BufferedImage thumbnail = Thumbnails.of(originalImage).size(360, 260).asBufferedImage(); // 사이즈
thumbName = newName + "_THUMB";
String thumFilePath = storePathString + File.separator + thumbName;
File thumbFile = new File(thumFilePath);
ImageIO.write(thumbnail, fileExt, thumbFile);
// 서버 파일로 섬네일 저장
// File destinationDir = new File(filePath);
// Thumbnails.of(filePath).size(200, 200).toFiles(saveFolder, Rename.PREFIX_DOT_THUMBNAIL); // 이미지 확장자 파일 필요
}
fvo = new FileVO();
fvo.setFileExtsn(fileExt);
fvo.setFileStreCours(storePathString);
fvo.setFileMg(Long.toString(_size));
fvo.setOrignlFileNm(orginFileName);
fvo.setStreFileNm(newName);
fvo.setAtchFileId(atchFileIdString);
fvo.setFileSn(String.valueOf(fileKey));
fvo.setThumbFileNm(thumbName);
// writeFile(file, newName, storePathString);
result.add(fvo);
fileKey++;
}
return result;
}
/**
* 이미지 파일에 대한 목록 정보를 취득한다.
*
* @param files
* @return
* @throws Exception
*/
public List<FileVO> parseImageFileInf(Map<String, MultipartFile> files, String KeyStr, int fileKeyParam, String atchFileId, String storePath, String isThumbFile) throws Exception {
int fileKey = fileKeyParam;
String storePathString = "";
String atchFileIdString = "";
if ("".equals(storePath) || storePath == null) {
storePathString = propertyService.getString("Globals.fileStorePath");
} else {
storePathString = storePath;//propertyService.getString(storePath);
}
if ("".equals(atchFileId) || atchFileId == null) {
atchFileIdString = idgenService.getNextStringId();
} else {
atchFileIdString = atchFileId;
}
File saveFolder = new File(storePathString);
if (!saveFolder.exists() || saveFolder.isFile()) {
saveFolder.mkdirs();
}
// Iterator<Entry<String, MultipartFile>> itr = files.entrySet().iterator();
List<MultipartFile> tmp = new ArrayList<MultipartFile>(files.values());
ListIterator<MultipartFile> itr = tmp.listIterator(tmp.size());
MultipartFile file;
String filePath = "";
List<FileVO> result = new ArrayList<FileVO>();
FileVO fvo;
while (itr.hasPrevious()) {
// Entry<String, MultipartFile> entry = itr.next();
// file = entry.getValue();
file = itr.previous();
String orginFileName = file.getOriginalFilename();
//--------------------------------------
// 파일명이 없는 경우 처리
// (첨부가 되지 않은 input file type)
//--------------------------------------
if ("".equals(orginFileName)) {
continue;
}
////------------------------------------
int index = orginFileName.lastIndexOf(".");
String fileExt = orginFileName.substring(index + 1);
String newName = KeyStr + EgovStringUtil.getTimeStamp() + fileKey;
long _size = file.getSize();
//이미지 파일 처리라서 확장자까지 모두 붙여서 파일 생성
if (!"".equals(orginFileName)) {
filePath = saveFolder + File.separator + newName + "." + fileExt;
file.transferTo(new File(filePath));
}
//로컬 테스트 주석처리_220503_이준호
//실제 파일 저장 이미지 불러올 상대경로로 변경해줌 - webapps/mjon/MMS/날짜별 폴더
/*String fdlPath[] = storePathString.split("/MMS/"); // 경로중에 날짜 폴더명만 받아옴
storePathString ="/MMS/" + fdlPath[1];*/
String thumbName = "";
if(("thumbFile").equals(isThumbFile)) {
// file inputstream 으로 섬네일 생성후 저장
// BufferedImage originalImage = ImageIO.read(new File("original.png"));
BufferedImage originalImage = ImageIO.read(file.getInputStream());
// BufferedImage thumbnail = Thumbnails.of(originalImage).scale(0.25).asBufferedImage(); // 해상도
BufferedImage thumbnail = Thumbnails.of(originalImage).size(360, 260).asBufferedImage(); // 사이즈
thumbName = newName + "_THUMB";
String thumFilePath = storePathString + File.separator + thumbName;
File thumbFile = new File(thumFilePath);
ImageIO.write(thumbnail, fileExt, thumbFile);
// 서버 파일로 섬네일 저장
// File destinationDir = new File(filePath);
// Thumbnails.of(filePath).size(200, 200).toFiles(saveFolder, Rename.PREFIX_DOT_THUMBNAIL); // 이미지 확장자 파일 필요
}
fvo = new FileVO();
fvo.setFileExtsn(fileExt);
fvo.setFileStreCours(storePathString);
fvo.setFileMg(Long.toString(_size));
fvo.setOrignlFileNm(orginFileName);
fvo.setStreFileNm(newName);
fvo.setAtchFileId(atchFileIdString);
fvo.setFileSn(String.valueOf(fileKey));
fvo.setThumbFileNm(thumbName);
// writeFile(file, newName, storePathString);
result.add(fvo);
fileKey++;
}
return result;
}
/**
* 이미지 파일을 리사이징하여 저장한다.
*
* @param files
* @return
* @throws Exception
*/
public List<FileVO> parseImageFileResizeInf(Map<String, MultipartFile> files, String KeyStr, int fileKeyParam, String atchFileId, String storePath, String isThumbFile) throws Exception {
int fileKey = fileKeyParam;
String storePathString = "";
String atchFileIdString = "";
if ("".equals(storePath) || storePath == null) {
storePathString = propertyService.getString("Globals.fileStorePath");
} else {
storePathString = storePath;//propertyService.getString(storePath);
}
if ("".equals(atchFileId) || atchFileId == null) {
atchFileIdString = idgenService.getNextStringId();
} else {
atchFileIdString = atchFileId;
}
File saveFolder = new File(storePathString);
if (!saveFolder.exists() || saveFolder.isFile()) {
saveFolder.mkdirs();
}
// Iterator<Entry<String, MultipartFile>> itr = files.entrySet().iterator();
List<MultipartFile> tmp = new ArrayList<MultipartFile>(files.values());
ListIterator<MultipartFile> itr = tmp.listIterator(tmp.size());
MultipartFile file;
String filePath = "";
List<FileVO> result = new ArrayList<FileVO>();
FileVO fvo;
while (itr.hasPrevious()) {
// Entry<String, MultipartFile> entry = itr.next();
// file = entry.getValue();
file = itr.previous();
String orginFileName = file.getOriginalFilename();
//--------------------------------------
// 파일명이 없는 경우 처리
// (첨부가 되지 않은 input file type)
//--------------------------------------
if ("".equals(orginFileName)) {
continue;
}
////------------------------------------
int index = orginFileName.lastIndexOf(".");
String fileExt = orginFileName.substring(index + 1);
String newName = KeyStr + EgovStringUtil.getTimeStamp() + fileKey;
long _size = file.getSize();
//이미지 파일 처리라서 확장자까지 모두 붙여서 파일 생성
if (!"".equals(orginFileName)) {
filePath = saveFolder + File.separator + newName + "." + fileExt;
file.transferTo(new File(filePath));
File newFile = new File(filePath);
InputStream inputStream = new FileInputStream(newFile);
Image img = new ImageIcon(newFile.toString()).getImage(); // 파일 정보 추출
int orgWidth = img.getWidth(null);
int orgHeight = img.getHeight(null);
//wid : 640 , hei : 960
if(orgWidth > 640 || orgHeight > 960) {
if (orgWidth > MAX_WIDTH) {
orgHeight = (int) (orgHeight * (MAX_WIDTH / (float) orgWidth));
orgWidth = MAX_WIDTH;
}
if (orgHeight > MAX_HEIGHT) {
orgWidth = (int) (orgWidth * (MAX_HEIGHT / (float) orgHeight));
orgHeight = MAX_HEIGHT;
}
//이미지 리사이징 요청
BufferedImage resizedImage = resize(inputStream ,orgWidth , orgHeight );
//리사이징된 파일 덮어쓰기
ImageIO.write(resizedImage, "jpg", new File(filePath));
}
}
//로컬 테스트 주석처리_220503_이준호
//실제 파일 저장 이미지 불러올 상대경로로 변경해줌 - webapps/mjon/MMS/날짜별 폴더
/*String fdlPath[] = storePathString.split("/MMS/"); // 경로중에 날짜 폴더명만 받아옴
storePathString ="/MMS/" + fdlPath[1];*/
String thumbName = "";
fvo = new FileVO();
fvo.setFileExtsn(fileExt);
fvo.setFileStreCours(storePathString);
fvo.setFileMg(Long.toString(_size));
fvo.setOrignlFileNm(orginFileName);
fvo.setStreFileNm(newName);
fvo.setAtchFileId(atchFileIdString);
fvo.setFileSn(String.valueOf(fileKey));
fvo.setThumbFileNm(thumbName);
// writeFile(file, newName, storePathString);
result.add(fvo);
fileKey++;
}
return result;
}
/* 리사이즈 실행 메소드 */
public static BufferedImage resize(InputStream inputStream, int width, int height)
throws IOException {
//BufferedImage inputImage = ImageIO.read(inputStream); // 받은 이미지 읽기
BufferedInputStream bis = new BufferedInputStream(inputStream, 8192); //8K reads
BufferedImage inputImage = ImageIO.read(bis); // 받은 이미지 읽기
//화질저하를 막기위해 이미지 SCALE_SMOOTH 처리를 해준다.
Image resizing = inputImage.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage outputImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 입력받은 리사이즈 길이와 높이
Graphics2D graphics2D = outputImage.createGraphics();
//이미지 앨리어싱 현상이나 깨짐현상을 막기 위해서 INTERPOLATION 옵션을 사용
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
graphics2D.drawImage(resizing, 0, 0, width, height, null); // 그리기
graphics2D.dispose(); // 자원해제
return outputImage;
}
/**
* 첨부파일을 서버에 저장한다.
*
* @param file
* @param newName
* @param stordFilePath
* @throws Exception
*/
protected void writeUploadedFile(MultipartFile file, String newName, String stordFilePath) throws Exception {
InputStream stream = null;
OutputStream bos = null;
String stordFilePathReal = (stordFilePath==null?"":stordFilePath).replaceAll("..","");
try {
stream = file.getInputStream();
File cFile = new File(stordFilePathReal);
if (!cFile.isDirectory()) {
boolean _flag = cFile.mkdir();
if (!_flag) {
throw new IOException("Directory creation Failed ");
}
}
bos = new FileOutputStream(stordFilePathReal + File.separator + newName);
int bytesRead = 0;
byte[] buffer = new byte[BUFF_SIZE];
while ((bytesRead = stream.read(buffer, 0, BUFF_SIZE)) != -1) {
bos.write(buffer, 0, bytesRead);
}
} catch (FileNotFoundException fnfe) {
LOGGER.debug("fnfe: {}", fnfe);
} catch (IOException ioe) {
LOGGER.debug("ioe: {}", ioe);
} catch (Exception e) {
LOGGER.debug("e: {}", e);
} finally {
if (bos != null) {
try {
bos.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (stream != null) {
try {
stream.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
}
/**
* 서버의 파일을 다운로드한다.
*
* @param request
* @param response
* @throws Exception
*/
public static void downFile(HttpServletRequest request, HttpServletResponse response) throws Exception {
String downFileName = EgovStringUtil.isNullToString(request.getAttribute("downFile")).replaceAll("..","");
String orgFileName = EgovStringUtil.isNullToString(request.getAttribute("orgFileName")).replaceAll("..","");
/*if ((String)request.getAttribute("downFile") == null) {
downFileName = "";
} else {
downFileName = EgovStringUtil.isNullToString(request.getAttribute("downFile"));
}*/
/*if ((String)request.getAttribute("orgFileName") == null) {
orgFileName = "";
} else {
orgFileName = (String)request.getAttribute("orginFile");
}*/
File file = new File(downFileName);
if (!file.exists()) {
throw new FileNotFoundException(downFileName);
}
if (!file.isFile()) {
throw new FileNotFoundException(downFileName);
}
byte[] b = new byte[BUFF_SIZE]; //buffer size 2K.
String fName = (new String(orgFileName.getBytes(), "UTF-8")).replaceAll("\r\n","");
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition:", "attachment; filename=" + fName);
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
BufferedInputStream fin = null;
BufferedOutputStream outs = null;
try {
fin = new BufferedInputStream(new FileInputStream(file));
outs = new BufferedOutputStream(response.getOutputStream());
int read = 0;
while ((read = fin.read(b)) != -1) {
outs.write(b, 0, read);
}
} finally {
if (outs != null) {
try {
outs.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (fin != null) {
try {
fin.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
}
/**
* 첨부로 등록된 파일을 서버에 업로드한다.
*
* @param file
* @return
* @throws Exception
public static HashMap<String, String> uploadFile(MultipartFile file) throws Exception {
HashMap<String, String> map = new HashMap<String, String>();
//Write File 이후 Move File????
String newName = "";
String stordFilePath = EgovProperties.getProperty("Globals.fileStorePath");
String orginFileName = file.getOriginalFilename();
int index = orginFileName.lastIndexOf(".");
//String fileName = orginFileName.substring(0, _index);
String fileExt = orginFileName.substring(index + 1);
long size = file.getSize();
//newName Naming Convention에 의해서 생성
newName = EgovStringUtil.getTimeStamp() + "." + fileExt;
writeFile(file, newName, stordFilePath);
//storedFilePath는 지정
map.put(Globals.ORIGIN_FILE_NM, orginFileName);
map.put(Globals.UPLOAD_FILE_NM, newName);
map.put(Globals.FILE_EXT, fileExt);
map.put(Globals.FILE_PATH, stordFilePath);
map.put(Globals.FILE_SIZE, String.valueOf(size));
return map;
}
*/
/**
* 파일을 실제 물리적인 경로에 생성한다.
*
* @param file
* @param newName
* @param stordFilePath
* @throws Exception
*/
protected static void writeFile(MultipartFile file, String newName, String stordFilePath) throws Exception {
InputStream stream = null;
OutputStream bos = null;
newName = EgovStringUtil.isNullToString(newName).replaceAll("..", "");
stordFilePath = EgovStringUtil.isNullToString(stordFilePath).replaceAll("..", "");
try {
stream = file.getInputStream();
File cFile = new File(stordFilePath);
if (!cFile.isDirectory())
cFile.mkdir();
bos = new FileOutputStream(stordFilePath + File.separator + newName);
int bytesRead = 0;
byte[] buffer = new byte[BUFF_SIZE];
while ((bytesRead = stream.read(buffer, 0, BUFF_SIZE)) != -1) {
bos.write(buffer, 0, bytesRead);
}
} catch (FileNotFoundException fnfe) {
LOGGER.debug("fnfe: {}",fnfe);
} catch (IOException ioe) {
LOGGER.debug("ioe: {}", ioe);
} catch (Exception e) {
LOGGER.debug("e: {}", e);
} finally {
if (bos != null) {
try {
bos.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (stream != null) {
try {
stream.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
}
/**
* 서버 파일에 대하여 다운로드를 처리한다.
*
* @param response
* @param streFileNm
* : 파일저장 경로가 포함된 형태
* @param orignFileNm
* @throws Exception
*/
public void downFile(HttpServletResponse response, String streFileNm, String orignFileNm) throws Exception {
// String downFileName = EgovStringUtil.isNullToString(request.getAttribute("downFile")).replaceAll("..","");
// String orgFileName = EgovStringUtil.isNullToString(request.getAttribute("orgFileName")).replaceAll("..","");
String downFileName = EgovStringUtil.isNullToString(streFileNm).replaceAll("..","");
String orgFileName = EgovStringUtil.isNullToString(orignFileNm).replaceAll("..","");
File file = new File(downFileName);
//log.debug(this.getClass().getName()+" downFile downFileName "+downFileName);
//log.debug(this.getClass().getName()+" downFile orgFileName "+orgFileName);
if (!file.exists()) {
throw new FileNotFoundException(downFileName);
}
if (!file.isFile()) {
throw new FileNotFoundException(downFileName);
}
//byte[] b = new byte[BUFF_SIZE]; //buffer size 2K.
int fSize = (int)file.length();
if (fSize > 0) {
BufferedInputStream in = null;
try {
in = new BufferedInputStream(new FileInputStream(file));
String mimetype = "text/html"; //"application/x-msdownload"
response.setBufferSize(fSize);
response.setContentType(mimetype);
response.setHeader("Content-Disposition:", "attachment; filename=" + orgFileName);
response.setContentLength(fSize);
//response.setHeader("Content-Transfer-Encoding","binary");
//response.setHeader("Pragma","no-cache");
//response.setHeader("Expires","0");
FileCopyUtils.copy(in, response.getOutputStream());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
response.getOutputStream().flush();
response.getOutputStream().close();
}
/*
String uploadPath = propertiesService.getString("fileDir");
File uFile = new File(uploadPath, requestedFile);
int fSize = (int) uFile.length();
if (fSize > 0) {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(uFile));
String mimetype = "text/html";
response.setBufferSize(fSize);
response.setContentType(mimetype);
response.setHeader("Content-Disposition", "attachment; filename=\""
+ requestedFile + "\"");
response.setContentLength(fSize);
FileCopyUtils.copy(in, response.getOutputStream());
in.close();
response.getOutputStream().flush();
response.getOutputStream().close();
} else {
response.setContentType("text/html");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + requestedFile + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>&copy; webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
//*/
/*
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition:", "attachment; filename=" + new String(orgFileName.getBytes(),"UTF-8" ));
response.setHeader("Content-Transfer-Encoding","binary");
response.setHeader("Pragma","no-cache");
response.setHeader("Expires","0");
BufferedInputStream fin = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());
int read = 0;
while ((read = fin.read(b)) != -1) {
outs.write(b,0,read);
}
log.debug(this.getClass().getName()+" BufferedOutputStream Write Complete!!! ");
outs.close();
fin.close();
//*/
}
/**
* atchFileId 강제 Idgen update
*
* @param files
* @return
* @throws Exception
*/
public void updateAtchFileIdgen(int count) throws Exception {
for(int i = 0 ; i < count ; i ++) {
idgenService.getNextStringId();
}
}
}

View File

@ -0,0 +1,251 @@
package itn.com.cmm.service;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import itn.com.cmm.EgovWebUtil;
import itn.com.cmm.util.EgovResourceCloseHelper;
//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") + FILE_SEPARATOR + "egovProps" +FILE_SEPARATOR + "globals.properties";
//public static final String RELATIVE_PATH_PREFIX = EgovProperties.class.getResource("").getPath() + FILE_SEPARATOR+ ".." + FILE_SEPARATOR + ".." + FILE_SEPARATOR;
public static final String RELATIVE_PATH_PREFIX = EgovProperties.class.getResource("").getPath().substring(0, EgovProperties.class.getResource("").getPath().lastIndexOf("com"));
public static final String GLOBALS_PROPERTIES_FILE = RELATIVE_PATH_PREFIX + "egovProps" + 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 = "";
LOGGER.debug("getProperty : {} = {}", GLOBALS_PROPERTIES_FILE, keyName);
FileInputStream fis = null;
try {
Properties props = new Properties();
fis = new FileInputStream(EgovWebUtil.filePathBlackList(GLOBALS_PROPERTIES_FILE));
props.load(new BufferedInputStream(fis));
if (props.getProperty(keyName) == null) {
return "";
}
value = props.getProperty(keyName).trim();
} catch (FileNotFoundException fne) {
LOGGER.debug("Property file not found.", fne);
throw new RuntimeException("Property file not found", fne);
} catch (IOException ioe) {
LOGGER.debug("Property file IO exception", ioe);
throw new RuntimeException("Property file IO exception", ioe);
} finally {
EgovResourceCloseHelper.close(fis);
}
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<Map<String, String>> loadPropertyFile(String property){
// key - value 형태로 배열 결과
ArrayList<Map<String, String>> keyList = new ArrayList<Map<String, String>>();
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<String, String> map = new HashMap<String, String>();
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);//ex.printStackTrace();
}
}
return keyList;
}
/**
* 시스템 로그를 출력한다.
* @param obj Object
*/
private static void debug(Object obj) {
if (obj instanceof java.lang.Exception) {
//((Exception)obj).printStackTrace();
//System.out.println("DEBUG: " + obj); // 2011.10.10 보안점검 후속조치
LOGGER.debug("IGNORED: {}", ((Exception)obj).getMessage());
}
}
}

View File

@ -0,0 +1,26 @@
package itn.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<String> getAuthorities();
/**
* 인증된 사용자 여부를 체크한다.
* @return Boolean - 인증된 사용자 여부(TRUE / FALSE)
*/
public Boolean isAuthenticated();
}

View File

@ -0,0 +1,290 @@
package itn.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
*
*/
@SuppressWarnings("serial")
public class FileVO implements Serializable {
/**
* 첨부파일 아이디
*/
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 = "";
/**
* 섬네일 이미지 파일명
*/
public String thumbFileNm = "";
/**
* atchFileId attribute를 리턴한다.
*
* @return the atchFileId
*/
public String maxFileNum = "";
public String menuName = ""; //파일 업로드시 매뉴 분할
public String whFile = ""; //파일 업로드시 절대 경로
public String getMaxFileNum() {
return maxFileNum;
}
public void setMaxFileNum(String maxFileNum) {
this.maxFileNum = maxFileNum;
}
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;
}
/**
* @return the thumbFileNm
*/
public String getThumbFileNm() {
return thumbFileNm;
}
/**
* @param thumbFileNm the thumbFileNm to set
*/
public void setThumbFileNm(String thumbFileNm) {
this.thumbFileNm = thumbFileNm;
}
/**
* toString 메소드를 대치한다.
*/
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
public String getMenuName() {
return menuName;
}
public void setMenuName(String menuName) {
this.menuName = menuName;
}
public String getWhFile() {
return whFile;
}
public void setWhFile(String whFile) {
this.whFile = whFile;
}
}

View File

@ -0,0 +1,30 @@
package itn.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";
}

View File

@ -0,0 +1,10 @@
package itn.com.cmm.service;
import itn.com.cmm.ReadVO;
public interface ReadService {
public ReadVO selectReadYn(ReadVO readVO) throws Exception;
public void insertReadYn(ReadVO readVO) throws Exception;
}

View File

@ -0,0 +1,67 @@
package itn.com.cmm.service.impl;
import java.util.List;
import org.springframework.stereotype.Repository;
import itn.com.cmm.ComDefaultCodeVO;
import itn.com.cmm.service.CmmnDetailCode;
/**
* @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<CmmnDetailCode> selectCmmCodeDetail(ComDefaultCodeVO vo) throws Exception {
return (List<CmmnDetailCode>) list("CmmUseDAO.selectCmmCodeDetail", vo);
}
/**
* 공통코드로 사용할 조직정보를 불러온다.
*
* @param vo
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public List<CmmnDetailCode> selectOgrnztIdDetail(ComDefaultCodeVO vo) throws Exception {
return (List<CmmnDetailCode>) list("CmmUseDAO.selectOgrnztIdDetail", vo);
}
/**
* 공통코드로 사용할그룹정보를 불러온다.
*
* @param vo
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public List<CmmnDetailCode> selectGroupIdDetail(ComDefaultCodeVO vo) throws Exception {
return (List<CmmnDetailCode>) list("CmmUseDAO.selectGroupIdDetail", vo);
}
public CmmnDetailCode selectCmmCodeDetailValue(ComDefaultCodeVO vo) throws Exception{
return (CmmnDetailCode) select("CmmUseDAO.selectCmmCodeDetailValue", vo);
}
}

View File

@ -0,0 +1,95 @@
package itn.com.cmm.service.impl;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import itn.com.cmm.ComDefaultCodeVO;
import itn.com.cmm.service.CmmnDetailCode;
import itn.com.cmm.service.EgovCmmUseService;
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<CmmnDetailCode> selectCmmCodeDetail(ComDefaultCodeVO vo) throws Exception {
return cmmUseDAO.selectCmmCodeDetail(vo);
}
/**
* ComDefaultCodeVO의 리스트를 받아서 여러개의 코드 리스트를 맵에 담아서 리턴한다.
*
* @param voList
* @return
* @throws Exception
*/
@Override
@SuppressWarnings("rawtypes")
public Map<String, List<CmmnDetailCode>> selectCmmCodeDetails(List voList) throws Exception {
ComDefaultCodeVO vo;
Map<String, List<CmmnDetailCode>> map = new HashMap<String, List<CmmnDetailCode>>();
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<CmmnDetailCode> selectOgrnztIdDetail(ComDefaultCodeVO vo) throws Exception {
return cmmUseDAO.selectOgrnztIdDetail(vo);
}
/**
* 그룹정보를 코드형태로 리턴한다.
*
* @param 조회조건정보 vo
* @return 그룹정보 List
* @throws Exception
*/
@Override
public List<CmmnDetailCode> selectGroupIdDetail(ComDefaultCodeVO vo) throws Exception {
return cmmUseDAO.selectGroupIdDetail(vo);
}
}

View File

@ -0,0 +1,33 @@
package itn.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
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- ------------- ----------------------
* 2011. 9. 23. 서준식 최초 생성
* </pre>
*/
public abstract class EgovComAbstractDAO extends EgovAbstractDAO {
@Override
@Resource(name = "egov.sqlMapClient")
public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
super.setSuperSqlMapClient(sqlMapClient);
}
}

View File

@ -0,0 +1,189 @@
package itn.com.cmm.service.impl;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import itn.com.cmm.service.EgovFileMngService;
import itn.com.cmm.service.FileVO;
/**
* @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 itn.com.cmm.service.EgovFileMngService#deleteFileInfs(java.util.List)
*/
@Override
@SuppressWarnings("rawtypes")
public void deleteFileInfs(List fvoList) throws Exception {
fileMngDAO.deleteFileInfs(fvoList);
}
/**
* 하나의 파일에 대한 정보(속성 상세) 등록한다.
*
* @see itn.com.cmm.service.EgovFileMngService#insertFileInf(itn.com.cmm.service.FileVO)
*/
@Override
public String insertFileInf(FileVO fvo) throws Exception {
String atchFileId = fvo.getAtchFileId();
fileMngDAO.insertFileInf(fvo);
return atchFileId;
}
/**
* 여러 개의 파일에 대한 정보(속성 상세) 등록한다.
*
* @see itn.com.cmm.service.EgovFileMngService#insertFileInfs(java.util.List)
*/
@SuppressWarnings("rawtypes")
@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 itn.com.cmm.service.EgovFileMngService#selectFileInfs(itn.com.cmm.service.FileVO)
*/
@Override
public List<FileVO> selectFileInfs(FileVO fvo) throws Exception {
return fileMngDAO.selectFileInfs(fvo);
}
/**
* 여러 개의 파일에 대한 정보(속성 상세) 수정한다.
*
* @see itn.com.cmm.service.EgovFileMngService#updateFileInfs(java.util.List)
*/
@SuppressWarnings("rawtypes")
@Override
public void updateFileInfs(List fvoList) throws Exception {
//Delete & Insert
fileMngDAO.updateFileInfs(fvoList);
}
/**
* 하나의 파일을 삭제한다.
*
* @see itn.com.cmm.service.EgovFileMngService#deleteFileInf(itn.com.cmm.service.FileVO)
*/
@Override
public void deleteFileInf(FileVO fvo) throws Exception {
fileMngDAO.deleteFileInf(fvo);
}
/**
* 파일에 대한 상세정보를 조회한다.
*
* @see itn.com.cmm.service.EgovFileMngService#selectFileInf(itn.com.cmm.service.FileVO)
*/
@Override
public FileVO selectFileInf(FileVO fvo) throws Exception {
return fileMngDAO.selectFileInf(fvo);
}
/**
* 파일 구분자에 대한 최대값을 구한다.
*
* @see itn.com.cmm.service.EgovFileMngService#getMaxFileSN(itn.com.cmm.service.FileVO)
*/
@Override
public int getMaxFileSN(FileVO fvo) throws Exception {
return fileMngDAO.getMaxFileSN(fvo);
}
/**
* 전체 파일을 삭제한다.
*
* @see itn.com.cmm.service.EgovFileMngService#deleteAllFileInf(itn.com.cmm.service.FileVO)
*/
@Override
public void deleteAllFileInf(FileVO fvo) throws Exception {
fileMngDAO.deleteAllFileInf(fvo);
}
/**
* 파일명 검색에 대한 목록을 조회한다.
*
* @see itn.com.cmm.service.EgovFileMngService#selectFileListByFileNm(itn.com.cmm.service.FileVO)
*/
@Override
public Map<String, Object> selectFileListByFileNm(FileVO fvo) throws Exception {
List<FileVO> result = fileMngDAO.selectFileListByFileNm(fvo);
int cnt = fileMngDAO.selectFileListCntByFileNm(fvo);
Map<String, Object> map = new HashMap<String, Object>();
map.put("resultList", result);
map.put("resultCnt", Integer.toString(cnt));
return map;
}
/**
* 이미지 파일에 대한 목록을 조회한다.
*
* @see itn.com.cmm.service.EgovFileMngService#selectImageFileList(itn.com.cmm.service.FileVO)
*/
@Override
public List<FileVO> selectImageFileList(FileVO vo) throws Exception {
return fileMngDAO.selectImageFileList(vo);
}
/*단일 파일업데이트*/
@Override
public void updateFileInfo(List fvoList) throws Exception {
//Delete & Update
fileMngDAO.updateFileInfo(fvoList);
}
@Override
public void deleteFmsFileInf(FileVO fileVO) throws Exception {
FileVO returnFileVO = new FileVO();
returnFileVO = fileMngDAO.selectFileInf(fileVO);
if(returnFileVO !=null) {
File delFile = new File(returnFileVO.getFileStreCours()+returnFileVO.getStreFileNm());
delFile.delete(); //실제파일 deletePerFile 삭제
}
//lettnfiledetail pk lettnfile 삭제 안함
fileMngDAO.deleteFileInf(fileVO); //DB삭제
}
}

View File

@ -0,0 +1,66 @@
package itn.com.cmm.service.impl;
import java.util.ArrayList;
import java.util.List;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import itn.com.cmm.LoginVO;
import itn.com.cmm.service.EgovUserDetailsService;
/**
*
* @author 공통서비스 개발팀 서준식
* @since 2011. 8. 12.
* @version 1.0
* @see
*
* <pre>
* 개정이력(Modification Information)
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2011. 8. 12. 서준식 최초생성
*
* </pre>
*/
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;
}
@Override
public List<String> getAuthorities() {
// 권한 설정을 리턴한다.
List<String> listAuth = new ArrayList<String>();
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() {
return true;
}
}

View File

@ -0,0 +1,64 @@
package itn.com.cmm.service.impl;
import java.util.ArrayList;
import java.util.List;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import itn.com.cmm.service.EgovUserDetailsService;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
/**
*
* @author 공통서비스 개발팀 서준식
* @since 2011. 6. 25.
* @version 1.0
* @see
*
* <pre>
* 개정이력(Modification Information)
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2011. 8. 12. 서준식 최초생성
*
* </pre>
*/
public class EgovUserDetailsSessionServiceImpl extends EgovAbstractServiceImpl implements EgovUserDetailsService {
@Override
public Object getAuthenticatedUser() {
return RequestContextHolder.getRequestAttributes().getAttribute("loginVO", RequestAttributes.SCOPE_SESSION);
}
@Override
public List<String> getAuthorities() {
// 권한 설정을 리턴한다.
List<String> listAuth = new ArrayList<String>();
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;
}
}
}
}

View File

@ -0,0 +1,200 @@
package itn.com.cmm.service.impl;
import java.util.Iterator;
import java.util.List;
import org.springframework.stereotype.Repository;
import itn.com.cmm.service.FileVO;
/**
* @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();
String fileName = vo.getOrignlFileNm();
System.out.println("!!! "+fileName);
String newfileName = fileName.replaceAll(",", "_");
System.out.println("@@@ "+newfileName);
vo.setOrignlFileNm(newfileName);
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<FileVO> selectFileInfs(FileVO vo) throws Exception {
return (List<FileVO>) 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<FileVO> selectFileListByFileNm(FileVO fvo) throws Exception {
return (List<FileVO>) 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<FileVO> selectImageFileList(FileVO vo) throws Exception {
return (List<FileVO>) list("FileManageDAO.selectImageFileList", vo);
}
/*단일파일 수정*/
public void updateFileInfo(List fvoList) throws Exception{
FileVO vo;
Iterator<?> iter = fvoList.iterator();
while (iter.hasNext()) {
vo = (FileVO) iter.next();
update("FileManageDAO.updateFileInfo", vo);
}
}
}

View File

@ -0,0 +1,18 @@
package itn.com.cmm.service.impl;
import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import itn.com.cmm.ReadVO;
@Repository("readDAO")
public class ReadDAO extends EgovAbstractDAO {
public ReadVO selectReadYn(ReadVO readVO) {
return (ReadVO)select("readDAO.selectReadYn", readVO);
}
public void insertReadYn(ReadVO readVO) {
insert("readDAO.insertReadYn", readVO);
}
}

View File

@ -0,0 +1,26 @@
package itn.com.cmm.service.impl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import itn.com.cmm.ReadVO;
import itn.com.cmm.service.ReadService;
@Service("readService")
public class ReadServiceImpl implements ReadService {
@Resource(name = "readDAO")
private ReadDAO readDAO;
@Override
public ReadVO selectReadYn(ReadVO readVO) throws Exception {
return readDAO.selectReadYn(readVO);
}
@Override
public void insertReadYn(ReadVO readVO) throws Exception {
readDAO.insertReadYn(readVO);
}
}

View File

@ -0,0 +1,65 @@
package itn.com.cmm.taglibs;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import itn.com.cmm.ComDefaultCodeVO;
import itn.com.cmm.service.CmmnDetailCode;
import itn.com.cmm.service.impl.CmmUseDAO;
@Service
public class CodeTag extends SimpleTagSupport {
private static final Logger log = LoggerFactory.getLogger(CodeTag.class);
private static CmmUseDAO cmmUseDAO;
@Autowired
private void setCmmUseDAO(CmmUseDAO cmmUseDAO) {
CodeTag.cmmUseDAO = cmmUseDAO;
}
private String codeId = null;
private String code;
public void setCodeId(String codeId) {
this.codeId = codeId;
}
public void setCode(String code) {
this.code = code;
}
@Override
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
ComDefaultCodeVO vo = new ComDefaultCodeVO();
vo.setCodeId(codeId);
vo.setCode(code);
try {
if (!"".equals(codeId)) {
CmmnDetailCode cmmnDetailCode= cmmUseDAO.selectCmmCodeDetailValue(vo);
out.print(cmmnDetailCode.getCodeNm());
} else {
out.print("");
}
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
}
}

View File

@ -0,0 +1,88 @@
package itn.com.cmm.taglibs;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import itn.com.cmm.util.EgovDoubleSubmitHelper;
/**
* TagSupport to support to double submit preventer
* @author Vincent Han
* @since 2014.08.07
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2014.08.07 표준프레임워크센터 최초 생성
*
* </pre>
*/
public class DoubleSubmitTag extends TagSupport {
private static final Logger LOGGER = LoggerFactory.getLogger(DoubleSubmitTag.class);
/**
* Generated Serial Version UID
*/
private static final long serialVersionUID = 5242217605452312594L;
private String tokenKey = EgovDoubleSubmitHelper.DEFAULT_TOKEN_KEY;
public String getTokenKey() {
return tokenKey;
}
public void setTokenKey(String tokenKey) {
this.tokenKey = tokenKey;
}
@SuppressWarnings("unchecked")
public int doStartTag() throws JspException {
StringBuilder buffer = new StringBuilder();
HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
HttpSession session = request.getSession();
Map<String, String> map = null;
if (session.getAttribute(EgovDoubleSubmitHelper.SESSION_TOKEN_KEY) == null) {
map = new HashMap<String, String>();
session.setAttribute(EgovDoubleSubmitHelper.SESSION_TOKEN_KEY, map);
} else {
map = (Map<String, String>) session.getAttribute(EgovDoubleSubmitHelper.SESSION_TOKEN_KEY);
}
// First call (check session)
if (map.get(tokenKey) == null) {
map.put(tokenKey, EgovDoubleSubmitHelper.getNewUUID());
LOGGER.debug("[Double Submit] session token created({}) : {}", tokenKey, map.get(tokenKey));
}
buffer.append("<input type='hidden' name='").append(EgovDoubleSubmitHelper.PARAMETER_NAME).append("' value='").append(map.get(tokenKey)).append("'/>");
try {
pageContext.getOut().print(buffer.toString());
} catch (IOException e) {
throw new JspTagException("Error: IOException while writing to the user");
}
return SKIP_BODY;
}
}

View File

@ -0,0 +1,41 @@
package itn.com.cmm.taglibs;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import itn.com.cmm.ComDefaultCodeVO;
import itn.com.cmm.service.CmmnDetailCode;
import itn.com.cmm.service.impl.CmmUseDAO;
import itn.com.cmm.util.MJUtil;
@Service
public class HpFmtTag extends SimpleTagSupport {
private static final Logger log = LoggerFactory.getLogger(HpFmtTag.class);
private String hpNo;
public void setHpNo(String hpNo) {
this.hpNo = hpNo;
}
@Override
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
try {
out.print(MJUtil.addDash(hpNo));
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
}
}

View File

@ -0,0 +1,161 @@
package itn.com.cmm.taglibs;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import itn.com.cmm.ComDefaultCodeVO;
import itn.com.cmm.service.CmmnDetailCode;
import itn.com.cmm.service.impl.CmmUseDAO;
import itn.com.cmm.util.StringUtil2;
@Service
public class RadioTag extends SimpleTagSupport {
private static final Logger log = LoggerFactory.getLogger(RadioTag.class);
private static CmmUseDAO cmmUseDAO;
@Autowired
private void setCmmUseDAO(CmmUseDAO cmmUseDAO) {
RadioTag.cmmUseDAO = cmmUseDAO;
}
private String codeId = null;
private String id;
private String name;
private String script;
private String css = null;
private Set<String> includeSet = null;
private String selectedValue = null;
private String defaultValue = null;
private String defaultText = null;
public void setSelectedValue(String selectedValue) {
this.selectedValue = selectedValue;
}
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setScript(String script) {
this.script = script;
}
public void setCss(String css) {
this.css = css;
}
public void setIncludeSet(Set<String> includeSet) {
this.includeSet = includeSet;
}
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
public void setDefaultText(String defaultText) {
this.defaultText = defaultText;
}
public void setCodeId(String codeId) {
this.codeId = codeId;
}
public void setIncludes(String includes) {
if (!StringUtil2.isEmpty(StringUtil2.trim(includes))) {
StringTokenizer includeTokens = new StringTokenizer(includes, ",");
String includeToken;
includeSet = new HashSet<String>();
while (includeTokens.hasMoreTokens()) {
includeToken = includeTokens.nextToken();
if (!StringUtil2.isEmpty(StringUtil2.trim(includeToken))) {
includeSet.add(includeToken);
}
}
if (includeSet.isEmpty()) {
includeSet = null;
}
}
}
@Override
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
StringBuffer tag = new StringBuffer("");
int i=0;
id = id+i++;
if (defaultText != null) {
tag.append("\n\t\t<div><input type=\"radio\" id=\"" + id + "\" name=\"" + name + "\" value=\"" + defaultValue + "\" checked=\"checked\"");
if (css != null) {
tag.append(" " + css + " ");
}
if (script != null) {
tag.append(" " + script + " ");
}
tag.append("> <label for=\""+ id +"\">"+defaultText+"</label></div>");
}
ComDefaultCodeVO vo = new ComDefaultCodeVO();
vo.setCodeId(codeId);
List<CmmnDetailCode> codeList;
try {
codeList = cmmUseDAO.selectCmmCodeDetail(vo);
if (codeList != null) {
for (CmmnDetailCode code : codeList) {
if (includeSet == null || includeSet.contains(code.getCode())) {
id = id+i++;
tag.append("\n\t\t<div><input type=\"radio\" id=\"" + id + "\" name=\"" + name + "\" value=\"" + StringUtil2.escapeXml(code.getCode()) + "\"");
if (css != null) {
tag.append(" " + css + " ");
}
if (script != null) {
tag.append(" " + script + " ");
}
if (code.getCode().equals(selectedValue)) {
tag.append(" checked=\"checked\" ");
}
tag.append("> <label for=\""+ id +"\">"+StringUtil2.escapeXml(code.getCodeNm())+"</label></div>");
}
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.print(tag.toString());
}
}

View File

@ -0,0 +1,162 @@
package itn.com.cmm.taglibs;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import itn.com.cmm.ComDefaultCodeVO;
import itn.com.cmm.service.CmmnDetailCode;
import itn.com.cmm.service.impl.CmmUseDAO;
import itn.com.cmm.util.StringUtil2;
@Service
public class SelectTag extends SimpleTagSupport {
private static final Logger log = LoggerFactory.getLogger(SelectTag.class);
private static CmmUseDAO cmmUseDAO;
@Autowired
private void setCmmUseDAO(CmmUseDAO cmmUseDAO) {
SelectTag.cmmUseDAO = cmmUseDAO;
}
private String codeId = null;
private String id;
private String name;
private String script;
private String css;
private Set<String> includeSet = null;
private String selectedValue = null;
private String defaultValue = null;
private String defaultText = null;
public void setSelectedValue(String selectedValue) {
this.selectedValue = selectedValue;
}
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setScript(String script) {
this.script = script;
}
public void setCss(String css) {
this.css = css;
}
public void setIncludeSet(Set<String> includeSet) {
this.includeSet = includeSet;
}
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
public void setDefaultText(String defaultText) {
this.defaultText = defaultText;
}
public void setCodeId(String codeId) {
this.codeId = codeId;
}
public void setIncludes(String includes) {
if (!StringUtil2.isEmpty(StringUtil2.trim(includes))) {
StringTokenizer includeTokens = new StringTokenizer(includes, ",");
String includeToken;
includeSet = new HashSet<String>();
while (includeTokens.hasMoreTokens()) {
includeToken = includeTokens.nextToken();
if (!StringUtil2.isEmpty(StringUtil2.trim(includeToken))) {
includeSet.add(includeToken);
}
}
if (includeSet.isEmpty()) {
includeSet = null;
}
}
}
@Override
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
StringBuffer tag = new StringBuffer("\n\t<select name=\"" + name + "\" ");
if (id != null) {
tag.append("id=\"" + id + "\" ");
}
if (css != null) {
tag.append(" " + css + " ");
}
if (script != null) {
tag.append(" " + script + " ");
}
tag.append(">");
if (defaultText != null) {
tag.append("\n\t\t<option value=\"" + defaultValue + "\">" + defaultText + "</option>");
}
ComDefaultCodeVO vo = new ComDefaultCodeVO();
vo.setCodeId(codeId);
List<CmmnDetailCode> codeList;
try {
codeList = cmmUseDAO.selectCmmCodeDetail(vo);
if (codeList != null) {
for (CmmnDetailCode code : codeList) {
if (includeSet == null || includeSet.contains(code.getCode())) {
if (code.getCode().equals(selectedValue)) {
tag.append("\n\t\t<option value=\"" + StringUtil2.escapeXml(code.getCode()) + "\" selected=\"selected\" >" + StringUtil2.escapeXml(code.getCodeNm()) + "</option>");
} else {
tag.append("\n\t\t<option value=\"" + StringUtil2.escapeXml(code.getCode()) + "\">" + StringUtil2.escapeXml(code.getCodeNm()) + "</option>");
}
}
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tag.append("\n\t</select>\n");
out.print(tag.toString());
}
}

View File

@ -0,0 +1,113 @@
package itn.com.cmm.util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
*
* @author : 이호영
* @fileName : ContextUtil.java
* @date : 2023.04.07
* @description : 빈이 아닌 객체에서 스프링 (bean) 서블릿(servlet) 객체 직접 얻는 Util
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2023.04.07 이호영 최초 생성
*
*
*
*/
public class ContextUtil {
/**
* 빈을 직접 얻습니다.
*
* @param beanName
* @return
*/
public static Object getBean(String beanName) {
WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
return context.getBean(beanName);
}
/**
* HttpServletReqeust 객체를 직접 얻습니다.
* @return
*/
public static HttpServletRequest getRequest() {
ServletRequestAttributes attr =
(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
return attr.getRequest();
}
/**
* HttpServletResponse 객체를 직접 얻습니다.
* @return
*/
public static HttpServletResponse getResponse() {
ServletRequestAttributes attr =
(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
return attr.getResponse();
}
/**
* HttpSession 객체를 직접 얻습니다.
*
* @param gen 세션 생성 여부
* @return
*/
public static HttpSession getSession(boolean gen) {
return ContextUtil.getRequest().getSession(gen);
}
/**
* REQUEST 영역에서 가져오기
*
* @param key
* @return
*/
public static Object getAttrFromRequest(String key) {
ServletRequestAttributes attr =
(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
return attr.getAttribute(key, ServletRequestAttributes.SCOPE_REQUEST);
}
/**
* REQUEST 영역에 객체 저장
*
* @param key
* @param obj
*/
public static void setAttrToRequest(String key, Object obj) {
ServletRequestAttributes attr =
(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
attr.setAttribute(key, obj, ServletRequestAttributes.SCOPE_REQUEST);
}
/**
* SESSION 영역에서 가져오기
*
* @param key
* @return
*/
public static Object getAttrFromSession(String key) {
ServletRequestAttributes attr =
(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
return attr.getAttribute(key, ServletRequestAttributes.SCOPE_SESSION);
}
/**
* Session 영역에 객체 저장
*
* @param key
* @param obj
*/
public static void setAttrToSession(String key, Object obj) {
ServletRequestAttributes attr =
(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
attr.setAttribute(key, obj, ServletRequestAttributes.SCOPE_SESSION);
}
}

View File

@ -0,0 +1,369 @@
package itn.com.cmm.util;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
/**
* 프로그램 파일명 : Criteria.java
*
* 프로그램 설명 : 검색용 객체
*
* : jeong hoon hee
*
* : 2013. 12. 02.
*
* Copyright(c) 2013 DAEYOON Co. Ltd. All rights reserved.
*/
public class Criteria implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 검색용 객체
*/
private Map<String, Object> condition = new HashMap<String, Object>();
/**
* getParams() 메소드에서 append 할지여부의 condition맵
*/
private Map<String, Boolean> paramViewMap = new HashMap<String, Boolean>();
/**
* 정렬용 리스트 객체
*/
private List<Order> orderList = new ArrayList<Order>();
/** 검색조건 */
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 = "";
/** 메뉴번호 */
private Integer menuNo;
/**
* 기본생성자
*/
public Criteria() {
}
/**
* request객체에서 넘어오는 검색파라미터를 셋팅한다. (* condition 맵처리)
*
* @param request
*/
@SuppressWarnings("unchecked")
public Criteria(HttpServletRequest request) {
Set<String> set = request.getParameterMap().keySet();
Iterator<String> iter = set.iterator();
while (iter.hasNext()) {
String key = iter.next();
if (key.equals("pageUnit")) {
try {
pageUnit = Integer.parseInt(request.getParameter(key));
this.condition.put("pageUnit", pageUnit);
this.paramViewMap.put("pageUnit", true);
} catch (Exception e) {
}
} else if (key.equals("pageSize")) {
try {
pageSize = Integer.parseInt(request.getParameter(key));
this.condition.put("pageSize", pageSize);
this.paramViewMap.put("pageSize", true);
} catch (Exception e) {
}
} else if (key.equals("pageIndex")) {
try {
pageIndex = Integer.parseInt(request.getParameter(key));
this.condition.put("pageIndex", pageIndex);
this.paramViewMap.put("pageIndex", true);
} catch (Exception e) {
}
} else if (key.equals("searchCondition")) {
try {
searchCondition = request.getParameter(key);
this.condition.put("searchCondition", searchCondition);
this.paramViewMap.put("searchCondition", true);
} catch (Exception e) {
}
} else if (key.equals("searchKeyword")) {
try {
searchKeyword = request.getParameter(key);
this.condition.put("searchKeyword", searchKeyword);
this.paramViewMap.put("searchKeyword", true);
} catch (Exception e) {
}
} else if (key.equals("menuNo")) {
try {
menuNo = Integer.parseInt(request.getParameter(key));
this.condition.put("menuNo", menuNo);
this.paramViewMap.put("menuNo", true);
} catch (Exception e) {
}
} else if (key.startsWith("condition.")) {
String conditionKey = StringUtils.substringAfter(key, "condition.");
String conditionValue = request.getParameter(key);
if (StringUtils.isNotEmpty(conditionValue)) {
this.condition.put(conditionKey, conditionValue);
this.paramViewMap.put(conditionKey, true);
}
}
}
}
public Map<String, Object> getCondition() {
return condition;
}
public void setCondition(Map<String, Object> condition) {
this.condition = condition;
}
public Object remove(Object key) {
return this.condition.remove(key);
}
public Object get(String key) {
return this.condition.get(key);
}
public Object put(String key, Object value) {
this.paramViewMap.put(key, true);
return this.condition.put(key, value);
}
public Object put(String key, Object value, boolean append) {
this.paramViewMap.put(key, append);
return this.condition.put(key, value);
}
public List<Order> getOrderList() {
return orderList;
}
public void setOrderList(List<Order> orderList) {
this.orderList = orderList;
}
public void addOrder(Order order) {
this.orderList.add(order);
}
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 Integer getMenuNo() {
return menuNo;
}
public void setMenuNo(Integer menuNo) {
this.menuNo = menuNo;
}
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;
condition.put("pageIndex", pageIndex);
}
public int getPageUnit() {
return pageUnit;
}
public void setPageUnit(int pageUnit) {
this.pageUnit = pageUnit;
condition.put("pageUnit", pageUnit);
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
condition.put("pageSize", pageSize);
}
public int getFirstIndex() {
return firstIndex;
}
public void setFirstIndex(int firstIndex) {
this.firstIndex = firstIndex;
condition.put("firstIndex", firstIndex);
}
public int getLastIndex() {
return lastIndex;
}
public void setLastIndex(int lastIndex) {
this.lastIndex = lastIndex;
condition.put("lastIndex", lastIndex);
}
public int getRecordCountPerPage() {
return recordCountPerPage;
}
public void setRecordCountPerPage(int recordCountPerPage) {
this.recordCountPerPage = recordCountPerPage;
condition.put("recordCountPerPage", recordCountPerPage);
}
public String getSearchKeywordFrom() {
return searchKeywordFrom;
}
public void setSearchKeywordFrom(String searchKeywordFrom) {
this.searchKeywordFrom = searchKeywordFrom;
}
public String getSearchKeywordTo() {
return searchKeywordTo;
}
public void setSearchKeywordTo(String searchKeywordTo) {
this.searchKeywordTo = searchKeywordTo;
}
/**
* 검색파라미터 문자열을 리턴한다.
* @return
*/
public String getParams() {
return getParams(true);
}
/**
* 검색파라미터 문자열을 리턴한다.
* @param appendPageIndex-pageindex를 붙힐지말지여부
* @return
*/
public String getParams(boolean appendPageIndex) {
StringBuffer parameterString = new StringBuffer();
if (appendPageIndex) {
parameterString.append("pageIndex=");
parameterString.append(this.pageIndex);
parameterString.append("&");
}
parameterString.append("pageUnit=");
parameterString.append(this.pageUnit);
parameterString.append("&pageSize=");
parameterString.append(this.pageSize);
parameterString.append("&searchCondition=");
parameterString.append(StringUtils.defaultString(this.searchCondition));
parameterString.append("&searchKeyword=");
try {
parameterString.append(URLEncoder.encode(StringUtils.defaultString(this.searchKeyword), "UTF-8"));
} catch (UnsupportedEncodingException e) {
System.out.println("UnsupportedEncodingException By Criteria.getParams() [searchValue] : " + e.getMessage());
}
parameterString.append("&menuNo=");
parameterString.append((this.menuNo != null) ? this.menuNo : "");
if (this.condition.size() > 0) {
Set<String> set = this.condition.keySet();
Iterator<String> iter = set.iterator();
while (iter.hasNext()) {
String key = iter.next();
Object value = this.condition.get(key);
Boolean append = this.paramViewMap.get(key)!=null?this.paramViewMap.get(key):true;
if (append) {
parameterString.append("&condition.");
parameterString.append(key);
parameterString.append("=");
if (value instanceof String) {
if (StringUtils.isNotEmpty((String) value)) {
try {
parameterString.append(URLEncoder.encode((String) value, "UTF-8"));
} catch (UnsupportedEncodingException e) {
System.out.println("UnsupportedEncodingException By Criteria.getParams() [condition] : " + e.getMessage());
}
}
} else {
parameterString.append(value);
}
}
}
}
return parameterString.toString();
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}

View File

@ -0,0 +1,88 @@
package itn.com.cmm.util;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Month;
import java.time.format.DateTimeFormatter;
/**
*
* @author : 이호영
* @fileName : DateUtil.java
* @date : 2023.04.06
* @description : Date 다루는 Util
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2023.04.06 이호영 최초 생성
*
*
*
*/
public final class DateUtil {
/**
* @methodName : getTodayYearAndMonthAndFirstDay
* @author : 이호영
* @date : 2023.04.06
* @description : 해당 년월일 구하기 : 일은 1일
* @return ex) 2023/04/01
*/
public static String getTodayYearAndMonthAndFirstDay() {
LocalDate currentDate = LocalDate.now();
return LocalDate.of(currentDate.getYear(), currentDate.getMonthValue(), 1)
.format( DateTimeFormatter.ofPattern("yyyy/MM/dd"));
}
/**
* @methodName : getTodayYearAndMonthAndLastDay
* @author : 이호영
* @date : 2023.04.06
* @description : 해당 년월일 구하기 : 일은 마지막일
* @return ex) 2023/04/30
*/
public static String getTodayYearAndMonthAndLastDay() {
LocalDate currentDate = LocalDate.now();
return LocalDate.of(currentDate.getYear(), currentDate.getMonthValue(), currentDate.lengthOfMonth())
.format( DateTimeFormatter.ofPattern("yyyy/MM/dd"));
}
/**
* @methodName : getNowYearToString
* @author : 이호영
* @date : 2023.04.07
* @description : 현재 연도
* @return : String
*/
public static String getNowYearToString() {
return Integer.toString(LocalDate.now().getYear());
}
/**
* @methodName : getNowMonthToString
* @author : 이호영
* @date : 2023.04.07
* @description : 현재
* @return : String
*/
public static String getNowMonthToString() {
LocalDate currentDate = LocalDate.now();
return Integer.toString(currentDate.getMonthValue());
}
/**
* @methodName : getNowDayToString
* @author : 이호영
* @date : 2023.04.07
* @description : 현재
* @return : String
*/
public static String getNowDayToString() {
LocalDate currentDate = LocalDate.now();
return Integer.toString(currentDate.getDayOfMonth());
}
}

View File

@ -0,0 +1,83 @@
package itn.com.cmm.util;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Utility class to support to logging information
* @author Vincent Han
* @since 2014.09.18
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2014.09.18 표준프레임워크센터 최초 생성
*
* </pre>
*/
public class EgovBasicLogger {
private static final Level IGNORE_INFO_LEVEL = Level.OFF;
private static final Level DEBUG_INFO_LEVEL = Level.FINEST;
private static final Level INFO_INFO_LEVEL = Level.INFO;
private static final Logger ignoreLogger = Logger.getLogger("ignore");
private static final Logger debugLogger = Logger.getLogger("debug");
private static final Logger infoLogger = Logger.getLogger("info");
/**
* 기록이나 처리가 불필요한 경우 사용.
* @param message
* @param exception
*/
public static void ignore(String message, Exception exception) {
if (exception == null) {
ignoreLogger.log(IGNORE_INFO_LEVEL, message);
} else {
ignoreLogger.log(IGNORE_INFO_LEVEL, message, exception);
}
}
/**
* 기록이나 처리가 불필요한 경우 사용.
* @param message
* @param exception
*/
public static void ignore(String message) {
ignore(message, null);
}
/**
* 디버그 정보를 기록하는 경우 사용.
* @param message
* @param exception
*/
public static void debug(String message, Exception exception) {
if (exception == null) {
debugLogger.log(DEBUG_INFO_LEVEL, message);
} else {
debugLogger.log(DEBUG_INFO_LEVEL, message, exception);
}
}
/**
* 디버그 정보를 기록하는 경우 사용.
* @param message
* @param exception
*/
public static void debug(String message) {
debug(message, null);
}
/**
* 일반적이 정보를 기록하는 경우 사용.
* @param message
* @param exception
*/
public static void info(String message) {
infoLogger.log(INFO_INFO_LEVEL, message);
}
}

View File

@ -0,0 +1,118 @@
package itn.com.cmm.util;
import java.util.Map;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartHttpServletRequest;
/**
* Utility class to support to double submit preventer
* @author Vincent Han
* @since 2014.08.07
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2014.08.07 표준프레임워크센터 최초 생성
*
* </pre>
*/
public class EgovDoubleSubmitHelper {
private static final Logger LOGGER = LoggerFactory.getLogger(EgovDoubleSubmitHelper.class);
public final static String SESSION_TOKEN_KEY = "egovframework.double.submit.preventer.session.key";
public final static String PARAMETER_NAME = "egovframework.double.submit.preventer.parameter.name";
public final static String DEFAULT_TOKEN_KEY = "DEFAULT";
public static String getNewUUID() {
return UUID.randomUUID().toString().toUpperCase();
}
public static boolean checkAndSaveToken() {
return checkAndSaveToken(DEFAULT_TOKEN_KEY);
}
public static boolean checkAndSaveToken(String tokenKey) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
HttpSession session = request.getSession();
// check session...
if (session.getAttribute(EgovDoubleSubmitHelper.SESSION_TOKEN_KEY) == null) {
return false;
//throw new RuntimeException("Double Submit Preventer TagLig isn't set. Check JSP.");
}
String parameter = request.getParameter(EgovDoubleSubmitHelper.PARAMETER_NAME);
// check parameter
if (parameter == null) {
return false;
//throw new RuntimeException("Double Submit Preventer parameter isn't set. Check JSP.");
}
@SuppressWarnings("unchecked")
Map<String, String> map = (Map<String, String>) session.getAttribute(EgovDoubleSubmitHelper.SESSION_TOKEN_KEY);
if (parameter.equals(map.get(tokenKey))) {
LOGGER.debug("[Double Submit] session token ({}) equals to parameter token.", tokenKey);
map.put(tokenKey, getNewUUID());
return true;
}
LOGGER.debug("[Double Submit] session token ({}) isn't equal to parameter token.", tokenKey);
return false;
}
public static boolean checkAndSaveToken(String tokenKey , MultipartHttpServletRequest multiRequest) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
HttpSession session = request.getSession();
// check session...
if (session.getAttribute(EgovDoubleSubmitHelper.SESSION_TOKEN_KEY) == null) {
throw new RuntimeException("Double Submit Preventer TagLig isn't set. Check JSP.");
}
//String parameter = request.getParameter(EgovDoubleSubmitHelper.PARAMETER_NAME);
String parameter = multiRequest.getParameter(EgovDoubleSubmitHelper.PARAMETER_NAME);
// check parameter
if (parameter == null) {
throw new RuntimeException("Double Submit Preventer parameter isn't set. Check JSP.");
}
@SuppressWarnings("unchecked")
Map<String, String> map = (Map<String, String>) session.getAttribute(EgovDoubleSubmitHelper.SESSION_TOKEN_KEY);
if (parameter.equals(map.get(tokenKey))) {
LOGGER.debug("[Double Submit] session token ({}) equals to parameter token.", tokenKey);
map.put(tokenKey, getNewUUID());
return true;
}
LOGGER.debug("[Double Submit] session token ({}) isn't equal to parameter token.", tokenKey);
return false;
}
}

View File

@ -0,0 +1,126 @@
package itn.com.cmm.util;
import java.io.Closeable;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Wrapper;
/**
* Utility class to support to close resources
* @author Vincent Han
* @since 2014.09.18
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2014.09.18 표준프레임워크센터 최초 생성
*
* </pre>
*/
public class EgovResourceCloseHelper {
/**
* Resource close 처리.
* @param resources
*/
public static void close(Closeable ... resources) {
for (Closeable resource : resources) {
if (resource != null) {
try {
resource.close();
} catch (Exception ignore) {
EgovBasicLogger.ignore("Occurred Exception to close resource is ingored!!");
}
}
}
}
/**
* JDBC 관련 resource 객체 close 처리
* @param objects
*/
public static void closeDBObjects(Wrapper ... objects) {
for (Object object : objects) {
if (object != null) {
if (object instanceof ResultSet) {
try {
((ResultSet)object).close();
} catch (Exception ignore) {
EgovBasicLogger.ignore("Occurred Exception to close resource is ingored!!");
}
} else if (object instanceof Statement) {
try {
((Statement)object).close();
} catch (Exception ignore) {
EgovBasicLogger.ignore("Occurred Exception to close resource is ingored!!");
}
} else if (object instanceof Connection) {
try {
((Connection)object).close();
} catch (Exception ignore) {
EgovBasicLogger.ignore("Occurred Exception to close resource is ingored!!");
}
} else {
throw new IllegalArgumentException("Wrapper type is not found : " + object.toString());
}
}
}
}
/**
* Socket 관련 resource 객체 close 처리
* @param objects
*/
public static void closeSocketObjects(Socket socket, ServerSocket server) {
if (socket != null) {
try {
socket.shutdownOutput();
} catch (Exception ignore) {
EgovBasicLogger.ignore("Occurred Exception to shutdown ouput is ignored!!");
}
try {
socket.close();
} catch (Exception ignore) {
EgovBasicLogger.ignore("Occurred Exception to close resource is ignored!!");
}
}
if (server != null) {
try {
server.close();
} catch (Exception ignore) {
EgovBasicLogger.ignore("Occurred Exception to close resource is ignored!!");
}
}
}
/**
* Socket 관련 resource 객체 close 처리
*
* @param sockets
*/
public static void closeSockets(Socket ... sockets) {
for (Socket socket : sockets) {
if (socket != null) {
try {
socket.shutdownOutput();
} catch (Exception ignore) {
EgovBasicLogger.ignore("Occurred Exception to shutdown ouput is ignored!!");
}
try {
socket.close();
} catch (Exception ignore) {
EgovBasicLogger.ignore("Occurred Exception to close resource is ignored!!");
}
}
}
}
}

View File

@ -0,0 +1,67 @@
package itn.com.cmm.util;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.ss.usermodel.Workbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.sf.jxls.exception.ParsePropertyException;
import net.sf.jxls.transformer.XLSTransformer;
public class ExcelDownloadUtil {
private static final Logger logger = LoggerFactory.getLogger(ExcelDownloadUtil.class);
/**
* 엑셀 다운로드<br>
* - jxl 사용 : 템플릿 xlsx 필요<br>
* @param request
* @param response
* @param mapData : 바인딩 데이터
* @param saveFilename : 또는 null일 경우 yyyy-MM-dd_HHmm.xlsx
* @param templateFileName : /excels 디렉토리 엑셀 템플릿 파일명
*/
public static void downloadExcel(HttpServletRequest request, HttpServletResponse response, Map<String, Object> mapData, String saveFilename, String templateFileName) {
String sTemplatePath = request.getSession().getServletContext().getRealPath("/excels");
InputStream is = null;
OutputStream os = null;
try {
is = new BufferedInputStream(new FileInputStream(sTemplatePath + "/" + templateFileName));
XLSTransformer transformer = new XLSTransformer();
Workbook resultWorkbook = transformer.transformXLS(is, mapData);
if (StringUtil.isEmpty(saveFilename))
saveFilename = StringUtil.getDateToString("yyyy-MM-dd_HHmm");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\"" + saveFilename + ".xlsx\"");
os = response.getOutputStream();
resultWorkbook.write(os);
os.flush();
os.close();
is.close();
}
catch (ParsePropertyException | IOException | org.apache.poi.openxml4j.exceptions.InvalidFormatException e) {
logger.error("MakeExcel Exception : {}", e.getMessage(), e);
}
finally {
if (os != null)
os = null;
if (is != null)
is = null;
}
}
}

View File

@ -0,0 +1,646 @@
package itn.com.cmm.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.MultiValueMap;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import itn.com.cmm.service.EgovProperties;
public class ExcelUploadUtil {
private static final Logger logger = LoggerFactory.getLogger(ExcelUploadUtil.class);
/**
* 업로드 엑셀 읽기 - 파일 개만 지원<br>
* - 엑셀 파일의 번째 레코드를 HasMap 이름으로 사용 - 엑셀 파일의 번째 레코드부터 데이터로 저장<br>
* @param request
* @param uploadFolder
* @return
* @throws Exception
*/
public static List<HashMap<String, String>> readExcel(MultipartHttpServletRequest request, String uploadFolder) throws Exception {
return readExcel(request, uploadFolder, null);
}
/**
* 업로드 엑셀 읽기 - 파일 개만 지원, 번째 시트만 처리<br><br>
* - 지정한 배열로 HashMap key name 적용<br>
* - 엑셀 파일의 번째 레코드부터 데이터로 저장<br>
* @param request
* @param uploadFolder
* @param columnNames null일 경우 엑셀 레코드를 컬럼 이름으로 사용
* @return
* @throws Exception
*/
public static List<HashMap<String, String>> readExcel(MultipartHttpServletRequest request, String uploadFolder, String[] columnNames) throws Exception {
return readExcel(request, uploadFolder, columnNames, 1);
}
/**
* 업로드 엑셀 읽기 - 파일 개만 지원, 번째 시트만 처리<br><br>
*
* @param request
* @param uploadFolder : 서브 디렉토리 : =/uploadRoot/com/[yyyyMMdd]/, 값이 있으면=/uploadRoot/[uploadFolder]
* @param columnNames : HasMap key name : null일 경우 엑셀 레코드를 컬럼 이름으로 사용
* @param startRecord : 데이터를 가져올 시작 레코드 : 레코드 = 1
* @return
* @throws Exception
*/
public static List<HashMap<String, String>> readExcel(MultipartHttpServletRequest request, String uploadFolder, String[] columnNames, int startRecord) throws Exception {
MultiValueMap<String, MultipartFile> files = request.getMultiFileMap();
//String sUploadPathProperty = "upload.path.physical." + EgovProperties.getProperty("globals.web.mode");
String sUploadPathProperty = "/temp";
String sSubDir = uploadFolder;
if (StringUtil.isEmpty(sSubDir)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM", Locale.getDefault());
//sSubDir = EgovProperties.getProperty("upload.path.common") + "/" + sdf.format(new Date()) + "/";
sSubDir = "/test";
}
//File uploadPath = new File(EgovProperties.getProperty(sUploadPathProperty), sSubDir);
File uploadPath = new File("/usr", "temp");
if (!uploadPath.exists())
uploadPath.mkdirs();
List<HashMap<String, String>> list = null;
for (String param : files.keySet()) {
List<MultipartFile> fileList = files.get(param);
//MimeUtil mu = new MimeUtil();
//boolean isExcel = mu.isEnableMimeTypes(fileList, "application/vnd.ms-excel", "application/vnd.openxmlformats");
//if (!isExcel)
// throw new FileUploadException("지원되지 않는 형식의 파일입니다.\n엑셀 파일만 업로드할 수 있습니다.");
if (fileList.size() > 0) {
MultipartFile file = fileList.get(0);
File savedFile = new File(uploadPath, file.getOriginalFilename());
file.transferTo(savedFile);
list = readExcel(savedFile, columnNames, startRecord);
String ddd = "";
}
}
return list;
}
/**
* 업로드 엑셀 읽기 - 파일 개만 지원, 모든 시트 처리
* @param request
* @param uploadFolder
* @param columnNames
* @param startRecord
* @return
* @throws Exception
*/
public static HashMap<String, List<HashMap<String, String>>> readExcelSheets(MultipartHttpServletRequest request, String uploadFolder, String[] columnNames, int startRecord) throws Exception {
MultiValueMap<String, MultipartFile> files = request.getMultiFileMap();
String sUploadPathProperty = "upload.path.physical." + EgovProperties.getProperty("globals.web.mode");
String sSubDir = uploadFolder;
if (StringUtil.isEmpty(sSubDir)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM", Locale.getDefault());
sSubDir = EgovProperties.getProperty("upload.path.common") + "/" + sdf.format(new Date()) + "/";
}
File uploadPath = new File(EgovProperties.getProperty(sUploadPathProperty), sSubDir);
if (!uploadPath.exists())
uploadPath.mkdirs();
HashMap<String, List<HashMap<String, String>>> list = null;
for (String param : files.keySet()) {
List<MultipartFile> fileList = files.get(param);
//MimeUtil mu = new MimeUtil();
//boolean isExcel = mu.isEnableMimeTypes(fileList, "application/vnd.ms-excel", "application/vnd.openxmlformats");
//if (!isExcel)
// throw new FileUploadException("지원되지 않는 형식의 파일입니다.\n엑셀 파일만 업로드할 수 있습니다.");
if (fileList.size() > 0) {
MultipartFile file = fileList.get(0);
File savedFile = new File(uploadPath, file.getOriginalFilename());
file.transferTo(savedFile);
list = readExcelSheets(savedFile, columnNames, startRecord);
}
}
return list;
}
/**
* 엑셀 파일 읽어오기 - Workbook 인터페이스 적용<br>
* - 번째 시트만 처리<br>
* - 주의 : 숫자형 데이터는 기본적으로 double type으로 반환. 숫자형 데이터가 .0으로 끝날 경우 int로 변환하여 반환<br>
* - 이름 미지정 가능 : 엑셀 레코드를 이름으로 사용 <br>
* @param saveFile
* @param keyNm 리턴 hashmap에 부여될 이름. null일 경우 엑셀 레코드를 이름으로 사용
* @return
* @throws Exception
*/
private static List<HashMap<String, String>> readExcel(File saveFile, String[] keyNm) throws Exception {
return readExcel(saveFile, keyNm, 1);
}
/**
* 엑셀 파일 읽어오기 - Workbook 인터페이스 적용<br>
* - 번째 시트만 처리<br>
* - 주의 : 숫자형 데이터는 기본적으로 double type으로 반환. 숫자형 데이터가 .0으로 끝날 경우 int로 변환하여 반환<br>
* - 이름 미지정 가능 : 엑셀 레코드를 이름으로 사용 <br>
* @param saveFile
* @param keyNm 리턴 hashmap에 부여될 이름. null일 경우 엑셀 레코드를 이름으로 사용
* @param startRecord 데이터를 가져올 시작 레코드 : 레코드 = 1
* @return
* @throws Exception
*/
private static List<HashMap<String, String>> readExcel(File saveFile, String[] keyNm, int startRecord) throws Exception {
Workbook wb = WorkbookFactory.create(saveFile);
wb.setMissingCellPolicy(MissingCellPolicy.CREATE_NULL_AS_BLANK);
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
List<HashMap<String, String>> excelRows = new ArrayList<HashMap<String, String>>();
boolean hasKeyName = true;
if (keyNm == null)
hasKeyName = false;
try {
//hashmap용 key이름이 없을 경우 엑셀 1st row를 key 이름으로 설정
if (!hasKeyName && wb.getSheetAt(0).getLastRowNum() > 0) {
keyNm = new String[wb.getSheetAt(0).getRow(0).getLastCellNum()];
for (int i = 0; i < wb.getSheetAt(0).getRow(0).getLastCellNum(); i++)
try {
keyNm[i] = wb.getSheetAt(0).getRow(0).getCell(i).getStringCellValue();
}
catch (Exception e) {
keyNm[i] = "";
}
}
//int iRow = 0;
for (Row row : wb.getSheetAt(0)) {
//logger.debug(">>>>>>>>>>>>> excel row : {}", ++iRow);
if (!hasKeyName && row.getRowNum() == 0)
continue;
if (startRecord > row.getRowNum() + 1)
continue;
HashMap<String, String> excelCols = new HashMap<String, String>();
//주의 : foreach를 사용할 경우 컬럼이 값이면 해당 컬럼 자제가 없어짐 (컬럼 인덱스가 달라짐)
for (int i = 0; i < row.getLastCellNum(); i++) {
//cell을 가져올 MissingCellPolicy.CREATE_NULL_AS_BLANK 옵션 사용 필수 : 컬럼일 때도 값을 가져옴. poi v3.16이상 지원
Cell cell = row.getCell(i, MissingCellPolicy.CREATE_NULL_AS_BLANK);
String strVal = "";
//logger.debug(">>>>> {}, {}, {}", cell.getColumnIndex(), keyNm[cell.getColumnIndex()], cell.getCellTypeEnum().equals(CellType.NUMERIC) ? cell.getNumericCellValue() : cell.getStringCellValue());
switch (cell.getCellTypeEnum()) {
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
java.util.Date dateValue = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat(EgovProperties.getProperty("common.date.type"));
strVal = sdf.format(dateValue);
}
else {
if (String.valueOf(cell.getNumericCellValue()).matches("[\\d]{1,}\\.0$"))
strVal = String.valueOf(Double.valueOf(cell.getNumericCellValue()).intValue());
else
strVal = String.valueOf(cell.getNumericCellValue());
}
break;
case FORMULA:
strVal = evaluator.evaluate(cell).getStringValue(); // .getCellFormula();
break;
case BOOLEAN:
if (cell.getBooleanCellValue())
strVal = "true";
else
strVal = "false";
break;
// case Cell.CELL_TYPE_ERROR:
// break;
//
case _NONE:
case BLANK:
strVal = "";
break;
default:
strVal = cell.getStringCellValue();
break;
}
//issue : 컬럼 헤더 개수와 레코드 컬럼 개수가 맞지 않는 문제 발생
if ((i + 1) <= keyNm.length)
excelCols.put(keyNm[cell.getColumnIndex()], strVal);
}
//logger.debug(">>>>>>>>>>>>> excelCols : {}", excelCols.toString());
excelRows.add(excelCols);
}
//logger.debug(">>>>>>>>>> saveFile : {}", saveFile.getAbsolutePath());
}
catch (Exception ex) {
logger.error(ex.getMessage(), ex);
throw ex;
}
finally {
wb.close();
if (saveFile.exists())
saveFile.delete();
}
return excelRows;
}
private static HashMap<String, List<HashMap<String, String>>> readExcelSheets(File saveFile, String[] keyNm, int startRecord) throws Exception {
HashMap<String, List<HashMap<String, String>>> excels = new HashMap<>();
Workbook wb = WorkbookFactory.create(saveFile);
wb.setMissingCellPolicy(MissingCellPolicy.CREATE_NULL_AS_BLANK);
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
boolean hasKeyName = true;
if (keyNm == null)
hasKeyName = false;
try {
//repeat sheet
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
List<HashMap<String, String>> excelRows = new ArrayList<HashMap<String, String>>();
// 이름이 없을 경우 엑셀 레코드를 이름으로 사용
if (!hasKeyName && wb.getSheetAt(i).getLastRowNum() > 0) {
keyNm = new String[wb.getSheetAt(i).getRow(0).getLastCellNum()];
for (int j = 0; j < wb.getSheetAt(i).getRow(0).getLastCellNum(); j++)
try {
keyNm[j] = wb.getSheetAt(i).getRow(0).getCell(i).getStringCellValue();
}
catch (Exception e) {
keyNm[j] = "";
}
}
for (Row row : wb.getSheetAt(i)) {
if (!hasKeyName && row.getRowNum() == 0)
continue;
if (startRecord > row.getRowNum() + 1)
continue;
HashMap<String, String> excelCols = new HashMap<String, String>();
//주의 : foreach를 사용할 경우 컬럼이 값이면 해당 컬럼 자제가 없어짐 (컬럼 인덱스가 달라짐)
for (int k = 0; k < row.getLastCellNum(); k++) {
//cell을 가져올 MissingCellPolicy.CREATE_NULL_AS_BLANK 옵션 사용 필수 : 컬럼일 때도 값을 가져옴. poi v3.16이상 지원
Cell cell = row.getCell(k, MissingCellPolicy.CREATE_NULL_AS_BLANK);
String strVal = "";
//logger.debug(">>>>> {}, {}, {}", cell.getColumnIndex(), keyNm[cell.getColumnIndex()], cell.getCellTypeEnum().equals(CellType.NUMERIC) ? cell.getNumericCellValue() : cell.getStringCellValue());
switch (cell.getCellTypeEnum()) {
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
java.util.Date dateValue = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat(EgovProperties.getProperty("common.date.type"));
strVal = sdf.format(dateValue);
}
else {
if (String.valueOf(cell.getNumericCellValue()).matches("[\\d]{1,}\\.0$"))
strVal = String.valueOf(Double.valueOf(cell.getNumericCellValue()).intValue());
else
strVal = String.valueOf(cell.getNumericCellValue());
}
break;
case FORMULA:
strVal = evaluator.evaluate(cell).getStringValue(); // .getCellFormula();
break;
case BOOLEAN:
if (cell.getBooleanCellValue())
strVal = "true";
else
strVal = "false";
break;
case ERROR:
case _NONE:
case BLANK:
strVal = "";
break;
default:
strVal = cell.getStringCellValue();
break;
}
excelCols.put(keyNm[cell.getColumnIndex()], strVal);
}
excelRows.add(excelCols);
}
excels.put(wb.getSheetName(i), excelRows);
}
}
catch (Exception ex) {
logger.error(ex.getMessage(), ex);
throw ex;
}
finally {
wb.close();
if (saveFile.exists())
saveFile.delete();
}
return excels;
}
/**
* 업로드 엑셀이 확장자가 xlsx 일경우
*
* @param savedFile
* @param keyNm
* @return
* @throws Exception
*/
@Deprecated
private static List<HashMap<String, String>> readExcelXlsx(File savedFile, String[] keyNm) throws Exception {
XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(savedFile));
List<HashMap<String, String>> excelRows = new ArrayList<HashMap<String, String>>();
try {
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
for (Row row : wb.getSheetAt(i)) {
HashMap<String, String> excelCols = new HashMap<String, String>();
int cellCnt = 0;
String strVal = "";
for (Cell cell : row) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getRichStringCellValue().getString());
strVal = cell.getRichStringCellValue().getString();
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
java.util.Date dateValue = cell.getDateCellValue();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
System.out.print(format.format(dateValue)); // 2009-05-29
strVal = format.format(dateValue);
} else {
System.out.print(Double.valueOf(cell.getNumericCellValue()).intValue());
strVal = Double.valueOf(cell.getNumericCellValue()).intValue() + "";
}
break;
case Cell.CELL_TYPE_FORMULA:
System.out.print(cell.getCellFormula());
strVal = cell.getCellFormula();
break;
case Cell.CELL_TYPE_BOOLEAN:
System.out.print(cell.getBooleanCellValue());
if (cell.getBooleanCellValue()) {
strVal = "true";
} else {
strVal = "false";
}
break;
case Cell.CELL_TYPE_ERROR:
System.out.print(cell.getErrorCellValue());
break;
case Cell.CELL_TYPE_BLANK:
break;
default:
break;
}
excelCols.put(keyNm[cellCnt], strVal);
cellCnt++;
}
excelRows.add(excelCols);
}
}
}
catch (Exception ex) {
//ex.printStackTrace();
throw ex;
}
return excelRows;
}
/**
* 업로드 엑셀이 확장자가 xls 일경우
*
* @param savedFile
* @param keyNm
* @return
* @throws IOException
*/
@Deprecated
private static List<HashMap<String, String>> readExcelXls(File savedFile, String[] keyNm) throws Exception {
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(savedFile));
List<HashMap<String, String>> excelDate = new ArrayList<HashMap<String, String>>();
try {
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
for (Row row : wb.getSheetAt(i)) {
HashMap<String, String> dateMap = new HashMap<String, String>();
int cellCnt = 0;
String strVal = "";
for (Cell cell : row) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getRichStringCellValue().getString());
strVal = cell.getRichStringCellValue().getString();
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
java.util.Date dateValue = cell.getDateCellValue();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
System.out.print(format.format(dateValue)); // 2009-05-29
strVal = format.format(dateValue);
} else {
System.out.print(Double.valueOf(cell.getNumericCellValue()).intValue());
strVal = Double.valueOf(cell.getNumericCellValue()).intValue() + "";
}
break;
case Cell.CELL_TYPE_FORMULA:
System.out.print(cell.getCellFormula());
strVal = cell.getCellFormula();
break;
case Cell.CELL_TYPE_BOOLEAN:
System.out.print(cell.getBooleanCellValue());
if (cell.getBooleanCellValue()) {
strVal = "true";
} else {
strVal = "false";
}
break;
case Cell.CELL_TYPE_ERROR:
System.out.print(cell.getErrorCellValue());
break;
case Cell.CELL_TYPE_BLANK:
break;
default:
break;
}
System.out.print("\t");
dateMap.put(keyNm[cellCnt], strVal);
cellCnt++;
}
excelDate.add(dateMap);
System.out.println();
}
}
} catch (Exception ex) {
//ex.printStackTrace();
throw ex;
}
return excelDate;
}
private static List<HashMap<String, String>> readOnlyExcel(File saveFile, String[] keyNm, int startRecord) throws Exception {
Workbook wb = WorkbookFactory.create(saveFile);
wb.setMissingCellPolicy(MissingCellPolicy.CREATE_NULL_AS_BLANK);
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
List<HashMap<String, String>> excelRows = new ArrayList<HashMap<String, String>>();
boolean hasKeyName = true;
if (keyNm == null)
hasKeyName = false;
try {
//hashmap용 key이름이 없을 경우 엑셀 1st row를 key 이름으로 설정
if (!hasKeyName && wb.getSheetAt(0).getLastRowNum() > 0) {
keyNm = new String[wb.getSheetAt(0).getRow(0).getLastCellNum()];
for (int i = 0; i < wb.getSheetAt(0).getRow(0).getLastCellNum(); i++)
try {
keyNm[i] = wb.getSheetAt(0).getRow(0).getCell(i).getStringCellValue();
}
catch (Exception e) {
keyNm[i] = "";
}
}
//int iRow = 0;
for (Row row : wb.getSheetAt(0)) {
//logger.debug(">>>>>>>>>>>>> excel row : {}", ++iRow);
if (!hasKeyName && row.getRowNum() == 0)
continue;
if (startRecord > row.getRowNum() + 1)
continue;
HashMap<String, String> excelCols = new HashMap<String, String>();
//주의 : foreach를 사용할 경우 컬럼이 값이면 해당 컬럼 자제가 없어짐 (컬럼 인덱스가 달라짐)
for (int i = 0; i < row.getLastCellNum(); i++) {
//cell을 가져올 MissingCellPolicy.CREATE_NULL_AS_BLANK 옵션 사용 필수 : 컬럼일 때도 값을 가져옴. poi v3.16이상 지원
Cell cell = row.getCell(i, MissingCellPolicy.CREATE_NULL_AS_BLANK);
String strVal = "";
//logger.debug(">>>>> {}, {}, {}", cell.getColumnIndex(), keyNm[cell.getColumnIndex()], cell.getCellTypeEnum().equals(CellType.NUMERIC) ? cell.getNumericCellValue() : cell.getStringCellValue());
switch (cell.getCellTypeEnum()) {
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
java.util.Date dateValue = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat(EgovProperties.getProperty("common.date.type"));
strVal = sdf.format(dateValue);
}
else {
if (String.valueOf(cell.getNumericCellValue()).matches("[\\d]{1,}\\.0$"))
strVal = String.valueOf(Double.valueOf(cell.getNumericCellValue()).intValue());
else
strVal = String.valueOf(cell.getNumericCellValue());
}
break;
case FORMULA:
strVal = evaluator.evaluate(cell).getStringValue(); // .getCellFormula();
break;
case BOOLEAN:
if (cell.getBooleanCellValue())
strVal = "true";
else
strVal = "false";
break;
// case Cell.CELL_TYPE_ERROR:
// break;
//
case _NONE:
case BLANK:
strVal = "";
break;
default:
strVal = cell.getStringCellValue();
break;
}
//issue : 컬럼 헤더 개수와 레코드 컬럼 개수가 맞지 않는 문제 발생
if ((i + 1) <= keyNm.length)
excelCols.put(keyNm[cell.getColumnIndex()], strVal);
}
//logger.debug(">>>>>>>>>>>>> excelCols : {}", excelCols.toString());
excelRows.add(excelCols);
}
//logger.debug(">>>>>>>>>> saveFile : {}", saveFile.getAbsolutePath());
}
catch (Exception ex) {
logger.error(ex.getMessage(), ex);
throw ex;
}
finally {
wb.close();
if (saveFile.exists())
saveFile.delete();
}
return excelRows;
}
}

View File

@ -0,0 +1,498 @@
package itn.com.cmm.util;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import itn.com.cmm.JsonResult;
import itn.let.fax.user.service.FaxGroupDataVO;
import itn.let.mjo.msgdata.service.PhoneVO;
/**
*
* @author : 이호영
* @fileName : FaxUtil.java
* @date : 2023.03.20
* @description : 팩스 관련 Util
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2023.03.20 이호영 최초 생성
*
*
*
*/
public final class FaxUtil {
public static HttpServletResponse getResponse() {
ServletRequestAttributes attr =
(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
return attr.getResponse();
}
/**
* @methodName : checkHpNum
* @author : 이호영
* @date : 2023.03.20
* @description :
* @param faxConvertFilePath
* @param seq
* @return
*/
public static String makeDownloadPath(String faxConvertFilePath, String seq) {
return faxConvertFilePath + "/" + seq + ".pdf";
}
/**
* @methodName : exelFileConvertForFax
* @author : 이준호
* @date : 2023.05.08
* @description :
* @param multiRequest
* @return
*/
public static JsonResult exelFileConvertForFax(MultipartHttpServletRequest multiRequest) {
JsonResult jr = new JsonResult();
jr.setSuccess(false);
jr.setMessage("엑셀 파일만 업로드할 수 있습니다.");
//final Map<String, MultipartFile> files = multiRequest.getFileMap();
List<MultipartFile> files = (List<MultipartFile>) multiRequest.getFiles("file0");
// 파일명에 . 있을경우 오류 => Ex) 테스트6.20.xlsx
int fileNameSplitCnt = 0;
if(!files.isEmpty()) {
fileNameSplitCnt = files.get(0).getOriginalFilename().split("[.]").length;
if (files.get(0).getSize() > 0
&& (files.get(0).getContentType().indexOf("spreadsheetml") > -1)
|| files.get(0).getContentType().indexOf("ms-excel") > -1
|| files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xlsx") > -1
|| files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xls") > -1) {
// 엑셀 파일 용량 3MB이상 10만건 이상으로 서버가 다운되는 증상 발생
long fileSize = multiRequest.getFile("file0").getSize();
if(fileSize > 3374653) {
jr.setMessage("엑셀 파일은 3MB를 넘을수 없습니다.");
return jr;
}
String Ext = files.get(0).getOriginalFilename().split("[.]")[1];
String errMessage = "";
String cellValue = "";
// String phoneRegExp = "^(050[234567]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
int errPhoneCnt = 0;
int errNameCnt = 0;
try {
//엑셀 확장자에 따른 처리 로직 분리
if(Ext.equals("xls")) {
HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream());
HSSFSheet sheet = workbook.getSheetAt(0);
if(sheet.getLastRowNum() > 20000) { //
errMessage = "20000건 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.";
jr.setSuccess(false);
jr.setMessage(errMessage);
return jr;
}
List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>();
PhoneVO pVO = new PhoneVO();
for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
HSSFRow row = sheet.getRow(i); //열읽기
if(null == row) {
continue;
}
HashMap<String, String> jm = new HashMap<>();
// 행의 두번째 (이름부터 받아오기)
HSSFCell cell = null;
boolean errSts = true;
for(int j = 0 ; j < 2; j++){ //행읽기(6행까지나 2행까지만 필요)
cellValue = "";
cell = row.getCell(j); //이름/수신번호
if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
//System.out.println("Cell 데이터가 없습니다.");
if(j == 1) {
if (sheet.getLastRowNum() == i) {
continue;
}
break;
}
}
if(null != cell){
switch(cell.getCellType()){ //숫자타임을 문자로 변환
case Cell.CELL_TYPE_NUMERIC:
cell.setCellType(Cell.CELL_TYPE_STRING);
}
cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ;
}
if(j == 0) {
//이름
boolean nmChk = getNameRepLenChk("name", cellValue);
if(nmChk && errSts) {
jm.put("name", cellValue);
}else {
errNameCnt++;
errSts = false;
break;
}
}
if(j == 1) {
//전화번호
if(errSts) {
jm.put("phone", cellValue);
}else {
errPhoneCnt++;
errSts = false;
break;
}
}
}
if(null != jm.get("phone") && errSts) {
json.add(jm);
}
}
int resultErrCnt = errPhoneCnt + errNameCnt;
int resultErrCntExceptPhone = errPhoneCnt + errNameCnt;
jr.setData(json);
jr.setSuccess(true);
if(resultErrCnt > 0) {
jr.setMessage("유효하지 않은 형식의 전화번호 "+ errPhoneCnt +"건,\n이름 : 20byte 제한글자수 초과 "+ resultErrCntExceptPhone +"건 있습니다.\n해당 건을 제외하고 추가됩니다.");
}else {
jr.setMessage("");
}
}else { //확장자가 xlsx
OPCPackage opcPackage = OPCPackage.open(files.get(0).getInputStream());
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);
XSSFSheet sheet = workbook.getSheetAt(0); // 첫번째 시트 불러오기
opcPackage.close();
if(sheet.getLastRowNum() > 20000) { //
errMessage = "20000건 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.";
jr.setSuccess(false);
jr.setMessage(errMessage);
return jr;
}
List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>();
PhoneVO pVO = new PhoneVO();
for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
XSSFRow row = sheet.getRow(i); //열읽기
if(null == row) {
continue;
}
HashMap<String, String> jm = new HashMap<>();
// 행의 두번째 (이름부터 받아오기)
XSSFCell cell = null;
boolean errSts = true;
for(int j = 0 ; j < 2; j++){ //행읽기(6행까지나 2행까지만 필요)
cellValue = "";
cell = row.getCell(j); //이름/수신번호
if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
if(j == 1) {
if (sheet.getLastRowNum() == i) {
continue;
}
break;
}
}
if(null != cell){
switch(cell.getCellType()){ //숫자타임을 문자로 변환
case Cell.CELL_TYPE_NUMERIC:
cell.setCellType(Cell.CELL_TYPE_STRING);
}
cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ;
}
if(j == 0) {
//이름
boolean nmChk = getNameRepLenChk("name", cellValue);
if(nmChk && errSts) {
jm.put("name", cellValue);
}else {
errNameCnt++;
errSts = false;
break;
}
}
if(j == 1) {
//수신번호
if(errSts) {
jm.put("phone", cellValue);
}else {
errPhoneCnt++;
errSts = false;
break;
}
}
}
if(null != jm.get("phone") && errSts) {
json.add(jm);
}
}
int resultErrCnt = errPhoneCnt + errNameCnt;
int resultErrCntExceptPhone = errPhoneCnt + errNameCnt;
jr.setData(json);
jr.setSuccess(true);
if(resultErrCnt > 0) {
jr.setMessage("유효하지 않은 형식의 전화번호 "+ errPhoneCnt +"건,\n이름 : 20byte 제한글자수 초과 "+ resultErrCntExceptPhone +"건 있습니다.\n해당 건을 제외하고 추가됩니다.");
}else {
jr.setMessage("");
}
} //xlsx 처리
} catch (Exception e) {
jr.setMessage("처리 중 오류가 발생했습니다. 관리자에게 문의하세요.");
}
}
}
return jr;
}
public static void getExcelForFaxSendList(List<FaxGroupDataVO> faxGroupListVO) {
HttpServletResponse response =ContextUtil.getResponse();
// 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다.
SXSSFWorkbook wb = new SXSSFWorkbook();
String fileName ="팩스 발송 내역"; // 저장 파일명
String sheetTitle = "팩스 발송 내역" ; // 제목
Sheet sheet = wb.createSheet(sheetTitle);
Cell cell = null;
Row row = null;
CellStyle style = wb.createCellStyle();
style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게
style.setBorderLeft(CellStyle.BORDER_THIN);
style.setBorderRight(CellStyle.BORDER_THIN);
style.setBorderTop(CellStyle.BORDER_THIN);
// 정렬
style.setAlignment(CellStyle.ALIGN_CENTER); //가운데 정렬
style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //높이 가운데 정렬
Font font = wb.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold
try{
//발송 성공,실패 건수 불러오기
row = sheet.createRow(0);
sheet.setColumnWidth(1, 7000); // 발송형태 칼럼의 조절
sheet.setColumnWidth(2, 5000); // 접수일자 칼럼의 조절
//셀병합 처리
sheet.addMergedRegion(new CellRangeAddress(0,1,0,0)); //번호 세로 셀병합
sheet.addMergedRegion(new CellRangeAddress(0,1,1,1)); //발송상태 세로 셀병합
sheet.addMergedRegion(new CellRangeAddress(0,1,2,2)); //접수일자 세로 셀병합
sheet.addMergedRegion(new CellRangeAddress(0,1,3,3)); //예약일자 세로 셀병합
sheet.addMergedRegion(new CellRangeAddress(0,1,4,4)); //형태 세로 셀병합
cell = row.createCell(0);
cell.setCellValue("번호");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("제목");
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue("전송시간");
cell.setCellStyle(style);
cell = row.createCell(3);
cell.setCellValue("문서 매수");
cell.setCellStyle(style);
cell = row.createCell(4);
cell.setCellValue("발송 건수");
cell.setCellStyle(style);
cell = row.createCell(5);
cell.setCellValue("발송결과 건수");
sheet.addMergedRegion(new CellRangeAddress(0,0,5,6)); // 발송결과 건수 가로 셀병합
cell.setCellStyle(style);
cell = row.createCell(6);
cell.setCellStyle(style);
row = sheet.createRow(1);
cell = row.createCell(0);
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellStyle(style);
cell = row.createCell(3);
cell.setCellStyle(style);
cell = row.createCell(4);
cell.setCellStyle(style);
cell = row.createCell(5);
cell.setCellValue("성공");
cell.setCellStyle(style);
cell = row.createCell(6);
cell.setCellValue("실패");
cell.setCellStyle(style);
int rowNum = 2;
for(FaxGroupDataVO faxGroupDataVO : faxGroupListVO) {
row = sheet.createRow(rowNum);
cell = row.createCell(0);
cell.setCellStyle(style);
cell.setCellValue(rowNum-1);
cell = row.createCell(1);
cell.setCellStyle(style);
cell.setCellValue(faxGroupDataVO.getSubject());
cell = row.createCell(2);
cell.setCellStyle(style);
cell.setCellValue(faxGroupDataVO.getDoneDate());
cell = row.createCell(3);
cell.setCellStyle(style);
cell.setCellValue(faxGroupDataVO.getPage());
cell = row.createCell(4);
cell.setCellStyle(style);
cell.setCellValue(faxGroupDataVO.getTotalEa());
cell = row.createCell(5);
cell.setCellStyle(style);
cell.setCellValue(faxGroupDataVO.getSentEa());
cell = row.createCell(6);
cell.setCellStyle(style);
cell.setCellValue(faxGroupDataVO.getHoldEa()+faxGroupDataVO.getUnSendEa()+faxGroupDataVO.getErrorEa());
rowNum++;
}
response.setHeader("Set-Cookie", "fileDownload=true; path=/");
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyyMMdd_HHmmss", Locale.KOREA );
Date currentTime = new Date ();
String mTime = mSimpleDateFormat.format ( currentTime );
fileName = fileName+"("+mTime+")";
response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx"));
wb.write(response.getOutputStream());
}catch(Exception e) {
response.setHeader("Set-Cookie", "fileDownload=false; path=/");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Content-Type","text/html; charset=utf-8");
OutputStream out = null;
try {
out = response.getOutputStream();
byte[] data = new String("fail..").getBytes();
out.write(data, 0, data.length);
} catch(Exception ignore) {
ignore.printStackTrace();
} finally {
if(out != null) try { out.close(); } catch(Exception ignore) {}
}
}finally {
// 디스크 적었던 임시파일을 제거합니다.
wb.dispose();
try { wb.close(); } catch(Exception ignore) {}
}
}
/*====================================================================
= private function zone =
====================================================================*/
// 팩스 엑셀 업로드 이름 길이 체크
private static boolean getNameRepLenChk(String type, String value) {
boolean rtnValue = true;
if(type.equals("name")) {
String tmpNm = value;
int nmLen = tmpNm.length();
if(nmLen > 12) {
rtnValue = false;
}
}else if(type.equals("rep")) {
String tmpRep = value;
int repLen = tmpRep.length();
if(repLen > 20) {
rtnValue = false;
}
}
return rtnValue;
}
}

View File

@ -0,0 +1,69 @@
package itn.com.cmm.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
/**
*
* @author : 이호영
* @fileName : FileUtil.java
* @date : 2023.04.06
* @description : 파일 관련 유틸
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2023.04.06 이호영 최초 생성
*
*
*
*/
public final class FileUtil {
/**
* @methodName : downLoad
* @author : 이호영
* @date : 2023.04.06
* @description : 파일 다운로드
* @param response
* @param fileInfo
* @param fileName
* @throws Exception
*/
public static void downLoad(HttpServletResponse response, String fileInfo, String fileNameP) throws Exception {
try {
String path = fileInfo; // 경로에 접근할 역슬래시('\') 사용
File file = new File(path);
String fileName = "";
if(StringUtils.isNotEmpty(fileNameP))
fileName = URLEncoder.encode(fileNameP,"UTF-8").replaceAll("\\+", "%20");
else
fileName = file.getName();
response.setHeader("Content-Disposition", "attachment;filename=" + fileName); // 다운로드 되거나 로컬에 저장되는 용도로 쓰이는지를 알려주는 헤더
FileInputStream fileInputStream = new FileInputStream(path); // 파일 읽어오기
OutputStream out = response.getOutputStream();
int read = 0;
byte[] buffer = new byte[1024];
while ((read = fileInputStream.read(buffer)) != -1) { // 1024바이트씩 계속 읽으면서 outputStream에 저장, -1이 나오면 더이상 읽을 파일이 없음
out.write(buffer, 0, read);
}
} catch (Exception e) {
throw new Exception("download error");
}
}
}

View File

@ -0,0 +1,95 @@
/*
* Copyright 2008-2009 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.
*/
package itn.com.cmm.util;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
public class IpUtil {
public static String getClientIP(HttpServletRequest request) {
String userip = request.getHeader("X-Forwarded-For"); // 아이피 가져오기 아파치 아래에 웹로직이 있을경우
if ( userip == null || "".equals(userip) ) { // 아이피 가져오기 , 바로 웹로직이 있을경우
userip = request.getRemoteAddr();
}
if ( userip == null || "".equals(userip) ) {
return "";
}
String[] userips = userip.split(",");
return userips[0];
}
public static String getBrowser(HttpServletRequest request) {
String header = request.getHeader("User-Agent");
System.out.println("header:"+header);
if (header.indexOf("MSIE") > -1 || header.indexOf("rv:11.0") > -1) {
return "MSIE";
}else if (header.indexOf("Opera") > -1 || header.indexOf("OPR") > -1) {
return "Opera";
}else if (header.indexOf("Chrome") > -1) {
return "Chrome";
}else if (header.indexOf("Firefox") > -1) {
return "Firefox";
}
return "Firefox";
}
public static String getStr(HttpServletRequest request,String str) throws UnsupportedEncodingException {
String header = request.getHeader("User-Agent");
String browser;
if (header.indexOf("MSIE") > -1 || header.indexOf("rv:11.0") > -1) {
browser = "MSIE";
} else if (header.indexOf("Chrome") > -1) {
browser = "Chrome";
} else if (header.indexOf("Opera") > -1) {
browser = "Opera";
} else {
browser = "Firefox";
}
if (browser.equals("MSIE")) {
str = URLEncoder.encode(str, "UTF-8")
.replaceAll("\\+", "%20");
} else if (browser.equals("Firefox")) {
str = new String(str.getBytes("UTF-8"), "8859_1");
} else if (browser.equals("Opera")) {
str = new String(str.getBytes("UTF-8"), "8859_1");
} else if (browser.equals("Chrome")) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c > '~') {
sb.append(URLEncoder.encode("" + c, "UTF-8"));
} else {
sb.append(c);
}
}
str = sb.toString();
} else {
str = "Not supported browser";
}
return str;
}
}

View File

@ -0,0 +1,312 @@
package itn.com.cmm.util;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;
public final class MJUtil {
/**
* 휴대폰번호 유효성 체크
* true, false 반환
* 대시 유무 상관없음
*/
public static boolean checkHpNum(String str) {
String regExp = "^(01[016789]{1}|070)-?[0-9]{3,4}-?[0-9]{4}$";
return Pattern.matches(regExp, str);
}
/**
* 휴대폰번호 대시('-') 추가
* 대시 유무 상관없음
* 유효성 맞지 않을시 변환안됨.
*/
public static String addDash(String str) {
String regExp = "(^01[016789]{1}|070)([0-9]{3}|[0-9]{4})([0-9]{4})$";
String chgf = "$1-$2-$3";
return str.replaceFirst(regExp, chgf);
}
/**
* 팩스 번호 유효성 체크
* true, false 반환
* 3자리를 체크
* -- 전국 지역번호
* 02 서울특별시
031 경기도
032 인천광역시
033 강원도
041 충청남도
042 대전광역시
043 충청북도
044 세종특별자치시
051 부산광역시
052 울산광역시
053 대구광역시
054 경상북도
055 경상남도
061 전라남도
062 광주광역시
063 전라북도
064 제주특별자치도
-- 타사부가번호
030*
050*
060
070
080
1**
번호로 시작하는 팩스 번호만 허용함.
*/
public static boolean checkFaxNum(String str) {
boolean result = false;
if(str.equals("") || str == null) {
return result = false;
}else {
str = str.replaceAll("-", "");
String subNum = str.substring(0,3);
String regExp = "^(02[0-9]{1}|030|050|060|070|080|0[3-6]{1}[1-5]{1}|1[0-9]{1}[0-9]{1})$";
result = Pattern.matches(regExp, subNum);
}
return result;
}
/**
* 현재 시간에서 몇분 시간 받아오기
*
*/
public static String getAfterTimerDate(int interval) {
Date now = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(now);
cal.add(Calendar.MINUTE, interval); //원하는 분을 더해서 시간을 구함
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String strDate = sdf.format(cal.getTime());
return strDate;
}
/**
* 현재 시간에서 몇달 시간 받아오기
*
* */
public static String getAfterTimerMonth(int interval) {
Date now = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(now);
cal.add(Calendar.MONTH, interval); //원하는 분을 더해서 시간을 구함
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String strDate = sdf.format(cal.getTime());
return strDate;
}
/**
* 현재 시간 받아오기
*
* */
public static String getRealTime() {
Date now = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(now);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String strDate = sdf.format(cal.getTime());
return strDate;
}
/**
* 오늘 날짜와 파라미터로 받은 날짜 사이의 차이를 비교
* date1과 date2 비교했을
* 같은 날짜면 0 반환
* 이전면 음수 반환
* 이후면 양수 반환
*
* */
public static boolean getCompareDate(String date) throws Exception {
boolean rtnType = false;
date = date.replaceAll("-", "/");//날짜에 하이픈(-) 슬러쉬(/) 변환
SimpleDateFormat sdformat = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(getRealTime());
Date nowDate = sdformat.parse(getRealTime());
Date endDate = sdformat.parse(date);
if(nowDate.compareTo(endDate) > 0) {
System.out.println("date1은 date2 이후입니다.");
rtnType = false;
} else if(nowDate.compareTo(endDate) < 0) {
System.out.println("date1은 date2 이전입니다.");
rtnType = true;
} else if(nowDate.compareTo(endDate) == 0) {
System.out.println("같은 날짜입니다.");
rtnType = true;
}
return rtnType;
}
/**
* 오늘 날짜와 파라미터로 받은 날짜 사이의 차이를 비교
* date1과 date2 비교했을
* 같은 날짜면 0 반환
* 이전면 음수 반환
* 이후면 양수 반환
*
* */
public static String getCompareDateToSeconds(String date) throws Exception {
String rtnType = "";
date = date.replaceAll("-", "/");//날짜에 하이픈(-) 슬러쉬(/) 변환
SimpleDateFormat sdformat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
System.out.println(getRealTime());
Date nowDate = sdformat.parse(getRealTime());
Date endDate = sdformat.parse(date);
if(nowDate.compareTo(endDate) > 0) {
System.out.println("date1은 date2 이후입니다.");
rtnType = "after";
} else if(nowDate.compareTo(endDate) < 0) {
System.out.println("date1은 date2 이전입니다.");
rtnType = "before";
} else if(nowDate.compareTo(endDate) == 0) {
System.out.println("같은 날짜입니다.");
rtnType = "equal";
}
return rtnType;
}
/**
* 현재 날짜와 파라미터 날짜 사이의 차이 구하기
* 단위로 계산하기
* */
public static long getDiffDateSec(String date) throws Exception{
date = date.replaceAll("-", "/");//날짜에 하이픈(-) 슬러쉬(/) 변환
Date format1 = new SimpleDateFormat("yyyy/MM/dd").parse(getRealTime());
Date format2 = new SimpleDateFormat("yyyy/MM/dd").parse(date);
long diffSec = (format1.getTime() - format2.getTime()) / 1000; // 차이
return diffSec;
}
/**
* 현재 날짜와 파라미터 날짜 사이의 차이 구하기
* 단위로 계산하기
* */
public static long getDiffDateMin(String date) throws Exception{
date = date.replaceAll("-", "/");//날짜에 하이픈(-) 슬러쉬(/) 변환
Date format1 = new SimpleDateFormat("yyyy/MM/dd").parse(getRealTime());
Date format2 = new SimpleDateFormat("yyyy/MM/dd").parse(date);
long diffMin = (format1.getTime() - format2.getTime()) / 60000; // 차이
return diffMin;
}
/**
* 현재 날짜와 파라미터 날짜 사이의 차이 구하기
* 단위로 계산하기
* */
public static long getDiffDateHour(String date) throws Exception{
date = date.replaceAll("-", "/");//날짜에 하이픈(-) 슬러쉬(/) 변환
Date format1 = new SimpleDateFormat("yyyy/MM/dd").parse(getRealTime());
Date format2 = new SimpleDateFormat("yyyy/MM/dd").parse(date);
long diffHour = (format1.getTime() - format2.getTime()) / 3600000; // 차이
return diffHour;
}
/**
* 현재 날짜와 파라미터 날짜 사이의 차이 구하기
* 단위로 계산하기
* */
public static long getDiffDateDay(String date) throws Exception{
date = date.replaceAll("-", "/");//날짜에 하이픈(-) 슬러쉬(/) 변환
Date format1 = new SimpleDateFormat("yyyy/MM/dd").parse(getRealTime());
Date format2 = new SimpleDateFormat("yyyy/MM/dd").parse(date);
long diffSec = (format1.getTime() - format2.getTime()) / 1000; // 차이
long diffDays = diffSec / (24*60*60); //일자수 차이
return diffDays;
}
// 오늘 날짜
public static String getTodayDate() throws Exception {
Date toDay = new Date();
SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
String rtnDay = date.format(toDay);
return rtnDay;
}
// 한달 날짜
public static String getBefore1MonthDate() throws Exception {
Calendar mon = Calendar.getInstance();
mon.add(Calendar.MONTH , -1);
String beforeMonthDay = new java.text.SimpleDateFormat("yyyy-MM-dd").format(mon.getTime());
return beforeMonthDay;
}
public static void main(String args[]) throws Exception {
System.out.println(new Date(System.currentTimeMillis()));
System.out.println(checkHpNum("070-85326650"));
System.out.println(addDash("07085326650"));
}
//리스트에서 중복 제거 리스트 반환
public static List<String> getDuplicateList(List<String> userBlockList){
List<String> dupliBlockList = new ArrayList<String>();
for(String phone : userBlockList) {
boolean chk = true;
for(String dupPhone : dupliBlockList) {
if(phone.equals(dupPhone)) {
chk = false;
}
}
if(chk) {
dupliBlockList.add(phone);
}
}
return dupliBlockList;
}
}

View File

@ -0,0 +1,60 @@
package itn.com.cmm.util;
/**
* 프로그램 파일명 : Order.java
*
* 프로그램 설명 : 쿼리에서 정렬방법을 정의하는 클래스
*
* : jeong hoon hee
*
* : 2013. 6. 7.
*
* Copyright(c) 2013 DAEYOON Co. Ltd. All rights reserved.
*/
public class Order {
private String columnName;
private String orderType;
public Order() {
super();
// TODO Auto-generated constructor stub
}
public Order(String columnName, String orderType) {
super();
this.columnName = columnName;
this.orderType = orderType;
}
public static Order asc(String columnName) {
Order order = new Order();
order.setColumnName(columnName);
order.setOrderType("ASC");
return order;
}
public static Order desc(String columnName) {
Order order = new Order();
order.setColumnName(columnName);
order.setOrderType("DESC");
return order;
}
public String getColumnName() {
return columnName;
}
public void setColumnName(String columnName) {
this.columnName = columnName;
}
public String getOrderType() {
return orderType;
}
public void setOrderType(String orderType) {
this.orderType = orderType;
}
}

View File

@ -0,0 +1,94 @@
package itn.com.cmm.util;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class OsProcessCheckUtil {
/**
* 운영체제의 특정 프로세스 실행여부 확인하는 유틸
*
* */
public static String WindowProcessCheck(String processNm) throws Exception{
String line ="";
String pId="";
try {
Process p = Runtime.getRuntime().exec(System.getenv("windir") +"\\system32\\"+"tasklist.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line); //<-- Parse data here.
String [] words = line.split(" ");
String [] procInfo = new String[10];
if (words[0].contains(processNm)){
//System.out.println(line);
int nCnt = 0;
for(String item : words){
if (item.equals(""))
continue;
System.out.print(item + " ");
procInfo[nCnt] = item;
nCnt++;
}
System.out.println("Process Name : "+ procInfo[0]);
System.out.println("Process ID : "+ procInfo[1]);
System.out.println("Memory Usage : "+ procInfo[4]);
pId = procInfo[1];
}
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
return pId;
}
public static String LinuxProcessCheck(String processNm) throws Exception{
String line ="";
String pId="";
try {
System.out.println("++++++++++++++++processNm++++++++++++++++++++++++"+processNm);
String[] cmd = {"ps -ef | grep EnDeServer"};
Process p = Runtime.getRuntime().exec(cmd);
System.out.println("+++++++++++++++++++++++ppppppppppppppppppp++++++++++++++++++++++++++++++"+p);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
System.out.println("++++++++++++++++++++++++while Start++++++++++++++++++++++++++++++++++");
System.out.println("+++++++++++++++input.readLine()+++++++++++++++++" + input.readLine());
while ((line = input.readLine()) != null) {
System.out.println(line); //<-- Parse data here.
String [] words = line.split(" ");
String [] procInfo = new String[10];
if (words[0].contains(processNm)){
System.out.println("+++++++++++line++++++++++++++++++++++"+line);
int nCnt = 0;
for(String item : words){
if (item.equals(""))
continue;
System.out.print(item + " ");
procInfo[nCnt] = item;
nCnt++;
}
System.out.println("Process Name : "+ procInfo[0]);
System.out.println("Process ID : "+ procInfo[1]);
System.out.println("Memory Usage : "+ procInfo[4]);
pId = procInfo[1];
}
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
return pId;
}
}

View File

@ -0,0 +1,91 @@
package itn.com.cmm.util;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author : 이호영
* @fileName : PdfUtil.java
* @date : 2023.03.16
* @description : PDF를 다루는 Utils
* ===========================================================
* DATE AUTHOR NOTE
* ----------------------------------------------------------- *
* 2023.04.06 이호영 최초 생성
*
*
*
*/
public final class PdfUtil {
/**
* 휴대폰번호 대시('-') 추가
* 대시 유무 상관없음
* 유효성 맞지 않을시 변환안됨.
* @param response
*/
public static void showPdf(HttpServletResponse response, String pdfFileName) {
FileInputStream fis = null;
BufferedOutputStream bos = null;
try {
File pdfFile = new File(pdfFileName);
// 클라이언트 브라우져에서 바로 보는 방법(헤더 변경)
response.setContentType("application/pdf");
// 구문이 있으면 [다운로드], 구문이 없다면 바로 target 지정된 곳에 view 해줍니다.
// response.addHeader("Content-Disposition", "attachment; filename=" + pdfFile.getName() + ".pdf");
// 파일 읽고 쓰는 일반적인 Write방식이랑 동일합니다. 다만 reponse 출력 스트림 객체에 write.
fis = new FileInputStream(pdfFile);
int size = fis.available(); // 지정 파일에서 읽을 있는 바이트 수를 반환
byte[] buf = new byte[size]; // 버퍼설정
int readCount = fis.read(buf);
response.flushBuffer();
bos = new BufferedOutputStream(response.getOutputStream());
bos.write(buf, 0, readCount);
bos.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fis != null)
fis.close(); // close는 ! 반드시!
if (bos != null)
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

View File

@ -0,0 +1,142 @@
package itn.com.cmm.util;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
/**
* 프로그램 파일명 : RedirectUrlMaker.java
*
* 프로그램 설명 : 리다이렉트URL를 생성해주는 유틸클래스
*
* : jeong hoon hee
*
* : 2013. 5. 15.
*
* Copyright(c) 2013 DAEYOON Co. Ltd. All rights reserved.
*/
public class RedirectUrlMaker {
/**
* 요청매핑URL
*/
private String requestMappingUrl;
/**
* 검색파라미터객체
*/
private Criteria criteria;
/**
* 추가파라미터맵
*/
private Map<String, Object> paramMap = null;
/**
* 생성자1
*
* @param requestMappingUrl : 요청매핑URL (: "/board/list.do")
* @param criteria : 검색파라미터객체
*/
public RedirectUrlMaker(String requestMappingUrl, Criteria criteria) {
this.requestMappingUrl = requestMappingUrl;
this.criteria = criteria;
}
/**
* 생성자2
* @param requestMappingUrl
*/
public RedirectUrlMaker(String requestMappingUrl) {
this.requestMappingUrl = requestMappingUrl;
}
public Object appendParam(String key, Object value) {
if (this.paramMap == null) {
this.paramMap = new HashMap<String, Object>();
}
return this.paramMap.put(key, value);
}
public Object getParam(String key) {
if (this.paramMap == null) {
return null;
}
return this.paramMap.get(key);
}
public Map<String, Object> getParamMap() {
return paramMap;
}
public void setParamMap(Map<String, Object> paramMap) {
this.paramMap = paramMap;
}
/**
* 리다이렉트URL를 생성하여 리턴한다.
*
* @return
* @throws UnsupportedEncodingException
*/
public String getRedirectUrl() {
StringBuffer redirectUrl = new StringBuffer("redirect:");
if (StringUtils.isNotEmpty(this.requestMappingUrl)) {
if (this.requestMappingUrl.startsWith("/") == false) {
this.requestMappingUrl = "/" + this.requestMappingUrl;
}
if (this.requestMappingUrl.endsWith("?")) {
this.requestMappingUrl = this.requestMappingUrl.substring(0, this.requestMappingUrl.length()-1);
}
}
redirectUrl.append(this.requestMappingUrl);
if (this.criteria != null) {
if (redirectUrl.toString().indexOf("?") == -1) {
redirectUrl.append("?");
} else {
redirectUrl.append("&");
}
redirectUrl.append(this.criteria.getParams());
}
if (this.paramMap != null) {
if (this.paramMap.size() > 0) {
Set<String> set = this.paramMap.keySet();
Iterator<String> iter = set.iterator();
while (iter.hasNext()) {
String key = iter.next();
Object value = this.paramMap.get(key);
redirectUrl.append("&");
redirectUrl.append(key);
redirectUrl.append("=");
if (value instanceof String) {
if (StringUtils.isNotEmpty((String) value)) {
try {
redirectUrl.append(URLEncoder.encode((String) value, "UTF-8"));
} catch (UnsupportedEncodingException e) {
System.out.println("UnsupportedEncodingException By RedirectUrlMaker.getRedirectUrl() : " + e.getMessage());
}
}
} else {
redirectUrl.append(value);
}
}
}
}
return redirectUrl.toString();
}
@Override
public String toString() {
return getRedirectUrl();
}
}

View File

@ -0,0 +1,581 @@
/*
* Copyright 2008-2009 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.
*/
package itn.com.cmm.util;
import java.io.IOException;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
import java.sql.Clob;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Pattern;
public class StringUtil {
private static final int HIGHEST_SPECIAL = '>'; // for escaping html code. by hessie; since 2007/10/01.
private static final int LOWEST_SPECIAL = '\"'; // for escaping html code. by hessie; since 2007/10/01.
private static final int HIGHEST_BR = '\r'; // for escaping html code. by hessie; since 2007/10/01.
private static final int LOWEST_BR = '\n'; // for escaping html code. by hessie; since 2007/10/01.
private static final int HIGHEST_JS_SPECIAL = '\\'; // for escaping js literal code. by hessie; since 2007/10/01
private static char[][] specialCharactersRepresentation = new char[HIGHEST_SPECIAL + 1][];
private static char[][] specialCharactersRepresentationWithNbsp = new char[HIGHEST_SPECIAL + 1][];
public final static char[] byteCodes;
static {
byteCodes = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
}
/**
* 문자열 여부 - null 포함
* @param str
* @return true: 입력받은 String 문자열 또는 null인 경우
*/
public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
}
public static String bytesToOrgString(byte[] bytes) {
int len = bytes.length;
char[] chars = new char[len * 2];
for (int i = 0; i < len; ++i) {
chars[i * 2] = byteCodes[(bytes[i] & 0XF0) >> 4];
chars[i * 2 + 1] = byteCodes[(bytes[i] & 0X0F)];
}
return new String(chars);
}
/**
* 글자 특정 사이즈로 잘라내기
*
* @param str
* @param size
* @return String
*/
public String cutString(String str, int size) {
String returnStr = null;
if (str.length() > size) {
returnStr = str.substring(0, size) + "...";
}
else {
returnStr = str;
}
return returnStr;
}
/**
* 글자 특정 사이즈로 잘라내기
*
* @param str
* @param size
* @param tail
* @return String
*/
public String cutString(String str, int size, boolean tail) {
String returnStr = null;
String tails = "";
if (tail == true) {
tails = "...";
}
if (str.length() > size) {
returnStr = str.substring(0, size) + tails;
}
else {
returnStr = str;
}
return returnStr;
}
/**
* 글자 특정 사이즈로 <br/> 분이기
*
* @param str
* @param size
* @return String
*/
public String brString(String str, int size) {
String returnStr = "";
int j = 0;
for(int i = 0; i < str.length(); i++)
{
if(j >= size)
{
returnStr += "<br/>";
j = 0;
}
returnStr += str.charAt(i);
j++;
}
return returnStr;
}
/**
* \r\n을 <br/> 태그로 변환처리
*
* @param str
* @return String
*/
public String nl2br(String str) {
String returnStr = null;
returnStr = str.replaceAll("\r\n", "<br/>");
return returnStr;
}
/**
* \r\n을 삭제
*
* @param str
* @return String
*/
public String nl2Null(String str) {
String returnStr = null;
returnStr = str.replaceAll("\r\n", "");
return returnStr;
}
/**
* \n을 <br/> 태그로 변환처리
*
* @param str
* @return String
*/
public String nl2br2(String str) {
String returnStr = null;
returnStr = str.replaceAll("\n", "<br/>");
return returnStr;
}
/**
* 특수문자를 변환합니다
*
* @param str
* @return String
*/
public String middot(String str) {
str = str.replaceAll("&middot;", "·");
str = str.replaceAll("&ldquo;", "");
str = str.replaceAll("&rdquo;", "");
str = str.replaceAll("&rarr;", "");
return str;
}
/**
* html 태그를 제거합니다
*
* @param str
* @return String
*/
public static String stripTag(String str) {
str = str.replaceAll("\\<.*?\\>", "");
str = str.replaceAll("&nbsp;", "");
str = str.replaceAll("<span>","");
return str;
}
/**
* clob 스트링 출력
*
* @param str
* @param size
* @return String
* @throws IOException
*/
public String getClob(Clob str) throws IOException {
try {
Reader reader = str.getCharacterStream();
StringBuffer out = new StringBuffer();
char[] buff = new char[1024];
int nchars = 0;
// 스트링 버퍼에 append 시킨후
while ((nchars = reader.read(buff)) > 0) {
out.append(buff, 0, nchars);
}
return out.toString();
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("clob에러");
return "clob에러";
}
}
/**
* 글자 널값이면 대체하기
*
* @param str
* @param size
* @return String
*/
public String nvl(String str, String str_r) {
String returnStr = str;
if (str == null) {
if (str_r == null) {
str_r = "";
}
returnStr = str_r;
} else if (str.length() == 0) {
if (str_r == null) {
str_r = "";
}
returnStr = str_r;
}
return returnStr;
}
/**
* https 검색
*
* @param str
* @param size
* @return String
*/
public boolean httpsFind(String str) {
if(str.matches("https://.*"))
return true;
return false;
}
public boolean checkReg(String reg, String str) {
return Pattern.matches(reg, str);
}
public static boolean checkRegKor(String str) {
return Pattern.matches("[가-힣]+", str);
}
public boolean checkRegNum(String str) {
return Pattern.matches("[0-9]+", str);
}
public boolean checkRegEng(String str) {
return Pattern.matches("[a-zA-z]+", str);
}
public boolean checkRegEngUp(String str) {
return Pattern.matches("[A-z]+", str);
}
public boolean checkRegEngLo(String str) {
return Pattern.matches("[a-z]+", str);
}
public static boolean checkRegKorEngNum(String str) {
return Pattern.matches("[가-힣A-za-z0-9]+", str);
}
/**
* 우편번호 변환
*/
public String getPost(int area, int num) {
String[][] newPosts = {
{""}
,{"05050","11787","13636","26475","25517","07988","05048"}
,{"14041","14442","10449","14067","16704","21313"}
,{"46700","44248","51708","52628"}
,{"32840","32840","28684","31158","32839"}
,{"62278","55316","57987","58457"}
,{"41504","36709","37653"}
};
return newPosts[area][num];
}
public String nl2br() {
String returnStr = null;
return returnStr;
}
/**
* 파라미터를 String 타입으로 가져옵니다.<br>
* - null일 경우 문자열을 가져옵니다.<br>
* Get String(if object is null, return empty string).
* @param Object
* @return String
*/
public static String getString(Object obj) {
if (obj == null)
return "";
else
return String.valueOf(obj);
}
/**
* 오늘 날짜를 형식에 맞는 문자열로 가져옵니다.
*
* @param format
* @return
*/
public static String getDateToString(String format) {
Date date = new Date();
return getDateToString(date, format);
}
/**
* 날짜 객체를 형식에 맞는 문자열로 가져옵니다.
*
* @param date
* @param format
* @return
*/
public static String getDateToString(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
public static boolean isNotEmpty(String value) {
return !isEmpty(value);
}
public static String trim(String value) {
if(value == null) {
return null;
}
return value.trim();
}
public static String getOnlyNum(String value) {
if(value == null) {
return null;
}
return value.replaceAll("[^0-9]","");
}
public static String escapeXml(Object o) {
if (o == null) {
return null;
}
StringWriter writer = new StringWriter();
try {
writeXmlText(writer, o.toString(), true);
} catch (java.io.IOException e) { // this exception cannot be catched.
System.out.println("escapeXml IOException Error");
}
return writer.toString();
}
public static void writeXmlText(Writer writer, String text) throws java.io.IOException {
writeXmlText(writer, text, true, false, false);
}
public static void writeXmlText(Writer writer, String text, boolean escapeXml) throws java.io.IOException {
writeXmlText(writer, text, escapeXml, false, false);
}
public static void writeXmlText(Writer writer, String text, boolean escapeXml, boolean applyBr) throws java.io.IOException {
writeXmlText(writer, text, escapeXml, applyBr, false);
}
public static void writeXmlText(Writer writer, String text, boolean escapeXml, boolean applyBr, boolean escapeNbsp) throws java.io.IOException {
if (text == null) {
// do nothing.
} else if (!escapeXml && !applyBr) {
writer.write(text);
} else {
writeXmlText(writer, text.toCharArray(), text.length(), escapeXml, applyBr, escapeNbsp);
}
}
public static void writeXmlText(Writer writer, char[] buffer, int length, boolean escapeXml, boolean applyBr, boolean escapeNbsp) throws java.io.IOException {
int highest = HIGHEST_SPECIAL;
int lowest = LOWEST_SPECIAL;
int start = 0;
int i = 0;
char[][] representation = (escapeNbsp ? specialCharactersRepresentationWithNbsp : specialCharactersRepresentation);
if (applyBr) {
lowest = LOWEST_BR;
if (!escapeXml) {
highest = HIGHEST_BR;
}
} else {
if (!escapeXml) {
i = length;
}
}
for (; i < length; i++) {
char c = buffer[i];
if (c <= highest && c >= lowest) {
char[] escaped = representation[c];
if (escaped != null) {
// add unescaped portion
if (start < i) {
writer.write(buffer, start, i - start);
}
// add escaped xml
writer.write(escaped);
start = i + 1;
}
}
}
// add rest of unescaped portion
if (start < length) {
writer.write(buffer, start, length - start);
}
}
// 처음부터 idx 만큼 잘라낸 나머지 글자
public static String getWordLeft(String word, int idx) {
String rtnVal = "";
if (word.length() >= idx) {
rtnVal = word.trim().substring(0, word.trim().length()-idx);
}
else {
rtnVal = word.trim();
}
return rtnVal;
}
// idx 에서부터 끝까지 잘라낸 글자 => Ex) .
public static String getWordRight(String word, int idx) {
String rtnVal = "";
if (word.length() >= idx) {
rtnVal = word.trim().substring(word.trim().length()-idx, word.trim().length());
}
else {
rtnVal = word.trim();
}
return rtnVal;
}
//3개월전 첫째날 받아오기
public static String getDate3MonthAgoFirstDay() {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR) - 1;
int month = cal.get(Calendar.MONTH) + 1;
cal.set(year,month,1);
String firstDay = Integer.toString(cal.getActualMinimum(Calendar.DAY_OF_MONTH));
String repMonth = "";
String repfirstDay = "";
if(month < 10) {
repMonth = "0" + Integer.toString(month);
}else {
repMonth = Integer.toString(month);
}
if(Integer.parseInt(firstDay) < 10) {
repfirstDay = "0" + firstDay;
}else {
repfirstDay = firstDay;
}
String ntceBgnde = Integer.toString(year) + "-" + repMonth + "-" + repfirstDay;
return ntceBgnde;
}
//이번달의 첫째날과 마지막날짜 받아오기
public static String getDateMonthFirstDay() {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
cal.set(year,month,1);
String firstDay = Integer.toString(cal.getActualMinimum(Calendar.DAY_OF_MONTH));
String repMonth = "";
String repfirstDay = "";
if(month < 10) {
repMonth = "0" + Integer.toString(month);
}else {
repMonth = Integer.toString(month);
}
if(Integer.parseInt(firstDay) < 10) {
repfirstDay = "0" + firstDay;
}else {
repfirstDay = firstDay;
}
String ntceBgnde = Integer.toString(year) + "-" + repMonth + "-" + repfirstDay;
return ntceBgnde;
}
//이번달의 첫째날과 마지막날짜 받아오기
public static String getDateMonthLastDay() {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
cal.set(year,month,1);
String lastDay = Integer.toString(cal.getActualMaximum(Calendar.DAY_OF_MONTH));
month = month + 1;
String repMonth = "";
if(month < 10) {
repMonth = "0" + Integer.toString(month);
}else {
repMonth = Integer.toString(month);
}
String ntceEndde = Integer.toString(year) + "-" + repMonth + "-" + lastDay;
return ntceEndde;
}
//1년후 이번달의 첫째날과 마지막날짜 받아오기
public static String getDateMonthLastDay1YearAfter() {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR) + 1;
int month = cal.get(Calendar.MONTH);
cal.set(year,month,1);
String lastDay = Integer.toString(cal.getActualMaximum(Calendar.DAY_OF_MONTH));
month = month + 1;
String repMonth = "";
if(month < 10) {
repMonth = "0" + Integer.toString(month);
}else {
repMonth = Integer.toString(month);
}
String ntceEndde = Integer.toString(year) + "-" + repMonth + "-" + lastDay;
return ntceEndde;
}
}

View File

@ -0,0 +1,584 @@
package itn.com.cmm.util;
import java.io.StringWriter;
import java.io.Writer;
import java.text.DecimalFormat;
import java.text.MessageFormat;
import java.text.ParseException;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import itn.let.utl.sim.service.EgovFileScrty;
//import com.google.common.base.CaseFormat;
//import egovframework.let.clean.core.base.CoreConstant;
//import egovframework.let.clean.core.exception.BaseException;
public final class StringUtil2 {
private static final int HIGHEST_SPECIAL = '>'; // for escaping html code. by hessie; since 2007/10/01.
private static final int LOWEST_SPECIAL = '\"'; // for escaping html code. by hessie; since 2007/10/01.
private static final int HIGHEST_BR = '\r'; // for escaping html code. by hessie; since 2007/10/01.
private static final int LOWEST_BR = '\n'; // for escaping html code. by hessie; since 2007/10/01.
private static final int HIGHEST_JS_SPECIAL = '\\'; // for escaping js literal code. by hessie; since 2007/10/01
private static char[][] specialCharactersRepresentation = new char[HIGHEST_SPECIAL + 1][];
private static char[][] specialCharactersRepresentationWithNbsp = new char[HIGHEST_SPECIAL + 1][];
public static String toString(Object o) {
if (o == null) {
return null;
}
return o.toString();
}
public static String toString(Object o, String defaultValue) {
if (o == null) {
return defaultValue;
}
return o.toString();
}
public static boolean isEmpty(String value) {
return (value == null || value.length() == 0);
}
public static boolean isNotEmpty(String value) {
return !isEmpty(value);
}
public static String trim(String value) {
if (value == null) {
return null;
}
return value.trim();
}
public static String lpad(String value, int len, String pad) {
if (value == null) {
value = "";
}
return StringUtils.leftPad(value, len, pad);
}
public static String rpad(String value, int len, String pad) {
if (value == null) {
value = "";
}
return StringUtils.rightPad(value, len, pad);
}
public static String rpadb(String value, int len, String pad) {
if (value == null) {
value = "";
}
int preLen = value.getBytes().length;
return StringUtils.rightPad(value, len - preLen + value.length(), pad);
}
public static String rpadb(String value, int len, String pad, String encoding) throws Exception {
if (value == null) {
value = "";
}
int preLen = value.getBytes(encoding).length;
return StringUtils.rightPad(value, len - preLen + value.length(), pad);
}
// public static String camelLower(String name) {
// return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name);
// }
//
// public static String camelUpper(String name) {
// return CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, name);
// }
/**
* 메시지 Format
*
* @param msg
* - "{0}는 {1}자리입니다."
* @param params
* - new Object[]{"ID", 8}
* @return
*/
public static String msgFormat(String msg, Object... params) {
String formatMsg = null;
if (StringUtil2.isNotEmpty(msg)) {
if (params != null && params.length > 0) {
formatMsg = MessageFormat.format(msg, params);
} else {
formatMsg = msg;
}
}
return formatMsg;
}
/**
* 메시지 Parse
*
* @param pattern
* - "{0}는 {1}자리입니다."
* @param msg
* - "ID는 8자리입니다."
* @return new Object[]{"ID", 8}
*/
public static Object[] msgParse(String pattern, String msg) {
Object[] params = null;
if (StringUtil2.isEmpty(pattern)) {
return params;
}
if (StringUtil2.isEmpty(msg)) {
return params;
}
try {
MessageFormat formatter = new MessageFormat(pattern);
params = formatter.parse(msg);
} catch (ParseException e) {
// throw new BaseException(e);
}
return params;
}
public static String formatPhone(String value, boolean crypt) {
String format = null;
if (value == null) {
return format;
}
format = value.replaceAll(" ", "");
int formatLen = format.length();
if (formatLen < 1) {
return format;
}
if (formatLen == 8) {
if (crypt) {
format = format.replaceAll("^(\\d{4})(\\d{2})(\\d{2})$", "$1-**$3");
} else {
format = format.replaceAll("^(\\d{4})(\\d{4})$", "$1-$2");
}
} else if (formatLen >= 9 && formatLen <= 12) {
if (crypt) {
format = format.replaceAll("^(02.{0}|01.{1}|050.{1}|[0-9]{3})([0-9]+)([0-9]{4})$", "$1-****-$3");
} else {
format = format.replaceAll("^(02.{0}|01.{1}|050.{1}|[0-9]{3})([0-9]+)([0-9]{4})$", "$1-$2-$3");
}
} else {
if (crypt) {
format = format.replaceAll("^(\\d+)(\\d{2})$", "$1**");
} else {
// nothing..
}
}
return format;
}
public static String formatPhone(String value) {
return StringUtil2.formatPhone(value, false);
}
public static String formatJdNo(String value) {
String format = null;
if (StringUtil2.isEmpty(value)) {
return format;
}
format = value.replaceAll("^(\\d{2})(\\d{4})(\\d{1})(\\d{5})(\\d{2})$", "$1-$2-$3-$4-$5");
return format;
}
public static String formatBalNo(String value) {
String format = null;
if (StringUtil2.isEmpty(value)) {
return format;
}
format = value.replaceAll(" ", "");
int formatLen = format.length();
if (formatLen == 11) {
format = value.replaceAll("^(\\S{1})(\\S{1})(\\S{6})(\\S{3})$", "$1-$2-$3-$4");
} else if (formatLen == 14) {
format = value.replaceAll("^(\\S{1})(\\S{1})(\\S{6})(\\S{3})(\\S{3})$", "$1-$2-$3-$4-$5");
} else {
}
return format;
}
/**
* 사업자등록번호
*
* @param value
* @return
*/
public static String formatBizNo(String value) {
String format = null;
if (StringUtil2.isEmpty(value)) {
return format;
}
format = value.replaceAll("^(\\d{3})(\\d{2})(\\d{5})$", "$1-$2-$3");
return format;
}
/**
* 사업자등록번호
*
* @param value
* @return
*/
public static String formatBirthNo(String value) {
String format = null;
if (StringUtil2.isEmpty(value)) {
return format;
}
format = value.replaceAll("^(\\d{2})(\\d{2})(\\d{2})(\\d{1})$", "$1.$2.$3.$4");
return format;
}
/**
* 법인번호
*
* @param value
* @return
*/
public static String formatBizIdNo(String value) {
String format = null;
if (StringUtil2.isEmpty(value)) {
return format;
}
format = value.replaceAll("^(\\d{6})(\\d{7})$", "$1-$2");
return format;
}
public static String formatAmount(String value, String pattern) {
String format = null;
if (StringUtil2.isNotEmpty(value)) {
Double number = Double.parseDouble(value);
DecimalFormat formatter = new DecimalFormat(pattern);
format = formatter.format(number);
}
return format;
}
public static String formatAmount(Object value, String pattern) {
return StringUtil2.formatAmount(String.valueOf(value), pattern);
}
public static String formatAmount(String value) {
return StringUtil2.formatAmount(value, "#,###");
}
public static String formatAmount(Object value) {
return StringUtil2.formatAmount(String.valueOf(value));
}
public static String formatFileSize(long fileSize) {
if (fileSize <= 0) {
return "0";
}
final String[] units = new String[] { "B", "kB", "MB", "GB", "TB" };
int digitGroups = (int) (Math.log10(fileSize) / Math.log10(1024));
return new DecimalFormat("#,##0.#").format(fileSize / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
}
/**
* 문자열을 Byte로 (한글 중간에 짤리게) 자름
*
* @param str
* @param len
* @param encoding
* @return
*/
public static String subByte(String str, int len, String encoding) {
try {
if (StringUtil2.isEmpty(str)) {
return str;
}
byte[] strBytes = str.getBytes(encoding);
int strLength = strBytes.length;
int minusByteNum = 0;
int offset = 0;
// int hangulByteNum = encoding.equals(CoreConstant.CHARSET_UTF8) ? 3 : 2;
int hangulByteNum = encoding.equals("UTF-8") ? 3 : 2;
if (strLength > len) {
minusByteNum = 0;
offset = len;
for (int j = 0; j < offset; j++) {
if ((strBytes[j] & 0x80) != 0) {
minusByteNum++;
}
}
if (minusByteNum % hangulByteNum != 0) {
offset -= minusByteNum % hangulByteNum;
}
return new String(strBytes, 0, offset, encoding);
} else {
return str;
}
} catch (Exception e) {
// throw new BaseException(e);
return "";
}
}
/**
* 문자열을 Byte로 (한글 중간에 짤리게) 자름 - from-to
*
* @param str
* @param len
* @param encoding
* @return
*/
public static String subByte(String str, int from, int len, String encoding) {
try {
if (StringUtil2.isEmpty(str)) {
return str;
}
byte[] strBytes = str.getBytes(encoding);
int strLength = strBytes.length;
int minusByteNum = 0;
int offset = 0;
// int hangulByteNum = encoding.equals(CoreConstant.CHARSET_UTF8) ? 3 : 2;
int hangulByteNum = encoding.equals("UTF-8") ? 3 : 2;
if (strLength > len) {
minusByteNum = 0;
offset = len;
for (int j = 0; j < offset; j++) {
if ((strBytes[j] & 0x80) != 0) {
minusByteNum++;
}
}
if (minusByteNum % hangulByteNum != 0) {
offset -= minusByteNum % hangulByteNum;
}
return new String(strBytes, from, offset, encoding);
} else {
return str;
}
} catch (Exception e) {
// throw new BaseException(e);
return "";
}
}
/**
* 문자열을 Byte로 (한글 중간에 짤리게) 자름 (UTF-8)
*
* @param str
* @param len
* @return
*/
public static String subByte(String str, int len) {
// return StringUtil2.subByte(str, len, CoreConstant.CHARSET_UTF8);
return StringUtil2.subByte(str, len, "UTF-8");
}
/**
* 문자열을 Byte로 (한글 중간에 짤리게) 자름 (EUC-KR)
*
* @param str
* @param len
* @return
*/
public static String subByteEucKr(String str, int len) {
// return StringUtil2.subByte(str, len, CoreConstant.CHARSET_EUCKR);
return StringUtil2.subByte(str, len, "EUC-KR");
}
/**
* 숫자만 추출.
*
* @param 추출문자
* @return
*/
public static String getOnlyNumber(String text) {
Matcher m = Pattern.compile("[^0-9]").matcher(text);
return m.replaceAll("");
}
/**
* 비밀번호 유효성 체크
*
* @param 비밀번호
* @return
*/
public static String isEnablePassword(String passwd) {
String returnValue = "";
Pattern p = Pattern.compile("^(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,12}$");
Matcher m = p.matcher(passwd);
Pattern p2 = Pattern.compile("(\\w)\\1\\1");
Matcher m2 = p2.matcher(passwd);
if (!m.find()) { // 정규식 이용한 패턴 체크
returnValue = "비밀번호는 영문,숫자,특수문자(!@$%^&* 만 허용)를\n조합하여 8~12자로 구성하세요.";
} else if (m2.find()) { // 동일 문자 4번 입력 패턴 체크
returnValue = "비밀번호에 동일문자를 3번 이상 사용할 수 없습니다.";
} else if (continueNumberCheck(passwd)) { // 비밀번호 연속 숫자 4자리 체크
returnValue = "비밀번호에 연속된 문자를 3자 이상 사용 할 수 없습니다.";
}
return returnValue;
}
/**
* 연속된 숫자 체크
*
* @param numberCheck
* @return
*/
public static boolean continueNumberCheck(String numberCheck) {
int o = 0;
int d = 0;
int p = 0;
int n = 0;
int limit = 3;
for (int i = 0; i < numberCheck.length(); i++) {
char tempVal = numberCheck.charAt(i);
if (i > 0 && (p = o - tempVal) > -2 && p < 2 && (n = p == d ? n + 1 : 0) > limit - 3)
return true;
d = p;
o = tempVal;
}
return false;
}
/**
* 주어진 문자열에 대해 XML/HTML PCDATA에 적합한 이스케이프 문자 변환 처리를 수행한 결과 문자열을 반환한다. 변환되는 문자는 아래와 같다.
*
* <pre>
* & -> &amp;
* < -> &lt;
* > -> &gt;
* " -> &#034;
* ' -> &#039;
* </pre>
*/
public static String escapeXml(Object o) {
if (o == null) {
return null;
}
StringWriter writer = new StringWriter();
try {
writeXmlText(writer, o.toString(), true);
} catch (java.io.IOException e) { // this exception cannot be catched.
}
return writer.toString();
}
public static void writeXmlText(Writer writer, String text) throws java.io.IOException {
writeXmlText(writer, text, true, false, false);
}
public static void writeXmlText(Writer writer, String text, boolean escapeXml) throws java.io.IOException {
writeXmlText(writer, text, escapeXml, false, false);
}
public static void writeXmlText(Writer writer, String text, boolean escapeXml, boolean applyBr) throws java.io.IOException {
writeXmlText(writer, text, escapeXml, applyBr, false);
}
public static void writeXmlText(Writer writer, String text, boolean escapeXml, boolean applyBr, boolean escapeNbsp) throws java.io.IOException {
if (text == null) {
// do nothing.
} else if (!escapeXml && !applyBr) {
writer.write(text);
} else {
writeXmlText(writer, text.toCharArray(), text.length(), escapeXml, applyBr, escapeNbsp);
}
}
public static void writeXmlText(Writer writer, char[] buffer, int length, boolean escapeXml, boolean applyBr, boolean escapeNbsp) throws java.io.IOException {
int highest = HIGHEST_SPECIAL;
int lowest = LOWEST_SPECIAL;
int start = 0;
int i = 0;
char[][] representation = (escapeNbsp ? specialCharactersRepresentationWithNbsp : specialCharactersRepresentation);
if (applyBr) {
lowest = LOWEST_BR;
if (!escapeXml) {
highest = HIGHEST_BR;
}
} else {
if (!escapeXml) {
i = length;
}
}
for (; i < length; i++) {
char c = buffer[i];
if (c <= highest && c >= lowest) {
char[] escaped = representation[c];
if (escaped != null) {
// add unescaped portion
if (start < i) {
writer.write(buffer, start, i - start);
}
// add escaped xml
writer.write(escaped);
start = i + 1;
}
}
}
// add rest of unescaped portion
if (start < length) {
writer.write(buffer, start, length - start);
}
}
/**
* 주어진 문자열이 문자열("")인지 확인하여, 문자열("") 아니면 주어진 문자열을 그대로 반환하고, 문자열("")이면 <tt>defaultValue</tt> 반환한다.
*
* @param value
* @param defaultValue
* @return String
*/
public static String nvl(String value, String defaultValue) {
return coalesce(value, defaultValue);
}
/**
* 주어진 문자열이 <tt>null</tt>인지 확인하여, <tt>null</tt> 아니면 주어진 문자열을 그대로 반환하고, <tt>null</tt>이면 문자열("") 반환한다.
*
* @param value
* @return String
*/
public static String nvl(String value) {
return coalesce(value, "");
}
private static String coalesce(String value, String defaultValue) {
if (isEmpty(value)) {
return defaultValue;
}
return value;
}
public static void test(List<String> listParam) {
listParam.add("bb");
}
public static String replaceBR(String str) {
return str.replaceAll("\r\n", "<br>");
}
public static void main(String args[]) throws Exception {
String enpassword = EgovFileScrty.encryptPassword("1","cadmin1");
System.out.print("암호화 비밀번호 : "+enpassword); // ?
}
}

View File

@ -0,0 +1,100 @@
/*
* Copyright 2008-2009 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.
*/
package itn.com.cmm.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import egovframework.rte.fdl.idgnr.impl.Base64;
public class TokenUtil {
private static final String TOKEN_KEY = "TOKEN_KEY";
private static final Logger logger = Logger.getLogger(TokenUtil.class.getName());
/**
* 로직처리를 위해 세션과 request에 Token 생성
*
* @param request
*/
public static void saveToken(HttpServletRequest request) {
HttpSession session = request.getSession(true);
long systemTime = System.currentTimeMillis();
byte[] time = new Long(systemTime).toString().getBytes();
byte[] id = session.getId().getBytes();
try {
MessageDigest SHA = MessageDigest.getInstance("SHA-256");
SHA.update(id);
SHA.update(time);
String token = Base64.encode(SHA.digest());
request.setAttribute(TOKEN_KEY, token);
session.setAttribute(TOKEN_KEY, token);
logger.error("#########################################################################");
logger.error("# Generate Token Key Value = " + token + " #");
logger.error("#########################################################################");
} catch (NoSuchAlgorithmException e) {
System.out.println("토큰에러");
}
}
/**
* 로직처리 이후 중복방지를 위해 세션의 Token 초기화
*
* @param request
*/
public static void resetToken(HttpServletRequest request) {
HttpSession session = request.getSession(true);
try {
session.removeAttribute(TOKEN_KEY);
} catch (Exception e) {
System.out.println("토큰에러");
}
}
/**
* 세션과 request의 Token이 동일한지 비교
*
* @param request
* @return
*/
public static boolean isTokenValid(HttpServletRequest request) {
HttpSession session = request.getSession(true);
String requestToken = request.getParameter(TOKEN_KEY);
String sessionToken = (String) session.getAttribute(TOKEN_KEY);
if (requestToken == null || sessionToken == null) {
logger.error("# null #");
return false;
} else {
logger.error("# notnull #");
return requestToken.equals(sessionToken);
}
}
}

View File

@ -0,0 +1,80 @@
package itn.com.cmm.util;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.servlet.http.HttpServletRequest;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.ComDefaultVO;
public class WebUtil {
/**
* MD5
* @return
*/
public String convertToHex(byte[] data ){
StringBuffer buf = new StringBuffer();
for( int i=0; i< data.length; i++){
int halfbyte = (data[i] >>> 4 ) & 0x0F;
int two_halfs =0;
do{
if((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char)('0' + halfbyte));
else
buf.append((char)('a' + ( halfbyte - 10)));
halfbyte =data[i] & 0x0F;
}while(two_halfs++ < 1);
}
return buf.toString();
}
//private static String MD5(String text ) throws NoSuchAlgorithmException, UnsupportedEncodingExecption {
public String MD5(String text ) throws NoSuchAlgorithmException, UnsupportedEncodingException {
MessageDigest md;
md = MessageDigest.getInstance("MD5");
byte[] md5hash=new byte[32];
md.update(text.getBytes("iso-8859-1"),0,text.length());
md5hash=md.digest();
return convertToHex(md5hash);
}
public boolean isMobile(HttpServletRequest request){
String userAgent = request.getHeader("user-agent");
boolean mobile1 = userAgent.matches(".*(iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson).*");
boolean mobile2 = userAgent.matches(".*(LG|SAMSUNG|Samsung).*");
if(mobile1 || mobile2) { return true; }
return false;
}
/**
* 페이징 객체 생성
* @param tmpVO - extends ComDefaultVO
* @param paginationInfo
* @param searchListCnt - 목록 건수
* @param totCnt - 전체 건수
*/
public static PaginationInfo getPageing(Object tmpVO, int searchListCnt) {
PaginationInfo paginationInfo = new PaginationInfo();
ComDefaultVO vo = (ComDefaultVO) tmpVO;
vo.setPageUnit(searchListCnt);
paginationInfo.setCurrentPageNo(vo.getPageIndex());
paginationInfo.setRecordCountPerPage(vo.getPageUnit());
paginationInfo.setPageSize(vo.getPageSize());
vo.setFirstIndex(paginationInfo.getFirstRecordIndex());
vo.setLastIndex(paginationInfo.getLastRecordIndex());
vo.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
return paginationInfo;
}
}

Some files were not shown because too many files have changed in this diff Show More