From bb36b2784edeca1a9547692966bd7b3326c77913 Mon Sep 17 00:00:00 2001 From: KNKIM Date: Tue, 22 Jun 2021 16:16:28 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B4=88=EA=B8=B0=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=EC=9B=B9=EC=95=A0=ED=94=8C=EB=A6=AC=EC=BC=80=EC=9D=B4=EC=85=98?= =?UTF-8?q?=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 42 + .gitignore | 125 + .project | 49 + doc/CLD/00.Main.cld | 265 + doc/CLD/01.User.cld | 265 + doc/CLD/02.Login.cld | 265 + doc/CLD/03.Board.cld | 265 + doc/CLD/04.Collection.cld | 265 + doc/CLD/05.Rent.cld | 265 + doc/CLD/09.Inform.cld | 265 + pom.xml | 667 + sample.txt | 1 - .../cmm/AltibaseClobStringTypeHandler.java | 121 + .../com/cmm/ComDefaultCodeVO.java | 185 + .../egovframework/com/cmm/ComDefaultVO.java | 166 + .../com/cmm/EgovBrowserUtil.java | 184 + .../com/cmm/EgovComCrossSiteHndlr.java | 405 + .../com/cmm/EgovComExcepHndlr.java | 48 + .../com/cmm/EgovComOthersExcepHndlr.java | 16 + .../com/cmm/EgovComponentChecker.java | 65 + .../com/cmm/EgovMessageSource.java | 87 + .../egovframework/com/cmm/EgovWebUtil.java | 125 + .../com/cmm/ImagePaginationRenderer.java | 53 + .../com/cmm/IncludedCompInfoVO.java | 50 + .../java/egovframework/com/cmm/LoginVO.java | 250 + .../com/cmm/RegacyPaginationRenderer.java | 48 + .../java/egovframework/com/cmm/SessionVO.java | 120 + .../com/cmm/annotation/IncludedInfo.java | 33 + .../com/cmm/config/EgovLoginConfig.java | 46 + .../config/EgovWebApplicationInitializer.java | 173 + .../EgovWebServletContextListener.java | 66 + .../com/cmm/exception/EgovXssException.java | 39 + .../com/cmm/filter/HTMLTagFilter.java | 46 + .../filter/HTMLTagFilterRequestWrapper.java | 187 + .../cmm/interceptor/AuthenticInterceptor.java | 91 + .../cmm/interceptor/IpObtainInterceptor.java | 42 + .../com/cmm/service/CmmnDetailCode.java | 217 + .../com/cmm/service/EgovCmmUseService.java | 64 + .../com/cmm/service/EgovFileMngService.java | 115 + .../com/cmm/service/EgovFileMngUtil.java | 436 + .../com/cmm/service/EgovProperties.java | 223 + .../cmm/service/EgovUserDetailsService.java | 26 + .../egovframework/com/cmm/service/FileVO.java | 240 + .../com/cmm/service/Globals.java | 58 + .../com/cmm/service/impl/CmmUseDAO.java | 62 + .../impl/EgoDummyUserDetailsServiceImpl.java | 70 + .../service/impl/EgovCmmUseServiceImpl.java | 91 + .../cmm/service/impl/EgovComAbstractDAO.java | 306 + .../service/impl/EgovFileMngServiceImpl.java | 156 + .../EgovUserDetailsSessionServiceImpl.java | 65 + .../com/cmm/service/impl/FileManageDAO.java | 181 + .../com/cmm/taglibs/DoubleSubmitTag.java | 88 + .../com/cmm/util/EgovBasicLogger.java | 83 + .../com/cmm/util/EgovDoubleSubmitHelper.java | 80 + .../com/cmm/util/EgovHttpRequestHelper.java | 56 + .../com/cmm/util/EgovMybaitsUtil.java | 135 + .../com/cmm/util/EgovResourceCloseHelper.java | 146 + .../com/cmm/util/EgovUrlRewriteFilter.java | 109 + .../com/cmm/util/EgovUserDetailsHelper.java | 61 + ...ReloadableResourceBundleMessageSource.java | 96 + .../com/cmm/util/EgovXssChecker.java | 77 + .../com/cmm/web/EgovBindingInitializer.java | 22 + .../com/cmm/web/EgovComIndexController.java | 169 + .../com/cmm/web/EgovComUtlController.java | 93 + .../cmm/web/EgovFileDownloadController.java | 154 + .../com/cmm/web/EgovFileMngController.java | 165 + .../cmm/web/EgovImageProcessController.java | 132 + .../com/cmm/web/EgovMultipartResolver.java | 130 + .../com/cop/ems/service/AtchmnFileVO.java | 147 + .../cop/ems/service/EgovMultiPartEmail.java | 129 + .../service/EgovSndngMailDetailService.java | 42 + .../ems/service/EgovSndngMailDtlsService.java | 47 + .../service/EgovSndngMailRegistService.java | 44 + .../cop/ems/service/EgovSndngMailService.java | 28 + .../com/cop/ems/service/SndngMail.java | 147 + .../com/cop/ems/service/SndngMailVO.java | 240 + .../impl/EgovSndngMailDetailServiceImpl.java | 90 + .../impl/EgovSndngMailDtlsServiceImpl.java | 90 + .../impl/EgovSndngMailRegistServiceImpl.java | 187 + .../impl/EgovSndngMailServiceImpl.java | 112 + .../ems/service/impl/SndngMailDetailDAO.java | 66 + .../ems/service/impl/SndngMailDtlsDAO.java | 48 + .../ems/service/impl/SndngMailRegistDAO.java | 60 + .../web/EgovSndngMailDetailController.java | 163 + .../ems/web/EgovSndngMailDtlsController.java | 107 + .../web/EgovSndngMailRegistController.java | 148 + .../com/sec/ram/service/AuthorManage.java | 124 + .../com/sec/ram/service/AuthorManageVO.java | 47 + .../com/sec/ram/service/AuthorRoleManage.java | 210 + .../sec/ram/service/AuthorRoleManageVO.java | 46 + .../ram/service/EgovAuthorManageService.java | 75 + .../service/EgovAuthorRoleManageService.java | 68 + .../sec/ram/service/impl/AuthorManageDAO.java | 99 + .../ram/service/impl/AuthorRoleManageDAO.java | 89 + .../impl/EgovAuthorManageServiceImpl.java | 107 + .../impl/EgovAuthorRoleManageServiceImpl.java | 94 + .../EgovUserDetailsSecurityServiceImpl.java | 65 + .../ram/web/EgovAuthorManageController.java | 232 + .../sec/ram/web/EgovAuthorRoleController.java | 134 + .../security/common/EgovSessionMapping.java | 82 + .../filter/EgovSpringSecurityLoginFilter.java | 294 + .../EgovSpringSecurityLogoutFilter.java | 62 + .../service/EgovCalRestdeManageService.java | 132 + .../com/sym/cal/service/Restde.java | 404 + .../com/sym/cal/service/RestdeVO.java | 199 + .../impl/EgovCalRestdeManageServiceImpl.java | 153 + .../sym/cal/service/impl/RestdeManageDAO.java | 170 + .../web/EgovCalRestdeManageController.java | 1531 ++ .../uat/sso/filter/EgovSSOLoginFilter.java | 151 + .../uat/sso/filter/EgovSSOLogoutFilter.java | 57 + .../com/uat/sso/service/EgovSSOService.java | 61 + .../uat/uap/filter/EgovLoginPolicyFilter.java | 126 + .../uap/service/EgovLoginPolicyService.java | 72 + .../com/uat/uap/service/LoginPolicy.java | 174 + .../com/uat/uap/service/LoginPolicyVO.java | 64 + .../impl/EgovLoginPolicyServiceImpl.java | 100 + .../uat/uap/service/impl/LoginPolicyDAO.java | 92 + .../uap/web/EgovLoginPolicyController.java | 210 + .../com/uat/uia/service/EgovLoginService.java | 85 + .../service/impl/EgovLoginServiceImpl.java | 244 + .../com/uat/uia/service/impl/LoginDAO.java | 114 + .../com/uat/uia/web/EgovLoginController.java | 541 + .../com/utl/fcc/service/EgovDateFormat.java | 146 + .../com/utl/fcc/service/EgovDateUtil.java | 865 + .../com/utl/fcc/service/EgovEhgtCalcUtil.java | 294 + .../utl/fcc/service/EgovFileUploadUtil.java | 159 + .../fcc/service/EgovFormBasedFileUtil.java | 295 + .../utl/fcc/service/EgovFormBasedFileVo.java | 104 + .../utl/fcc/service/EgovFormBasedUUID.java | 521 + .../utl/fcc/service/EgovFormatCheckUtil.java | 207 + .../utl/fcc/service/EgovNumberCheckUtil.java | 246 + .../com/utl/fcc/service/EgovNumberFormat.java | 258 + .../com/utl/fcc/service/EgovNumberUtil.java | 216 + .../com/utl/fcc/service/EgovStringUtil.java | 904 + .../com/utl/sec/filter/CertProcessFilter.java | 54 + .../sec/filter/CertProcessRequestWrapper.java | 84 + .../com/utl/sec/service/CertInfoVO.java | 57 + .../com/utl/sec/service/EgovCertInfoUtil.java | 83 + .../utl/sec/web/EgovCertLoginController.java | 176 + .../com/utl/sim/service/EgovClntInfo.java | 122 + .../com/utl/sim/service/EgovFileCmprs.java | 213 + .../com/utl/sim/service/EgovFileMntrg.java | 333 + .../com/utl/sim/service/EgovFileScrty.java | 303 + .../com/utl/sim/service/EgovFileTool.java | 2925 +++ .../com/utl/sim/service/EgovMenuGov.java | 92 + .../com/utl/sim/service/EgovNetInfo.java | 83 + .../com/utl/sim/service/EgovNetworkState.java | 275 + .../com/utl/sim/service/EgovPdfCnvr.java | 162 + .../com/utl/sim/service/EgovSysInfo.java | 1000 + .../com/utl/sim/service/EgovXMLDoc.java | 337 + .../com/utl/wed/filter/CkFilter.java | 111 + .../com/utl/wed/filter/CkImageSaver.java | 212 + .../wed/filter/DefaultFileSaveManager.java | 78 + .../utl/wed/filter/DirectoryPathManager.java | 86 + .../com/utl/wed/filter/FileSaveManager.java | 49 + .../wed/web/EgovWebEditorImageController.java | 216 + .../java/iams/nlib/common/MainController.java | 79 + .../iams/nlib/dataapi/service/DataApi.java | 323 + .../nlib/dataapi/service/DataApiReqVO.java | 116 + .../nlib/dataapi/service/DataApiResVO.java | 136 + .../dataapi/service/MapEntryConverter.java | 95 + .../nlib/sample/service/SampleDataApiDAO.java | 48 + .../sample/service/SampleDataApiService.java | 46 + .../sample/web/SampleDataApiController.java | 87 + src/main/java/iams/nlib/util/StringUtil.java | 65 + .../egovframework/egovProps/ck.properties | 16 + .../egovProps/conf/SMEConfig.properties | 14 + .../egovProps/conf/client.properties | 27 + .../egovProps/conf/confirmmessage.properties | 1 + .../egovProps/conf/errormessage.properties | 1 + .../egovProps/conf/format.properties | 166 + .../egovProps/conf/gpki.properties | 20 + .../egovProps/conf/infomessage.properties | 1 + .../egovProps/conf/server.properties | 46 + .../egovProps/conf/warnmessage.properties | 4 + .../egovProps/globals.properties | 144 + .../egovProps/prg/compileSchema.bat | 16 + .../egovProps/prg/compileSchema.sh | 16 + .../egovProps/prg/getDiskAttrb.bat | 1 + .../egovProps/prg/getDiskAttrb.sh | 128 + .../egovProps/prg/getDiskCpcty.bat | 1 + .../egovProps/prg/getDiskCpcty.sh | 18 + .../egovProps/prg/getDiskExst.bat | 1 + .../egovProps/prg/getDiskExst.sh | 15 + .../egovProps/prg/getDiskInfo.bat | 16 + .../egovProps/prg/getDiskInfo.sh | 40 + .../egovProps/prg/getDrctryAccess.sh | 15 + .../egovProps/prg/getDrctryByOwner.bat | 1 + .../egovProps/prg/getDrctryByOwner.sh | 15 + .../egovProps/prg/getDrctryOwner.bat | 1 + .../egovProps/prg/getDrctryOwner.sh | 15 + .../egovProps/prg/getMoryInfo.bat | 16 + .../egovProps/prg/getMoryInfo.sh | 34 + .../egovframework/egovProps/prg/getMountLc.sh | 19 + .../egovProps/prg/getNetWorkInfo.sh | 63 + .../egovframework/egovProps/prg/getOSInfo.bat | 16 + .../egovframework/egovProps/prg/getOSInfo.sh | 40 + .../egovProps/prg/getPrductStatus.bat | 16 + .../egovProps/prg/getPrductStatus.sh | 18 + .../egovProps/prg/getPrductVersion.bat | 43 + .../egovProps/prg/getPrductVersion.sh | 34 + .../egovProps/prg/moveDrctry.bat | 1 + .../egovframework/egovProps/prg/moveDrctry.sh | 15 + .../egovframework/egovProps/prg/sh_001.bat | 1 + .../com/cmm/fms/EgovFile_SQL_altibase.xml | 170 + .../com/cmm/fms/EgovFile_SQL_cubrid.xml | 170 + .../mapper/com/cmm/fms/EgovFile_SQL_maria.xml | 169 + .../mapper/com/cmm/fms/EgovFile_SQL_mysql.xml | 169 + .../com/cmm/fms/EgovFile_SQL_oracle.xml | 170 + .../com/cmm/fms/EgovFile_SQL_postgres.xml | 169 + .../com/cmm/fms/EgovFile_SQL_tibero.xml | 170 + .../com/cmm/use/EgovCmmUse_SQL_altibase.xml | 68 + .../com/cmm/use/EgovCmmUse_SQL_cubrid.xml | 58 + .../com/cmm/use/EgovCmmUse_SQL_maria.xml | 58 + .../com/cmm/use/EgovCmmUse_SQL_mysql.xml | 58 + .../com/cmm/use/EgovCmmUse_SQL_oracle.xml | 58 + .../com/cmm/use/EgovCmmUse_SQL_postgres.xml | 58 + .../com/cmm/use/EgovCmmUse_SQL_tibero.xml | 58 + .../ems/EgovSndngMailDetail_SQL_altibase.xml | 65 + .../ems/EgovSndngMailDetail_SQL_cubrid.xml | 65 + .../cop/ems/EgovSndngMailDetail_SQL_maria.xml | 65 + .../cop/ems/EgovSndngMailDetail_SQL_mysql.xml | 65 + .../ems/EgovSndngMailDetail_SQL_oracle.xml | 65 + .../ems/EgovSndngMailDetail_SQL_postgres.xml | 65 + .../ems/EgovSndngMailDetail_SQL_tibero.xml | 65 + .../ems/EgovSndngMailDtls_SQL_altibase.xml | 77 + .../cop/ems/EgovSndngMailDtls_SQL_cubrid.xml | 78 + .../cop/ems/EgovSndngMailDtls_SQL_maria.xml | 74 + .../cop/ems/EgovSndngMailDtls_SQL_mysql.xml | 74 + .../cop/ems/EgovSndngMailDtls_SQL_oracle.xml | 77 + .../ems/EgovSndngMailDtls_SQL_postgres.xml | 74 + .../cop/ems/EgovSndngMailDtls_SQL_tibero.xml | 78 + .../ems/EgovSndngMailRegist_SQL_altibase.xml | 69 + .../ems/EgovSndngMailRegist_SQL_cubrid.xml | 68 + .../cop/ems/EgovSndngMailRegist_SQL_maria.xml | 68 + .../cop/ems/EgovSndngMailRegist_SQL_mysql.xml | 68 + .../ems/EgovSndngMailRegist_SQL_oracle.xml | 68 + .../ems/EgovSndngMailRegist_SQL_postgres.xml | 68 + .../ems/EgovSndngMailRegist_SQL_tibero.xml | 68 + .../sec/ram/EgovAuthorManage_SQL_altibase.xml | 90 + .../sec/ram/EgovAuthorManage_SQL_cubrid.xml | 90 + .../sec/ram/EgovAuthorManage_SQL_maria.xml | 77 + .../sec/ram/EgovAuthorManage_SQL_mysql.xml | 77 + .../sec/ram/EgovAuthorManage_SQL_oracle.xml | 91 + .../sec/ram/EgovAuthorManage_SQL_postgres.xml | 77 + .../sec/ram/EgovAuthorManage_SQL_tibero.xml | 90 + .../ram/EgovAuthorRoleManage_SQL_altibase.xml | 76 + .../ram/EgovAuthorRoleManage_SQL_cubrid.xml | 77 + .../ram/EgovAuthorRoleManage_SQL_maria.xml | 66 + .../ram/EgovAuthorRoleManage_SQL_mysql.xml | 66 + .../ram/EgovAuthorRoleManage_SQL_oracle.xml | 77 + .../ram/EgovAuthorRoleManage_SQL_postgres.xml | 66 + .../ram/EgovAuthorRoleManage_SQL_tibero.xml | 77 + .../sym/cal/EgovRestdeManage_SQL_altibase.xml | 322 + .../sym/cal/EgovRestdeManage_SQL_cubrid.xml | 322 + .../sym/cal/EgovRestdeManage_SQL_maria.xml | 316 + .../sym/cal/EgovRestdeManage_SQL_mysql.xml | 316 + .../sym/cal/EgovRestdeManage_SQL_oracle.xml | 322 + .../sym/cal/EgovRestdeManage_SQL_postgres.xml | 316 + .../sym/cal/EgovRestdeManage_SQL_tibero.xml | 321 + .../uat/uap/EgovLoginPolicy_SQL_altibase.xml | 119 + .../uat/uap/EgovLoginPolicy_SQL_cubrid.xml | 119 + .../com/uat/uap/EgovLoginPolicy_SQL_maria.xml | 108 + .../com/uat/uap/EgovLoginPolicy_SQL_mysql.xml | 108 + .../uat/uap/EgovLoginPolicy_SQL_oracle.xml | 119 + .../uat/uap/EgovLoginPolicy_SQL_postgres.xml | 108 + .../uat/uap/EgovLoginPolicy_SQL_tibero.xml | 119 + .../com/uat/uia/EgovLoginUsr_SQL_altibase.xml | 405 + .../com/uat/uia/EgovLoginUsr_SQL_cubrid.xml | 405 + .../com/uat/uia/EgovLoginUsr_SQL_maria.xml | 421 + .../com/uat/uia/EgovLoginUsr_SQL_mysql.xml | 421 + .../com/uat/uia/EgovLoginUsr_SQL_oracle.xml | 405 + .../com/uat/uia/EgovLoginUsr_SQL_postgres.xml | 421 + .../com/uat/uia/EgovLoginUsr_SQL_tibero.xml | 404 + .../mapper/config/mapper-config.xml | 21 + .../com/cmm/err/message-common_en.properties | 23 + .../com/cmm/err/message-common_ko.properties | 22 + .../com/cmm/message-common_en.properties | 222 + .../com/cmm/message-common_ko.properties | 222 + .../message/com/cop/adb/message_en.properties | 51 + .../message/com/cop/adb/message_ko.properties | 51 + .../message/com/cop/bbs/message_en.properties | 88 + .../message/com/cop/bbs/message_ko.properties | 88 + .../com/cop/blog/message_en.properties | 60 + .../com/cop/blog/message_ko.properties | 60 + .../message/com/cop/cmt/message_en.properties | 4 + .../message/com/cop/cmt/message_ko.properties | 4 + .../message/com/cop/cmy/message_en.properties | 52 + .../message/com/cop/cmy/message_ko.properties | 52 + .../message/com/cop/com/message_en.properties | 9 + .../message/com/cop/com/message_ko.properties | 9 + .../message/com/cop/ncm/message_en.properties | 107 + .../message/com/cop/ncm/message_ko.properties | 107 + .../message/com/cop/scp/message_en.properties | 19 + .../message/com/cop/scp/message_ko.properties | 19 + .../message/com/cop/sms/message_en.properties | 16 + .../message/com/cop/sms/message_ko.properties | 16 + .../com/cop/smt/djm/message_en.properties | 77 + .../com/cop/smt/djm/message_ko.properties | 77 + .../com/cop/smt/dsm/message_en.properties | 20 + .../com/cop/smt/dsm/message_ko.properties | 20 + .../com/cop/smt/lsm/message_en.properties | 82 + .../com/cop/smt/lsm/message_ko.properties | 81 + .../com/cop/smt/mrm/message_en.properties | 50 + .../com/cop/smt/mrm/message_ko.properties | 50 + .../com/cop/smt/mtm/message_en.properties | 46 + .../com/cop/smt/mtm/message_ko.properties | 46 + .../com/cop/smt/sam/message_en.properties | 16 + .../com/cop/smt/sam/message_ko.properties | 16 + .../com/cop/smt/sdm/message_en.properties | 77 + .../com/cop/smt/sdm/message_ko.properties | 77 + .../com/cop/smt/sim/message_en.properties | 59 + .../com/cop/smt/sim/message_ko.properties | 59 + .../com/cop/smt/wmr/message_en.properties | 78 + .../com/cop/smt/wmr/message_ko.properties | 78 + .../message/com/cop/stf/message_en.properties | 11 + .../message/com/cop/stf/message_ko.properties | 11 + .../com/cop/sym/ems/message_en.properties | 27 + .../com/cop/sym/ems/message_ko.properties | 27 + .../message/com/cop/tpl/message_en.properties | 12 + .../message/com/cop/tpl/message_ko.properties | 12 + .../message/com/dam/app/message_en.properties | 58 + .../message/com/dam/app/message_ko.properties | 57 + .../com/dam/map/mat/message_en.properties | 47 + .../com/dam/map/mat/message_ko.properties | 47 + .../com/dam/map/tea/message_en.properties | 38 + .../com/dam/map/tea/message_ko.properties | 38 + .../message/com/dam/mgm/message_en.properties | 63 + .../message/com/dam/mgm/message_ko.properties | 62 + .../message/com/dam/per/message_en.properties | 55 + .../message/com/dam/per/message_ko.properties | 56 + .../com/dam/spe/req/message_en.properties | 48 + .../com/dam/spe/req/message_ko.properties | 46 + .../com/dam/spe/spe/message_en.properties | 60 + .../com/dam/spe/spe/message_ko.properties | 59 + .../com/ext/ldapumt/dpt/message_en.properties | 29 + .../com/ext/ldapumt/dpt/message_ko.properties | 29 + .../message/com/ext/msg/message_en.properties | 12 + .../message/com/ext/msg/message_ko.properties | 12 + .../message/com/message-common_en.properties | 181 + .../message/com/message-common_ko.properties | 182 + .../message/com/sec/drm/message_en.properties | 26 + .../message/com/sec/drm/message_ko.properties | 26 + .../message/com/sec/gmt/message_en.properties | 21 + .../message/com/sec/gmt/message_ko.properties | 22 + .../message/com/sec/pki/message_en.properties | 8 + .../message/com/sec/pki/message_ko.properties | 8 + .../message/com/sec/ram/message_en.properties | 29 + .../message/com/sec/ram/message_ko.properties | 29 + .../message/com/sec/rgm/message_en.properties | 18 + .../message/com/sec/rgm/message_ko.properties | 19 + .../message/com/sec/rmt/message_en.properties | 19 + .../message/com/sec/rmt/message_ko.properties | 19 + .../com/ssi/syi/iis/message_en.properties | 90 + .../com/ssi/syi/iis/message_ko.properties | 89 + .../com/ssi/syi/ims/message_en.properties | 59 + .../com/ssi/syi/ims/message_ko.properties | 59 + .../com/ssi/syi/ist/message_en.properties | 25 + .../com/ssi/syi/ist/message_ko.properties | 26 + .../com/ssi/syi/sim/message_en.properties | 93 + .../com/ssi/syi/sim/message_ko.properties | 93 + .../message/com/sts/bst/message_en.properties | 46 + .../message/com/sts/bst/message_ko.properties | 46 + .../message/com/sts/cst/message_en.properties | 34 + .../message/com/sts/cst/message_ko.properties | 34 + .../message/com/sts/dst/message_en.properties | 29 + .../message/com/sts/dst/message_ko.properties | 29 + .../message/com/sts/rst/message_en.properties | 28 + .../message/com/sts/rst/message_ko.properties | 29 + .../message/com/sts/sst/message_en.properties | 22 + .../message/com/sts/sst/message_ko.properties | 22 + .../message/com/sts/ust/message_en.properties | 25 + .../message/com/sts/ust/message_ko.properties | 25 + .../message/com/sym/adr/message_en.properties | 17 + .../message/com/sym/adr/message_ko.properties | 17 + .../message/com/sym/bat/message_en.properties | 155 + .../message/com/sym/bat/message_ko.properties | 156 + .../message/com/sym/cal/message_en.properties | 22 + .../message/com/sym/cal/message_ko.properties | 15 + .../com/sym/ccm/adc/message_en.properties | 16 + .../com/sym/ccm/adc/message_ko.properties | 18 + .../com/sym/ccm/cca/message_en.properties | 11 + .../com/sym/ccm/cca/message_ko.properties | 11 + .../com/sym/ccm/ccc/message_en.properties | 9 + .../com/sym/ccm/ccc/message_ko.properties | 9 + .../com/sym/ccm/cde/message_en.properties | 11 + .../com/sym/ccm/cde/message_ko.properties | 11 + .../com/sym/ccm/icr/message_en.properties | 32 + .../com/sym/ccm/icr/message_ko.properties | 32 + .../com/sym/ccm/zip/message_en.properties | 45 + .../com/sym/ccm/zip/message_ko.properties | 45 + .../com/sym/log/clg/message_en.properties | 13 + .../com/sym/log/clg/message_ko.properties | 13 + .../com/sym/log/lgm/message_en.properties | 16 + .../com/sym/log/lgm/message_ko.properties | 16 + .../com/sym/log/plg/message_en.properties | 14 + .../com/sym/log/plg/message_ko.properties | 14 + .../com/sym/log/slg/message_en.properties | 45 + .../com/sym/log/slg/message_ko.properties | 44 + .../com/sym/log/tlg/message_en.properties | 25 + .../com/sym/log/tlg/message_ko.properties | 26 + .../com/sym/log/ulg/message_en.properties | 20 + .../com/sym/log/ulg/message_ko.properties | 16 + .../com/sym/log/wlg/message_en.properties | 13 + .../com/sym/log/wlg/message_ko.properties | 13 + .../com/sym/mnu/bmm/message_en.properties | 33 + .../com/sym/mnu/bmm/message_ko.properties | 33 + .../com/sym/mnu/mcm/message_en.properties | 32 + .../com/sym/mnu/mcm/message_ko.properties | 31 + .../com/sym/mnu/mpm/message_en.properties | 109 + .../com/sym/mnu/mpm/message_ko.properties | 109 + .../com/sym/mnu/stm/message_en.properties | 4 + .../com/sym/mnu/stm/message_ko.properties | 4 + .../message/com/sym/prm/message_en.properties | 160 + .../message/com/sym/prm/message_ko.properties | 162 + .../com/sym/sym/bak/message_en.properties | 120 + .../com/sym/sym/bak/message_ko.properties | 120 + .../com/sym/sym/nwk/message_en.properties | 69 + .../com/sym/sym/nwk/message_ko.properties | 71 + .../com/sym/sym/srv/message_en.properties | 138 + .../com/sym/sym/srv/message_ko.properties | 138 + .../com/sym/tbm/tbp/message_en.properties | 34 + .../com/sym/tbm/tbp/message_ko.properties | 34 + .../com/sym/tbm/tbr/message_en.properties | 65 + .../com/sym/tbm/tbr/message_ko.properties | 81 + .../message/com/uat/uap/message_en.properties | 45 + .../message/com/uat/uap/message_ko.properties | 46 + .../message/com/uat/uia/message_en.properties | 51 + .../message/com/uat/uia/message_ko.properties | 51 + .../message/com/uss/cmt/message_en.properties | 16 + .../message/com/uss/cmt/message_ko.properties | 16 + .../com/uss/ion/ans/message_en.properties | 81 + .../com/uss/ion/ans/message_ko.properties | 81 + .../com/uss/ion/bnr/message_en.properties | 38 + .../com/uss/ion/bnr/message_ko.properties | 38 + .../com/uss/ion/bnt/message_en.properties | 105 + .../com/uss/ion/bnt/message_ko.properties | 105 + .../com/uss/ion/ctn/message_en.properties | 109 + .../com/uss/ion/ctn/message_ko.properties | 110 + .../com/uss/ion/ecc/message_en.properties | 27 + .../com/uss/ion/ecc/message_ko.properties | 27 + .../com/uss/ion/evt/message_en.properties | 121 + .../com/uss/ion/evt/message_ko.properties | 121 + .../com/uss/ion/fbk/message_en.properties | 25 + .../com/uss/ion/fbk/message_ko.properties | 25 + .../com/uss/ion/isg/message_en.properties | 22 + .../com/uss/ion/isg/message_ko.properties | 23 + .../com/uss/ion/ism/message_en.properties | 26 + .../com/uss/ion/ism/message_ko.properties | 26 + .../com/uss/ion/lsi/message_en.properties | 33 + .../com/uss/ion/lsi/message_ko.properties | 33 + .../com/uss/ion/msi/message_en.properties | 34 + .../com/uss/ion/msi/message_ko.properties | 34 + .../com/uss/ion/mtg/message_en.properties | 73 + .../com/uss/ion/mtg/message_ko.properties | 73 + .../com/uss/ion/noi/message_en.properties | 41 + .../com/uss/ion/noi/message_ko.properties | 41 + .../com/uss/ion/ntm/message_en.properties | 24 + .../com/uss/ion/ntm/message_ko.properties | 24 + .../com/uss/ion/ntr/message_en.properties | 28 + .../com/uss/ion/ntr/message_ko.properties | 29 + .../com/uss/ion/nts/message_en.properties | 39 + .../com/uss/ion/nts/message_ko.properties | 41 + .../com/uss/ion/nws/message_en.properties | 10 + .../com/uss/ion/nws/message_ko.properties | 10 + .../com/uss/ion/pwm/message_en.properties | 62 + .../com/uss/ion/pwm/message_ko.properties | 62 + .../com/uss/ion/rec/message_en.properties | 10 + .../com/uss/ion/rec/message_ko.properties | 10 + .../com/uss/ion/rmm/message_en.properties | 27 + .../com/uss/ion/rmm/message_ko.properties | 27 + .../com/uss/ion/rsm/message_en.properties | 38 + .../com/uss/ion/rsm/message_ko.properties | 38 + .../com/uss/ion/rsn/message_en.properties | 10 + .../com/uss/ion/rsn/message_ko.properties | 10 + .../com/uss/ion/rss/message_en.properties | 69 + .../com/uss/ion/rss/message_ko.properties | 69 + .../com/uss/ion/rwd/message_en.properties | 58 + .../com/uss/ion/rwd/message_ko.properties | 58 + .../com/uss/ion/sit/message_en.properties | 10 + .../com/uss/ion/sit/message_ko.properties | 10 + .../com/uss/ion/tir/message_en.properties | 39 + .../com/uss/ion/tir/message_ko.properties | 39 + .../com/uss/ion/uas/message_en.properties | 33 + .../com/uss/ion/uas/message_ko.properties | 35 + .../com/uss/ion/ulm/message_en.properties | 33 + .../com/uss/ion/ulm/message_ko.properties | 33 + .../com/uss/ion/vct/message_en.properties | 92 + .../com/uss/ion/vct/message_ko.properties | 92 + .../com/uss/ion/wik/bmk/message_en.properties | 6 + .../com/uss/ion/wik/bmk/message_ko.properties | 6 + .../com/uss/ion/yrc/message_en.properties | 15 + .../com/uss/ion/yrc/message_ko.properties | 15 + .../message/com/uss/mpe/message_en.properties | 9 + .../message/com/uss/mpe/message_ko.properties | 9 + .../com/uss/olh/awm/message_en.properties | 12 + .../com/uss/olh/awm/message_ko.properties | 12 + .../com/uss/olh/faq/message_en.properties | 9 + .../com/uss/olh/faq/message_ko.properties | 9 + .../com/uss/olh/hpc/message_en.properties | 7 + .../com/uss/olh/hpc/message_ko.properties | 7 + .../com/uss/olh/omm/message_en.properties | 8 + .../com/uss/olh/omm/message_ko.properties | 8 + .../com/uss/olh/qna/message_en.properties | 19 + .../com/uss/olh/qna/message_ko.properties | 20 + .../com/uss/olh/wor/message_en.properties | 8 + .../com/uss/olh/wor/message_ko.properties | 8 + .../com/uss/olp/cns/message_en.properties | 56 + .../com/uss/olp/cns/message_ko.properties | 59 + .../com/uss/olp/mgt/message_en.properties | 112 + .../com/uss/olp/mgt/message_ko.properties | 112 + .../com/uss/olp/opm/message_en.properties | 26 + .../com/uss/olp/opm/message_ko.properties | 27 + .../com/uss/olp/opp/message_en.properties | 12 + .../com/uss/olp/opp/message_ko.properties | 12 + .../com/uss/olp/qim/message_en.properties | 28 + .../com/uss/olp/qim/message_ko.properties | 28 + .../com/uss/olp/qmc/message_en.properties | 40 + .../com/uss/olp/qmc/message_ko.properties | 40 + .../com/uss/olp/qnn/message_en.properties | 48 + .../com/uss/olp/qnn/message_ko.properties | 48 + .../com/uss/olp/qqm/message_en.properties | 37 + .../com/uss/olp/qqm/message_ko.properties | 37 + .../com/uss/olp/qri/message_en.properties | 39 + .../com/uss/olp/qri/message_ko.properties | 39 + .../com/uss/olp/qrm/message_en.properties | 18 + .../com/uss/olp/qrm/message_ko.properties | 18 + .../com/uss/olp/qtm/message_en.properties | 25 + .../com/uss/olp/qtm/message_ko.properties | 25 + .../com/uss/sam/cpy/message_en.properties | 16 + .../com/uss/sam/cpy/message_ko.properties | 16 + .../com/uss/sam/ipm/message_en.properties | 26 + .../com/uss/sam/ipm/message_ko.properties | 26 + .../com/uss/sam/stp/message_en.properties | 5 + .../com/uss/sam/stp/message_ko.properties | 5 + .../message/com/uss/umt/message_en.properties | 148 + .../message/com/uss/umt/message_ko.properties | 150 + .../com/utl/sys/dbm/message_en.properties | 31 + .../com/utl/sys/dbm/message_ko.properties | 31 + .../com/utl/sys/fsm/message_en.properties | 62 + .../com/utl/sys/fsm/message_ko.properties | 62 + .../com/utl/sys/htm/message_en.properties | 31 + .../com/utl/sys/htm/message_ko.properties | 31 + .../com/utl/sys/nsm/message_en.properties | 37 + .../com/utl/sys/nsm/message_ko.properties | 40 + .../com/utl/sys/prm/message_en.properties | 24 + .../com/utl/sys/prm/message_ko.properties | 24 + .../com/utl/sys/pxy/message_en.properties | 47 + .../com/utl/sys/pxy/message_ko.properties | 47 + .../com/utl/sys/rsc/message_en.properties | 7 + .../com/utl/sys/rsc/message_ko.properties | 7 + .../com/utl/sys/srm/message_en.properties | 41 + .../com/utl/sys/srm/message_ko.properties | 41 + .../com/utl/sys/ssy/message_en.properties | 32 + .../com/utl/sys/ssy/message_ko.properties | 32 + .../com/utl/sys/trm/message_en.properties | 33 + .../com/utl/sys/trm/message_ko.properties | 33 + .../message/nlib/sample/message_en.properties | 2 + .../message/nlib/sample/message_ko.properties | 2 + .../spring/com/context-aspect.xml | 60 + .../spring/com/context-common.xml | 105 + .../spring/com/context-config.xml | 14 + .../spring/com/context-crypto.xml | 23 + .../spring/com/context-datasource.xml | 39 + .../com/context-egovuserdetailshelper.xml | 44 + .../egovframework/spring/com/context-mail.xml | 60 + .../spring/com/context-mapper.xml | 25 + .../spring/com/context-properties.xml | 15 + .../spring/com/context-security.xml | 93 + .../spring/com/context-transaction.xml | 26 + .../spring/com/context-validator.xml | 21 + .../spring/com/context-whitelist.xml | 35 + .../spring/com/idgn/context-idgn-File.xml | 18 + .../spring/com/idgn/context-idgn-MailMsg.xml | 18 + .../spring/com/idgn/context-idgn-RestDe.xml | 12 + .../egovframework/validator/com-rules.xml | 403 + .../validator/com/cop/ems/EgovMailRegist.xml | 30 + .../com/sec/ram/EgovSecurityManage.xml | 95 + .../com/sym/cal/EgovRestdeManage.xml | 42 + .../validator/com/uat/uap/EgovLoginPolicy.xml | 24 + .../com/uat/uia/EgovIdPasswordSearch.xml | 28 + .../validator/com/utl/sim/EgovSysInfo.xml | 16 + .../validator/validator-rules.xml | 1222 + .../iams/nlib/dapi-url-map.properties | 20 + src/main/resources/iams/nlib/nlib.properties | 29 + src/main/resources/log4j2.xml | 26 + src/main/webapp/META-INF/MANIFEST.MF | 3 + .../springmvc/egov-com-servlet.xml | 100 + .../jsp/egovframework/com/EgovMainView.jsp | 91 + .../jsp/egovframework/com/cmm/EgovModal.jsp | 57 + .../egovframework/com/cmm/EgovUnitBottom.jsp | 18 + .../egovframework/com/cmm/EgovUnitContent.jsp | 35 + .../egovframework/com/cmm/EgovUnitLeft.jsp | 107 + .../egovframework/com/cmm/EgovUnitMain.jsp | 17 + .../jsp/egovframework/com/cmm/EgovUnitTop.jsp | 23 + .../com/cmm/error/EgovXssException.jsp | 38 + .../com/cmm/error/accessDenied.jsp | 38 + .../com/cmm/error/dataAccessFailure.jsp | 39 + .../com/cmm/error/egovBizException.jsp | 39 + .../egovframework/com/cmm/error/egovError.jsp | 39 + .../cmm/error/egovHttpSessionException.jsp | 39 + .../com/cmm/fms/EgovFileList.jsp | 150 + .../com/cmm/fms/EgovImgFileList.jsp | 39 + .../jsp/egovframework/com/cmm/validator.jsp | 4 + .../com/cop/ems/EgovMailDetail.jsp | 140 + .../com/cop/ems/EgovMailDtls.jsp | 229 + .../com/cop/ems/EgovMailRegist.jsp | 156 + .../WEB-INF/jsp/egovframework/com/head.jsp | 47 + .../jsp/egovframework/com/main_bottom.jsp | 22 + .../jsp/egovframework/com/main_head.jsp | 66 + .../jsp/egovframework/com/main_left.jsp | 67 + .../jsp/egovframework/com/menu_index.jsp | 38 + .../com/sec/ram/EgovAuthorInsert.jsp | 135 + .../com/sec/ram/EgovAuthorManage.jsp | 236 + .../com/sec/ram/EgovAuthorRoleManage.jsp | 257 + .../com/sec/ram/EgovAuthorUpdate.jsp | 127 + .../com/sym/cal/EgovAdministCalPopup.jsp | 42 + .../com/sym/cal/EgovAdministCalendar.jsp | 168 + .../com/sym/cal/EgovAdministDayCalendar.jsp | 171 + .../com/sym/cal/EgovAdministMonthCalendar.jsp | 165 + .../com/sym/cal/EgovAdministWeekCalendar.jsp | 222 + .../com/sym/cal/EgovAdministYearCalendar.jsp | 832 + .../com/sym/cal/EgovCalPopup.jsp | 43 + .../com/sym/cal/EgovCalendar.jsp | 160 + .../com/sym/cal/EgovNormalCalPopup.jsp | 44 + .../com/sym/cal/EgovNormalCalendar.jsp | 163 + .../com/sym/cal/EgovNormalDayCalendar.jsp | 171 + .../com/sym/cal/EgovNormalMonthCalendar.jsp | 165 + .../com/sym/cal/EgovNormalWeekCalendar.jsp | 222 + .../com/sym/cal/EgovNormalYearCalendar.jsp | 831 + .../com/sym/cal/EgovRestdeDetail.jsp | 117 + .../com/sym/cal/EgovRestdeList.jsp | 149 + .../com/sym/cal/EgovRestdeModify.jsp | 119 + .../com/sym/cal/EgovRestdeRegist.jsp | 124 + .../com/uat/uap/EgovLoginPolicyList.jsp | 269 + .../com/uat/uap/EgovLoginPolicyRegist.jsp | 168 + .../com/uat/uap/EgovLoginPolicyUpdt.jsp | 186 + .../com/uat/uia/EgovGpkiInstall.jsp | 127 + .../com/uat/uia/EgovGpkiIssu.jsp | 174 + .../com/uat/uia/EgovGpkiRegist.jsp | 111 + .../com/uat/uia/EgovIdPasswordResult.jsp | 71 + .../com/uat/uia/EgovIdPasswordSearch.jsp | 192 + .../com/uat/uia/EgovLoginUsr.jsp | 311 + .../com/uat/uia/EgovLoginUsrOauth.jsp | 315 + .../com/uat/uia/EgovLoginUsrOauthResult.jsp | 97 + .../com/utl/wed/EgovInsertImage.jsp | 444 + .../com/utl/wed/EgovUploadImageComplete.jsp | 24 + .../WEB-INF/jsp/iams/nlib/common/Bottom.jsp | 18 + .../WEB-INF/jsp/iams/nlib/common/Content.jsp | 35 + .../WEB-INF/jsp/iams/nlib/common/Left.jsp | 26 + .../WEB-INF/jsp/iams/nlib/common/Main.jsp | 17 + .../WEB-INF/jsp/iams/nlib/common/Modal.jsp | 57 + .../WEB-INF/jsp/iams/nlib/common/Top.jsp | 20 + .../iams/nlib/common/error/accessDenied.jsp | 38 + .../iams/nlib/common/error/bizException.jsp | 39 + .../nlib/common/error/dataAccessFailure.jsp | 39 + .../nlib/common/error/egovXssException.jsp | 38 + .../jsp/iams/nlib/common/error/error.jsp | 39 + .../common/error/httpSessionException.jsp | 39 + .../jsp/iams/nlib/common/fms/EgovFileList.jsp | 150 + .../iams/nlib/common/fms/EgovImgFileList.jsp | 39 + .../jsp/iams/nlib/common/validator.jsp | 4 + .../jsp/iams/nlib/sample/getSampleInfo.jsp | 83 + .../iams/nlib/sample/getSampleInfoForm.jsp | 104 + src/main/webapp/WEB-INF/jsp/index.jsp | 4 + src/main/webapp/WEB-INF/tlds/egovc.tld | 552 + src/main/webapp/WEB-INF/web.xml | 36 + src/main/webapp/WEB-INF/web.xml202106150 | 37 + src/main/webapp/code404.jsp | 41 + src/main/webapp/code500.jsp | 37 + .../webapp/css/egovframework/com/button.css | 87 + .../com/cmm/jquery-ui_1.12.1.css | 1326 ++ .../css/egovframework/com/cmm/jqueryui.css | 1317 ++ .../egovframework/com/cmm/jqueryui_org.css | 668 + .../webapp/css/egovframework/com/cmm/left.css | 76 + .../webapp/css/egovframework/com/cmm/main.css | 49 + .../css/egovframework/com/cmm/modal.css | 98 + src/main/webapp/css/egovframework/com/com.css | 526 + .../webapp/css/egovframework/com/com12.css | 282 + .../css/egovframework/com/main_portal.css | 80 + .../css/egovframework/com/popup_com.css | 28 + .../css/egovframework/com/sym/cal/cal.css | 114 + .../css/egovframework/com/uat/uia/idpw.css | 33 + .../css/egovframework/com/uat/uia/login.css | 36 + .../css/egovframework/com/uat/uia/style.css | 135 + .../com/cmm/utl/htmlarea3.0/dialog.js | 74 + .../cmm/utl/htmlarea3.0/examples/2-areas.cgi | 16 + .../cmm/utl/htmlarea3.0/examples/2-areas.html | 162 + .../htmlarea3.0/examples/character_map.html | 30 + .../htmlarea3.0/examples/context-menu.html | 95 + .../cmm/utl/htmlarea3.0/examples/core.html | 186 + .../com/cmm/utl/htmlarea3.0/examples/css.html | 90 + .../cmm/utl/htmlarea3.0/examples/custom.css | 29 + .../cmm/utl/htmlarea3.0/examples/dynamic.css | 45 + .../utl/htmlarea3.0/examples/dynamic_css.html | 44 + .../cmm/utl/htmlarea3.0/examples/empty.html | 22 + .../utl/htmlarea3.0/examples/full-page.html | 77 + .../htmlarea3.0/examples/fully-loaded.html | 262 + .../cmm/utl/htmlarea3.0/examples/index.html | 43 + .../utl/htmlarea3.0/examples/list-type.html | 66 + .../examples/remove-font-tags.html | 41 + .../htmlarea3.0/examples/spell-checker.html | 132 + .../examples/table-operations.html | 116 + .../com/cmm/utl/htmlarea3.0/examples/test.cgi | 21 + .../com/cmm/utl/htmlarea3.0/htmlarea.css | 180 + .../com/cmm/utl/htmlarea3.0/htmlarea.js | 3015 +++ .../cmm/utl/htmlarea3.0/images/ed_about.gif | Bin 0 -> 87 bytes .../htmlarea3.0/images/ed_align_center.gif | Bin 0 -> 69 bytes .../htmlarea3.0/images/ed_align_justify.gif | Bin 0 -> 69 bytes .../utl/htmlarea3.0/images/ed_align_left.gif | Bin 0 -> 69 bytes .../utl/htmlarea3.0/images/ed_align_right.gif | Bin 0 -> 68 bytes .../cmm/utl/htmlarea3.0/images/ed_blank.gif | Bin 0 -> 56 bytes .../cmm/utl/htmlarea3.0/images/ed_charmap.gif | Bin 0 -> 143 bytes .../utl/htmlarea3.0/images/ed_color_bg.gif | Bin 0 -> 181 bytes .../utl/htmlarea3.0/images/ed_color_fg.gif | Bin 0 -> 171 bytes .../cmm/utl/htmlarea3.0/images/ed_copy.gif | Bin 0 -> 110 bytes .../cmm/utl/htmlarea3.0/images/ed_custom.gif | Bin 0 -> 67 bytes .../com/cmm/utl/htmlarea3.0/images/ed_cut.gif | Bin 0 -> 91 bytes .../cmm/utl/htmlarea3.0/images/ed_delete.gif | Bin 0 -> 90 bytes .../utl/htmlarea3.0/images/ed_format_bold.gif | Bin 0 -> 74 bytes .../htmlarea3.0/images/ed_format_italic.gif | Bin 0 -> 77 bytes .../htmlarea3.0/images/ed_format_strike.gif | Bin 0 -> 78 bytes .../utl/htmlarea3.0/images/ed_format_sub.gif | Bin 0 -> 78 bytes .../utl/htmlarea3.0/images/ed_format_sup.gif | Bin 0 -> 77 bytes .../images/ed_format_underline.gif | Bin 0 -> 85 bytes .../cmm/utl/htmlarea3.0/images/ed_help.gif | Bin 0 -> 70 bytes .../com/cmm/utl/htmlarea3.0/images/ed_hr.gif | Bin 0 -> 70 bytes .../cmm/utl/htmlarea3.0/images/ed_html.gif | Bin 0 -> 75 bytes .../cmm/utl/htmlarea3.0/images/ed_image.gif | Bin 0 -> 148 bytes .../utl/htmlarea3.0/images/ed_indent_less.gif | Bin 0 -> 87 bytes .../utl/htmlarea3.0/images/ed_indent_more.gif | Bin 0 -> 87 bytes .../utl/htmlarea3.0/images/ed_killword.gif | Bin 0 -> 154 bytes .../htmlarea3.0/images/ed_left_to_right.gif | Bin 0 -> 89 bytes .../cmm/utl/htmlarea3.0/images/ed_link.gif | Bin 0 -> 97 bytes .../utl/htmlarea3.0/images/ed_list_bullet.gif | Bin 0 -> 80 bytes .../utl/htmlarea3.0/images/ed_list_num.gif | Bin 0 -> 82 bytes .../cmm/utl/htmlarea3.0/images/ed_paste.gif | Bin 0 -> 139 bytes .../cmm/utl/htmlarea3.0/images/ed_print.gif | Bin 0 -> 128 bytes .../cmm/utl/htmlarea3.0/images/ed_redo.gif | Bin 0 -> 80 bytes .../htmlarea3.0/images/ed_right_to_left.gif | Bin 0 -> 88 bytes .../utl/htmlarea3.0/images/ed_rmformat.gif | Bin 0 -> 118 bytes .../cmm/utl/htmlarea3.0/images/ed_save.gif | Bin 0 -> 143 bytes .../utl/htmlarea3.0/images/ed_show_border.gif | Bin 0 -> 104 bytes .../utl/htmlarea3.0/images/ed_splitcel.gif | Bin 0 -> 143 bytes .../cmm/utl/htmlarea3.0/images/ed_undo.gif | Bin 0 -> 81 bytes .../images/fullscreen_maximize.gif | Bin 0 -> 97 bytes .../images/fullscreen_minimize.gif | Bin 0 -> 97 bytes .../utl/htmlarea3.0/images/insert_table.gif | Bin 0 -> 121 bytes .../com/cmm/utl/htmlarea3.0/index.html | 190 + .../com/cmm/utl/htmlarea3.0/lang/b5.js | 36 + .../com/cmm/utl/htmlarea3.0/lang/ch.js | 83 + .../com/cmm/utl/htmlarea3.0/lang/cz.js | 63 + .../com/cmm/utl/htmlarea3.0/lang/da.js | 38 + .../com/cmm/utl/htmlarea3.0/lang/de.js | 80 + .../com/cmm/utl/htmlarea3.0/lang/ee.js | 63 + .../com/cmm/utl/htmlarea3.0/lang/el.js | 75 + .../com/cmm/utl/htmlarea3.0/lang/en.js | 147 + .../com/cmm/utl/htmlarea3.0/lang/es.js | 51 + .../com/cmm/utl/htmlarea3.0/lang/fi.js | 46 + .../com/cmm/utl/htmlarea3.0/lang/fr.js | 97 + .../com/cmm/utl/htmlarea3.0/lang/gb.js | 36 + .../com/cmm/utl/htmlarea3.0/lang/he.js | 89 + .../com/cmm/utl/htmlarea3.0/lang/hu.js | 90 + .../com/cmm/utl/htmlarea3.0/lang/it.js | 79 + .../com/cmm/utl/htmlarea3.0/lang/ja-euc.js | 37 + .../com/cmm/utl/htmlarea3.0/lang/ja-jis.js | 37 + .../com/cmm/utl/htmlarea3.0/lang/ja-sjis.js | 37 + .../com/cmm/utl/htmlarea3.0/lang/ja-utf8.js | 37 + .../com/cmm/utl/htmlarea3.0/lang/kr.js | 147 + .../com/cmm/utl/htmlarea3.0/lang/lt.js | 77 + .../com/cmm/utl/htmlarea3.0/lang/lv.js | 55 + .../com/cmm/utl/htmlarea3.0/lang/nb.js | 36 + .../com/cmm/utl/htmlarea3.0/lang/nl.js | 90 + .../com/cmm/utl/htmlarea3.0/lang/no.js | 79 + .../com/cmm/utl/htmlarea3.0/lang/pl.js | 36 + .../com/cmm/utl/htmlarea3.0/lang/pt_br.js | 37 + .../com/cmm/utl/htmlarea3.0/lang/ro.js | 80 + .../com/cmm/utl/htmlarea3.0/lang/ru.js | 63 + .../com/cmm/utl/htmlarea3.0/lang/se.js | 38 + .../com/cmm/utl/htmlarea3.0/lang/si.js | 63 + .../com/cmm/utl/htmlarea3.0/lang/vn.js | 77 + .../com/cmm/utl/htmlarea3.0/license.txt | 30 + .../cmm/utl/htmlarea3.0/plugins/CSS/css.js | 116 + .../utl/htmlarea3.0/plugins/CSS/lang/en.js | 2 + .../plugins/CharacterMap/character-map.js | 70 + .../plugins/CharacterMap/img/ed_charmap.gif | Bin 0 -> 143 bytes .../plugins/CharacterMap/lang/de.js | 16 + .../plugins/CharacterMap/lang/en.js | 16 + .../CharacterMap/popups/select_character.html | 251 + .../plugins/ContextMenu/context-menu.js | 451 + .../plugins/ContextMenu/lang/de.js | 59 + .../plugins/ContextMenu/lang/el.js | 57 + .../plugins/ContextMenu/lang/en.js | 71 + .../plugins/ContextMenu/lang/fr.js | 66 + .../plugins/ContextMenu/lang/he.js | 66 + .../plugins/ContextMenu/lang/nl.js | 66 + .../htmlarea3.0/plugins/ContextMenu/menu.css | 65 + .../plugins/DynamicCSS/dynamiccss.js | 235 + .../htmlarea3.0/plugins/DynamicCSS/lang/de.js | 15 + .../htmlarea3.0/plugins/DynamicCSS/lang/en.js | 15 + .../htmlarea3.0/plugins/DynamicCSS/lang/fr.js | 15 + .../htmlarea3.0/plugins/FullPage/full-page.js | 172 + .../plugins/FullPage/img/docprop.gif | Bin 0 -> 302 bytes .../htmlarea3.0/plugins/FullPage/lang/de.js | 25 + .../htmlarea3.0/plugins/FullPage/lang/en.js | 25 + .../htmlarea3.0/plugins/FullPage/lang/fr.js | 25 + .../htmlarea3.0/plugins/FullPage/lang/he.js | 25 + .../htmlarea3.0/plugins/FullPage/lang/ro.js | 25 + .../plugins/FullPage/popups/docprop.html | 143 + .../htmlarea3.0/plugins/FullPage/test.html | 89 + .../plugins/HtmlTidy/html-tidy-config.cfg | 29 + .../htmlarea3.0/plugins/HtmlTidy/html-tidy.js | 128 + .../plugins/HtmlTidy/img/html-tidy.gif | Bin 0 -> 107 bytes .../htmlarea3.0/plugins/HtmlTidy/lang/en.js | 18 + .../htmlarea3.0/plugins/ListType/lang/de.js | 23 + .../htmlarea3.0/plugins/ListType/lang/en.js | 23 + .../htmlarea3.0/plugins/ListType/list-type.js | 89 + .../SpellChecker/img/he-spell-check.gif | Bin 0 -> 899 bytes .../plugins/SpellChecker/img/spell-check.gif | Bin 0 -> 107 bytes .../plugins/SpellChecker/lang/cz.js | 37 + .../plugins/SpellChecker/lang/da.js | 37 + .../plugins/SpellChecker/lang/de.js | 28 + .../plugins/SpellChecker/lang/en.js | 38 + .../plugins/SpellChecker/lang/he.js | 38 + .../plugins/SpellChecker/lang/hu.js | 37 + .../plugins/SpellChecker/lang/it.js | 28 + .../plugins/SpellChecker/lang/nl.js | 39 + .../plugins/SpellChecker/lang/ro.js | 37 + .../plugins/SpellChecker/readme-tech.html | 114 + .../SpellChecker/spell-check-logic.cgi | 210 + .../SpellChecker/spell-check-style.css | 10 + .../plugins/SpellChecker/spell-check-ui.html | 122 + .../plugins/SpellChecker/spell-check-ui.js | 397 + .../plugins/SpellChecker/spell-checker.js | 79 + .../TableOperations/img/cell-delete.gif | Bin 0 -> 101 bytes .../TableOperations/img/cell-insert-after.gif | Bin 0 -> 118 bytes .../img/cell-insert-before.gif | Bin 0 -> 118 bytes .../TableOperations/img/cell-merge.gif | Bin 0 -> 896 bytes .../plugins/TableOperations/img/cell-prop.gif | Bin 0 -> 155 bytes .../TableOperations/img/cell-split.gif | Bin 0 -> 907 bytes .../TableOperations/img/col-delete.gif | Bin 0 -> 100 bytes .../TableOperations/img/col-insert-after.gif | Bin 0 -> 111 bytes .../TableOperations/img/col-insert-before.gif | Bin 0 -> 110 bytes .../plugins/TableOperations/img/col-split.gif | Bin 0 -> 908 bytes .../TableOperations/img/row-delete.gif | Bin 0 -> 104 bytes .../TableOperations/img/row-insert-above.gif | Bin 0 -> 116 bytes .../TableOperations/img/row-insert-under.gif | Bin 0 -> 115 bytes .../plugins/TableOperations/img/row-prop.gif | Bin 0 -> 149 bytes .../plugins/TableOperations/img/row-split.gif | Bin 0 -> 895 bytes .../TableOperations/img/table-prop.gif | Bin 0 -> 145 bytes .../plugins/TableOperations/lang/cz.js | 90 + .../plugins/TableOperations/lang/da.js | 90 + .../plugins/TableOperations/lang/de.js | 81 + .../plugins/TableOperations/lang/el.js | 81 + .../plugins/TableOperations/lang/en.js | 90 + .../plugins/TableOperations/lang/fi.js | 66 + .../plugins/TableOperations/lang/fr.js | 90 + .../plugins/TableOperations/lang/he.js | 90 + .../plugins/TableOperations/lang/hu.js | 63 + .../plugins/TableOperations/lang/it.js | 81 + .../plugins/TableOperations/lang/nl.js | 90 + .../plugins/TableOperations/lang/no.js | 91 + .../plugins/TableOperations/lang/ro.js | 90 + .../TableOperations/table-operations.js | 1113 + .../com/cmm/utl/htmlarea3.0/popupdiv.js | 369 + .../com/cmm/utl/htmlarea3.0/popups/about.html | 375 + .../com/cmm/utl/htmlarea3.0/popups/blank.html | 2 + .../cmm/utl/htmlarea3.0/popups/custom2.html | 35 + .../utl/htmlarea3.0/popups/editor_help.html | 16 + .../utl/htmlarea3.0/popups/fullscreen.html | 139 + .../cmm/utl/htmlarea3.0/popups/fullscreen.jsp | 139 + .../utl/htmlarea3.0/popups/insert_image.html | 190 + .../utl/htmlarea3.0/popups/insert_image.jsp | 1 + .../utl/htmlarea3.0/popups/insert_table.html | 313 + .../com/cmm/utl/htmlarea3.0/popups/link.html | 156 + .../htmlarea3.0/popups/old-fullscreen.html | 131 + .../htmlarea3.0/popups/old_insert_image.html | 206 + .../com/cmm/utl/htmlarea3.0/popups/popup.js | 114 + .../utl/htmlarea3.0/popups/select_color.html | 347 + .../com/cmm/utl/htmlarea3.0/popupwin.js | 139 + .../com/cmm/utl/htmlarea3.0/reference.html | 523 + .../cmm/utl/htmlarea3.0/release-notes.html | 182 + .../images/egovframework/com/cmm/bg_bar01.gif | Bin 0 -> 1095 bytes .../images/egovframework/com/cmm/bg_tab01.gif | Bin 0 -> 1106 bytes .../egovframework/com/cmm/bg_tab01_on.gif | Bin 0 -> 1106 bytes .../egovframework/com/cmm/btn/bg_btn_02.jpg | Bin 0 -> 1147 bytes .../egovframework/com/cmm/btn/btn_close.png | Bin 0 -> 1072 bytes .../egovframework/com/cmm/btn/btn_del.png | Bin 0 -> 1174 bytes .../egovframework/com/cmm/btn/btn_next.png | Bin 0 -> 982 bytes .../egovframework/com/cmm/btn/btn_prev.png | Bin 0 -> 973 bytes .../egovframework/com/cmm/btn/btn_search.gif | Bin 0 -> 1358 bytes .../egovframework/com/cmm/btn/btn_search.png | Bin 0 -> 1277 bytes .../egovframework/com/cmm/btn/bu2_left.gif | Bin 0 -> 563 bytes .../egovframework/com/cmm/btn/bu2_right.gif | Bin 0 -> 565 bytes .../egovframework/com/cmm/bul/bul_i.jpg | Bin 0 -> 3557 bytes .../com/cmm/bul/bullet_arrow.png | Bin 0 -> 953 bytes .../egovframework/com/cmm/chart/chart1.JPG | Bin 0 -> 633 bytes .../egovframework/com/cmm/chart/chart2.JPG | Bin 0 -> 657 bytes .../egovframework/com/cmm/chart/chart3.JPG | Bin 0 -> 657 bytes .../egovframework/com/cmm/chart/chart4.JPG | Bin 0 -> 633 bytes .../egovframework/com/cmm/chart/chart5.JPG | Bin 0 -> 657 bytes .../egovframework/com/cmm/chart/chart6.JPG | Bin 0 -> 657 bytes .../images/egovframework/com/cmm/er_logo.jpg | Bin 0 -> 18282 bytes .../egovframework/com/cmm/icon/action_add.gif | Bin 0 -> 141 bytes .../com/cmm/icon/action_delete.gif | Bin 0 -> 145 bytes .../com/cmm/icon/bu_icon_carlendar.gif | Bin 0 -> 976 bytes .../egovframework/com/cmm/icon/icon_next.png | Bin 0 -> 1282 bytes .../egovframework/com/cmm/icon/icon_prev.png | Bin 0 -> 1293 bytes .../egovframework/com/cmm/icon/icon_tit2.png | Bin 0 -> 1006 bytes .../com/cmm/icon/no_required.gif | Bin 0 -> 54 bytes .../egovframework/com/cmm/icon/required.gif | Bin 0 -> 66 bytes .../egovframework/com/cmm/icon/search.gif | Bin 0 -> 600 bytes .../egovframework/com/cmm/icon/search2.gif | Bin 0 -> 600 bytes .../egovframework/com/cmm/icon/tit_icon.gif | Bin 0 -> 429 bytes .../egovframework/com/cmm/icon/tit_icon.png | Bin 0 -> 1155 bytes .../images/egovframework/com/cmm/left_bg.gif | Bin 0 -> 90 bytes .../com/cmm/main/bottom_logo.png | Bin 0 -> 2367 bytes .../egovframework/com/cmm/main/logo_01.gif | Bin 0 -> 8279 bytes .../egovframework/com/cmm/main/logout_btn.gif | Bin 0 -> 169 bytes .../egovframework/com/cmm/main/navi_bg.gif | Bin 0 -> 4092 bytes .../egovframework/com/cmm/main/top_logo.png | Bin 0 -> 3333 bytes .../com/cmm/paging/btn_search.gif | Bin 0 -> 1358 bytes .../com/cmm/paging/pagination_first.gif | Bin 0 -> 1180 bytes .../com/cmm/paging/pagination_first_on.gif | Bin 0 -> 1205 bytes .../com/cmm/paging/pagination_last.gif | Bin 0 -> 1181 bytes .../com/cmm/paging/pagination_last_on.gif | Bin 0 -> 1205 bytes .../com/cmm/paging/pagination_next.gif | Bin 0 -> 1176 bytes .../com/cmm/paging/pagination_next_on.gif | Bin 0 -> 1203 bytes .../com/cmm/paging/pagination_prev.gif | Bin 0 -> 1177 bytes .../com/cmm/paging/pagination_prev_on.gif | Bin 0 -> 1201 bytes .../com/cmm/toolbar/ed_about.gif | Bin 0 -> 87 bytes .../com/cmm/toolbar/ed_align_center.gif | Bin 0 -> 69 bytes .../com/cmm/toolbar/ed_align_justify.gif | Bin 0 -> 69 bytes .../com/cmm/toolbar/ed_align_left.gif | Bin 0 -> 69 bytes .../com/cmm/toolbar/ed_align_right.gif | Bin 0 -> 68 bytes .../com/cmm/toolbar/ed_color_bg.gif | Bin 0 -> 181 bytes .../com/cmm/toolbar/ed_color_fg.gif | Bin 0 -> 171 bytes .../egovframework/com/cmm/toolbar/ed_copy.gif | Bin 0 -> 110 bytes .../egovframework/com/cmm/toolbar/ed_cut.gif | Bin 0 -> 91 bytes .../com/cmm/toolbar/ed_format_bold.gif | Bin 0 -> 74 bytes .../com/cmm/toolbar/ed_format_italic.gif | Bin 0 -> 77 bytes .../com/cmm/toolbar/ed_format_strike.gif | Bin 0 -> 78 bytes .../com/cmm/toolbar/ed_format_sub.gif | Bin 0 -> 78 bytes .../com/cmm/toolbar/ed_format_sup.gif | Bin 0 -> 77 bytes .../com/cmm/toolbar/ed_format_underline.gif | Bin 0 -> 85 bytes .../egovframework/com/cmm/toolbar/ed_help.gif | Bin 0 -> 70 bytes .../egovframework/com/cmm/toolbar/ed_hr.gif | Bin 0 -> 70 bytes .../egovframework/com/cmm/toolbar/ed_html.gif | Bin 0 -> 75 bytes .../com/cmm/toolbar/ed_image.gif | Bin 0 -> 148 bytes .../com/cmm/toolbar/ed_indent_less.gif | Bin 0 -> 87 bytes .../com/cmm/toolbar/ed_indent_more.gif | Bin 0 -> 87 bytes .../com/cmm/toolbar/ed_killword.gif | Bin 0 -> 154 bytes .../com/cmm/toolbar/ed_left_to_right.gif | Bin 0 -> 89 bytes .../egovframework/com/cmm/toolbar/ed_link.gif | Bin 0 -> 97 bytes .../com/cmm/toolbar/ed_list_bullet.gif | Bin 0 -> 80 bytes .../com/cmm/toolbar/ed_list_num.gif | Bin 0 -> 82 bytes .../com/cmm/toolbar/ed_paste.gif | Bin 0 -> 139 bytes .../egovframework/com/cmm/toolbar/ed_redo.gif | Bin 0 -> 80 bytes .../com/cmm/toolbar/ed_right_to_left.gif | Bin 0 -> 88 bytes .../com/cmm/toolbar/ed_rmformat.gif | Bin 0 -> 118 bytes .../egovframework/com/cmm/toolbar/ed_undo.gif | Bin 0 -> 81 bytes .../com/cmm/toolbar/fullscreen_maximize.gif | Bin 0 -> 97 bytes .../com/cmm/toolbar/insert_table.gif | Bin 0 -> 121 bytes .../com/cmm/uss/umt/bg_list_th.gif | Bin 0 -> 157 bytes .../com/cmm/uss/umt/bg_list_thEnd.gif | Bin 0 -> 573 bytes .../egovframework/com/cmm/uss/umt/btn_kne.gif | Bin 0 -> 329 bytes .../com/cmm/uss/umt/btn_logout.gif | Bin 0 -> 323 bytes .../egovframework/com/cmm/uss/umt/bu2.jpg | Bin 0 -> 2084 bytes .../com/cmm/uss/umt/contents.jpg | Bin 0 -> 98009 bytes .../com/cmm/uss/umt/index_login.gif | Bin 0 -> 22914 bytes .../com/cmm/uss/umt/index_login.jpg | Bin 0 -> 100754 bytes .../com/cmm/uss/umt/join_btn.gif | Bin 0 -> 1303 bytes .../egovframework/com/cmm/uss/umt/left_bg.gif | Bin 0 -> 90 bytes .../com/cmm/uss/umt/left_menu_bg.gif | Bin 0 -> 639 bytes .../com/cmm/uss/umt/left_menu_btm.gif | Bin 0 -> 551 bytes .../com/cmm/uss/umt/left_menu_top.gif | Bin 0 -> 3099 bytes .../com/cmm/uss/umt/login_bg01.gif | Bin 0 -> 2955 bytes .../com/cmm/uss/umt/login_btn.gif | Bin 0 -> 1653 bytes .../com/cmm/uss/umt/login_id_save.gif | Bin 0 -> 369 bytes .../egovframework/com/cmm/uss/umt/logo.gif | Bin 0 -> 6280 bytes .../egovframework/com/cmm/uss/umt/menu_bg.jpg | Bin 0 -> 30656 bytes .../com/cmm/uss/umt/page_title.gif | Bin 0 -> 616 bytes .../egovframework/com/cmm/utl/menu_base.gif | Bin 0 -> 1040 bytes .../egovframework/com/cmm/utl/menu_cd.gif | Bin 0 -> 239 bytes .../egovframework/com/cmm/utl/menu_empty.gif | Bin 0 -> 62 bytes .../egovframework/com/cmm/utl/menu_folder.gif | Bin 0 -> 372 bytes .../com/cmm/utl/menu_folderopen.gif | Bin 0 -> 376 bytes .../egovframework/com/cmm/utl/menu_globe.gif | Bin 0 -> 1095 bytes .../com/cmm/utl/menu_imgfolder.gif | Bin 0 -> 622 bytes .../egovframework/com/cmm/utl/menu_join.gif | Bin 0 -> 69 bytes .../com/cmm/utl/menu_joinbottom.gif | Bin 0 -> 66 bytes .../egovframework/com/cmm/utl/menu_line.gif | Bin 0 -> 66 bytes .../egovframework/com/cmm/utl/menu_minus.gif | Bin 0 -> 86 bytes .../com/cmm/utl/menu_minusbottom.gif | Bin 0 -> 85 bytes .../com/cmm/utl/menu_musicfolder.gif | Bin 0 -> 633 bytes .../com/cmm/utl/menu_nolines_minus.gif | Bin 0 -> 861 bytes .../com/cmm/utl/menu_nolines_plus.gif | Bin 0 -> 870 bytes .../egovframework/com/cmm/utl/menu_page.gif | Bin 0 -> 582 bytes .../egovframework/com/cmm/utl/menu_plus.gif | Bin 0 -> 89 bytes .../com/cmm/utl/menu_plusbottom.gif | Bin 0 -> 88 bytes .../com/cmm/utl/menu_question.gif | Bin 0 -> 1044 bytes .../egovframework/com/cmm/utl/menu_trash.gif | Bin 0 -> 1051 bytes .../com/cmm/utl/ui-icons_444444_256x240.png | Bin 0 -> 6992 bytes .../com/cmm/utl/ui-icons_555555_256x240.png | Bin 0 -> 6988 bytes .../com/cmm/utl/ui-icons_777620_256x240.png | Bin 0 -> 4549 bytes .../com/cmm/utl/ui-icons_777777_256x240.png | Bin 0 -> 6999 bytes .../com/cmm/utl/ui-icons_cc0000_256x240.png | Bin 0 -> 4549 bytes .../com/cmm/utl/ui-icons_ffffff_256x240.png | Bin 0 -> 6299 bytes .../com/sym/cal/bu_icon_carlendar.gif | Bin 0 -> 243 bytes .../com/sym/cal/icon_aft_month.gif | Bin 0 -> 941 bytes .../com/sym/cal/icon_aft_year.gif | Bin 0 -> 992 bytes .../com/sym/cal/icon_pre_month.gif | Bin 0 -> 289 bytes .../com/sym/cal/icon_pre_year.gif | Bin 0 -> 1005 bytes .../com/uat/uia/google-login.png | Bin 0 -> 20530 bytes .../egovframework/com/uat/uia/kakao-login.png | Bin 0 -> 3582 bytes .../egovframework/com/uat/uia/login_tit.png | Bin 0 -> 4386 bytes .../egovframework/com/uat/uia/naver-login.png | Bin 0 -> 11892 bytes src/main/webapp/index.jsp | 2 + .../com/cmm/fms/EgovMultiFile.js | 220 + .../com/cmm/jquery-1.12.4.min.js | 5 + .../egovframework/com/cmm/jquery-1.4.2.min.js | 155 + .../egovframework/com/cmm/jquery-ui_1.12.1.js | 18706 ++++++++++++++++ .../webapp/js/egovframework/com/cmm/jquery.js | 11008 +++++++++ .../js/egovframework/com/cmm/jqueryui.js | 18706 ++++++++++++++++ .../js/egovframework/com/cmm/jqueryui_old.js | 2387 ++ .../webapp/js/egovframework/com/cmm/modal.js | 64 + .../webapp/js/egovframework/com/cmm/popup.js | 21 + .../egovframework/com/cmm/showModalDialog.js | 90 + .../com/cmm/showModalDialogCallee.js | 69 + .../cmm/uss/olp/mgt/EgovUtilMeetingManage.js | 202 + .../egovframework/com/cmm/utl/EgovCmmUtl.js | 83 + .../egovframework/com/cmm/utl/EgovMenuGov.js | 192 + .../com/cmm/utl/sec/EgovCertGPKIFunc.js | 1 + .../com/cmm/utl/sec/EgovCertInstall.js | 1 + .../com/cmm/utl/sec/EgovCertObject.js | 1 + .../egovframework/com/sym/cal/EgovCalPopup.js | 200 + .../ddl/altibase/cmm_create_altibase.sql | 376 + .../ddl/altibase/cop.ems_create_altibase.sql | 436 + .../ddl/altibase/sym.cal_create_altibase.sql | 374 + .../ddl/altibase/uat.uap_create_altibase.sql | 373 + .../ddl/altibase/uat.uia_create_altibase.sql | 356 + .../ddl/altibase/utl.fcc_create_altibase.sql | 376 + .../ddl/altibase/utl.sim_create_altibase.sql | 376 + .../ddl/altibase/utl.wed_create_altibase.sql | 376 + src/script/ddl/cubrid/cmm_create_cubrid.sql | 338 + .../ddl/cubrid/cop.ems_create_cubrid.sql | 395 + .../ddl/cubrid/sym.cal_create_cubrid.sql | 336 + .../ddl/cubrid/uat.uap_create_cubrid.sql | 335 + .../ddl/cubrid/uat.uia_create_cubrid.sql | 318 + .../ddl/cubrid/utl.fcc_create_cubrid.sql | 338 + .../ddl/cubrid/utl.sim_create_cubrid.sql | 338 + .../ddl/cubrid/utl.wed_create_cubrid.sql | 338 + src/script/ddl/maria/cmm_create_maria.sql | 538 + src/script/ddl/maria/cop.ems_create_maria.sql | 614 + src/script/ddl/maria/sym.cal_create_maria.sql | 535 + src/script/ddl/maria/uat.uap_create_maria.sql | 534 + src/script/ddl/maria/uat.uia_create_maria.sql | 511 + src/script/ddl/maria/utl.fcc_create_maria.sql | 538 + src/script/ddl/maria/utl.sim_create_maria.sql | 538 + src/script/ddl/maria/utl.wed_create_maria.sql | 538 + src/script/ddl/mysql/cmm_create_mysql.sql | 538 + src/script/ddl/mysql/cop.ems_create_mysql.sql | 614 + src/script/ddl/mysql/sym.cal_create_mysql.sql | 535 + src/script/ddl/mysql/uat.uap_create_mysql.sql | 534 + src/script/ddl/mysql/uat.uia_create_mysql.sql | 511 + src/script/ddl/mysql/utl.fcc_create_mysql.sql | 538 + src/script/ddl/mysql/utl.sim_create_mysql.sql | 538 + src/script/ddl/mysql/utl.wed_create_mysql.sql | 538 + src/script/ddl/oracle/cmm_create_oracle.sql | 375 + .../ddl/oracle/cop.ems_create_oracle.sql | 435 + .../ddl/oracle/sym.cal_create_oracle.sql | 373 + .../ddl/oracle/uat.uap_create_oracle.sql | 372 + .../ddl/oracle/uat.uia_create_oracle.sql | 355 + .../ddl/oracle/utl.fcc_create_oracle.sql | 375 + .../ddl/oracle/utl.sim_create_oracle.sql | 375 + .../ddl/oracle/utl.wed_create_oracle.sql | 375 + .../ddl/postgres/cmm_create_postgres.sql | 538 + .../ddl/postgres/cop.ems_create_postgres.sql | 614 + .../ddl/postgres/sym.cal_create_postgres.sql | 535 + .../ddl/postgres/uat.uap_create_postgres.sql | 534 + .../ddl/postgres/uat.uia_create_postgres.sql | 511 + .../ddl/postgres/utl.fcc_create_postgres.sql | 538 + .../ddl/postgres/utl.sim_create_postgres.sql | 538 + .../ddl/postgres/utl.wed_create_postgres.sql | 538 + src/script/ddl/tibero/cmm_create_tibero.sql | 375 + .../ddl/tibero/cop.ems_create_tibero.sql | 435 + .../ddl/tibero/sym.cal_create_tibero.sql | 373 + .../ddl/tibero/uat.uap_create_tibero.sql | 372 + .../ddl/tibero/uat.uia_create_tibero.sql | 355 + .../ddl/tibero/utl.fcc_create_tibero.sql | 375 + .../ddl/tibero/utl.sim_create_tibero.sql | 375 + .../ddl/tibero/utl.wed_create_tibero.sql | 375 + .../dml/altibase/cmm_insert_altibase.sql | 676 + .../dml/altibase/cop.ems_insert_altibase.sql | 673 + .../dml/altibase/sym.cal_insert_altibase.sql | 673 + .../dml/altibase/uat.uap_insert_altibase.sql | 673 + .../dml/altibase/uat.uia_insert_altibase.sql | 673 + .../dml/altibase/utl.fcc_insert_altibase.sql | 676 + .../dml/altibase/utl.sim_insert_altibase.sql | 676 + .../dml/altibase/utl.wed_insert_altibase.sql | 676 + src/script/dml/cubrid/cmm_insert_cubrid.sql | 677 + .../dml/cubrid/cop.ems_insert_cubrid.sql | 674 + .../dml/cubrid/sym.cal_insert_cubrid.sql | 674 + .../dml/cubrid/uat.uap_insert_cubrid.sql | 674 + .../dml/cubrid/uat.uia_insert_cubrid.sql | 674 + .../dml/cubrid/utl.fcc_insert_cubrid.sql | 677 + .../dml/cubrid/utl.sim_insert_cubrid.sql | 677 + .../dml/cubrid/utl.wed_insert_cubrid.sql | 677 + src/script/dml/maria/cmm_insert_maria.sql | 676 + src/script/dml/maria/cop.ems_insert_maria.sql | 673 + src/script/dml/maria/sym.cal_insert_maria.sql | 673 + src/script/dml/maria/uat.uap_insert_maria.sql | 673 + src/script/dml/maria/uat.uia_insert_maria.sql | 673 + src/script/dml/maria/utl.fcc_insert_maria.sql | 676 + src/script/dml/maria/utl.sim_insert_maria.sql | 676 + src/script/dml/maria/utl.wed_insert_maria.sql | 676 + src/script/dml/mysql/cmm_insert_mysql.sql | 676 + src/script/dml/mysql/cop.ems_insert_mysql.sql | 673 + src/script/dml/mysql/sym.cal_insert_mysql.sql | 673 + src/script/dml/mysql/uat.uap_insert_mysql.sql | 673 + src/script/dml/mysql/uat.uia_insert_mysql.sql | 673 + src/script/dml/mysql/utl.fcc_insert_mysql.sql | 676 + src/script/dml/mysql/utl.sim_insert_mysql.sql | 676 + src/script/dml/mysql/utl.wed_insert_mysql.sql | 676 + src/script/dml/oracle/cmm_insert_oracle.sql | 677 + .../dml/oracle/cop.ems_insert_oracle.sql | 674 + .../dml/oracle/sym.cal_insert_oracle.sql | 674 + .../dml/oracle/uat.uap_insert_oracle.sql | 674 + .../dml/oracle/uat.uia_insert_oracle.sql | 674 + .../dml/oracle/utl.fcc_insert_oracle.sql | 677 + .../dml/oracle/utl.sim_insert_oracle.sql | 677 + .../dml/oracle/utl.wed_insert_oracle.sql | 677 + .../dml/postgres/cmm_insert_postgres.sql | 676 + .../dml/postgres/cop.ems_insert_postgres.sql | 673 + .../dml/postgres/sym.cal_insert_postgres.sql | 673 + .../dml/postgres/uat.uap_insert_postgres.sql | 673 + .../dml/postgres/uat.uia_insert_postgres.sql | 673 + .../dml/postgres/utl.fcc_insert_postgres.sql | 676 + .../dml/postgres/utl.sim_insert_postgres.sql | 676 + .../dml/postgres/utl.wed_insert_postgres.sql | 676 + src/script/dml/tibero/cmm_insert_tibero.sql | 678 + .../dml/tibero/cop.ems_insert_tibero.sql | 675 + .../dml/tibero/sym.cal_insert_tibero.sql | 675 + .../dml/tibero/uat.uap_insert_tibero.sql | 675 + .../dml/tibero/uat.uia_insert_tibero.sql | 675 + .../dml/tibero/utl.fcc_insert_tibero.sql | 678 + .../dml/tibero/utl.sim_insert_tibero.sql | 678 + .../dml/tibero/utl.wed_insert_tibero.sql | 678 + .../egovframework/egovProps/ck.properties | 16 + .../egovProps/conf/SMEConfig.properties | 14 + .../egovProps/conf/client.properties | 27 + .../egovProps/conf/confirmmessage.properties | 1 + .../egovProps/conf/errormessage.properties | 1 + .../egovProps/conf/format.properties | 166 + .../egovProps/conf/gpki.properties | 20 + .../egovProps/conf/infomessage.properties | 1 + .../egovProps/conf/server.properties | 46 + .../egovProps/conf/warnmessage.properties | 4 + .../egovProps/globals.properties | 144 + .../egovProps/prg/compileSchema.bat | 16 + .../egovProps/prg/compileSchema.sh | 16 + .../egovProps/prg/getDiskAttrb.bat | 1 + .../egovProps/prg/getDiskAttrb.sh | 128 + .../egovProps/prg/getDiskCpcty.bat | 1 + .../egovProps/prg/getDiskCpcty.sh | 18 + .../egovProps/prg/getDiskExst.bat | 1 + .../egovProps/prg/getDiskExst.sh | 15 + .../egovProps/prg/getDiskInfo.bat | 16 + .../egovProps/prg/getDiskInfo.sh | 40 + .../egovProps/prg/getDrctryAccess.sh | 15 + .../egovProps/prg/getDrctryByOwner.bat | 1 + .../egovProps/prg/getDrctryByOwner.sh | 15 + .../egovProps/prg/getDrctryOwner.bat | 1 + .../egovProps/prg/getDrctryOwner.sh | 15 + .../egovProps/prg/getMoryInfo.bat | 16 + .../egovProps/prg/getMoryInfo.sh | 34 + .../egovframework/egovProps/prg/getMountLc.sh | 19 + .../egovProps/prg/getNetWorkInfo.sh | 63 + .../egovframework/egovProps/prg/getOSInfo.bat | 16 + .../egovframework/egovProps/prg/getOSInfo.sh | 40 + .../egovProps/prg/getPrductStatus.bat | 16 + .../egovProps/prg/getPrductStatus.sh | 18 + .../egovProps/prg/getPrductVersion.bat | 43 + .../egovProps/prg/getPrductVersion.sh | 34 + .../egovProps/prg/moveDrctry.bat | 1 + .../egovframework/egovProps/prg/moveDrctry.sh | 15 + .../egovframework/egovProps/prg/sh_001.bat | 1 + .../com/cmm/fms/EgovFile_SQL_altibase.xml | 170 + .../com/cmm/fms/EgovFile_SQL_cubrid.xml | 170 + .../mapper/com/cmm/fms/EgovFile_SQL_maria.xml | 169 + .../mapper/com/cmm/fms/EgovFile_SQL_mysql.xml | 169 + .../com/cmm/fms/EgovFile_SQL_oracle.xml | 170 + .../com/cmm/fms/EgovFile_SQL_postgres.xml | 169 + .../com/cmm/fms/EgovFile_SQL_tibero.xml | 170 + .../com/cmm/use/EgovCmmUse_SQL_altibase.xml | 68 + .../com/cmm/use/EgovCmmUse_SQL_cubrid.xml | 58 + .../com/cmm/use/EgovCmmUse_SQL_maria.xml | 58 + .../com/cmm/use/EgovCmmUse_SQL_mysql.xml | 58 + .../com/cmm/use/EgovCmmUse_SQL_oracle.xml | 58 + .../com/cmm/use/EgovCmmUse_SQL_postgres.xml | 58 + .../com/cmm/use/EgovCmmUse_SQL_tibero.xml | 58 + .../ems/EgovSndngMailDetail_SQL_altibase.xml | 65 + .../ems/EgovSndngMailDetail_SQL_cubrid.xml | 65 + .../cop/ems/EgovSndngMailDetail_SQL_maria.xml | 65 + .../cop/ems/EgovSndngMailDetail_SQL_mysql.xml | 65 + .../ems/EgovSndngMailDetail_SQL_oracle.xml | 65 + .../ems/EgovSndngMailDetail_SQL_postgres.xml | 65 + .../ems/EgovSndngMailDetail_SQL_tibero.xml | 65 + .../ems/EgovSndngMailDtls_SQL_altibase.xml | 77 + .../cop/ems/EgovSndngMailDtls_SQL_cubrid.xml | 78 + .../cop/ems/EgovSndngMailDtls_SQL_maria.xml | 74 + .../cop/ems/EgovSndngMailDtls_SQL_mysql.xml | 74 + .../cop/ems/EgovSndngMailDtls_SQL_oracle.xml | 77 + .../ems/EgovSndngMailDtls_SQL_postgres.xml | 74 + .../cop/ems/EgovSndngMailDtls_SQL_tibero.xml | 78 + .../ems/EgovSndngMailRegist_SQL_altibase.xml | 69 + .../ems/EgovSndngMailRegist_SQL_cubrid.xml | 68 + .../cop/ems/EgovSndngMailRegist_SQL_maria.xml | 68 + .../cop/ems/EgovSndngMailRegist_SQL_mysql.xml | 68 + .../ems/EgovSndngMailRegist_SQL_oracle.xml | 68 + .../ems/EgovSndngMailRegist_SQL_postgres.xml | 68 + .../ems/EgovSndngMailRegist_SQL_tibero.xml | 68 + .../sec/ram/EgovAuthorManage_SQL_altibase.xml | 90 + .../sec/ram/EgovAuthorManage_SQL_cubrid.xml | 90 + .../sec/ram/EgovAuthorManage_SQL_maria.xml | 77 + .../sec/ram/EgovAuthorManage_SQL_mysql.xml | 77 + .../sec/ram/EgovAuthorManage_SQL_oracle.xml | 91 + .../sec/ram/EgovAuthorManage_SQL_postgres.xml | 77 + .../sec/ram/EgovAuthorManage_SQL_tibero.xml | 90 + .../ram/EgovAuthorRoleManage_SQL_altibase.xml | 76 + .../ram/EgovAuthorRoleManage_SQL_cubrid.xml | 77 + .../ram/EgovAuthorRoleManage_SQL_maria.xml | 66 + .../ram/EgovAuthorRoleManage_SQL_mysql.xml | 66 + .../ram/EgovAuthorRoleManage_SQL_oracle.xml | 77 + .../ram/EgovAuthorRoleManage_SQL_postgres.xml | 66 + .../ram/EgovAuthorRoleManage_SQL_tibero.xml | 77 + .../sym/cal/EgovRestdeManage_SQL_altibase.xml | 322 + .../sym/cal/EgovRestdeManage_SQL_cubrid.xml | 322 + .../sym/cal/EgovRestdeManage_SQL_maria.xml | 316 + .../sym/cal/EgovRestdeManage_SQL_mysql.xml | 316 + .../sym/cal/EgovRestdeManage_SQL_oracle.xml | 322 + .../sym/cal/EgovRestdeManage_SQL_postgres.xml | 316 + .../sym/cal/EgovRestdeManage_SQL_tibero.xml | 321 + .../uat/uap/EgovLoginPolicy_SQL_altibase.xml | 119 + .../uat/uap/EgovLoginPolicy_SQL_cubrid.xml | 119 + .../com/uat/uap/EgovLoginPolicy_SQL_maria.xml | 108 + .../com/uat/uap/EgovLoginPolicy_SQL_mysql.xml | 108 + .../uat/uap/EgovLoginPolicy_SQL_oracle.xml | 119 + .../uat/uap/EgovLoginPolicy_SQL_postgres.xml | 108 + .../uat/uap/EgovLoginPolicy_SQL_tibero.xml | 119 + .../com/uat/uia/EgovLoginUsr_SQL_altibase.xml | 405 + .../com/uat/uia/EgovLoginUsr_SQL_cubrid.xml | 405 + .../com/uat/uia/EgovLoginUsr_SQL_maria.xml | 421 + .../com/uat/uia/EgovLoginUsr_SQL_mysql.xml | 421 + .../com/uat/uia/EgovLoginUsr_SQL_oracle.xml | 405 + .../com/uat/uia/EgovLoginUsr_SQL_postgres.xml | 421 + .../com/uat/uia/EgovLoginUsr_SQL_tibero.xml | 404 + .../mapper/config/mapper-config.xml | 21 + .../com/cmm/err/message-common_en.properties | 23 + .../com/cmm/err/message-common_ko.properties | 22 + .../com/cmm/message-common_en.properties | 222 + .../com/cmm/message-common_ko.properties | 222 + .../message/com/cop/adb/message_en.properties | 51 + .../message/com/cop/adb/message_ko.properties | 51 + .../message/com/cop/bbs/message_en.properties | 88 + .../message/com/cop/bbs/message_ko.properties | 88 + .../com/cop/blog/message_en.properties | 60 + .../com/cop/blog/message_ko.properties | 60 + .../message/com/cop/cmt/message_en.properties | 4 + .../message/com/cop/cmt/message_ko.properties | 4 + .../message/com/cop/cmy/message_en.properties | 52 + .../message/com/cop/cmy/message_ko.properties | 52 + .../message/com/cop/com/message_en.properties | 9 + .../message/com/cop/com/message_ko.properties | 9 + .../message/com/cop/ncm/message_en.properties | 107 + .../message/com/cop/ncm/message_ko.properties | 107 + .../message/com/cop/scp/message_en.properties | 19 + .../message/com/cop/scp/message_ko.properties | 19 + .../message/com/cop/sms/message_en.properties | 16 + .../message/com/cop/sms/message_ko.properties | 16 + .../com/cop/smt/djm/message_en.properties | 77 + .../com/cop/smt/djm/message_ko.properties | 77 + .../com/cop/smt/dsm/message_en.properties | 20 + .../com/cop/smt/dsm/message_ko.properties | 20 + .../com/cop/smt/lsm/message_en.properties | 82 + .../com/cop/smt/lsm/message_ko.properties | 81 + .../com/cop/smt/mrm/message_en.properties | 50 + .../com/cop/smt/mrm/message_ko.properties | 50 + .../com/cop/smt/mtm/message_en.properties | 46 + .../com/cop/smt/mtm/message_ko.properties | 46 + .../com/cop/smt/sam/message_en.properties | 16 + .../com/cop/smt/sam/message_ko.properties | 16 + .../com/cop/smt/sdm/message_en.properties | 77 + .../com/cop/smt/sdm/message_ko.properties | 77 + .../com/cop/smt/sim/message_en.properties | 59 + .../com/cop/smt/sim/message_ko.properties | 59 + .../com/cop/smt/wmr/message_en.properties | 78 + .../com/cop/smt/wmr/message_ko.properties | 78 + .../message/com/cop/stf/message_en.properties | 11 + .../message/com/cop/stf/message_ko.properties | 11 + .../com/cop/sym/ems/message_en.properties | 27 + .../com/cop/sym/ems/message_ko.properties | 27 + .../message/com/cop/tpl/message_en.properties | 12 + .../message/com/cop/tpl/message_ko.properties | 12 + .../message/com/dam/app/message_en.properties | 58 + .../message/com/dam/app/message_ko.properties | 57 + .../com/dam/map/mat/message_en.properties | 47 + .../com/dam/map/mat/message_ko.properties | 47 + .../com/dam/map/tea/message_en.properties | 38 + .../com/dam/map/tea/message_ko.properties | 38 + .../message/com/dam/mgm/message_en.properties | 63 + .../message/com/dam/mgm/message_ko.properties | 62 + .../message/com/dam/per/message_en.properties | 55 + .../message/com/dam/per/message_ko.properties | 56 + .../com/dam/spe/req/message_en.properties | 48 + .../com/dam/spe/req/message_ko.properties | 46 + .../com/dam/spe/spe/message_en.properties | 60 + .../com/dam/spe/spe/message_ko.properties | 59 + .../com/ext/ldapumt/dpt/message_en.properties | 29 + .../com/ext/ldapumt/dpt/message_ko.properties | 29 + .../message/com/ext/msg/message_en.properties | 12 + .../message/com/ext/msg/message_ko.properties | 12 + .../message/com/message-common_en.properties | 181 + .../message/com/message-common_ko.properties | 182 + .../message/com/sec/drm/message_en.properties | 26 + .../message/com/sec/drm/message_ko.properties | 26 + .../message/com/sec/gmt/message_en.properties | 21 + .../message/com/sec/gmt/message_ko.properties | 22 + .../message/com/sec/pki/message_en.properties | 8 + .../message/com/sec/pki/message_ko.properties | 8 + .../message/com/sec/ram/message_en.properties | 29 + .../message/com/sec/ram/message_ko.properties | 29 + .../message/com/sec/rgm/message_en.properties | 18 + .../message/com/sec/rgm/message_ko.properties | 19 + .../message/com/sec/rmt/message_en.properties | 19 + .../message/com/sec/rmt/message_ko.properties | 19 + .../com/ssi/syi/iis/message_en.properties | 90 + .../com/ssi/syi/iis/message_ko.properties | 89 + .../com/ssi/syi/ims/message_en.properties | 59 + .../com/ssi/syi/ims/message_ko.properties | 59 + .../com/ssi/syi/ist/message_en.properties | 25 + .../com/ssi/syi/ist/message_ko.properties | 26 + .../com/ssi/syi/sim/message_en.properties | 93 + .../com/ssi/syi/sim/message_ko.properties | 93 + .../message/com/sts/bst/message_en.properties | 46 + .../message/com/sts/bst/message_ko.properties | 46 + .../message/com/sts/cst/message_en.properties | 34 + .../message/com/sts/cst/message_ko.properties | 34 + .../message/com/sts/dst/message_en.properties | 29 + .../message/com/sts/dst/message_ko.properties | 29 + .../message/com/sts/rst/message_en.properties | 28 + .../message/com/sts/rst/message_ko.properties | 29 + .../message/com/sts/sst/message_en.properties | 22 + .../message/com/sts/sst/message_ko.properties | 22 + .../message/com/sts/ust/message_en.properties | 25 + .../message/com/sts/ust/message_ko.properties | 25 + .../message/com/sym/adr/message_en.properties | 17 + .../message/com/sym/adr/message_ko.properties | 17 + .../message/com/sym/bat/message_en.properties | 155 + .../message/com/sym/bat/message_ko.properties | 156 + .../message/com/sym/cal/message_en.properties | 22 + .../message/com/sym/cal/message_ko.properties | 15 + .../com/sym/ccm/adc/message_en.properties | 16 + .../com/sym/ccm/adc/message_ko.properties | 18 + .../com/sym/ccm/cca/message_en.properties | 11 + .../com/sym/ccm/cca/message_ko.properties | 11 + .../com/sym/ccm/ccc/message_en.properties | 9 + .../com/sym/ccm/ccc/message_ko.properties | 9 + .../com/sym/ccm/cde/message_en.properties | 11 + .../com/sym/ccm/cde/message_ko.properties | 11 + .../com/sym/ccm/icr/message_en.properties | 32 + .../com/sym/ccm/icr/message_ko.properties | 32 + .../com/sym/ccm/zip/message_en.properties | 45 + .../com/sym/ccm/zip/message_ko.properties | 45 + .../com/sym/log/clg/message_en.properties | 13 + .../com/sym/log/clg/message_ko.properties | 13 + .../com/sym/log/lgm/message_en.properties | 16 + .../com/sym/log/lgm/message_ko.properties | 16 + .../com/sym/log/plg/message_en.properties | 14 + .../com/sym/log/plg/message_ko.properties | 14 + .../com/sym/log/slg/message_en.properties | 45 + .../com/sym/log/slg/message_ko.properties | 44 + .../com/sym/log/tlg/message_en.properties | 25 + .../com/sym/log/tlg/message_ko.properties | 26 + .../com/sym/log/ulg/message_en.properties | 20 + .../com/sym/log/ulg/message_ko.properties | 16 + .../com/sym/log/wlg/message_en.properties | 13 + .../com/sym/log/wlg/message_ko.properties | 13 + .../com/sym/mnu/bmm/message_en.properties | 33 + .../com/sym/mnu/bmm/message_ko.properties | 33 + .../com/sym/mnu/mcm/message_en.properties | 32 + .../com/sym/mnu/mcm/message_ko.properties | 31 + .../com/sym/mnu/mpm/message_en.properties | 109 + .../com/sym/mnu/mpm/message_ko.properties | 109 + .../com/sym/mnu/stm/message_en.properties | 4 + .../com/sym/mnu/stm/message_ko.properties | 4 + .../message/com/sym/prm/message_en.properties | 160 + .../message/com/sym/prm/message_ko.properties | 162 + .../com/sym/sym/bak/message_en.properties | 120 + .../com/sym/sym/bak/message_ko.properties | 120 + .../com/sym/sym/nwk/message_en.properties | 69 + .../com/sym/sym/nwk/message_ko.properties | 71 + .../com/sym/sym/srv/message_en.properties | 138 + .../com/sym/sym/srv/message_ko.properties | 138 + .../com/sym/tbm/tbp/message_en.properties | 34 + .../com/sym/tbm/tbp/message_ko.properties | 34 + .../com/sym/tbm/tbr/message_en.properties | 65 + .../com/sym/tbm/tbr/message_ko.properties | 81 + .../message/com/uat/uap/message_en.properties | 45 + .../message/com/uat/uap/message_ko.properties | 46 + .../message/com/uat/uia/message_en.properties | 51 + .../message/com/uat/uia/message_ko.properties | 51 + .../message/com/uss/cmt/message_en.properties | 16 + .../message/com/uss/cmt/message_ko.properties | 16 + .../com/uss/ion/ans/message_en.properties | 81 + .../com/uss/ion/ans/message_ko.properties | 81 + .../com/uss/ion/bnr/message_en.properties | 38 + .../com/uss/ion/bnr/message_ko.properties | 38 + .../com/uss/ion/bnt/message_en.properties | 105 + .../com/uss/ion/bnt/message_ko.properties | 105 + .../com/uss/ion/ctn/message_en.properties | 109 + .../com/uss/ion/ctn/message_ko.properties | 110 + .../com/uss/ion/ecc/message_en.properties | 27 + .../com/uss/ion/ecc/message_ko.properties | 27 + .../com/uss/ion/evt/message_en.properties | 121 + .../com/uss/ion/evt/message_ko.properties | 121 + .../com/uss/ion/fbk/message_en.properties | 25 + .../com/uss/ion/fbk/message_ko.properties | 25 + .../com/uss/ion/isg/message_en.properties | 22 + .../com/uss/ion/isg/message_ko.properties | 23 + .../com/uss/ion/ism/message_en.properties | 26 + .../com/uss/ion/ism/message_ko.properties | 26 + .../com/uss/ion/lsi/message_en.properties | 33 + .../com/uss/ion/lsi/message_ko.properties | 33 + .../com/uss/ion/msi/message_en.properties | 34 + .../com/uss/ion/msi/message_ko.properties | 34 + .../com/uss/ion/mtg/message_en.properties | 73 + .../com/uss/ion/mtg/message_ko.properties | 73 + .../com/uss/ion/noi/message_en.properties | 41 + .../com/uss/ion/noi/message_ko.properties | 41 + .../com/uss/ion/ntm/message_en.properties | 24 + .../com/uss/ion/ntm/message_ko.properties | 24 + .../com/uss/ion/ntr/message_en.properties | 28 + .../com/uss/ion/ntr/message_ko.properties | 29 + .../com/uss/ion/nts/message_en.properties | 39 + .../com/uss/ion/nts/message_ko.properties | 41 + .../com/uss/ion/nws/message_en.properties | 10 + .../com/uss/ion/nws/message_ko.properties | 10 + .../com/uss/ion/pwm/message_en.properties | 62 + .../com/uss/ion/pwm/message_ko.properties | 62 + .../com/uss/ion/rec/message_en.properties | 10 + .../com/uss/ion/rec/message_ko.properties | 10 + .../com/uss/ion/rmm/message_en.properties | 27 + .../com/uss/ion/rmm/message_ko.properties | 27 + .../com/uss/ion/rsm/message_en.properties | 38 + .../com/uss/ion/rsm/message_ko.properties | 38 + .../com/uss/ion/rsn/message_en.properties | 10 + .../com/uss/ion/rsn/message_ko.properties | 10 + .../com/uss/ion/rss/message_en.properties | 69 + .../com/uss/ion/rss/message_ko.properties | 69 + .../com/uss/ion/rwd/message_en.properties | 58 + .../com/uss/ion/rwd/message_ko.properties | 58 + .../com/uss/ion/sit/message_en.properties | 10 + .../com/uss/ion/sit/message_ko.properties | 10 + .../com/uss/ion/tir/message_en.properties | 39 + .../com/uss/ion/tir/message_ko.properties | 39 + .../com/uss/ion/uas/message_en.properties | 33 + .../com/uss/ion/uas/message_ko.properties | 35 + .../com/uss/ion/ulm/message_en.properties | 33 + .../com/uss/ion/ulm/message_ko.properties | 33 + .../com/uss/ion/vct/message_en.properties | 92 + .../com/uss/ion/vct/message_ko.properties | 92 + .../com/uss/ion/wik/bmk/message_en.properties | 6 + .../com/uss/ion/wik/bmk/message_ko.properties | 6 + .../com/uss/ion/yrc/message_en.properties | 15 + .../com/uss/ion/yrc/message_ko.properties | 15 + .../message/com/uss/mpe/message_en.properties | 9 + .../message/com/uss/mpe/message_ko.properties | 9 + .../com/uss/olh/awm/message_en.properties | 12 + .../com/uss/olh/awm/message_ko.properties | 12 + .../com/uss/olh/faq/message_en.properties | 9 + .../com/uss/olh/faq/message_ko.properties | 9 + .../com/uss/olh/hpc/message_en.properties | 7 + .../com/uss/olh/hpc/message_ko.properties | 7 + .../com/uss/olh/omm/message_en.properties | 8 + .../com/uss/olh/omm/message_ko.properties | 8 + .../com/uss/olh/qna/message_en.properties | 19 + .../com/uss/olh/qna/message_ko.properties | 20 + .../com/uss/olh/wor/message_en.properties | 8 + .../com/uss/olh/wor/message_ko.properties | 8 + .../com/uss/olp/cns/message_en.properties | 56 + .../com/uss/olp/cns/message_ko.properties | 59 + .../com/uss/olp/mgt/message_en.properties | 112 + .../com/uss/olp/mgt/message_ko.properties | 112 + .../com/uss/olp/opm/message_en.properties | 26 + .../com/uss/olp/opm/message_ko.properties | 27 + .../com/uss/olp/opp/message_en.properties | 12 + .../com/uss/olp/opp/message_ko.properties | 12 + .../com/uss/olp/qim/message_en.properties | 28 + .../com/uss/olp/qim/message_ko.properties | 28 + .../com/uss/olp/qmc/message_en.properties | 40 + .../com/uss/olp/qmc/message_ko.properties | 40 + .../com/uss/olp/qnn/message_en.properties | 48 + .../com/uss/olp/qnn/message_ko.properties | 48 + .../com/uss/olp/qqm/message_en.properties | 37 + .../com/uss/olp/qqm/message_ko.properties | 37 + .../com/uss/olp/qri/message_en.properties | 39 + .../com/uss/olp/qri/message_ko.properties | 39 + .../com/uss/olp/qrm/message_en.properties | 18 + .../com/uss/olp/qrm/message_ko.properties | 18 + .../com/uss/olp/qtm/message_en.properties | 25 + .../com/uss/olp/qtm/message_ko.properties | 25 + .../com/uss/sam/cpy/message_en.properties | 16 + .../com/uss/sam/cpy/message_ko.properties | 16 + .../com/uss/sam/ipm/message_en.properties | 26 + .../com/uss/sam/ipm/message_ko.properties | 26 + .../com/uss/sam/stp/message_en.properties | 5 + .../com/uss/sam/stp/message_ko.properties | 5 + .../message/com/uss/umt/message_en.properties | 148 + .../message/com/uss/umt/message_ko.properties | 150 + .../com/utl/sys/dbm/message_en.properties | 31 + .../com/utl/sys/dbm/message_ko.properties | 31 + .../com/utl/sys/fsm/message_en.properties | 62 + .../com/utl/sys/fsm/message_ko.properties | 62 + .../com/utl/sys/htm/message_en.properties | 31 + .../com/utl/sys/htm/message_ko.properties | 31 + .../com/utl/sys/nsm/message_en.properties | 37 + .../com/utl/sys/nsm/message_ko.properties | 40 + .../com/utl/sys/prm/message_en.properties | 24 + .../com/utl/sys/prm/message_ko.properties | 24 + .../com/utl/sys/pxy/message_en.properties | 47 + .../com/utl/sys/pxy/message_ko.properties | 47 + .../com/utl/sys/rsc/message_en.properties | 7 + .../com/utl/sys/rsc/message_ko.properties | 7 + .../com/utl/sys/srm/message_en.properties | 41 + .../com/utl/sys/srm/message_ko.properties | 41 + .../com/utl/sys/ssy/message_en.properties | 32 + .../com/utl/sys/ssy/message_ko.properties | 32 + .../com/utl/sys/trm/message_en.properties | 33 + .../com/utl/sys/trm/message_ko.properties | 33 + .../message/nlib/sample/message_en.properties | 2 + .../message/nlib/sample/message_ko.properties | 2 + .../spring/com/context-aspect.xml | 60 + .../spring/com/context-common.xml | 105 + .../spring/com/context-config.xml | 14 + .../spring/com/context-crypto.xml | 23 + .../spring/com/context-datasource.xml | 39 + .../com/context-egovuserdetailshelper.xml | 44 + .../egovframework/spring/com/context-mail.xml | 60 + .../spring/com/context-mapper.xml | 25 + .../spring/com/context-properties.xml | 15 + .../spring/com/context-security.xml | 93 + .../spring/com/context-transaction.xml | 26 + .../spring/com/context-validator.xml | 21 + .../spring/com/context-whitelist.xml | 35 + .../spring/com/idgn/context-idgn-File.xml | 18 + .../spring/com/idgn/context-idgn-MailMsg.xml | 18 + .../spring/com/idgn/context-idgn-RestDe.xml | 12 + .../egovframework/validator/com-rules.xml | 403 + .../validator/com/cop/ems/EgovMailRegist.xml | 30 + .../com/sec/ram/EgovSecurityManage.xml | 95 + .../com/sym/cal/EgovRestdeManage.xml | 42 + .../validator/com/uat/uap/EgovLoginPolicy.xml | 24 + .../com/uat/uia/EgovIdPasswordSearch.xml | 28 + .../validator/com/utl/sim/EgovSysInfo.xml | 16 + .../validator/validator-rules.xml | 1222 + .../classes/iams/nlib/dapi-url-map.properties | 20 + target/classes/iams/nlib/nlib.properties | 29 + target/classes/log4j2.xml | 26 + .../web-resources/META-INF/MANIFEST.MF | 5 + .../META-INF/maven/iams/nlib/pom.properties | 7 + .../META-INF/maven/iams/nlib/pom.xml | 667 + 1572 files changed, 229029 insertions(+), 1 deletion(-) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 doc/CLD/00.Main.cld create mode 100644 doc/CLD/01.User.cld create mode 100644 doc/CLD/02.Login.cld create mode 100644 doc/CLD/03.Board.cld create mode 100644 doc/CLD/04.Collection.cld create mode 100644 doc/CLD/05.Rent.cld create mode 100644 doc/CLD/09.Inform.cld create mode 100644 pom.xml delete mode 100644 sample.txt create mode 100644 src/main/java/egovframework/com/cmm/AltibaseClobStringTypeHandler.java create mode 100644 src/main/java/egovframework/com/cmm/ComDefaultCodeVO.java create mode 100644 src/main/java/egovframework/com/cmm/ComDefaultVO.java create mode 100644 src/main/java/egovframework/com/cmm/EgovBrowserUtil.java create mode 100644 src/main/java/egovframework/com/cmm/EgovComCrossSiteHndlr.java create mode 100644 src/main/java/egovframework/com/cmm/EgovComExcepHndlr.java create mode 100644 src/main/java/egovframework/com/cmm/EgovComOthersExcepHndlr.java create mode 100644 src/main/java/egovframework/com/cmm/EgovComponentChecker.java create mode 100644 src/main/java/egovframework/com/cmm/EgovMessageSource.java create mode 100644 src/main/java/egovframework/com/cmm/EgovWebUtil.java create mode 100644 src/main/java/egovframework/com/cmm/ImagePaginationRenderer.java create mode 100644 src/main/java/egovframework/com/cmm/IncludedCompInfoVO.java create mode 100644 src/main/java/egovframework/com/cmm/LoginVO.java create mode 100644 src/main/java/egovframework/com/cmm/RegacyPaginationRenderer.java create mode 100644 src/main/java/egovframework/com/cmm/SessionVO.java create mode 100644 src/main/java/egovframework/com/cmm/annotation/IncludedInfo.java create mode 100644 src/main/java/egovframework/com/cmm/config/EgovLoginConfig.java create mode 100644 src/main/java/egovframework/com/cmm/config/EgovWebApplicationInitializer.java create mode 100644 src/main/java/egovframework/com/cmm/context/EgovWebServletContextListener.java create mode 100644 src/main/java/egovframework/com/cmm/exception/EgovXssException.java create mode 100644 src/main/java/egovframework/com/cmm/filter/HTMLTagFilter.java create mode 100644 src/main/java/egovframework/com/cmm/filter/HTMLTagFilterRequestWrapper.java create mode 100644 src/main/java/egovframework/com/cmm/interceptor/AuthenticInterceptor.java create mode 100644 src/main/java/egovframework/com/cmm/interceptor/IpObtainInterceptor.java create mode 100644 src/main/java/egovframework/com/cmm/service/CmmnDetailCode.java create mode 100644 src/main/java/egovframework/com/cmm/service/EgovCmmUseService.java create mode 100644 src/main/java/egovframework/com/cmm/service/EgovFileMngService.java create mode 100644 src/main/java/egovframework/com/cmm/service/EgovFileMngUtil.java create mode 100644 src/main/java/egovframework/com/cmm/service/EgovProperties.java create mode 100644 src/main/java/egovframework/com/cmm/service/EgovUserDetailsService.java create mode 100644 src/main/java/egovframework/com/cmm/service/FileVO.java create mode 100644 src/main/java/egovframework/com/cmm/service/Globals.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/CmmUseDAO.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/EgoDummyUserDetailsServiceImpl.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/EgovCmmUseServiceImpl.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/EgovComAbstractDAO.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/EgovFileMngServiceImpl.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/EgovUserDetailsSessionServiceImpl.java create mode 100644 src/main/java/egovframework/com/cmm/service/impl/FileManageDAO.java create mode 100644 src/main/java/egovframework/com/cmm/taglibs/DoubleSubmitTag.java create mode 100644 src/main/java/egovframework/com/cmm/util/EgovBasicLogger.java create mode 100644 src/main/java/egovframework/com/cmm/util/EgovDoubleSubmitHelper.java create mode 100644 src/main/java/egovframework/com/cmm/util/EgovHttpRequestHelper.java create mode 100644 src/main/java/egovframework/com/cmm/util/EgovMybaitsUtil.java create mode 100644 src/main/java/egovframework/com/cmm/util/EgovResourceCloseHelper.java create mode 100644 src/main/java/egovframework/com/cmm/util/EgovUrlRewriteFilter.java create mode 100644 src/main/java/egovframework/com/cmm/util/EgovUserDetailsHelper.java create mode 100644 src/main/java/egovframework/com/cmm/util/EgovWildcardReloadableResourceBundleMessageSource.java create mode 100644 src/main/java/egovframework/com/cmm/util/EgovXssChecker.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovBindingInitializer.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovComIndexController.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovComUtlController.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovFileDownloadController.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovFileMngController.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovImageProcessController.java create mode 100644 src/main/java/egovframework/com/cmm/web/EgovMultipartResolver.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/AtchmnFileVO.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/EgovMultiPartEmail.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/EgovSndngMailDetailService.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/EgovSndngMailDtlsService.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/EgovSndngMailRegistService.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/EgovSndngMailService.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/SndngMail.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/SndngMailVO.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailDetailServiceImpl.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailDtlsServiceImpl.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailRegistServiceImpl.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailServiceImpl.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/impl/SndngMailDetailDAO.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/impl/SndngMailDtlsDAO.java create mode 100644 src/main/java/egovframework/com/cop/ems/service/impl/SndngMailRegistDAO.java create mode 100644 src/main/java/egovframework/com/cop/ems/web/EgovSndngMailDetailController.java create mode 100644 src/main/java/egovframework/com/cop/ems/web/EgovSndngMailDtlsController.java create mode 100644 src/main/java/egovframework/com/cop/ems/web/EgovSndngMailRegistController.java create mode 100644 src/main/java/egovframework/com/sec/ram/service/AuthorManage.java create mode 100644 src/main/java/egovframework/com/sec/ram/service/AuthorManageVO.java create mode 100644 src/main/java/egovframework/com/sec/ram/service/AuthorRoleManage.java create mode 100644 src/main/java/egovframework/com/sec/ram/service/AuthorRoleManageVO.java create mode 100644 src/main/java/egovframework/com/sec/ram/service/EgovAuthorManageService.java create mode 100644 src/main/java/egovframework/com/sec/ram/service/EgovAuthorRoleManageService.java create mode 100644 src/main/java/egovframework/com/sec/ram/service/impl/AuthorManageDAO.java create mode 100644 src/main/java/egovframework/com/sec/ram/service/impl/AuthorRoleManageDAO.java create mode 100644 src/main/java/egovframework/com/sec/ram/service/impl/EgovAuthorManageServiceImpl.java create mode 100644 src/main/java/egovframework/com/sec/ram/service/impl/EgovAuthorRoleManageServiceImpl.java create mode 100644 src/main/java/egovframework/com/sec/ram/service/impl/EgovUserDetailsSecurityServiceImpl.java create mode 100644 src/main/java/egovframework/com/sec/ram/web/EgovAuthorManageController.java create mode 100644 src/main/java/egovframework/com/sec/ram/web/EgovAuthorRoleController.java create mode 100644 src/main/java/egovframework/com/sec/security/common/EgovSessionMapping.java create mode 100644 src/main/java/egovframework/com/sec/security/filter/EgovSpringSecurityLoginFilter.java create mode 100644 src/main/java/egovframework/com/sec/security/filter/EgovSpringSecurityLogoutFilter.java create mode 100644 src/main/java/egovframework/com/sym/cal/service/EgovCalRestdeManageService.java create mode 100644 src/main/java/egovframework/com/sym/cal/service/Restde.java create mode 100644 src/main/java/egovframework/com/sym/cal/service/RestdeVO.java create mode 100644 src/main/java/egovframework/com/sym/cal/service/impl/EgovCalRestdeManageServiceImpl.java create mode 100644 src/main/java/egovframework/com/sym/cal/service/impl/RestdeManageDAO.java create mode 100644 src/main/java/egovframework/com/sym/cal/web/EgovCalRestdeManageController.java create mode 100644 src/main/java/egovframework/com/uat/sso/filter/EgovSSOLoginFilter.java create mode 100644 src/main/java/egovframework/com/uat/sso/filter/EgovSSOLogoutFilter.java create mode 100644 src/main/java/egovframework/com/uat/sso/service/EgovSSOService.java create mode 100644 src/main/java/egovframework/com/uat/uap/filter/EgovLoginPolicyFilter.java create mode 100644 src/main/java/egovframework/com/uat/uap/service/EgovLoginPolicyService.java create mode 100644 src/main/java/egovframework/com/uat/uap/service/LoginPolicy.java create mode 100644 src/main/java/egovframework/com/uat/uap/service/LoginPolicyVO.java create mode 100644 src/main/java/egovframework/com/uat/uap/service/impl/EgovLoginPolicyServiceImpl.java create mode 100644 src/main/java/egovframework/com/uat/uap/service/impl/LoginPolicyDAO.java create mode 100644 src/main/java/egovframework/com/uat/uap/web/EgovLoginPolicyController.java create mode 100644 src/main/java/egovframework/com/uat/uia/service/EgovLoginService.java create mode 100644 src/main/java/egovframework/com/uat/uia/service/impl/EgovLoginServiceImpl.java create mode 100644 src/main/java/egovframework/com/uat/uia/service/impl/LoginDAO.java create mode 100644 src/main/java/egovframework/com/uat/uia/web/EgovLoginController.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovDateFormat.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovDateUtil.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovEhgtCalcUtil.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovFileUploadUtil.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedFileUtil.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedFileVo.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedUUID.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovFormatCheckUtil.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovNumberCheckUtil.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovNumberFormat.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovNumberUtil.java create mode 100644 src/main/java/egovframework/com/utl/fcc/service/EgovStringUtil.java create mode 100644 src/main/java/egovframework/com/utl/sec/filter/CertProcessFilter.java create mode 100644 src/main/java/egovframework/com/utl/sec/filter/CertProcessRequestWrapper.java create mode 100644 src/main/java/egovframework/com/utl/sec/service/CertInfoVO.java create mode 100644 src/main/java/egovframework/com/utl/sec/service/EgovCertInfoUtil.java create mode 100644 src/main/java/egovframework/com/utl/sec/web/EgovCertLoginController.java create mode 100644 src/main/java/egovframework/com/utl/sim/service/EgovClntInfo.java create mode 100644 src/main/java/egovframework/com/utl/sim/service/EgovFileCmprs.java create mode 100644 src/main/java/egovframework/com/utl/sim/service/EgovFileMntrg.java create mode 100644 src/main/java/egovframework/com/utl/sim/service/EgovFileScrty.java create mode 100644 src/main/java/egovframework/com/utl/sim/service/EgovFileTool.java create mode 100644 src/main/java/egovframework/com/utl/sim/service/EgovMenuGov.java create mode 100644 src/main/java/egovframework/com/utl/sim/service/EgovNetInfo.java create mode 100644 src/main/java/egovframework/com/utl/sim/service/EgovNetworkState.java create mode 100644 src/main/java/egovframework/com/utl/sim/service/EgovPdfCnvr.java create mode 100644 src/main/java/egovframework/com/utl/sim/service/EgovSysInfo.java create mode 100644 src/main/java/egovframework/com/utl/sim/service/EgovXMLDoc.java create mode 100644 src/main/java/egovframework/com/utl/wed/filter/CkFilter.java create mode 100644 src/main/java/egovframework/com/utl/wed/filter/CkImageSaver.java create mode 100644 src/main/java/egovframework/com/utl/wed/filter/DefaultFileSaveManager.java create mode 100644 src/main/java/egovframework/com/utl/wed/filter/DirectoryPathManager.java create mode 100644 src/main/java/egovframework/com/utl/wed/filter/FileSaveManager.java create mode 100644 src/main/java/egovframework/com/utl/wed/web/EgovWebEditorImageController.java create mode 100644 src/main/java/iams/nlib/common/MainController.java create mode 100644 src/main/java/iams/nlib/dataapi/service/DataApi.java create mode 100644 src/main/java/iams/nlib/dataapi/service/DataApiReqVO.java create mode 100644 src/main/java/iams/nlib/dataapi/service/DataApiResVO.java create mode 100644 src/main/java/iams/nlib/dataapi/service/MapEntryConverter.java create mode 100644 src/main/java/iams/nlib/sample/service/SampleDataApiDAO.java create mode 100644 src/main/java/iams/nlib/sample/service/SampleDataApiService.java create mode 100644 src/main/java/iams/nlib/sample/web/SampleDataApiController.java create mode 100644 src/main/java/iams/nlib/util/StringUtil.java create mode 100644 src/main/resources/egovframework/egovProps/ck.properties create mode 100644 src/main/resources/egovframework/egovProps/conf/SMEConfig.properties create mode 100644 src/main/resources/egovframework/egovProps/conf/client.properties create mode 100644 src/main/resources/egovframework/egovProps/conf/confirmmessage.properties create mode 100644 src/main/resources/egovframework/egovProps/conf/errormessage.properties create mode 100644 src/main/resources/egovframework/egovProps/conf/format.properties create mode 100644 src/main/resources/egovframework/egovProps/conf/gpki.properties create mode 100644 src/main/resources/egovframework/egovProps/conf/infomessage.properties create mode 100644 src/main/resources/egovframework/egovProps/conf/server.properties create mode 100644 src/main/resources/egovframework/egovProps/conf/warnmessage.properties create mode 100644 src/main/resources/egovframework/egovProps/globals.properties create mode 100644 src/main/resources/egovframework/egovProps/prg/compileSchema.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/compileSchema.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getDiskAttrb.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/getDiskAttrb.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getDiskCpcty.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/getDiskCpcty.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getDiskExst.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/getDiskExst.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getDiskInfo.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/getDiskInfo.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getDrctryAccess.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getDrctryByOwner.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/getDrctryByOwner.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getDrctryOwner.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/getDrctryOwner.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getMoryInfo.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/getMoryInfo.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getMountLc.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getNetWorkInfo.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getOSInfo.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/getOSInfo.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getPrductStatus.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/getPrductStatus.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/getPrductVersion.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/getPrductVersion.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/moveDrctry.bat create mode 100644 src/main/resources/egovframework/egovProps/prg/moveDrctry.sh create mode 100644 src/main/resources/egovframework/egovProps/prg/sh_001.bat create mode 100644 src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_altibase.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_cubrid.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_maria.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_mysql.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_oracle.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_postgres.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_tibero.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_altibase.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_cubrid.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_maria.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_mysql.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_oracle.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_postgres.xml create mode 100644 src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_tibero.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_altibase.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_cubrid.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_maria.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_mysql.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_oracle.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_postgres.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_tibero.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_altibase.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_cubrid.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_maria.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_mysql.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_oracle.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_postgres.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_tibero.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_altibase.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_cubrid.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_maria.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_mysql.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_oracle.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_postgres.xml create mode 100644 src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_tibero.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_altibase.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_cubrid.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_maria.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_mysql.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_oracle.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_postgres.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_tibero.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_altibase.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_cubrid.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_maria.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_mysql.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_oracle.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_postgres.xml create mode 100644 src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_tibero.xml create mode 100644 src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_altibase.xml create mode 100644 src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_cubrid.xml create mode 100644 src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_maria.xml create mode 100644 src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_mysql.xml create mode 100644 src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_oracle.xml create mode 100644 src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_postgres.xml create mode 100644 src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_tibero.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_altibase.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_cubrid.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_maria.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_mysql.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_oracle.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_postgres.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_tibero.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_altibase.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_cubrid.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_maria.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_mysql.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_oracle.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_postgres.xml create mode 100644 src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_tibero.xml create mode 100644 src/main/resources/egovframework/mapper/config/mapper-config.xml create mode 100644 src/main/resources/egovframework/message/com/cmm/err/message-common_en.properties create mode 100644 src/main/resources/egovframework/message/com/cmm/err/message-common_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cmm/message-common_en.properties create mode 100644 src/main/resources/egovframework/message/com/cmm/message-common_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/adb/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/adb/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/bbs/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/bbs/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/blog/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/blog/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/cmt/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/cmt/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/cmy/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/cmy/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/com/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/com/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/ncm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/ncm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/scp/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/scp/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/sms/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/sms/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/djm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/djm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/dsm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/dsm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/lsm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/lsm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/mrm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/mrm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/mtm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/mtm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/sam/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/sam/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/sdm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/sdm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/sim/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/sim/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/wmr/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/smt/wmr/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/stf/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/stf/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/sym/ems/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/sym/ems/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/cop/tpl/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/cop/tpl/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/dam/app/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/dam/app/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/dam/map/mat/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/dam/map/mat/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/dam/map/tea/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/dam/map/tea/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/dam/mgm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/dam/mgm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/dam/per/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/dam/per/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/dam/spe/req/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/dam/spe/req/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/dam/spe/spe/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/dam/spe/spe/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/ext/ldapumt/dpt/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/ext/ldapumt/dpt/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/ext/msg/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/ext/msg/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/message-common_en.properties create mode 100644 src/main/resources/egovframework/message/com/message-common_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sec/drm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sec/drm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sec/gmt/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sec/gmt/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sec/pki/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sec/pki/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sec/ram/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sec/ram/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sec/rgm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sec/rgm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sec/rmt/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sec/rmt/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/ssi/syi/iis/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/ssi/syi/iis/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/ssi/syi/ims/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/ssi/syi/ims/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/ssi/syi/ist/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/ssi/syi/ist/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/ssi/syi/sim/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/ssi/syi/sim/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sts/bst/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sts/bst/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sts/cst/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sts/cst/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sts/dst/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sts/dst/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sts/rst/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sts/rst/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sts/sst/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sts/sst/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sts/ust/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sts/ust/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/adr/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/adr/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/bat/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/bat/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/cal/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/cal/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/adc/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/adc/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/cca/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/cca/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/ccc/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/ccc/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/cde/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/cde/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/icr/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/icr/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/zip/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/ccm/zip/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/clg/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/clg/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/lgm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/lgm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/plg/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/plg/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/slg/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/slg/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/tlg/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/tlg/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/ulg/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/ulg/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/wlg/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/log/wlg/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/mnu/bmm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/mnu/bmm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/mnu/mcm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/mnu/mcm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/mnu/mpm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/mnu/mpm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/mnu/stm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/mnu/stm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/prm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/prm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/sym/bak/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/sym/bak/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/sym/nwk/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/sym/nwk/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/sym/srv/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/sym/srv/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/tbm/tbp/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/tbm/tbp/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/sym/tbm/tbr/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/sym/tbm/tbr/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uat/uap/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uat/uap/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uat/uia/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uat/uia/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/cmt/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/cmt/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ans/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ans/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/bnr/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/bnr/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/bnt/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/bnt/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ctn/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ctn/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ecc/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ecc/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/evt/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/evt/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/fbk/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/fbk/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/isg/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/isg/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ism/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ism/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/lsi/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/lsi/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/msi/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/msi/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/mtg/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/mtg/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/noi/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/noi/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ntm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ntm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ntr/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ntr/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/nts/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/nts/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/nws/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/nws/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/pwm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/pwm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rec/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rec/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rmm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rmm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rsm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rsm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rsn/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rsn/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rss/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rss/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rwd/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/rwd/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/sit/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/sit/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/tir/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/tir/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/uas/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/uas/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ulm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/ulm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/vct/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/vct/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/wik/bmk/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/wik/bmk/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/yrc/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/ion/yrc/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/mpe/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/mpe/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/awm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/awm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/faq/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/faq/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/hpc/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/hpc/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/omm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/omm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/qna/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/qna/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/wor/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olh/wor/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/cns/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/cns/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/mgt/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/mgt/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/opm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/opm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/opp/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/opp/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qim/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qim/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qmc/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qmc/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qnn/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qnn/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qqm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qqm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qri/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qri/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qrm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qrm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qtm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/olp/qtm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/sam/cpy/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/sam/cpy/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/sam/ipm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/sam/ipm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/sam/stp/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/sam/stp/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/uss/umt/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/uss/umt/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/dbm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/dbm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/fsm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/fsm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/htm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/htm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/nsm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/nsm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/prm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/prm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/pxy/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/pxy/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/rsc/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/rsc/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/srm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/srm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/ssy/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/ssy/message_ko.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/trm/message_en.properties create mode 100644 src/main/resources/egovframework/message/com/utl/sys/trm/message_ko.properties create mode 100644 src/main/resources/egovframework/message/nlib/sample/message_en.properties create mode 100644 src/main/resources/egovframework/message/nlib/sample/message_ko.properties create mode 100644 src/main/resources/egovframework/spring/com/context-aspect.xml create mode 100644 src/main/resources/egovframework/spring/com/context-common.xml create mode 100644 src/main/resources/egovframework/spring/com/context-config.xml create mode 100644 src/main/resources/egovframework/spring/com/context-crypto.xml create mode 100644 src/main/resources/egovframework/spring/com/context-datasource.xml create mode 100644 src/main/resources/egovframework/spring/com/context-egovuserdetailshelper.xml create mode 100644 src/main/resources/egovframework/spring/com/context-mail.xml create mode 100644 src/main/resources/egovframework/spring/com/context-mapper.xml create mode 100644 src/main/resources/egovframework/spring/com/context-properties.xml create mode 100644 src/main/resources/egovframework/spring/com/context-security.xml create mode 100644 src/main/resources/egovframework/spring/com/context-transaction.xml create mode 100644 src/main/resources/egovframework/spring/com/context-validator.xml create mode 100644 src/main/resources/egovframework/spring/com/context-whitelist.xml create mode 100644 src/main/resources/egovframework/spring/com/idgn/context-idgn-File.xml create mode 100644 src/main/resources/egovframework/spring/com/idgn/context-idgn-MailMsg.xml create mode 100644 src/main/resources/egovframework/spring/com/idgn/context-idgn-RestDe.xml create mode 100644 src/main/resources/egovframework/validator/com-rules.xml create mode 100644 src/main/resources/egovframework/validator/com/cop/ems/EgovMailRegist.xml create mode 100644 src/main/resources/egovframework/validator/com/sec/ram/EgovSecurityManage.xml create mode 100644 src/main/resources/egovframework/validator/com/sym/cal/EgovRestdeManage.xml create mode 100644 src/main/resources/egovframework/validator/com/uat/uap/EgovLoginPolicy.xml create mode 100644 src/main/resources/egovframework/validator/com/uat/uia/EgovIdPasswordSearch.xml create mode 100644 src/main/resources/egovframework/validator/com/utl/sim/EgovSysInfo.xml create mode 100644 src/main/resources/egovframework/validator/validator-rules.xml create mode 100644 src/main/resources/iams/nlib/dapi-url-map.properties create mode 100644 src/main/resources/iams/nlib/nlib.properties create mode 100644 src/main/resources/log4j2.xml create mode 100644 src/main/webapp/META-INF/MANIFEST.MF create mode 100644 src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/EgovMainView.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovModal.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitBottom.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitContent.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitLeft.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitMain.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitTop.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/EgovXssException.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/accessDenied.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/dataAccessFailure.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovBizException.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovError.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovHttpSessionException.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/fms/EgovFileList.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/fms/EgovImgFileList.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/validator.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailDetail.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailDtls.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailRegist.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/head.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/main_bottom.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/main_head.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/main_left.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/menu_index.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorInsert.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorManage.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorRoleManage.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorUpdate.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministCalPopup.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministCalendar.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministDayCalendar.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministMonthCalendar.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministWeekCalendar.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministYearCalendar.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovCalPopup.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovCalendar.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalCalPopup.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalCalendar.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalDayCalendar.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalMonthCalendar.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalWeekCalendar.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalYearCalendar.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeDetail.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeList.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeModify.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeRegist.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyList.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyRegist.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyUpdt.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiInstall.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiIssu.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiRegist.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovIdPasswordResult.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovIdPasswordSearch.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsr.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsrOauth.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsrOauthResult.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/utl/wed/EgovInsertImage.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/egovframework/com/utl/wed/EgovUploadImageComplete.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/Bottom.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/Content.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/Left.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/Main.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/Modal.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/Top.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/error/accessDenied.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/error/bizException.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/error/dataAccessFailure.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/error/egovXssException.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/error/error.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/error/httpSessionException.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/fms/EgovFileList.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/fms/EgovImgFileList.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/common/validator.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/sample/getSampleInfo.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/iams/nlib/sample/getSampleInfoForm.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/index.jsp create mode 100644 src/main/webapp/WEB-INF/tlds/egovc.tld create mode 100644 src/main/webapp/WEB-INF/web.xml create mode 100644 src/main/webapp/WEB-INF/web.xml202106150 create mode 100644 src/main/webapp/code404.jsp create mode 100644 src/main/webapp/code500.jsp create mode 100644 src/main/webapp/css/egovframework/com/button.css create mode 100644 src/main/webapp/css/egovframework/com/cmm/jquery-ui_1.12.1.css create mode 100644 src/main/webapp/css/egovframework/com/cmm/jqueryui.css create mode 100644 src/main/webapp/css/egovframework/com/cmm/jqueryui_org.css create mode 100644 src/main/webapp/css/egovframework/com/cmm/left.css create mode 100644 src/main/webapp/css/egovframework/com/cmm/main.css create mode 100644 src/main/webapp/css/egovframework/com/cmm/modal.css create mode 100644 src/main/webapp/css/egovframework/com/com.css create mode 100644 src/main/webapp/css/egovframework/com/com12.css create mode 100644 src/main/webapp/css/egovframework/com/main_portal.css create mode 100644 src/main/webapp/css/egovframework/com/popup_com.css create mode 100644 src/main/webapp/css/egovframework/com/sym/cal/cal.css create mode 100644 src/main/webapp/css/egovframework/com/uat/uia/idpw.css create mode 100644 src/main/webapp/css/egovframework/com/uat/uia/login.css create mode 100644 src/main/webapp/css/egovframework/com/uat/uia/style.css create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/dialog.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/2-areas.cgi create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/2-areas.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/character_map.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/context-menu.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/core.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/css.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/custom.css create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/dynamic.css create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/dynamic_css.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/empty.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/full-page.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/fully-loaded.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/index.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/list-type.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/remove-font-tags.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/spell-checker.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/table-operations.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/test.cgi create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/htmlarea.css create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/htmlarea.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_about.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_align_center.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_align_justify.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_align_left.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_align_right.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_blank.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_charmap.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_color_bg.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_color_fg.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_copy.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_custom.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_cut.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_delete.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_format_bold.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_format_italic.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_format_strike.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_format_sub.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_format_sup.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_format_underline.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_help.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_hr.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_html.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_image.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_indent_less.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_indent_more.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_killword.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_left_to_right.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_link.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_list_bullet.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_list_num.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_paste.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_print.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_redo.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_right_to_left.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_rmformat.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_save.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_show_border.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_splitcel.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/ed_undo.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/fullscreen_maximize.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/fullscreen_minimize.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/images/insert_table.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/index.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/b5.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/ch.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/cz.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/da.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/de.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/ee.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/el.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/en.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/es.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/fi.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/fr.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/gb.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/he.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/hu.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/it.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/ja-euc.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/ja-jis.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/ja-sjis.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/ja-utf8.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/kr.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/lt.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/lv.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/nb.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/nl.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/no.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/pl.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/pt_br.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/ro.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/ru.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/se.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/si.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/lang/vn.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/license.txt create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/CSS/css.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/CSS/lang/en.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/CharacterMap/character-map.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/CharacterMap/img/ed_charmap.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/CharacterMap/lang/de.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/CharacterMap/lang/en.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/CharacterMap/popups/select_character.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/ContextMenu/context-menu.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/ContextMenu/lang/de.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/ContextMenu/lang/el.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/ContextMenu/lang/en.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/ContextMenu/lang/fr.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/ContextMenu/lang/he.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/ContextMenu/lang/nl.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/ContextMenu/menu.css create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/DynamicCSS/dynamiccss.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/DynamicCSS/lang/de.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/DynamicCSS/lang/en.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/DynamicCSS/lang/fr.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/FullPage/full-page.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/FullPage/img/docprop.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/FullPage/lang/de.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/FullPage/lang/en.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/FullPage/lang/fr.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/FullPage/lang/he.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/FullPage/lang/ro.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/FullPage/popups/docprop.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/FullPage/test.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/html-tidy-config.cfg create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/html-tidy.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/img/html-tidy.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/lang/en.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/ListType/lang/de.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/ListType/lang/en.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/ListType/list-type.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/img/he-spell-check.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/img/spell-check.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/cz.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/da.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/de.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/en.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/he.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/hu.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/it.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/nl.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/ro.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/readme-tech.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-logic.cgi create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-style.css create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-ui.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-ui.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-checker.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/cell-delete.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/cell-insert-after.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/cell-insert-before.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/cell-merge.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/cell-prop.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/cell-split.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/col-delete.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/col-insert-after.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/col-insert-before.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/col-split.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/row-delete.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/row-insert-above.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/row-insert-under.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/row-prop.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/row-split.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/table-prop.gif create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/cz.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/da.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/de.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/el.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/en.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/fi.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/fr.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/he.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/hu.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/it.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/nl.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/no.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/ro.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/table-operations.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popupdiv.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/about.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/blank.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/custom2.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/editor_help.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/fullscreen.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/fullscreen.jsp create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_image.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_image.jsp create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_table.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/link.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/old-fullscreen.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/old_insert_image.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/popup.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/select_color.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popupwin.js create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/reference.html create mode 100644 src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/release-notes.html create mode 100644 src/main/webapp/images/egovframework/com/cmm/bg_bar01.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/bg_tab01.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/bg_tab01_on.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/btn/bg_btn_02.jpg create mode 100644 src/main/webapp/images/egovframework/com/cmm/btn/btn_close.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/btn/btn_del.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/btn/btn_next.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/btn/btn_prev.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/btn/btn_search.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/btn/btn_search.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/btn/bu2_left.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/btn/bu2_right.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/bul/bul_i.jpg create mode 100644 src/main/webapp/images/egovframework/com/cmm/bul/bullet_arrow.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/chart/chart1.JPG create mode 100644 src/main/webapp/images/egovframework/com/cmm/chart/chart2.JPG create mode 100644 src/main/webapp/images/egovframework/com/cmm/chart/chart3.JPG create mode 100644 src/main/webapp/images/egovframework/com/cmm/chart/chart4.JPG create mode 100644 src/main/webapp/images/egovframework/com/cmm/chart/chart5.JPG create mode 100644 src/main/webapp/images/egovframework/com/cmm/chart/chart6.JPG create mode 100644 src/main/webapp/images/egovframework/com/cmm/er_logo.jpg create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/action_add.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/action_delete.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/bu_icon_carlendar.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/icon_next.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/icon_prev.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/icon_tit2.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/no_required.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/required.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/search.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/search2.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/tit_icon.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/icon/tit_icon.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/left_bg.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/main/bottom_logo.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/main/logo_01.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/main/logout_btn.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/main/navi_bg.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/main/top_logo.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/paging/btn_search.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/paging/pagination_first.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/paging/pagination_first_on.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/paging/pagination_last.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/paging/pagination_last_on.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/paging/pagination_next.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/paging/pagination_next_on.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/paging/pagination_prev.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/paging/pagination_prev_on.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_about.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_align_center.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_align_justify.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_align_left.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_align_right.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_color_bg.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_color_fg.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_copy.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_cut.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_bold.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_italic.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_strike.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_sub.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_sup.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_underline.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_help.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_hr.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_html.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_image.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_indent_less.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_indent_more.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_killword.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_left_to_right.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_link.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_list_bullet.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_list_num.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_paste.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_redo.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_right_to_left.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_rmformat.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/ed_undo.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/fullscreen_maximize.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/toolbar/insert_table.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/bg_list_th.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/bg_list_thEnd.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/btn_kne.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/btn_logout.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/bu2.jpg create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/contents.jpg create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/index_login.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/index_login.jpg create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/join_btn.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/left_bg.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/left_menu_bg.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/left_menu_btm.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/left_menu_top.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/login_bg01.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/login_btn.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/login_id_save.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/logo.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/menu_bg.jpg create mode 100644 src/main/webapp/images/egovframework/com/cmm/uss/umt/page_title.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_base.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_cd.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_empty.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_folder.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_folderopen.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_globe.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_imgfolder.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_join.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_joinbottom.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_line.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_minus.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_minusbottom.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_musicfolder.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_nolines_minus.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_nolines_plus.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_page.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_plus.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_plusbottom.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_question.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/menu_trash.gif create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/ui-icons_444444_256x240.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/ui-icons_555555_256x240.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/ui-icons_777620_256x240.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/ui-icons_777777_256x240.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/ui-icons_cc0000_256x240.png create mode 100644 src/main/webapp/images/egovframework/com/cmm/utl/ui-icons_ffffff_256x240.png create mode 100644 src/main/webapp/images/egovframework/com/sym/cal/bu_icon_carlendar.gif create mode 100644 src/main/webapp/images/egovframework/com/sym/cal/icon_aft_month.gif create mode 100644 src/main/webapp/images/egovframework/com/sym/cal/icon_aft_year.gif create mode 100644 src/main/webapp/images/egovframework/com/sym/cal/icon_pre_month.gif create mode 100644 src/main/webapp/images/egovframework/com/sym/cal/icon_pre_year.gif create mode 100644 src/main/webapp/images/egovframework/com/uat/uia/google-login.png create mode 100644 src/main/webapp/images/egovframework/com/uat/uia/kakao-login.png create mode 100644 src/main/webapp/images/egovframework/com/uat/uia/login_tit.png create mode 100644 src/main/webapp/images/egovframework/com/uat/uia/naver-login.png create mode 100644 src/main/webapp/index.jsp create mode 100644 src/main/webapp/js/egovframework/com/cmm/fms/EgovMultiFile.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/jquery-1.12.4.min.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/jquery-1.4.2.min.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/jquery-ui_1.12.1.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/jquery.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/jqueryui.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/jqueryui_old.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/modal.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/popup.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/showModalDialog.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/showModalDialogCallee.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/uss/olp/mgt/EgovUtilMeetingManage.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/utl/EgovCmmUtl.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/utl/EgovMenuGov.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/utl/sec/EgovCertGPKIFunc.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/utl/sec/EgovCertInstall.js create mode 100644 src/main/webapp/js/egovframework/com/cmm/utl/sec/EgovCertObject.js create mode 100644 src/main/webapp/js/egovframework/com/sym/cal/EgovCalPopup.js create mode 100644 src/script/ddl/altibase/cmm_create_altibase.sql create mode 100644 src/script/ddl/altibase/cop.ems_create_altibase.sql create mode 100644 src/script/ddl/altibase/sym.cal_create_altibase.sql create mode 100644 src/script/ddl/altibase/uat.uap_create_altibase.sql create mode 100644 src/script/ddl/altibase/uat.uia_create_altibase.sql create mode 100644 src/script/ddl/altibase/utl.fcc_create_altibase.sql create mode 100644 src/script/ddl/altibase/utl.sim_create_altibase.sql create mode 100644 src/script/ddl/altibase/utl.wed_create_altibase.sql create mode 100644 src/script/ddl/cubrid/cmm_create_cubrid.sql create mode 100644 src/script/ddl/cubrid/cop.ems_create_cubrid.sql create mode 100644 src/script/ddl/cubrid/sym.cal_create_cubrid.sql create mode 100644 src/script/ddl/cubrid/uat.uap_create_cubrid.sql create mode 100644 src/script/ddl/cubrid/uat.uia_create_cubrid.sql create mode 100644 src/script/ddl/cubrid/utl.fcc_create_cubrid.sql create mode 100644 src/script/ddl/cubrid/utl.sim_create_cubrid.sql create mode 100644 src/script/ddl/cubrid/utl.wed_create_cubrid.sql create mode 100644 src/script/ddl/maria/cmm_create_maria.sql create mode 100644 src/script/ddl/maria/cop.ems_create_maria.sql create mode 100644 src/script/ddl/maria/sym.cal_create_maria.sql create mode 100644 src/script/ddl/maria/uat.uap_create_maria.sql create mode 100644 src/script/ddl/maria/uat.uia_create_maria.sql create mode 100644 src/script/ddl/maria/utl.fcc_create_maria.sql create mode 100644 src/script/ddl/maria/utl.sim_create_maria.sql create mode 100644 src/script/ddl/maria/utl.wed_create_maria.sql create mode 100644 src/script/ddl/mysql/cmm_create_mysql.sql create mode 100644 src/script/ddl/mysql/cop.ems_create_mysql.sql create mode 100644 src/script/ddl/mysql/sym.cal_create_mysql.sql create mode 100644 src/script/ddl/mysql/uat.uap_create_mysql.sql create mode 100644 src/script/ddl/mysql/uat.uia_create_mysql.sql create mode 100644 src/script/ddl/mysql/utl.fcc_create_mysql.sql create mode 100644 src/script/ddl/mysql/utl.sim_create_mysql.sql create mode 100644 src/script/ddl/mysql/utl.wed_create_mysql.sql create mode 100644 src/script/ddl/oracle/cmm_create_oracle.sql create mode 100644 src/script/ddl/oracle/cop.ems_create_oracle.sql create mode 100644 src/script/ddl/oracle/sym.cal_create_oracle.sql create mode 100644 src/script/ddl/oracle/uat.uap_create_oracle.sql create mode 100644 src/script/ddl/oracle/uat.uia_create_oracle.sql create mode 100644 src/script/ddl/oracle/utl.fcc_create_oracle.sql create mode 100644 src/script/ddl/oracle/utl.sim_create_oracle.sql create mode 100644 src/script/ddl/oracle/utl.wed_create_oracle.sql create mode 100644 src/script/ddl/postgres/cmm_create_postgres.sql create mode 100644 src/script/ddl/postgres/cop.ems_create_postgres.sql create mode 100644 src/script/ddl/postgres/sym.cal_create_postgres.sql create mode 100644 src/script/ddl/postgres/uat.uap_create_postgres.sql create mode 100644 src/script/ddl/postgres/uat.uia_create_postgres.sql create mode 100644 src/script/ddl/postgres/utl.fcc_create_postgres.sql create mode 100644 src/script/ddl/postgres/utl.sim_create_postgres.sql create mode 100644 src/script/ddl/postgres/utl.wed_create_postgres.sql create mode 100644 src/script/ddl/tibero/cmm_create_tibero.sql create mode 100644 src/script/ddl/tibero/cop.ems_create_tibero.sql create mode 100644 src/script/ddl/tibero/sym.cal_create_tibero.sql create mode 100644 src/script/ddl/tibero/uat.uap_create_tibero.sql create mode 100644 src/script/ddl/tibero/uat.uia_create_tibero.sql create mode 100644 src/script/ddl/tibero/utl.fcc_create_tibero.sql create mode 100644 src/script/ddl/tibero/utl.sim_create_tibero.sql create mode 100644 src/script/ddl/tibero/utl.wed_create_tibero.sql create mode 100644 src/script/dml/altibase/cmm_insert_altibase.sql create mode 100644 src/script/dml/altibase/cop.ems_insert_altibase.sql create mode 100644 src/script/dml/altibase/sym.cal_insert_altibase.sql create mode 100644 src/script/dml/altibase/uat.uap_insert_altibase.sql create mode 100644 src/script/dml/altibase/uat.uia_insert_altibase.sql create mode 100644 src/script/dml/altibase/utl.fcc_insert_altibase.sql create mode 100644 src/script/dml/altibase/utl.sim_insert_altibase.sql create mode 100644 src/script/dml/altibase/utl.wed_insert_altibase.sql create mode 100644 src/script/dml/cubrid/cmm_insert_cubrid.sql create mode 100644 src/script/dml/cubrid/cop.ems_insert_cubrid.sql create mode 100644 src/script/dml/cubrid/sym.cal_insert_cubrid.sql create mode 100644 src/script/dml/cubrid/uat.uap_insert_cubrid.sql create mode 100644 src/script/dml/cubrid/uat.uia_insert_cubrid.sql create mode 100644 src/script/dml/cubrid/utl.fcc_insert_cubrid.sql create mode 100644 src/script/dml/cubrid/utl.sim_insert_cubrid.sql create mode 100644 src/script/dml/cubrid/utl.wed_insert_cubrid.sql create mode 100644 src/script/dml/maria/cmm_insert_maria.sql create mode 100644 src/script/dml/maria/cop.ems_insert_maria.sql create mode 100644 src/script/dml/maria/sym.cal_insert_maria.sql create mode 100644 src/script/dml/maria/uat.uap_insert_maria.sql create mode 100644 src/script/dml/maria/uat.uia_insert_maria.sql create mode 100644 src/script/dml/maria/utl.fcc_insert_maria.sql create mode 100644 src/script/dml/maria/utl.sim_insert_maria.sql create mode 100644 src/script/dml/maria/utl.wed_insert_maria.sql create mode 100644 src/script/dml/mysql/cmm_insert_mysql.sql create mode 100644 src/script/dml/mysql/cop.ems_insert_mysql.sql create mode 100644 src/script/dml/mysql/sym.cal_insert_mysql.sql create mode 100644 src/script/dml/mysql/uat.uap_insert_mysql.sql create mode 100644 src/script/dml/mysql/uat.uia_insert_mysql.sql create mode 100644 src/script/dml/mysql/utl.fcc_insert_mysql.sql create mode 100644 src/script/dml/mysql/utl.sim_insert_mysql.sql create mode 100644 src/script/dml/mysql/utl.wed_insert_mysql.sql create mode 100644 src/script/dml/oracle/cmm_insert_oracle.sql create mode 100644 src/script/dml/oracle/cop.ems_insert_oracle.sql create mode 100644 src/script/dml/oracle/sym.cal_insert_oracle.sql create mode 100644 src/script/dml/oracle/uat.uap_insert_oracle.sql create mode 100644 src/script/dml/oracle/uat.uia_insert_oracle.sql create mode 100644 src/script/dml/oracle/utl.fcc_insert_oracle.sql create mode 100644 src/script/dml/oracle/utl.sim_insert_oracle.sql create mode 100644 src/script/dml/oracle/utl.wed_insert_oracle.sql create mode 100644 src/script/dml/postgres/cmm_insert_postgres.sql create mode 100644 src/script/dml/postgres/cop.ems_insert_postgres.sql create mode 100644 src/script/dml/postgres/sym.cal_insert_postgres.sql create mode 100644 src/script/dml/postgres/uat.uap_insert_postgres.sql create mode 100644 src/script/dml/postgres/uat.uia_insert_postgres.sql create mode 100644 src/script/dml/postgres/utl.fcc_insert_postgres.sql create mode 100644 src/script/dml/postgres/utl.sim_insert_postgres.sql create mode 100644 src/script/dml/postgres/utl.wed_insert_postgres.sql create mode 100644 src/script/dml/tibero/cmm_insert_tibero.sql create mode 100644 src/script/dml/tibero/cop.ems_insert_tibero.sql create mode 100644 src/script/dml/tibero/sym.cal_insert_tibero.sql create mode 100644 src/script/dml/tibero/uat.uap_insert_tibero.sql create mode 100644 src/script/dml/tibero/uat.uia_insert_tibero.sql create mode 100644 src/script/dml/tibero/utl.fcc_insert_tibero.sql create mode 100644 src/script/dml/tibero/utl.sim_insert_tibero.sql create mode 100644 src/script/dml/tibero/utl.wed_insert_tibero.sql create mode 100644 target/classes/egovframework/egovProps/ck.properties create mode 100644 target/classes/egovframework/egovProps/conf/SMEConfig.properties create mode 100644 target/classes/egovframework/egovProps/conf/client.properties create mode 100644 target/classes/egovframework/egovProps/conf/confirmmessage.properties create mode 100644 target/classes/egovframework/egovProps/conf/errormessage.properties create mode 100644 target/classes/egovframework/egovProps/conf/format.properties create mode 100644 target/classes/egovframework/egovProps/conf/gpki.properties create mode 100644 target/classes/egovframework/egovProps/conf/infomessage.properties create mode 100644 target/classes/egovframework/egovProps/conf/server.properties create mode 100644 target/classes/egovframework/egovProps/conf/warnmessage.properties create mode 100644 target/classes/egovframework/egovProps/globals.properties create mode 100644 target/classes/egovframework/egovProps/prg/compileSchema.bat create mode 100644 target/classes/egovframework/egovProps/prg/compileSchema.sh create mode 100644 target/classes/egovframework/egovProps/prg/getDiskAttrb.bat create mode 100644 target/classes/egovframework/egovProps/prg/getDiskAttrb.sh create mode 100644 target/classes/egovframework/egovProps/prg/getDiskCpcty.bat create mode 100644 target/classes/egovframework/egovProps/prg/getDiskCpcty.sh create mode 100644 target/classes/egovframework/egovProps/prg/getDiskExst.bat create mode 100644 target/classes/egovframework/egovProps/prg/getDiskExst.sh create mode 100644 target/classes/egovframework/egovProps/prg/getDiskInfo.bat create mode 100644 target/classes/egovframework/egovProps/prg/getDiskInfo.sh create mode 100644 target/classes/egovframework/egovProps/prg/getDrctryAccess.sh create mode 100644 target/classes/egovframework/egovProps/prg/getDrctryByOwner.bat create mode 100644 target/classes/egovframework/egovProps/prg/getDrctryByOwner.sh create mode 100644 target/classes/egovframework/egovProps/prg/getDrctryOwner.bat create mode 100644 target/classes/egovframework/egovProps/prg/getDrctryOwner.sh create mode 100644 target/classes/egovframework/egovProps/prg/getMoryInfo.bat create mode 100644 target/classes/egovframework/egovProps/prg/getMoryInfo.sh create mode 100644 target/classes/egovframework/egovProps/prg/getMountLc.sh create mode 100644 target/classes/egovframework/egovProps/prg/getNetWorkInfo.sh create mode 100644 target/classes/egovframework/egovProps/prg/getOSInfo.bat create mode 100644 target/classes/egovframework/egovProps/prg/getOSInfo.sh create mode 100644 target/classes/egovframework/egovProps/prg/getPrductStatus.bat create mode 100644 target/classes/egovframework/egovProps/prg/getPrductStatus.sh create mode 100644 target/classes/egovframework/egovProps/prg/getPrductVersion.bat create mode 100644 target/classes/egovframework/egovProps/prg/getPrductVersion.sh create mode 100644 target/classes/egovframework/egovProps/prg/moveDrctry.bat create mode 100644 target/classes/egovframework/egovProps/prg/moveDrctry.sh create mode 100644 target/classes/egovframework/egovProps/prg/sh_001.bat create mode 100644 target/classes/egovframework/mapper/com/cmm/fms/EgovFile_SQL_altibase.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/fms/EgovFile_SQL_cubrid.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/fms/EgovFile_SQL_maria.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/fms/EgovFile_SQL_mysql.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/fms/EgovFile_SQL_oracle.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/fms/EgovFile_SQL_postgres.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/fms/EgovFile_SQL_tibero.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_altibase.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_cubrid.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_maria.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_mysql.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_oracle.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_postgres.xml create mode 100644 target/classes/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_tibero.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_altibase.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_cubrid.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_maria.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_mysql.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_oracle.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_postgres.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_tibero.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_altibase.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_cubrid.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_maria.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_mysql.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_oracle.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_postgres.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_tibero.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_altibase.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_cubrid.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_maria.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_mysql.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_oracle.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_postgres.xml create mode 100644 target/classes/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_tibero.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_altibase.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_cubrid.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_maria.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_mysql.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_oracle.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_postgres.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_tibero.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_altibase.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_cubrid.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_maria.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_mysql.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_oracle.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_postgres.xml create mode 100644 target/classes/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_tibero.xml create mode 100644 target/classes/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_altibase.xml create mode 100644 target/classes/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_cubrid.xml create mode 100644 target/classes/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_maria.xml create mode 100644 target/classes/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_mysql.xml create mode 100644 target/classes/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_oracle.xml create mode 100644 target/classes/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_postgres.xml create mode 100644 target/classes/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_tibero.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_altibase.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_cubrid.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_maria.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_mysql.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_oracle.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_postgres.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_tibero.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_altibase.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_cubrid.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_maria.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_mysql.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_oracle.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_postgres.xml create mode 100644 target/classes/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_tibero.xml create mode 100644 target/classes/egovframework/mapper/config/mapper-config.xml create mode 100644 target/classes/egovframework/message/com/cmm/err/message-common_en.properties create mode 100644 target/classes/egovframework/message/com/cmm/err/message-common_ko.properties create mode 100644 target/classes/egovframework/message/com/cmm/message-common_en.properties create mode 100644 target/classes/egovframework/message/com/cmm/message-common_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/adb/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/adb/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/bbs/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/bbs/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/blog/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/blog/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/cmt/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/cmt/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/cmy/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/cmy/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/com/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/com/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/ncm/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/ncm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/scp/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/scp/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/sms/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/sms/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/djm/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/djm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/dsm/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/dsm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/lsm/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/lsm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/mrm/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/mrm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/mtm/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/mtm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/sam/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/sam/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/sdm/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/sdm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/sim/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/sim/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/wmr/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/smt/wmr/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/stf/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/stf/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/sym/ems/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/sym/ems/message_ko.properties create mode 100644 target/classes/egovframework/message/com/cop/tpl/message_en.properties create mode 100644 target/classes/egovframework/message/com/cop/tpl/message_ko.properties create mode 100644 target/classes/egovframework/message/com/dam/app/message_en.properties create mode 100644 target/classes/egovframework/message/com/dam/app/message_ko.properties create mode 100644 target/classes/egovframework/message/com/dam/map/mat/message_en.properties create mode 100644 target/classes/egovframework/message/com/dam/map/mat/message_ko.properties create mode 100644 target/classes/egovframework/message/com/dam/map/tea/message_en.properties create mode 100644 target/classes/egovframework/message/com/dam/map/tea/message_ko.properties create mode 100644 target/classes/egovframework/message/com/dam/mgm/message_en.properties create mode 100644 target/classes/egovframework/message/com/dam/mgm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/dam/per/message_en.properties create mode 100644 target/classes/egovframework/message/com/dam/per/message_ko.properties create mode 100644 target/classes/egovframework/message/com/dam/spe/req/message_en.properties create mode 100644 target/classes/egovframework/message/com/dam/spe/req/message_ko.properties create mode 100644 target/classes/egovframework/message/com/dam/spe/spe/message_en.properties create mode 100644 target/classes/egovframework/message/com/dam/spe/spe/message_ko.properties create mode 100644 target/classes/egovframework/message/com/ext/ldapumt/dpt/message_en.properties create mode 100644 target/classes/egovframework/message/com/ext/ldapumt/dpt/message_ko.properties create mode 100644 target/classes/egovframework/message/com/ext/msg/message_en.properties create mode 100644 target/classes/egovframework/message/com/ext/msg/message_ko.properties create mode 100644 target/classes/egovframework/message/com/message-common_en.properties create mode 100644 target/classes/egovframework/message/com/message-common_ko.properties create mode 100644 target/classes/egovframework/message/com/sec/drm/message_en.properties create mode 100644 target/classes/egovframework/message/com/sec/drm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sec/gmt/message_en.properties create mode 100644 target/classes/egovframework/message/com/sec/gmt/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sec/pki/message_en.properties create mode 100644 target/classes/egovframework/message/com/sec/pki/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sec/ram/message_en.properties create mode 100644 target/classes/egovframework/message/com/sec/ram/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sec/rgm/message_en.properties create mode 100644 target/classes/egovframework/message/com/sec/rgm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sec/rmt/message_en.properties create mode 100644 target/classes/egovframework/message/com/sec/rmt/message_ko.properties create mode 100644 target/classes/egovframework/message/com/ssi/syi/iis/message_en.properties create mode 100644 target/classes/egovframework/message/com/ssi/syi/iis/message_ko.properties create mode 100644 target/classes/egovframework/message/com/ssi/syi/ims/message_en.properties create mode 100644 target/classes/egovframework/message/com/ssi/syi/ims/message_ko.properties create mode 100644 target/classes/egovframework/message/com/ssi/syi/ist/message_en.properties create mode 100644 target/classes/egovframework/message/com/ssi/syi/ist/message_ko.properties create mode 100644 target/classes/egovframework/message/com/ssi/syi/sim/message_en.properties create mode 100644 target/classes/egovframework/message/com/ssi/syi/sim/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sts/bst/message_en.properties create mode 100644 target/classes/egovframework/message/com/sts/bst/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sts/cst/message_en.properties create mode 100644 target/classes/egovframework/message/com/sts/cst/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sts/dst/message_en.properties create mode 100644 target/classes/egovframework/message/com/sts/dst/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sts/rst/message_en.properties create mode 100644 target/classes/egovframework/message/com/sts/rst/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sts/sst/message_en.properties create mode 100644 target/classes/egovframework/message/com/sts/sst/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sts/ust/message_en.properties create mode 100644 target/classes/egovframework/message/com/sts/ust/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/adr/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/adr/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/bat/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/bat/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/cal/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/cal/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/adc/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/adc/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/cca/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/cca/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/ccc/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/ccc/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/cde/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/cde/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/icr/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/icr/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/zip/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/ccm/zip/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/log/clg/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/log/clg/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/log/lgm/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/log/lgm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/log/plg/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/log/plg/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/log/slg/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/log/slg/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/log/tlg/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/log/tlg/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/log/ulg/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/log/ulg/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/log/wlg/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/log/wlg/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/mnu/bmm/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/mnu/bmm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/mnu/mcm/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/mnu/mcm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/mnu/mpm/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/mnu/mpm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/mnu/stm/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/mnu/stm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/prm/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/prm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/sym/bak/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/sym/bak/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/sym/nwk/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/sym/nwk/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/sym/srv/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/sym/srv/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/tbm/tbp/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/tbm/tbp/message_ko.properties create mode 100644 target/classes/egovframework/message/com/sym/tbm/tbr/message_en.properties create mode 100644 target/classes/egovframework/message/com/sym/tbm/tbr/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uat/uap/message_en.properties create mode 100644 target/classes/egovframework/message/com/uat/uap/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uat/uia/message_en.properties create mode 100644 target/classes/egovframework/message/com/uat/uia/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/cmt/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/cmt/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ans/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ans/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/bnr/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/bnr/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/bnt/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/bnt/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ctn/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ctn/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ecc/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ecc/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/evt/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/evt/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/fbk/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/fbk/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/isg/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/isg/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ism/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ism/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/lsi/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/lsi/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/msi/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/msi/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/mtg/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/mtg/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/noi/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/noi/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ntm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ntm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ntr/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ntr/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/nts/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/nts/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/nws/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/nws/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/pwm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/pwm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rec/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rec/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rmm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rmm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rsm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rsm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rsn/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rsn/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rss/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rss/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rwd/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/rwd/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/sit/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/sit/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/tir/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/tir/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/uas/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/uas/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ulm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/ulm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/vct/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/vct/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/wik/bmk/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/wik/bmk/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/yrc/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/ion/yrc/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/mpe/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/mpe/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/awm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/awm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/faq/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/faq/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/hpc/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/hpc/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/omm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/omm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/qna/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/qna/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/wor/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olh/wor/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/cns/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/cns/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/mgt/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/mgt/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/opm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/opm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/opp/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/opp/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qim/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qim/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qmc/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qmc/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qnn/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qnn/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qqm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qqm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qri/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qri/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qrm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qrm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qtm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/olp/qtm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/sam/cpy/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/sam/cpy/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/sam/ipm/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/sam/ipm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/sam/stp/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/sam/stp/message_ko.properties create mode 100644 target/classes/egovframework/message/com/uss/umt/message_en.properties create mode 100644 target/classes/egovframework/message/com/uss/umt/message_ko.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/dbm/message_en.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/dbm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/fsm/message_en.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/fsm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/htm/message_en.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/htm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/nsm/message_en.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/nsm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/prm/message_en.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/prm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/pxy/message_en.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/pxy/message_ko.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/rsc/message_en.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/rsc/message_ko.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/srm/message_en.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/srm/message_ko.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/ssy/message_en.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/ssy/message_ko.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/trm/message_en.properties create mode 100644 target/classes/egovframework/message/com/utl/sys/trm/message_ko.properties create mode 100644 target/classes/egovframework/message/nlib/sample/message_en.properties create mode 100644 target/classes/egovframework/message/nlib/sample/message_ko.properties create mode 100644 target/classes/egovframework/spring/com/context-aspect.xml create mode 100644 target/classes/egovframework/spring/com/context-common.xml create mode 100644 target/classes/egovframework/spring/com/context-config.xml create mode 100644 target/classes/egovframework/spring/com/context-crypto.xml create mode 100644 target/classes/egovframework/spring/com/context-datasource.xml create mode 100644 target/classes/egovframework/spring/com/context-egovuserdetailshelper.xml create mode 100644 target/classes/egovframework/spring/com/context-mail.xml create mode 100644 target/classes/egovframework/spring/com/context-mapper.xml create mode 100644 target/classes/egovframework/spring/com/context-properties.xml create mode 100644 target/classes/egovframework/spring/com/context-security.xml create mode 100644 target/classes/egovframework/spring/com/context-transaction.xml create mode 100644 target/classes/egovframework/spring/com/context-validator.xml create mode 100644 target/classes/egovframework/spring/com/context-whitelist.xml create mode 100644 target/classes/egovframework/spring/com/idgn/context-idgn-File.xml create mode 100644 target/classes/egovframework/spring/com/idgn/context-idgn-MailMsg.xml create mode 100644 target/classes/egovframework/spring/com/idgn/context-idgn-RestDe.xml create mode 100644 target/classes/egovframework/validator/com-rules.xml create mode 100644 target/classes/egovframework/validator/com/cop/ems/EgovMailRegist.xml create mode 100644 target/classes/egovframework/validator/com/sec/ram/EgovSecurityManage.xml create mode 100644 target/classes/egovframework/validator/com/sym/cal/EgovRestdeManage.xml create mode 100644 target/classes/egovframework/validator/com/uat/uap/EgovLoginPolicy.xml create mode 100644 target/classes/egovframework/validator/com/uat/uia/EgovIdPasswordSearch.xml create mode 100644 target/classes/egovframework/validator/com/utl/sim/EgovSysInfo.xml create mode 100644 target/classes/egovframework/validator/validator-rules.xml create mode 100644 target/classes/iams/nlib/dapi-url-map.properties create mode 100644 target/classes/iams/nlib/nlib.properties create mode 100644 target/classes/log4j2.xml create mode 100644 target/m2e-wtp/web-resources/META-INF/MANIFEST.MF create mode 100644 target/m2e-wtp/web-resources/META-INF/maven/iams/nlib/pom.properties create mode 100644 target/m2e-wtp/web-resources/META-INF/maven/iams/nlib/pom.xml diff --git a/.classpath b/.classpath new file mode 100644 index 00000000..e312c300 --- /dev/null +++ b/.classpath @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..1b82bcfc --- /dev/null +++ b/.gitignore @@ -0,0 +1,125 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/java,windows,eclipse +# Edit at https://www.toptal.com/developers/gitignore?templates=java,windows,eclipse + +### nLib ### +data/**/* + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project + +### Eclipse Patch ### +# Spring Boot Tooling +.sts4-cache/ + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/java,windows,eclipse \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 00000000..7d7d83c3 --- /dev/null +++ b/.project @@ -0,0 +1,49 @@ + + + nlib + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.springframework.ide.eclipse.core.springbuilder + + + + + org.springframework.ide.eclipse.boot.validation.springbootbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.springframework.ide.eclipse.core.springnature + egovframework.dev.imp.ide.natures.egovnature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/doc/CLD/00.Main.cld b/doc/CLD/00.Main.cld new file mode 100644 index 00000000..4a17882e --- /dev/null +++ b/doc/CLD/00.Main.cld @@ -0,0 +1,265 @@ + + + + 255 + 255 + 206 + + + 0 + 0 + 0 + + true + + + + + 2 + + + + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 142 + 106 + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 144 + 221 + + + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 384 + 213 + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class17 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class16 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class15 + false + + + + + + \ No newline at end of file diff --git a/doc/CLD/01.User.cld b/doc/CLD/01.User.cld new file mode 100644 index 00000000..4a17882e --- /dev/null +++ b/doc/CLD/01.User.cld @@ -0,0 +1,265 @@ + + + + 255 + 255 + 206 + + + 0 + 0 + 0 + + true + + + + + 2 + + + + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 142 + 106 + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 144 + 221 + + + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 384 + 213 + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class17 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class16 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class15 + false + + + + + + \ No newline at end of file diff --git a/doc/CLD/02.Login.cld b/doc/CLD/02.Login.cld new file mode 100644 index 00000000..4a17882e --- /dev/null +++ b/doc/CLD/02.Login.cld @@ -0,0 +1,265 @@ + + + + 255 + 255 + 206 + + + 0 + 0 + 0 + + true + + + + + 2 + + + + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 142 + 106 + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 144 + 221 + + + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 384 + 213 + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class17 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class16 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class15 + false + + + + + + \ No newline at end of file diff --git a/doc/CLD/03.Board.cld b/doc/CLD/03.Board.cld new file mode 100644 index 00000000..4a17882e --- /dev/null +++ b/doc/CLD/03.Board.cld @@ -0,0 +1,265 @@ + + + + 255 + 255 + 206 + + + 0 + 0 + 0 + + true + + + + + 2 + + + + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 142 + 106 + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 144 + 221 + + + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 384 + 213 + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class17 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class16 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class15 + false + + + + + + \ No newline at end of file diff --git a/doc/CLD/04.Collection.cld b/doc/CLD/04.Collection.cld new file mode 100644 index 00000000..4a17882e --- /dev/null +++ b/doc/CLD/04.Collection.cld @@ -0,0 +1,265 @@ + + + + 255 + 255 + 206 + + + 0 + 0 + 0 + + true + + + + + 2 + + + + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 142 + 106 + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 144 + 221 + + + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 384 + 213 + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class17 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class16 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class15 + false + + + + + + \ No newline at end of file diff --git a/doc/CLD/05.Rent.cld b/doc/CLD/05.Rent.cld new file mode 100644 index 00000000..4a17882e --- /dev/null +++ b/doc/CLD/05.Rent.cld @@ -0,0 +1,265 @@ + + + + 255 + 255 + 206 + + + 0 + 0 + 0 + + true + + + + + 2 + + + + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 142 + 106 + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 144 + 221 + + + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 384 + 213 + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class17 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class16 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class15 + false + + + + + + \ No newline at end of file diff --git a/doc/CLD/09.Inform.cld b/doc/CLD/09.Inform.cld new file mode 100644 index 00000000..4a17882e --- /dev/null +++ b/doc/CLD/09.Inform.cld @@ -0,0 +1,265 @@ + + + + 255 + 255 + 206 + + + 0 + 0 + 0 + + true + + + + + 2 + + + + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 142 + 106 + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 144 + 221 + + + + + + + true + + + + + 2 + + + + + + + + true + + + + + + 2 + + + + + + -1 + -1 + 384 + 213 + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class17 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class16 + false + + + + + + + + + + + + + _stereo_type + Stereo Type + false + + + _simpleEntityName + Simple Name + false + + + _entityName + Name + false + + + _background + Background Color + false + + + _attrs + Attributes... + false + + + _operations + Operations... + false + + + _abstract + abstract + false + + + + Class15 + false + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..5f0b0f9c --- /dev/null +++ b/pom.xml @@ -0,0 +1,667 @@ + + 4.0.0 + iams + nlib + war + 1.0.0 + nlib + http://www.egovframe.go.kr + + + 4.3.16.RELEASE + 3.8.0 + + + + + mvn2 + http://repo1.maven.org/maven2/ + + true + + + true + + + + egovframe + http://www.egovframe.go.kr/maven/ + + true + + + false + + + + egovframe2 + http://maven.egovframe.kr:8080/maven/ + + true + + + false + + + + + + + + egovframework.rte + egovframework.rte.ptl.mvc + ${egovframework.rte.version} + + + commons-logging + commons-logging + + + + + egovframework.rte + egovframework.rte.psl.dataaccess + ${egovframework.rte.version} + + + egovframework.rte + egovframework.rte.fdl.idgnr + ${egovframework.rte.version} + + + egovframework.rte + egovframework.rte.fdl.property + ${egovframework.rte.version} + + + + javax.servlet + servlet-api + provided + 2.5 + + + + javax.servlet + jstl + 1.2 + + + + taglibs + standard + 1.1.2 + + + + org.antlr + antlr + 3.5 + + + + org.hsqldb + hsqldb + 2.3.2 + + + + + + egovframework.rte + egovframework.rte.fdl.security + ${egovframework.rte.version} + + + + egovframework.rte + egovframework.rte.fdl.excel + ${egovframework.rte.version} + + + + egovframework.rte + egovframework.rte.bat.core + ${egovframework.rte.version} + + + + egovframework.rte + egovframework.rte.fdl.crypto + ${egovframework.rte.version} + + + + com.googlecode.log4jdbc + log4jdbc + 1.2 + + + slf4j-api + org.slf4j + + + + + + commons-dbcp + commons-dbcp + 1.4 + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + org.jasypt + jasypt + 1.9.2 + + + + cglib + cglib + 3.1 + + + + org.apache.commons + commons-compress + 1.8.1 + + + + xerces + xercesImpl + 2.11.0 + + + + net.sf.ehcache + ehcache-core + 2.6.9 + + + slf4j-api + org.slf4j + + + + + + net.sf.ehcache + ehcache-terracotta + 2.1.1 + + + + org.quartz-scheduler + quartz + 2.1.7 + + + slf4j-api + org.slf4j + + + + + + org.quartz-scheduler + quartz-jobs + 2.2.1 + + + + oro + oro + 2.0.8 + + + + com.ibm.icu + icu4j + 53.1 + + + + commons-net + commons-net + 3.6 + + + + org.apache.commons + commons-email + 1.5 + + + + egovframework.com.ems + sndng-mail + 1.0 + + + + javax.servlet.jsp + javax.servlet.jsp-api + 2.3.1 + provided + + + + ldapsdk + ldapsdk + 4.1 + + + + com.artofsolving + jodconverter + 2.2.1 + + + slf4j-api + org.slf4j + + + commons-io + commons-io + + + + + + commons-fileupload + commons-fileupload + 1.3.1 + + + commons-io + commons-io + + + + + + org.twitter4j + twitter4j-core + 4.0.7 + + + + net.sourceforge.ajaxtags + ajaxtags-resources + 1.5.7 + + + + com.ckeditor + ckeditor-java-core + 3.5.3 + + + + org.apache.xmlgraphics + batik-ext + 1.7 + + + + org.springframework.social + spring-social-facebook + 2.0.3.RELEASE + + + spring-web + org.springframework + + + spring-webmvc + org.springframework + + + + + + com.github.scribejava + scribejava-apis + 5.6.0 + + + + com.github.scribejava + scribejava-core + 5.6.0 + + + + org.apache.httpcomponents + httpclient + 4.3.4 + + + commons-logging + commons-logging + + + + + + com.h2database + h2 + 1.4.180 + + + + javax.websocket + javax.websocket-api + 1.0 + provided + + + + org.glassfish + javax.json + 1.0.4 + + + + org.springframework.ldap + spring-ldap-core + 2.3.2.RELEASE + + + org.springframework + spring-beans + + + org.springframework + spring-core + + + org.springframework + spring-tx + + + org.slf4j + slf4j-api + + + org.slf4j + jcl-over-slf4j + + + + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.2 + + + + org.mariadb.jdbc + mariadb-java-client + 2.2.5 + + + + kr.go.mgov + smeapi + 2.7 + system + ${basedir}/src/main/webapp/WEB-INF/lib/smeapi_2_7.jar + + + + kr.go.gpki + gpkisecureweb + 1.0.4.9 + system + ${basedir}/src/main/webapp/WEB-INF/lib/gpkisecureweb-1.0.4.9.jar + + + + kr.go.gpki + libgpkiapi_jni + 1.4.0.0 + system + ${basedir}/src/main/webapp/WEB-INF/lib/libgpkiapi_jni-1.4.0.0.jar + + + + + + com.thoughtworks.xstream + xstream + 1.4.4 + + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + 2.9.0 + + + + + + install + ${basedir}/target + ${artifactId}-${version} + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + 80 + / + + -Xms256m -Xmx768m -XX:MaxPermSize=256m + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + UTF-8 + + + + org.codehaus.mojo + hibernate3-maven-plugin + 2.1 + + + + hbm2ddl + annotationconfiguration + + + + + + org.hsqldb + hsqldb + 2.3.2 + + + + + + org.codehaus.mojo + emma-maven-plugin + 1.0-alpha-3 + + + + org.apache.maven.plugins + maven-pmd-plugin + 3.1 + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + once + xml + + **/Abstract*.java + **/*Suite.java + + + **/*Test.java + + + + + org.codehaus.mojo + emma-maven-plugin + true + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + + + + ${basedir}/target/site + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 2.7 + + + sunlink + + javadoc + + true + + + http://docs.oracle.com/javase/6/docs/api/ + + + + + + + + org.codehaus.mojo + emma-maven-plugin + true + + + org.codehaus.mojo + surefire-report-maven-plugin + true + + + + report-only + + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + 128m + 512m + ${encoding} + ${encoding} + ${encoding} + + + + + org.apache.maven.plugins + maven-jxr-plugin + + ${encoding} + ${encoding} + true + apidocs + + + + + \ No newline at end of file diff --git a/sample.txt b/sample.txt deleted file mode 100644 index 13162a5b..00000000 --- a/sample.txt +++ /dev/null @@ -1 +0,0 @@ -sample file \ No newline at end of file diff --git a/src/main/java/egovframework/com/cmm/AltibaseClobStringTypeHandler.java b/src/main/java/egovframework/com/cmm/AltibaseClobStringTypeHandler.java new file mode 100644 index 00000000..effd769b --- /dev/null +++ b/src/main/java/egovframework/com/cmm/AltibaseClobStringTypeHandler.java @@ -0,0 +1,121 @@ +package egovframework.com.cmm; +/* + * Copyright 2002-2005 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.io.IOException; +import java.io.Reader; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.jdbc.support.lob.LobCreator; +import org.springframework.jdbc.support.lob.LobHandler; + +import egovframework.rte.psl.orm.ibatis.support.AbstractLobTypeHandler; + +/** + * iBATIS TypeHandler implementation for Strings that get mapped to CLOBs. + * Retrieves the LobHandler to use from SqlMapClientFactoryBean at config time. + * + *

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

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

+ * << 개정이력(Modification Information) >>
+ *   
+ *   수정일      수정자           수정내용
+ *  -------       --------    ---------------------------
+ *   2009.3.11   이삼섭          최초 생성
+ *
+ * 
+ */ +@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); + } +} diff --git a/src/main/java/egovframework/com/cmm/ComDefaultVO.java b/src/main/java/egovframework/com/cmm/ComDefaultVO.java new file mode 100644 index 00000000..3b89adeb --- /dev/null +++ b/src/main/java/egovframework/com/cmm/ComDefaultVO.java @@ -0,0 +1,166 @@ +package egovframework.com.cmm; + +import java.io.Serializable; + +import org.apache.commons.lang3.builder.ToStringBuilder; + +/** + * @Class Name : ComDefaultVO.java + * @Description : ComDefaultVO class + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.02.01 조재영 최초 생성 + * + * @author 공통서비스 개발팀 조재영 + * @since 2009.02.01 + * @version 1.0 + * @see + * + */ +@SuppressWarnings("serial") +public class ComDefaultVO implements Serializable { + + /** 검색조건 */ + private String searchCondition = ""; + + /** 검색Keyword */ + private String searchKeyword = ""; + + /** 검색사용여부 */ + private String searchUseYn = ""; + + /** 현재페이지 */ + private int pageIndex = 1; + + /** 페이지갯수 */ + private int pageUnit = 10; + + /** 페이지사이즈 */ + private int pageSize = 10; + + /** firstIndex */ + private int firstIndex = 1; + + /** lastIndex */ + private int lastIndex = 1; + + /** recordCountPerPage */ + private int recordCountPerPage = 10; + + /** 검색KeywordFrom */ + private String searchKeywordFrom = ""; + + /** 검색KeywordTo */ + private String searchKeywordTo = ""; + + public int getFirstIndex() { + return firstIndex; + } + + public void setFirstIndex(int firstIndex) { + this.firstIndex = firstIndex; + } + + public int getLastIndex() { + return lastIndex; + } + + public void setLastIndex(int lastIndex) { + this.lastIndex = lastIndex; + } + + public int getRecordCountPerPage() { + return recordCountPerPage; + } + + public void setRecordCountPerPage(int recordCountPerPage) { + this.recordCountPerPage = recordCountPerPage; + } + + public String getSearchCondition() { + return searchCondition; + } + + public void setSearchCondition(String searchCondition) { + this.searchCondition = searchCondition; + } + + public String getSearchKeyword() { + return searchKeyword; + } + + public void setSearchKeyword(String searchKeyword) { + this.searchKeyword = searchKeyword; + } + + public String getSearchUseYn() { + return searchUseYn; + } + + public void setSearchUseYn(String searchUseYn) { + this.searchUseYn = searchUseYn; + } + + public int getPageIndex() { + return pageIndex; + } + + public void setPageIndex(int pageIndex) { + this.pageIndex = pageIndex; + } + + public int getPageUnit() { + return pageUnit; + } + + public void setPageUnit(int pageUnit) { + this.pageUnit = pageUnit; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + + + /** + * searchKeywordFrom attribute를 리턴한다. + * @return String + */ + public String getSearchKeywordFrom() { + return searchKeywordFrom; + } + + /** + * searchKeywordFrom attribute 값을 설정한다. + * @param searchKeywordFrom String + */ + public void setSearchKeywordFrom(String searchKeywordFrom) { + this.searchKeywordFrom = searchKeywordFrom; + } + + /** + * searchKeywordTo attribute를 리턴한다. + * @return String + */ + public String getSearchKeywordTo() { + return searchKeywordTo; + } + + /** + * searchKeywordTo attribute 값을 설정한다. + * @param searchKeywordTo String + */ + public void setSearchKeywordTo(String searchKeywordTo) { + this.searchKeywordTo = searchKeywordTo; + } +} diff --git a/src/main/java/egovframework/com/cmm/EgovBrowserUtil.java b/src/main/java/egovframework/com/cmm/EgovBrowserUtil.java new file mode 100644 index 00000000..df62ec07 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovBrowserUtil.java @@ -0,0 +1,184 @@ +package egovframework.com.cmm; + +import java.net.URLEncoder; +import java.util.HashMap; +import javax.servlet.http.HttpServletRequest; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 웹브라우저 종류및 버전 파악하기 ( IE및 Edge, Safari, Chrome, Firefox, Opera ) + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일              수정자              수정내용
+ *  -----------  --------    ---------------------------
+ *   2018.08.27  신용호              최초 생성
+ *
+ * 
+ */ + +public class EgovBrowserUtil { + + public static final String FIREFOX = "Firefox"; + public static final String SAFARI = "Safari"; + public static final String CHROME = "Chrome"; + public static final String OPERA = "Opera"; + public static final String MSIE = "MSIE"; + public static final String EDGE = "Edge"; + public static final String OTHER = "Other"; + + public static final String TYPEKEY = "type"; + public static final String VERSIONKEY = "version"; + + public static HashMap getBrowser(String userAgent) { + + HashMap result = new HashMap(); + Pattern pattern = null; + Matcher matcher = null; + //System.out.println("=====>>>>> userAgent = "+userAgent); + + pattern = Pattern.compile("MSIE ([0-9]{1,2}.[0-9])"); + matcher = pattern.matcher(userAgent); + if (matcher.find()) + { + result.put(TYPEKEY,MSIE); + result.put(VERSIONKEY,matcher.group(1)); + return result; + } + + if (userAgent.indexOf("Trident/7.0") > -1) { + result.put(TYPEKEY,MSIE); + result.put(VERSIONKEY,"11.0"); + return result; + } + + pattern = Pattern.compile("Edge/([0-9]{1,3}.[0-9]{1,5})"); + matcher = pattern.matcher(userAgent); + if (matcher.find()) + { + result.put(TYPEKEY,EDGE); + result.put(VERSIONKEY,matcher.group(1)); + return result; + } + + pattern = Pattern.compile("Firefox/([0-9]{1,3}.[0-9]{1,3})"); + matcher = pattern.matcher(userAgent); + if (matcher.find()) + { + result.put(TYPEKEY,FIREFOX); + result.put(VERSIONKEY,matcher.group(1)); + return result; + } + + pattern = Pattern.compile("OPR/([0-9]{1,3}.[0-9]{1,3})"); + matcher = pattern.matcher(userAgent); + if (matcher.find()) + { + result.put(TYPEKEY,OPERA); + result.put(VERSIONKEY,matcher.group(1)); + return result; + } + + pattern = Pattern.compile("Chrome/([0-9]{1,3}.[0-9]{1,3})"); + matcher = pattern.matcher(userAgent); + if (matcher.find()) + { + result.put(TYPEKEY,CHROME); + result.put(VERSIONKEY,matcher.group(1)); + return result; + } + + pattern = Pattern.compile("Version/([0-9]{1,2}.[0-9]{1,3})"); + matcher = pattern.matcher(userAgent); + if (matcher.find()) + { + result.put(TYPEKEY,SAFARI); + result.put(VERSIONKEY,matcher.group(1)); + return result; + } + + result.put(TYPEKEY,OTHER); + result.put(VERSIONKEY,"0.0"); + return result; + } + + public static String getDisposition(String filename, String userAgent, String charSet) throws Exception { + + String encodedFilename = null; + HashMap result = EgovBrowserUtil.getBrowser(userAgent); + float version = Float.parseFloat(result.get(EgovBrowserUtil.VERSIONKEY)); + //System.out.println("=====>>>>> browser type = "+result.get(TYPEKEY)); + //System.out.println("=====>>>>> browser version = "+result.get(VERSIONKEY)); + //System.out.println("=====>>>>> filename = "+filename); + + if ( EgovBrowserUtil.MSIE.equals(result.get(EgovBrowserUtil.TYPEKEY)) && version <= 8.0f ) { + encodedFilename = "Content-Disposition: attachment; filename="+URLEncoder.encode(filename, charSet).replaceAll("\\+", "%20"); + } else if ( EgovBrowserUtil.OTHER.equals(result.get(EgovBrowserUtil.TYPEKEY)) ) { + throw new RuntimeException("Not supported browser"); + } else { + encodedFilename = "attachment; filename*="+charSet+"''"+URLEncoder.encode(filename, charSet); + } + + return encodedFilename; + } + + //KISA 보안약점 조치 (2018-10-29, 윤창원) +/* public static void main(String[] args) { + // TODO Auto-generated method stub + String testUserAgent[] = { + // IE 7.0 + "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)" + ,"Mozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1; .NET CLR 3.0.04506.30)" + // IE 8.0 + ,"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)" + // IE 9.0 + ,"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" + // IE 10.0 + ,"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)" + // IE 11.0 + ,"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" + // Chrome 68.0.3440.106 + ,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" + // Edge 17.17134 + ,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" + // Opera 55.0.2994.44 + ,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 OPR/55.0.2994.44" + ,"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60" + // Firefox 61.0 + ,"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0" + // Safari 11.1.2 + ,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.2 Safari/605.1.15" + // iPhone 11.0 + ,"Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1" + // iPad 9.0 + ,"Mozilla/5.0 (iPad; CPU OS 9_3_5 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G36 Safari/601.1" + // Window Pohone 10 + ,"Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Nokia; Lumia 520) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0" + // Window Pohone 8.1 + ,"Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 520) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537" + // Window Pohone 8 + ,"Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch)" + // Window Pohone 7 + ,"Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)" + // XBOX One + ,"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Xbox; Xbox One)" + // XBOX 360 + ,"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)" + }; + + HashMap result = null; + for (int i = 0; i < testUserAgent.length; i++) { + result = getBrowser(testUserAgent[i]); + System.out.println("1. User Agent : "+testUserAgent[i]); + System.out.println("2. Browser Type : "+result.get(TYPEKEY)); + System.out.println("2. Browser Version : "+result.get(VERSIONKEY)); + //System.out.println("2. Browser Version convert: "+Float.parseFloat(result.get(VERSIONKEY))); + System.out.println(""); + } + + }*/ + +} diff --git a/src/main/java/egovframework/com/cmm/EgovComCrossSiteHndlr.java b/src/main/java/egovframework/com/cmm/EgovComCrossSiteHndlr.java new file mode 100644 index 00000000..2e345391 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovComCrossSiteHndlr.java @@ -0,0 +1,405 @@ +package egovframework.com.cmm; + +import java.io.IOException; +import java.io.Reader; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.taglibs.standard.tag.common.core.Util; + +/** + * Cross-Site Scripting 체크하여 값을 되돌려 받는 핸들러 JSP TLD, 자바에서 사용가능 + * + * @author 공통서비스 장동한 + * @since 2010.11.09 + * @version 1.0 + * @see
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2010.11.09  장동한          최초 생성
+ *
+ * 
+ */ +@SuppressWarnings("serial") +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 + + 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 final String m_sDiffChar ="()[]{}\"',:;= \t\r\n%!+-"; + //private String m_sDiffChar ="()[]{}\"',:;=%!+-"; + private final String m_sArrDiffChar [] = { + "(",")", + "[","]", + "{","}", + ""","'", + ",",":", + ";","=", + " ","\t", //" ","\t", + "\r","\n", //"\r","\n", + "%","!", + "+","-" + }; + + /** + * Constructs a new handler. As with TagSupport, subclasses should not + * provide other constructors and are expected to call the superclass + * constructor. + */ + public EgovComCrossSiteHndlr() { + super(); + init(); + } + + // resets local state + private void init() { + value = def = null; + escapeXml = true; + needBody = false; + } + + // Releases any resources we may have (or inherit) + 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 text to pageContext's current JspWriter. If + * escapeXml is true, performs the following substring replacements + * (to facilitate output to XML/HTML pages): + * + * & -> & < -> < > -> > " -> " ' -> ' + * + * See also Util.escapeXml(). + */ + public static void out(PageContext pageContext, boolean escapeXml, + Object obj) throws IOException { + JspWriter w = pageContext.getOut(); + + if (!escapeXml) { + // write chars as is + if (obj instanceof Reader) { + Reader reader = (Reader) obj; + char[] buf = new char[4096]; + int count; + while ((count = reader.read(buf, 0, 4096)) != -1) { + w.write(buf, 0, count); + } + } else { + w.write(obj.toString()); + } + } else { + // escape XML chars + if (obj instanceof Reader) { + Reader reader = (Reader) obj; + char[] buf = new char[4096]; + int count; + while ((count = reader.read(buf, 0, 4096)) != -1) { + writeEscapedXml(buf, count, w); + } + } else { + String text = obj.toString(); + writeEscapedXml(text.toCharArray(), text.length(), w); + } + } + + } + public static void out2(PageContext pageContext, boolean escapeXml, + Object obj) throws IOException { + JspWriter w = pageContext.getOut(); + + w.write(obj.toString()); + + } + + /** + * + * Optimized to create no extra objects and write directly to the JspWriter + * using blocks of escaped and unescaped characters + * + */ + private static void writeEscapedXml(char[] buffer, int length, JspWriter w) + throws IOException { + int start = 0; + + for (int i = 0; i < length; i++) { + char c = buffer[i]; + if (c <= Util.HIGHEST_SPECIAL) { + char[] escaped = Util.specialCharactersRepresentation[c]; + if (escaped != null) { + // add unescaped portion + if (start < i) { + w.write(buffer, start, i - start); + } + // add escaped xml + w.write(escaped); + start = i + 1; + } + } + } + // add rest of unescaped portion + if (start < length) { + w.write(buffer, start, length - start); + } + } + + /** + * + * Optimized to create no extra objects and write directly to the JspWriter + * using blocks of escaped and unescaped characters + * + */ + @SuppressWarnings("unused") + private String getWriteEscapedXml() throws IOException { + String sRtn = ""; + + Object obj = this.value; + + int start = 0; + String text = obj.toString(); + + int length = text.length(); + char[] buffer = text.toCharArray(); + boolean booleanDiff = false; + //String sDiffChar + //String sArrDiffChar + char[] cDiffChar = this.m_sDiffChar.toCharArray(); + + for(int i = 0; i < length; i++) { + char c = buffer[i]; + + booleanDiff = false; + + for(int k = 0; k < cDiffChar.length; k++){ + if(c == cDiffChar[k]){ + sRtn = sRtn + m_sArrDiffChar[k]; + booleanDiff = true; + continue; + } + } + + if(booleanDiff) continue; + + if (c <= Util.HIGHEST_SPECIAL) { + char[] escaped = Util.specialCharactersRepresentation[c]; + if (escaped != null) { + // add unescaped portion + //if (start < i) { + // sRtn = sRtn + text.substring(start, i - start); + //} + // add escaped xml + //sRtn = sRtn + escaped; + //System.out.println(buffer[i]+" :: " + escaped); + for (int j = 0; j < escaped.length; j++) { + //System.out.println(buffer[i]+" :>: " + escaped[j]); + sRtn = sRtn + escaped[j]; + } + //sRtn = sRtn+ escaped.toString(); + //sRtn = sRtn + String.valueOf(buffer[i]); + start = i + 1; + }else{ + sRtn = sRtn + c; + } + }else{ + sRtn = sRtn + c; + } + } + + return sRtn; + } + + /** + * + * Optimized to create no extra objects and write directly to the JspWriter + * using blocks of escaped and unescaped characters + * + */ + @SuppressWarnings("unused") + private String getWriteEscapedXml(String sWriteString) throws IOException { + + String sRtn = ""; + + Object obj = sWriteString; + + int start = 0; + String text = obj.toString(); + + int length = text.length(); + char[] buffer = text.toCharArray(); + boolean booleanDiff = false; + //String sDiffChar + //String sArrDiffChar + char[] cDiffChar = this.m_sDiffChar.toCharArray(); + + for(int i = 0; i < length; i++) { + char c = buffer[i]; + + booleanDiff = false; + + for(int k = 0; k < cDiffChar.length; k++){ + if(c == cDiffChar[k]){ + sRtn = sRtn + m_sArrDiffChar[k]; + booleanDiff = true; + continue; + } + } + + if(booleanDiff) continue; + + if (c <= Util.HIGHEST_SPECIAL) { + char[] escaped = Util.specialCharactersRepresentation[c]; + if (escaped != null) { + // add unescaped portion + //if (start < i) { + // sRtn = sRtn + text.substring(start, i - start); + //} + // add escaped xml + //sRtn = sRtn + escaped; + //System.out.println(buffer[i]+" :: " + escaped); + for (int j = 0; j < escaped.length; j++) { + //System.out.println(buffer[i]+" :>: " + escaped[j]); + sRtn = sRtn + escaped[j]; + } + //sRtn = sRtn+ escaped.toString(); + //sRtn = sRtn + String.valueOf(buffer[i]); + start = i + 1; + }else{ + sRtn = sRtn + c; + } + }else{ + sRtn = sRtn + c; + } + } + + return sRtn; + } + + // for tag attribute + public void setValue(Object value) { + this.value = value; + } + + // for tag attribute + public void setDefault(String def) { + this.def = def; + } + + // for tag attribute + public void setEscapeXml(boolean escapeXml) { + this.escapeXml = escapeXml; + } + + /** 2011.10.10 cmd 라인상에서 편의제공을 위해 제공, 필요없을시 삭제하여도 무방함 + public static void main(String[] args) throws IOException + { + + EgovComCrossSiteHndlr egovComCrossSiteHndlr = new EgovComCrossSiteHndlr(); + + egovComCrossSiteHndlr.value = "TRNSMIT"; + + String sCrossSiteHndlr = egovComCrossSiteHndlr.getWriteEscapedXml(); + //System.out.println("writeEscapedXml " + egovComCrossSiteHndlr.getWriteEscapedXml()); + /* + System.out.println("sCrossSiteHndlr|"+ sCrossSiteHndlr + "|"); + + try{ + System.out.println("TRY TEST 1"); + throw new Exception(); + }catch(Exception e){ + System.out.println("TRY TEST 2"); + }finally{ + System.out.println("TRY TEST 3"); + + } + } + */ + } + + diff --git a/src/main/java/egovframework/com/cmm/EgovComExcepHndlr.java b/src/main/java/egovframework/com/cmm/EgovComExcepHndlr.java new file mode 100644 index 00000000..1cdbd971 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovComExcepHndlr.java @@ -0,0 +1,48 @@ +package egovframework.com.cmm; + +import egovframework.rte.fdl.cmmn.exception.handler.ExceptionHandler; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @Class Name : EgovComExcepHndlr.java + * @Description : 공통서비스의 exception 처리 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 13. 이삼섭 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 13. + * @version + * @see + * + */ +public class EgovComExcepHndlr implements ExceptionHandler { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovComExcepHndlr.class); + + /* + @Resource(name = "otherSSLMailSender") + private SimpleSSLMail mailSender; + */ + /** + * 발생된 Exception을 처리한다. + */ + public void occur(Exception ex, String packageName) { + //log.debug(" EgovServiceExceptionHandler run..............."); + + /* + try { + mailSender. send(ex, packageName); + log.debug(" sending a alert mail is completed "); + } catch (Exception e) { + LOGGER.error(packageName, ex); + } + */ + + LOGGER.error(packageName, ex); + } +} diff --git a/src/main/java/egovframework/com/cmm/EgovComOthersExcepHndlr.java b/src/main/java/egovframework/com/cmm/EgovComOthersExcepHndlr.java new file mode 100644 index 00000000..cc7b2f17 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovComOthersExcepHndlr.java @@ -0,0 +1,16 @@ +package egovframework.com.cmm; + +import egovframework.rte.fdl.cmmn.exception.handler.ExceptionHandler; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class EgovComOthersExcepHndlr implements ExceptionHandler { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovComOthersExcepHndlr.class); + + public void occur(Exception exception, String packageName) { + //log.debug(" EgovServiceExceptionHandler run..............."); + LOGGER.error(packageName, exception); + } +} diff --git a/src/main/java/egovframework/com/cmm/EgovComponentChecker.java b/src/main/java/egovframework/com/cmm/EgovComponentChecker.java new file mode 100644 index 00000000..5acb325f --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovComponentChecker.java @@ -0,0 +1,65 @@ +package egovframework.com.cmm; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Service; + + +/** + * EgovComUtil 클래스 + * + * @author 서준식 + * @since 2011.09.15 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *   
+ *   수정일      수정자           수정내용
+ *  -------    -------------    ----------------------
+ *   2011.09.15  서준식        최초 생성
+ * 
+ */ + +@Service("egovUtil") +public class EgovComponentChecker extends EgovAbstractServiceImpl implements ApplicationContextAware{ + + + public static ApplicationContext context; + + @SuppressWarnings("static-access") + public void setApplicationContext(ApplicationContext context) + throws BeansException { + + this.context = context; + } + + + /** + * Spring MVC에서 설정한 빈이 아닌 서비스 빈(컴포넌트)만을 검색할 수 있음 + * + */ + public static boolean hasComponent(String componentName){ + + try{ + Object component = context.getBean(componentName); + + if(component == null){ + return false; + }else{ + return true; + } + + }catch(NoSuchBeanDefinitionException ex){// 해당 컴포넌트를 찾을 수없을 경우 false반환 + return false; + } + } + + + +} diff --git a/src/main/java/egovframework/com/cmm/EgovMessageSource.java b/src/main/java/egovframework/com/cmm/EgovMessageSource.java new file mode 100644 index 00000000..77e3d311 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovMessageSource.java @@ -0,0 +1,87 @@ +package egovframework.com.cmm; + +import java.util.Locale; + +import org.springframework.context.MessageSource; +import org.springframework.context.support.ReloadableResourceBundleMessageSource; + +/** + * 메시지 리소스 사용을 위한 MessageSource 인터페이스 및 ReloadableResourceBundleMessageSource 클래스의 구현체 + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *   
+ *   수정일      수정자           수정내용
+ *  -------    --------    ---------------------------
+ *   2009.03.11  이문준          최초 생성
+ *   2017.07.21  장동한 			args, locale 설정
+ *
+ * 
+ */ + +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()); + } + + /** + * 정의된 메세지 조회 + * @param code - 메세지 코드 + * @param locale - 로케일 + * @return String + */ + public String getMessage(String code, Locale locale) { + return getReloadableResourceBundleMessageSource().getMessage(code, null, locale); + } + + /** + * 정의된 메세지 조회 + * @param code - 메세지 코드 + * @param args - 매개변수 + * @return String + */ + public String getMessageArgs(String code, Object[] args) { + return getReloadableResourceBundleMessageSource().getMessage(code, args, Locale.getDefault()); + } + + /** + * 정의된 메세지 조회 + * @param code - 메세지 코드 + * @param args - 매개변수 + * @param locale - 로케일 + * @return String + */ + public String getMessageArgsLocale(String code, Object[] args, Locale locale) { + return getReloadableResourceBundleMessageSource().getMessage(code, args, locale); + } + +} diff --git a/src/main/java/egovframework/com/cmm/EgovWebUtil.java b/src/main/java/egovframework/com/cmm/EgovWebUtil.java new file mode 100644 index 00000000..ea31a084 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/EgovWebUtil.java @@ -0,0 +1,125 @@ +package egovframework.com.cmm; + +import java.util.regex.Pattern; + +/** + * 교차접속 스크립트 공격 취약성 방지(파라미터 문자열 교체) + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일              수정자           수정내용
+ *  -----------  --------  ---------------------------
+ *   2011.10.10  한성곤           최초 생성
+ *	 2017-02-07   이정은           시큐어코딩(ES) - 시큐어코딩 경로 조작 및 자원 삽입[CWE-22, CWE-23, CWE-95, CWE-99]
+ *   2018.08.17  신용호           filePathBlackList 수정
+ *   2018.10.10  신용호           . => \\.으로 수정
+ * 
+ */ + +public class EgovWebUtil { + public static String clearXSSMinimum(String value) { + if (value == null || value.trim().equals("")) { + return ""; + } + + String returnValue = value; + + returnValue = returnValue.replaceAll("&", "&"); + returnValue = returnValue.replaceAll("<", "<"); + returnValue = returnValue.replaceAll(">", ">"); + returnValue = returnValue.replaceAll("\"", """); + returnValue = returnValue.replaceAll("\'", "'"); + returnValue = returnValue.replaceAll("\\.", "."); + returnValue = returnValue.replaceAll("%2E", "."); + returnValue = returnValue.replaceAll("%2F", "/"); + return returnValue; + } + + public static String clearXSSMaximum(String value) { + String returnValue = value; + returnValue = clearXSSMinimum(returnValue); + + returnValue = returnValue.replaceAll("%00", null); + + returnValue = returnValue.replaceAll("%", "%"); + + // \\. => . + + 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("\\.\\.", ""); + + 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 fileInjectPathReplaceAll(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(";", ""); + } + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/cmm/ImagePaginationRenderer.java b/src/main/java/egovframework/com/cmm/ImagePaginationRenderer.java new file mode 100644 index 00000000..6e64b058 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/ImagePaginationRenderer.java @@ -0,0 +1,53 @@ +package egovframework.com.cmm; + +import egovframework.rte.ptl.mvc.tags.ui.pagination.AbstractPaginationRenderer; + +import javax.servlet.ServletContext; + +import org.springframework.web.context.ServletContextAware; +/** + * ImagePaginationRenderer.java 클래스 + * + * @author 서준식 + * @since 2011. 9. 16. + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    -------------    ----------------------
+ *   2011. 9. 16.   서준식       이미지 경로에 ContextPath추가
+ *   2016. 6. 17.   장동한       표준프레임워크 v3.6 리뉴얼
+ * 
+ */ +public class ImagePaginationRenderer extends AbstractPaginationRenderer implements ServletContextAware{ + + private ServletContext servletContext; + + public ImagePaginationRenderer() { + + } + + public void initVariables(){ + + firstPageLabel = "
  • 첫 페이지
  • "; + previousPageLabel = "
  • 이전 페이지
  • "; + + currentPageLabel = "
  • {0}
  • "; + otherPageLabel = "
  • {2}
  • "; + + nextPageLabel = "
  • 다음 페이지
  • "; + lastPageLabel = "
  • 끝 페이지
  • "; + + } + + + + public void setServletContext(ServletContext servletContext) { + this.servletContext = servletContext; + initVariables(); + } + +} diff --git a/src/main/java/egovframework/com/cmm/IncludedCompInfoVO.java b/src/main/java/egovframework/com/cmm/IncludedCompInfoVO.java new file mode 100644 index 00000000..c4cfdbda --- /dev/null +++ b/src/main/java/egovframework/com/cmm/IncludedCompInfoVO.java @@ -0,0 +1,50 @@ +package egovframework.com.cmm; + +/** + * IncludedInfo annotation을 바탕으로 화면에 표시할 정보를 구성하기 위한 VO 클래스 + * @author 공통컴포넌트 정진오 + * @since 2011.08.26 + * @version 2.0.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *  수정일		수정자		수정내용
    + *  -------    	--------    ---------------------------
    + *  2011.08.26	정진오 		최초 생성
    + *
    + * 
    + */ +public class IncludedCompInfoVO { + + private String name; + private String listUrl; + private int order; + private int gid; + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getListUrl() { + return listUrl; + } + public void setListUrl(String listUrl) { + this.listUrl = listUrl; + } + public int getOrder() { + return order; + } + public void setOrder(int order) { + this.order = order; + } + public int getGid() { + return gid; + } + public void setGid(int gid) { + this.gid = gid; + } +} diff --git a/src/main/java/egovframework/com/cmm/LoginVO.java b/src/main/java/egovframework/com/cmm/LoginVO.java new file mode 100644 index 00000000..8716dbfe --- /dev/null +++ b/src/main/java/egovframework/com/cmm/LoginVO.java @@ -0,0 +1,250 @@ +package egovframework.com.cmm; + +import java.io.Serializable; + +/** + * @Class Name : LoginVO.java + * @Description : Login VO class + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.03 박지욱 최초 생성 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.03 + * @version 1.0 + * @see + * + */ +public class LoginVO implements Serializable{ + + /** + * + */ + private static final long serialVersionUID = -8274004534207618049L; + + /** 아이디 */ + private String id; + /** 이름 */ + private String name; + /** 주민등록번호 */ + private String ihidNum; + /** 이메일주소 */ + private String email; + /** 비밀번호 */ + private String password; + /** 비밀번호 힌트 */ + private String passwordHint; + /** 비밀번호 정답 */ + private String passwordCnsr; + /** 사용자구분 */ + private String userSe; + /** 조직(부서)ID */ + private String orgnztId; + /** 조직(부서)명 */ + private String orgnztNm; + /** 고유아이디 */ + private String uniqId; + /** 로그인 후 이동할 페이지 */ + private String url; + /** 사용자 IP정보 */ + private String ip; + /** GPKI인증 DN */ + private String dn; + /** + * id attribute 를 리턴한다. + * @return String + */ + public String getId() { + return id; + } + /** + * id attribute 값을 설정한다. + * @param id String + */ + public void setId(String id) { + this.id = id; + } + /** + * name attribute 를 리턴한다. + * @return String + */ + public String getName() { + return name; + } + /** + * name attribute 값을 설정한다. + * @param name String + */ + public void setName(String name) { + this.name = name; + } + /** + * ihidNum attribute 를 리턴한다. + * @return String + */ + public String getIhidNum() { + return ihidNum; + } + /** + * ihidNum attribute 값을 설정한다. + * @param ihidNum String + */ + public void setIhidNum(String ihidNum) { + this.ihidNum = ihidNum; + } + /** + * email attribute 를 리턴한다. + * @return String + */ + public String getEmail() { + return email; + } + /** + * email attribute 값을 설정한다. + * @param email String + */ + public void setEmail(String email) { + this.email = email; + } + /** + * password attribute 를 리턴한다. + * @return String + */ + public String getPassword() { + return password; + } + /** + * password attribute 값을 설정한다. + * @param password String + */ + public void setPassword(String password) { + this.password = password; + } + /** + * passwordHint attribute 를 리턴한다. + * @return String + */ + public String getPasswordHint() { + return passwordHint; + } + /** + * passwordHint attribute 값을 설정한다. + * @param passwordHint String + */ + public void setPasswordHint(String passwordHint) { + this.passwordHint = passwordHint; + } + /** + * passwordCnsr attribute 를 리턴한다. + * @return String + */ + public String getPasswordCnsr() { + return passwordCnsr; + } + /** + * passwordCnsr attribute 값을 설정한다. + * @param passwordCnsr String + */ + public void setPasswordCnsr(String passwordCnsr) { + this.passwordCnsr = passwordCnsr; + } + /** + * userSe attribute 를 리턴한다. + * @return String + */ + public String getUserSe() { + return userSe; + } + /** + * userSe attribute 값을 설정한다. + * @param userSe String + */ + public void setUserSe(String userSe) { + this.userSe = userSe; + } + /** + * orgnztId attribute 를 리턴한다. + * @return String + */ + public String getOrgnztId() { + return orgnztId; + } + /** + * orgnztId attribute 값을 설정한다. + * @param orgnztId String + */ + public void setOrgnztId(String orgnztId) { + this.orgnztId = orgnztId; + } + /** + * uniqId attribute 를 리턴한다. + * @return String + */ + public String getUniqId() { + return uniqId; + } + /** + * uniqId attribute 값을 설정한다. + * @param uniqId String + */ + public void setUniqId(String uniqId) { + this.uniqId = uniqId; + } + /** + * url attribute 를 리턴한다. + * @return String + */ + public String getUrl() { + return url; + } + /** + * url attribute 값을 설정한다. + * @param url String + */ + public void setUrl(String url) { + this.url = url; + } + /** + * ip attribute 를 리턴한다. + * @return String + */ + public String getIp() { + return ip; + } + /** + * ip attribute 값을 설정한다. + * @param ip String + */ + public void setIp(String ip) { + this.ip = ip; + } + /** + * dn attribute 를 리턴한다. + * @return String + */ + public String getDn() { + return dn; + } + /** + * dn attribute 값을 설정한다. + * @param dn String + */ + public void setDn(String dn) { + this.dn = dn; + } + /** + * @return the orgnztNm + */ + public String getOrgnztNm() { + return orgnztNm; + } + /** + * @param orgnztNm the orgnztNm to set + */ + public void setOrgnztNm(String orgnztNm) { + this.orgnztNm = orgnztNm; + } + +} diff --git a/src/main/java/egovframework/com/cmm/RegacyPaginationRenderer.java b/src/main/java/egovframework/com/cmm/RegacyPaginationRenderer.java new file mode 100644 index 00000000..061ce35c --- /dev/null +++ b/src/main/java/egovframework/com/cmm/RegacyPaginationRenderer.java @@ -0,0 +1,48 @@ +package egovframework.com.cmm; + +import egovframework.rte.ptl.mvc.tags.ui.pagination.AbstractPaginationRenderer; + +import javax.servlet.ServletContext; + +import org.springframework.web.context.ServletContextAware; +/** + * ImagePaginationRenderer.java 클래스 + * + * @author 서준식 + * @since 2011. 9. 16. + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    -------------    ----------------------
    + *   2011. 9. 16.   서준식       이미지 경로에 ContextPath추가
    + *   2016. 6. 17.   장동한       표준프레임워크 v3.6 리뉴얼
    + * 
    + */ +public class RegacyPaginationRenderer extends AbstractPaginationRenderer implements ServletContextAware{ + + private ServletContext servletContext; + + public RegacyPaginationRenderer() { + + } + + public void initVariables(){ + + firstPageLabel = "\"처음\" "; + previousPageLabel = "\"이전\" "; + currentPageLabel = "{0} "; + otherPageLabel = "{2} "; + nextPageLabel = "\"다음\" "; + lastPageLabel = "\"마지막\" "; + } + + public void setServletContext(ServletContext servletContext) { + this.servletContext = servletContext; + initVariables(); + } + +} diff --git a/src/main/java/egovframework/com/cmm/SessionVO.java b/src/main/java/egovframework/com/cmm/SessionVO.java new file mode 100644 index 00000000..b6fd62c9 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/SessionVO.java @@ -0,0 +1,120 @@ +package egovframework.com.cmm; + +import java.io.Serializable; + +/** + * 세션 VO 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.06 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + * 
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.06  박지욱          최초 생성 
    + *  
    + *  
    + */ +@SuppressWarnings("serial") +public class SessionVO implements Serializable { + + /** 아이디 */ + private String sUserId; + /** 이름 */ + private String sUserNm; + /** 이메일 */ + private String sEmail; + /** 사용자구분 */ + private String sUserSe; + /** 조직(부서)ID */ + private String orgnztId; + /** 고유아이디 */ + private String uniqId; + /** + * sUserId attribute 를 리턴한다. + * @return String + */ + public String getSUserId() { + return sUserId; + } + /** + * sUserId attribute 값을 설정한다. + * @param sUserId String + */ + public void setSUserId(String userId) { + sUserId = userId; + } + /** + * sUserNm attribute 를 리턴한다. + * @return String + */ + public String getSUserNm() { + return sUserNm; + } + /** + * sUserNm attribute 값을 설정한다. + * @param sUserNm String + */ + public void setSUserNm(String userNm) { + sUserNm = userNm; + } + /** + * sEmail attribute 를 리턴한다. + * @return String + */ + public String getSEmail() { + return sEmail; + } + /** + * sEmail attribute 값을 설정한다. + * @param sEmail String + */ + public void setSEmail(String email) { + sEmail = email; + } + /** + * sUserSe attribute 를 리턴한다. + * @return String + */ + public String getSUserSe() { + return sUserSe; + } + /** + * sUserSe attribute 값을 설정한다. + * @param sUserSe String + */ + public void setSUserSe(String userSe) { + sUserSe = userSe; + } + /** + * orgnztId attribute 를 리턴한다. + * @return String + */ + public String getOrgnztId() { + return orgnztId; + } + /** + * orgnztId attribute 값을 설정한다. + * @param orgnztId String + */ + public void setOrgnztId(String orgnztId) { + this.orgnztId = orgnztId; + } + /** + * uniqId attribute 를 리턴한다. + * @return String + */ + public String getUniqId() { + return uniqId; + } + /** + * uniqId attribute 값을 설정한다. + * @param uniqId String + */ + public void setUniqId(String uniqId) { + this.uniqId = uniqId; + } +} diff --git a/src/main/java/egovframework/com/cmm/annotation/IncludedInfo.java b/src/main/java/egovframework/com/cmm/annotation/IncludedInfo.java new file mode 100644 index 00000000..a88f458e --- /dev/null +++ b/src/main/java/egovframework/com/cmm/annotation/IncludedInfo.java @@ -0,0 +1,33 @@ +package egovframework.com.cmm.annotation; + +/** + * 컴포넌트의 포함 정보 표현을 위한 annotation 클래스 + * 기본적으로 Controller 클래스에 annotation을 부여하되, + * 하나의 Controller에 여러 개의 목록성 url mapping이 제공되는 경우에는 + * 메소드에 annotation을 부여한다. + * @author 공통컴포넌트 정진오 + * @since 2011.08.26 + * @version 2.0.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *  수정일		수정자		수정내용
    + *  -------    	--------    ---------------------------
    + *  2011.08.26	정진오 		최초 생성
    + *
    + * 
    + */ + + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface IncludedInfo { + String name() default ""; // 컴포넌트의 한글 이름 + String listUrl() default ""; // 컴포넌트의 목록정보조회를 위한 URL + int order() default 0; // 자동 생성되는 메뉴 목록에 표시되는 순서 + int gid() default 0; // 컴포넌트의 Group ID(대분류 구분) +} diff --git a/src/main/java/egovframework/com/cmm/config/EgovLoginConfig.java b/src/main/java/egovframework/com/cmm/config/EgovLoginConfig.java new file mode 100644 index 00000000..c419389f --- /dev/null +++ b/src/main/java/egovframework/com/cmm/config/EgovLoginConfig.java @@ -0,0 +1,46 @@ +package egovframework.com.cmm.config; + +/** + * EgovLoginConfig 클래스 + * + * 사용자 인증수행제한에 대한 설정을 관리하는 클래스 + * + * N/A + * + * @author 장동한 + * @since 2017.07.17 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일        수정자           수정내용
    + *  -------      -------------  ----------------------
    + *   2016.07.17  장동한           최초 생성
    + * 
    + */ + + +public class EgovLoginConfig { + //로그인 인증 제한 여부 + boolean lock = false; + //로그인 인증 제한 횟수 + int lockCount = 0; + + public boolean isLock() { + return lock; + } + + public void setLock(boolean lock) { + this.lock = lock; + } + + public int getLockCount() { + return lockCount; + } + + public void setLockCount(int lockCount) { + this.lockCount = lockCount; + } +} diff --git a/src/main/java/egovframework/com/cmm/config/EgovWebApplicationInitializer.java b/src/main/java/egovframework/com/cmm/config/EgovWebApplicationInitializer.java new file mode 100644 index 00000000..1547b180 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/config/EgovWebApplicationInitializer.java @@ -0,0 +1,173 @@ +package egovframework.com.cmm.config; + +import javax.servlet.FilterRegistration; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.support.XmlWebApplicationContext; +import org.springframework.web.filter.DelegatingFilterProxy; +import org.springframework.web.filter.HiddenHttpMethodFilter; +import org.springframework.web.multipart.support.MultipartFilter; +import org.springframework.web.servlet.DispatcherServlet; + +import egovframework.com.cmm.filter.HTMLTagFilter; +import egovframework.com.cmm.service.EgovProperties; +import egovframework.com.sec.security.filter.EgovSpringSecurityLoginFilter; +import egovframework.com.sec.security.filter.EgovSpringSecurityLogoutFilter; +import egovframework.com.uat.uap.filter.EgovLoginPolicyFilter; +import egovframework.com.utl.wed.filter.CkFilter; + + +/** + * EgovWebApplicationInitializer 클래스 + * + * 사용자 인증 권한처리를 분리(session, spring security) 하기 위해서 web.xml의 기능을 + * Servlet3.x WebApplicationInitializer 기능으로 처리 + * + * N/A + * + * @author 장동한 + * @since 2016.06.23 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일        수정자           수정내용
    + *  -------      -------------  ----------------------
    + *   2016.06.23  장동한           최초 생성
    + *   2018.10.02  신용호           Facebook 관련 HiddenHttpMethodFilter 추가
    + *   2018.10.26  신용호           EgovLoginPolicyFilter 추가 (IP접근처리)
    + *   2018.12.03  신용호           springMultipartFilter,HTMLTagFilter 추가 (XSS방지처리)
    + * 
    + */ + + +public class EgovWebApplicationInitializer implements WebApplicationInitializer { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovWebApplicationInitializer.class); + @Override + public void onStartup(ServletContext servletContext) throws ServletException { + LOGGER.debug("EgovWebApplicationInitializer START-============================================"); + + //------------------------------------------------------------- + // Egov Web ServletContextListener 설정 + //------------------------------------------------------------- + servletContext.addListener(new egovframework.com.cmm.context.EgovWebServletContextListener()); + + //------------------------------------------------------------- + // Spring CharacterEncodingFilter 설정 + //------------------------------------------------------------- + FilterRegistration.Dynamic characterEncoding = servletContext.addFilter("encodingFilter", new org.springframework.web.filter.CharacterEncodingFilter()); + characterEncoding.setInitParameter("encoding", "UTF-8"); + characterEncoding.setInitParameter("forceEncoding", "true"); + characterEncoding.addMappingForUrlPatterns(null, false, "*.do"); + //characterEncoding.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "*.do"); + + //------------------------------------------------------------- + // Spring ServletContextListener 설정 + //------------------------------------------------------------- + XmlWebApplicationContext rootContext = new XmlWebApplicationContext(); + rootContext.setConfigLocations(new String[] { "classpath*:egovframework/spring/com/**/context-*.xml" }); + //rootContext.setConfigLocations(new String[] { "classpath*:egovframework/spring/com/context-*.xml","classpath*:egovframework/spring/com/*/context-*.xml" }); + rootContext.refresh(); + rootContext.start(); + + servletContext.addListener(new ContextLoaderListener(rootContext)); + + //------------------------------------------------------------- + // Spring ServletContextListener 설정 + //------------------------------------------------------------- + XmlWebApplicationContext xmlWebApplicationContext = new XmlWebApplicationContext(); + xmlWebApplicationContext.setConfigLocation("/WEB-INF/config/egovframework/springmvc/egov-com-*.xml"); + ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(xmlWebApplicationContext)); + //dispatcher.addMapping("*.do"); + dispatcher.addMapping("/"); // Facebook OAuth 사용시 변경 + dispatcher.setLoadOnStartup(1); + + if("security".equals(EgovProperties.getProperty("Globals.Auth").trim())) { + + //------------------------------------------------------------- + // springSecurityFilterChain 설정 + //------------------------------------------------------------- + FilterRegistration.Dynamic springSecurityFilterChain = servletContext.addFilter("springSecurityFilterChain", new DelegatingFilterProxy()); + springSecurityFilterChain.addMappingForUrlPatterns(null, false, "*"); + //servletContext.addFilter("springSecurityFilterChain", new DelegatingFilterProxy("springSecurityFilterChain")).addMappingForUrlPatterns(null, false, "/*"); + + //------------------------------------------------------------- + // HttpSessionEventPublisher 설정 + //------------------------------------------------------------- + servletContext.addListener(new org.springframework.security.web.session.HttpSessionEventPublisher()); + + //------------------------------------------------------------- + // EgovSpringSecurityLoginFilter 설정 + //------------------------------------------------------------- + FilterRegistration.Dynamic egovSpringSecurityLoginFilter = servletContext.addFilter("egovSpringSecurityLoginFilter", new EgovSpringSecurityLoginFilter()); + //로그인 실패시 반활 될 URL설정 + egovSpringSecurityLoginFilter.setInitParameter("loginURL", "/uat/uia/egovLoginUsr.do"); + //로그인 처리 URL설정 + egovSpringSecurityLoginFilter.setInitParameter("loginProcessURL", "/uat/uia/actionLogin.do"); + //처리 Url Pattern + egovSpringSecurityLoginFilter.addMappingForUrlPatterns(null, false, "*.do"); + + //------------------------------------------------------------- + // EgovSpringSecurityLogoutFilter 설정 + //------------------------------------------------------------- + FilterRegistration.Dynamic egovSpringSecurityLogoutFilter = servletContext.addFilter("egovSpringSecurityLogoutFilter", new EgovSpringSecurityLogoutFilter()); + egovSpringSecurityLogoutFilter.addMappingForUrlPatterns(null, false, "/uat/uia/actionLogout.do"); + + } else if("session".equals(EgovProperties.getProperty("Globals.Auth").trim())) { + //------------------------------------------------------------- + // EgovLoginPolicyFilter 설정 + //------------------------------------------------------------- + FilterRegistration.Dynamic egovLoginPolicyFilter = servletContext.addFilter("LoginPolicyFilter", new EgovLoginPolicyFilter()); + egovLoginPolicyFilter.addMappingForUrlPatterns(null, false, "/uat/uia/actionLogin.do"); + + } + + //------------------------------------------------------------- + // CkFilter 설정 (CKEditor 사용시 설정) + //------------------------------------------------------------- + FilterRegistration.Dynamic regCkFilter = servletContext.addFilter("CKFilter", new CkFilter()); + regCkFilter.setInitParameter("properties", "egovframework/egovProps/ck.properties"); + regCkFilter.addMappingForUrlPatterns(null, false, "/ckupload"); + + //------------------------------------------------------------- + // HiddenHttpMethodFilter 설정 (Facebook OAuth 사용시 설정) + //------------------------------------------------------------- + FilterRegistration.Dynamic hiddenHttpMethodFilter = servletContext.addFilter("hiddenHttpMethodFilter", new HiddenHttpMethodFilter()); + hiddenHttpMethodFilter.addMappingForUrlPatterns(null, false, "/*"); + + //------------------------------------------------------------- + // Tomcat의 경우 allowCasualMultipartParsing="true" 추가 + // + //------------------------------------------------------------- + MultipartFilter springMultipartFilter = new MultipartFilter(); + springMultipartFilter.setMultipartResolverBeanName("multipartResolver"); + FilterRegistration.Dynamic multipartFilter = servletContext.addFilter("springMultipartFilter", springMultipartFilter); + multipartFilter.addMappingForUrlPatterns(null, false, "*.do"); + + //------------------------------------------------------------- + // HTMLTagFilter의 경우는 파라미터에 대하여 XSS 오류 방지를 위한 변환을 처리합니다. + //------------------------------------------------------------- + // HTMLTagFIlter의 경우는 JSP의 등을 사용하지 못하는 특수한 상황에서 사용하시면 됩니다. + // (의 경우 뷰단에서 데이터 출력시 XSS 방지 처리가 됨) + FilterRegistration.Dynamic htmlTagFilter = servletContext.addFilter("htmlTagFilter", new HTMLTagFilter()); + htmlTagFilter.addMappingForUrlPatterns(null, false, "*.do"); + + //------------------------------------------------------------- + // Spring RequestContextListener 설정 + //------------------------------------------------------------- + servletContext.addListener(new org.springframework.web.context.request.RequestContextListener()); + + LOGGER.debug("EgovWebApplicationInitializer END-============================================"); + + } + +} diff --git a/src/main/java/egovframework/com/cmm/context/EgovWebServletContextListener.java b/src/main/java/egovframework/com/cmm/context/EgovWebServletContextListener.java new file mode 100644 index 00000000..ad74454a --- /dev/null +++ b/src/main/java/egovframework/com/cmm/context/EgovWebServletContextListener.java @@ -0,0 +1,66 @@ +package egovframework.com.cmm.context; + +import egovframework.com.cmm.service.EgovProperties; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * EgovWebServletContextListener 클래스 + * + * 데이터베이스 설정을 spring.profiles.active 방식으로 처리 + * (공통컴포넌트 특성상 데이터베이스별 분리/개발,검증,운영서버로 분리 가능) + * + * N/A + * + * @author 장동한 + * @since 2016.06.23 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일        수정자           수정내용
    + *  -------      -------------  ----------------------
    + *   2016.06.23  장동한           최초 생성
    + *   2017.03.03     조성원 	시큐어코딩(ES)-오류 메시지를 통한 정보노출[CWE-209]
    + * 
    + */ + +public class EgovWebServletContextListener implements ServletContextListener { + private static final Logger LOGGER = LoggerFactory.getLogger(EgovWebServletContextListener.class); + + public EgovWebServletContextListener(){ + setEgovProfileSetting(); + } + + public void contextInitialized(ServletContextEvent event){ + if(System.getProperty("spring.profiles.active") == null){ + setEgovProfileSetting(); + } + } + + public void contextDestroyed(ServletContextEvent event) { + if(System.getProperty("spring.profiles.active") != null){ + System.setProperty("spring.profiles.active", null); + } + } + + public void setEgovProfileSetting(){ + try { + LOGGER.debug("===========================Start EgovServletContextLoad START ==========="); + System.setProperty("spring.profiles.active", EgovProperties.getProperty("Globals.DbType")+","+EgovProperties.getProperty("Globals.Auth")); + LOGGER.debug("Setting spring.profiles.active>"+System.getProperty("spring.profiles.active")); + LOGGER.debug("===========================END EgovServletContextLoad END ==========="); + //2017.03.03 조성원 시큐어코딩(ES)-오류 메시지를 통한 정보노출[CWE-209] + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] search fail : " + e.getMessage()); + } + } +} diff --git a/src/main/java/egovframework/com/cmm/exception/EgovXssException.java b/src/main/java/egovframework/com/cmm/exception/EgovXssException.java new file mode 100644 index 00000000..5d143892 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/exception/EgovXssException.java @@ -0,0 +1,39 @@ +package egovframework.com.cmm.exception; + +import egovframework.rte.fdl.cmmn.exception.BaseRuntimeException; + +/** + * EgovXssException 클래스 + * + * @author 장동한 + * @since 2016.10.27 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일        수정자           수정내용
    + *  -------      -------------  ----------------------
    + *   2016.10.17  장동한           최초 생성
    + * 
    + */ + +public class EgovXssException extends BaseRuntimeException { + + private static final long serialVersionUID = 1L; + + /** + * EgovXssException 생성자. + * + * @param defaultMessage 메세지 지정 + * @param wrappedException 원인 Exception + */ + public EgovXssException(String message, String messageKey) { + this.messageKey = messageKey; + this.messageParameters = null; + this.message = message; + this.wrappedException = null; + } + +} diff --git a/src/main/java/egovframework/com/cmm/filter/HTMLTagFilter.java b/src/main/java/egovframework/com/cmm/filter/HTMLTagFilter.java new file mode 100644 index 00000000..551d57aa --- /dev/null +++ b/src/main/java/egovframework/com/cmm/filter/HTMLTagFilter.java @@ -0,0 +1,46 @@ +/* + * Copyright 2008-2009 MOPAS(MINISTRY OF SECURITY AND PUBLIC ADMINISTRATION). + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package egovframework.com.cmm.filter; + +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; + +public class HTMLTagFilter implements Filter{ + + @SuppressWarnings("unused") + private FilterConfig config; + + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + + chain.doFilter(new HTMLTagFilterRequestWrapper((HttpServletRequest)request), response); + } + + public void init(FilterConfig config) throws ServletException { + this.config = config; + } + + public void destroy() { + + } +} diff --git a/src/main/java/egovframework/com/cmm/filter/HTMLTagFilterRequestWrapper.java b/src/main/java/egovframework/com/cmm/filter/HTMLTagFilterRequestWrapper.java new file mode 100644 index 00000000..3c1d05f4 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/filter/HTMLTagFilterRequestWrapper.java @@ -0,0 +1,187 @@ +/* + * Copyright 2008-2009 MOPAS(MINISTRY OF SECURITY AND PUBLIC ADMINISTRATION). + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package egovframework.com.cmm.filter; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; + +/** +* +* HTMLTagFilterRequestWrapper +* @author 공통컴포넌트 팀 신용호 +* @since 2018.03.21 +* @version 1.0 +* @see +* +*
    +* << 개정이력(Modification Information) >>
    +*
    +*   수정일              수정자              수정내용
    +*  -------      --------    ---------------------------
    +*   2018.03.21  신용호              getParameterMap()구현 추가
    +*   2019.01.31  신용호              whiteList 태그 추가
    +*
    +*/
    +
    +public class HTMLTagFilterRequestWrapper extends HttpServletRequestWrapper {
    +
    +	// Tag 화이트 리스트 ( 허용할 태그 등록 )
    +	static private String[] whiteListTag = { "

    ","

    ","
    " }; + + 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) { + values[i] = getSafeParamData(values[i]); + //System.out.println( "[HTMLTagFilter getParameterValues] "+ parameter + "===>>>"+values[i] ); + } else { + values[i] = null; + } + } + + return values; + } + + public String getParameter(String parameter) { + + String value = super.getParameter(parameter); + + if(value==null){ + return null; + } + + value = getSafeParamData(value); + //System.out.println( "[HTMLTagFilter getParameter] "+ parameter + "===>>>"+value ); + return value; + } + + /** + * Map으로 바인딩된 경우를 처리한다. + * + * @return Map - String Type Key / String배열타입 값 + */ + public Map getParameterMap() { + Map valueMap = super.getParameterMap(); + + String[] values; + for( String key : valueMap.keySet() ){ + values = valueMap.get(key); + + for (int i = 0; i < values.length; i++) { + if (values[i] != null) { + values[i] = getSafeParamData(values[i]); + //System.out.println( "[HTMLTagFilter getParameterMap] "+ key + "===>>>"+values[i] ); + } else { + values[i] = null; + } + } + + //System.out.println( String.format("키 : %s, 값 : %s", key, valueMap.get(key)) ); + } + + return valueMap; + } + + private String getSafeParamData(String value) { + StringBuffer strBuff = new StringBuffer(); + + for (int i = 0; i < value.length(); i++) { + char c = value.charAt(i); + switch (c) { + case '<': + if ( checkNextWhiteListTag(i, value) == false ) + strBuff.append("<"); + else + strBuff.append(c); + //System.out.println("checkNextWhiteListTag = "+checkNextWhiteListTag(i, value)); + break; + case '>': + if ( checkPrevWhiteListTag(i, value) == false ) + strBuff.append(">"); + else + strBuff.append(c); + //System.out.println("checkPrevWhiteListTag = "+checkPrevWhiteListTag(i, value)); + break; + //case '&': + // strBuff.append("&"); + // break; + case '"': + strBuff.append("""); + break; + case '\'': + strBuff.append("'"); + break; + default: + strBuff.append(c); + break; + } + } + + value = strBuff.toString(); + return value; + } + + private boolean checkNextWhiteListTag(int index, String data) { + String extractData = ""; + //int beginIndex = 0; + int endIndex = 0; + for(String whiteListData: whiteListTag) { + //System.out.println("===>>> whiteListData="+whiteListData); + endIndex = index+whiteListData.length(); + if ( data.length() > endIndex ) + extractData = data.substring(index, endIndex); + else + extractData = ""; + //System.out.println("extractData="+extractData); + if ( whiteListData.equals(extractData) ) return true; // whiteList 대상으로 판정 + } + + return false; + } + + private boolean checkPrevWhiteListTag(int index, String data) { + String extractData = ""; + int beginIndex = 0; + int endIndex = 0; + for(String whiteListData: whiteListTag) { + //System.out.println("===>>> whiteListData="+whiteListData); + beginIndex = index-whiteListData.length()+1; + endIndex = index+1; + //System.out.println(" range ["+beginIndex+" ~ "+endIndex+"]"); + if ( beginIndex >= 0 ) + extractData = data.substring(beginIndex, endIndex); + else + extractData = ""; + //System.out.println("extractData="+extractData); + if ( whiteListData.equals(extractData) ) return true; // whiteList 대상으로 판정 + } + + return false; + } + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/cmm/interceptor/AuthenticInterceptor.java b/src/main/java/egovframework/com/cmm/interceptor/AuthenticInterceptor.java new file mode 100644 index 00000000..1b13a42f --- /dev/null +++ b/src/main/java/egovframework/com/cmm/interceptor/AuthenticInterceptor.java @@ -0,0 +1,91 @@ +package egovframework.com.cmm.interceptor; + +import java.util.List; + +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.core.env.Environment; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.ModelAndViewDefiningException; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import egovframework.com.cmm.util.EgovUserDetailsHelper; + +/** + * 인증여부 체크 인터셉터 + * @author 공통서비스 개발팀 서준식 + * @since 2011.07.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011.07.01  서준식          최초 생성
    + *  2011.09.07  서준식          인증이 필요없는 URL을 패스하는 로직 추가
    + *  2017.08.31  장동한          인증된 사용자 체크로직 변경 및 관리자 권한 체크 로직 추가 
    + *  
    + */ + + +public class AuthenticInterceptor extends HandlerInterceptorAdapter { + + @Autowired + private Environment environment; + + /** log */ + private static final Logger LOGGER = LoggerFactory.getLogger(AuthenticInterceptor.class); + + /** 관리자 접근 권한 패턴 목록 */ + private List adminAuthPatternList; + + public List getAdminAuthPatternList() { + return adminAuthPatternList; + } + + public void setAdminAuthPatternList(List adminAuthPatternList) { + this.adminAuthPatternList = adminAuthPatternList; + } + + /** + * 인증된 사용자 여부로 인증 여부를 체크한다. + * 관리자 권한에 따라 접근 페이지 권한을 체크한다. + */ + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + //인증된사용자 여부 + boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + //미민증사용자 체크 + if(!isAuthenticated) { + ModelAndView modelAndView = new ModelAndView("redirect:/uat/uia/egovLoginUsr.do"); + throw new ModelAndViewDefiningException(modelAndView); + } + //인증된 권한 목록 + List authList = (List)EgovUserDetailsHelper.getAuthorities(); + //관리자인증여부 + boolean adminAuthUrlPatternMatcher = false; + //AntPathRequestMatcher + AntPathRequestMatcher antPathRequestMatcher = null; + //관리자가 아닐때 체크함 + for(String adminAuthPattern : adminAuthPatternList){ + antPathRequestMatcher = new AntPathRequestMatcher(adminAuthPattern); + if(antPathRequestMatcher.matches(request)){ + adminAuthUrlPatternMatcher = true; + } + } + //관리자 권한 체크 + if(adminAuthUrlPatternMatcher && !authList.contains("ADMIN")){ + ModelAndView modelAndView = new ModelAndView("redirect:/uat/uia/egovLoginUsr.do?auth_error=1"); + throw new ModelAndViewDefiningException(modelAndView); + } + return true; + } + +} diff --git a/src/main/java/egovframework/com/cmm/interceptor/IpObtainInterceptor.java b/src/main/java/egovframework/com/cmm/interceptor/IpObtainInterceptor.java new file mode 100644 index 00000000..f4b89a45 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/interceptor/IpObtainInterceptor.java @@ -0,0 +1,42 @@ +package egovframework.com.cmm.interceptor; + +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.util.EgovUserDetailsHelper; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +/** + * 사용자IP 체크 인터셉터 + * @author 유지보수팀 이기하 + * @since 2013.03.28 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + * 
    + *   수정일     수정자          수정내용
    + *  ----------  --------    ---------------------------
    + *  2013.03.28	이기하          최초 생성 
    + *  
    + */ + +public class IpObtainInterceptor extends HandlerInterceptorAdapter { + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + + String clientIp = request.getRemoteAddr(); + + LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + + if (loginVO != null) { + loginVO.setIp(clientIp); + } + + return true; + } +} diff --git a/src/main/java/egovframework/com/cmm/service/CmmnDetailCode.java b/src/main/java/egovframework/com/cmm/service/CmmnDetailCode.java new file mode 100644 index 00000000..7d16307e --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/CmmnDetailCode.java @@ -0,0 +1,217 @@ +package egovframework.com.cmm.service; + +import java.io.Serializable; + +/** + * 공통상세코드 모델 클래스 + * @author 공통서비스 개발팀 이중호 + * @since 2009.04.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.04.01  이중호          최초 생성
    + *   2017.09.07	이정은		표준프레임워크 v3.7 개선(clCode 추가)
    + *
    + * 
    + */ +public class CmmnDetailCode implements Serializable { + + private static final long serialVersionUID = 1L; + + /* + * 분류코드 + */ + private String clCode = ""; + + /* + * 코드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 = ""; + + + /** + * clCode attribute 를 리턴한다. + * @return String + */ + public String getClCode() { + return clCode; + } + + /** + * clCode attribute 값을 설정한다. + * @param clCode String + */ + public void setClCode(String clCode) { + this.clCode = clCode; + } + + /** + * codeId attribute 를 리턴한다. + * @return String + */ + public String getCodeId() { + return codeId; + } + + /** + * codeId attribute 값을 설정한다. + * @param codeId String + */ + public void setCodeId(String codeId) { + this.codeId = codeId; + } + + /** + * codeIdNm attribute 를 리턴한다. + * @return String + */ + public String getCodeIdNm() { + return codeIdNm; + } + + /** + * codeIdNm attribute 값을 설정한다. + * @param codeIdNm String + */ + public void setCodeIdNm(String codeIdNm) { + this.codeIdNm = codeIdNm; + } + + /** + * code attribute 를 리턴한다. + * @return String + */ + public String getCode() { + return code; + } + + /** + * code attribute 값을 설정한다. + * @param code String + */ + public void setCode(String code) { + this.code = code; + } + + /** + * codeNm attribute 를 리턴한다. + * @return String + */ + public String getCodeNm() { + return codeNm; + } + + /** + * codeNm attribute 값을 설정한다. + * @param codeNm String + */ + public void setCodeNm(String codeNm) { + this.codeNm = codeNm; + } + + /** + * codeDc attribute 를 리턴한다. + * @return String + */ + public String getCodeDc() { + return codeDc; + } + + /** + * codeDc attribute 값을 설정한다. + * @param codeDc String + */ + public void setCodeDc(String codeDc) { + this.codeDc = codeDc; + } + + /** + * useAt attribute 를 리턴한다. + * @return String + */ + public String getUseAt() { + return useAt; + } + + /** + * useAt attribute 값을 설정한다. + * @param useAt String + */ + public void setUseAt(String useAt) { + this.useAt = useAt; + } + + /** + * frstRegisterId attribute 를 리턴한다. + * @return String + */ + public String getFrstRegisterId() { + return frstRegisterId; + } + + /** + * frstRegisterId attribute 값을 설정한다. + * @param frstRegisterId String + */ + public void setFrstRegisterId(String frstRegisterId) { + this.frstRegisterId = frstRegisterId; + } + + /** + * lastUpdusrId attribute 를 리턴한다. + * @return String + */ + public String getLastUpdusrId() { + return lastUpdusrId; + } + + /** + * lastUpdusrId attribute 값을 설정한다. + * @param lastUpdusrId String + */ + public void setLastUpdusrId(String lastUpdusrId) { + this.lastUpdusrId = lastUpdusrId; + } + + +} diff --git a/src/main/java/egovframework/com/cmm/service/EgovCmmUseService.java b/src/main/java/egovframework/com/cmm/service/EgovCmmUseService.java new file mode 100644 index 00000000..54a0d032 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/EgovCmmUseService.java @@ -0,0 +1,64 @@ +package egovframework.com.cmm.service; + +import java.util.List; +import java.util.Map; + +import egovframework.com.cmm.ComDefaultCodeVO; + + + +/** + * + * 공통코드등 전체 업무에서 공용해서 사용해야 하는 서비스를 정의하기 위한 서비스 인터페이스 + * @author 공통서비스 개발팀 이삼섭 + * @since 2009.04.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.11  이삼섭          최초 생성
    + *
    + * 
    + */ +public interface EgovCmmUseService { + + /** + * 공통코드를 조회한다. + * + * @param vo + * @return List(코드) + * @throws Exception + */ + public List selectCmmCodeDetail(ComDefaultCodeVO vo) throws Exception; + + /** + * ComDefaultCodeVO의 리스트를 받아서 여러개의 코드 리스트를 맵에 담아서 리턴한다. + * + * @param voList + * @return Map(코드) + * @throws Exception + */ + public Map> selectCmmCodeDetails(List voList) throws Exception; + + /** + * 조직정보를 코드형태로 리턴한다. + * + * @param 조회조건정보 vo + * @return 조직정보 List + * @throws Exception + */ + public List selectOgrnztIdDetail(ComDefaultCodeVO vo) throws Exception; + + /** + * 그룹정보를 코드형태로 리턴한다. + * + * @param 조회조건정보 vo + * @return 그룹정보 List + * @throws Exception + */ + public List selectGroupIdDetail(ComDefaultCodeVO vo) throws Exception; +} diff --git a/src/main/java/egovframework/com/cmm/service/EgovFileMngService.java b/src/main/java/egovframework/com/cmm/service/EgovFileMngService.java new file mode 100644 index 00000000..677c16b9 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/EgovFileMngService.java @@ -0,0 +1,115 @@ +package egovframework.com.cmm.service; + +import java.util.List; +import java.util.Map; + +/** + * @Class Name : EgovFileMngService.java + * @Description : 파일정보의 관리를 위한 서비스 인터페이스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 25. 이삼섭 최초생성 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 25. + * @version + * @see + * + */ +public interface EgovFileMngService { + + /** + * 파일에 대한 목록을 조회한다. + * + * @param fvo + * @return + * @throws Exception + */ + public List selectFileInfs(FileVO fvo) throws Exception; + + /** + * 하나의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @param fvo + * @throws Exception + */ + public String insertFileInf(FileVO fvo) throws Exception; + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @param fvoList + * @throws Exception + */ + public String insertFileInfs(List fvoList) throws Exception; + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 수정한다. + * + * @param fvoList + * @throws Exception + */ + public void updateFileInfs(List fvoList) throws Exception; + + /** + * 여러 개의 파일을 삭제한다. + * + * @param fvoList + * @throws Exception + */ + public void deleteFileInfs(List fvoList) throws Exception; + + /** + * 하나의 파일을 삭제한다. + * + * @param fvo + * @throws Exception + */ + public void deleteFileInf(FileVO fvo) throws Exception; + + /** + * 파일에 대한 상세정보를 조회한다. + * + * @param fvo + * @return + * @throws Exception + */ + public FileVO selectFileInf(FileVO fvo) throws Exception; + + /** + * 파일 구분자에 대한 최대값을 구한다. + * + * @param fvo + * @return + * @throws Exception + */ + public int getMaxFileSN(FileVO fvo) throws Exception; + + /** + * 전체 파일을 삭제한다. + * + * @param fvo + * @throws Exception + */ + public void deleteAllFileInf(FileVO fvo) throws Exception; + + /** + * 파일명 검색에 대한 목록을 조회한다. + * + * @param fvo + * @return + * @throws Exception + */ + public Map selectFileListByFileNm(FileVO fvo) throws Exception; + + /** + * 이미지 파일에 대한 목록을 조회한다. + * + * @param vo + * @return + * @throws Exception + */ + public List selectImageFileList(FileVO vo) throws Exception; +} diff --git a/src/main/java/egovframework/com/cmm/service/EgovFileMngUtil.java b/src/main/java/egovframework/com/cmm/service/EgovFileMngUtil.java new file mode 100644 index 00000000..ebbd9b4b --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/EgovFileMngUtil.java @@ -0,0 +1,436 @@ +package egovframework.com.cmm.service; + +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.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; + +import egovframework.com.cmm.EgovWebUtil; +import egovframework.com.cmm.util.EgovResourceCloseHelper; +import egovframework.rte.fdl.idgnr.EgovIdGnrService; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.multipart.MultipartFile; + +/** + * @Class Name : EgovFileMngUtil.java + * @Description : 메시지 처리 관련 유틸리티 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.02.13 이삼섭 최초 생성 + * 2011.08.09 서준식 utl.fcc패키지와 Dependency제거를 위해 getTimeStamp()메서드 추가 + * 2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 02. 13 + * @version 1.0 + * @see + * + */ +@Component("EgovFileMngUtil") +public class EgovFileMngUtil { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileMngUtil.class); + + public static final int BUFF_SIZE = 2048; + + @Resource(name = "egovFileIdGnrService") + private EgovIdGnrService idgenService; + + /** + * 첨부파일에 대한 목록 정보를 취득한다. + * + * @param files + * @return + * @throws Exception + */ + public List parseFileInf(Map files, String KeyStr, int fileKeyParam, String atchFileId, String storePath) throws Exception { + int fileKey = fileKeyParam; + + String storePathString = ""; + String atchFileIdString = ""; + + if ("".equals(storePath) || storePath == null) { + storePathString = EgovProperties.getProperty("Globals.fileStorePath"); + } else { + storePathString = EgovProperties.getProperty(storePath); + } + + if ("".equals(atchFileId) || atchFileId == null) { + atchFileIdString = idgenService.getNextStringId(); + } else { + atchFileIdString = atchFileId; + } + + File saveFolder = new File(EgovWebUtil.filePathBlackList(storePathString)); + + if (!saveFolder.exists() || saveFolder.isFile()) { + //2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + if (saveFolder.mkdirs()){ + LOGGER.debug("[file.mkdirs] saveFolder : Creation Success "); + }else{ + LOGGER.error("[file.mkdirs] saveFolder : Creation Fail "); + } + } + + Iterator> itr = files.entrySet().iterator(); + MultipartFile file; + String filePath = ""; + List result = new ArrayList(); + FileVO fvo; + + while (itr.hasNext()) { + Entry entry = itr.next(); + + file = entry.getValue(); + String orginFileName = file.getOriginalFilename(); + + //-------------------------------------- + // 원 파일명이 없는 경우 처리 + // (첨부가 되지 않은 input file type) + //-------------------------------------- + if ("".equals(orginFileName)) { + continue; + } + ////------------------------------------ + + int index = orginFileName.lastIndexOf("."); + //String fileName = orginFileName.substring(0, index); + String fileExt = orginFileName.substring(index + 1); + String newName = KeyStr + getTimeStamp() + fileKey; + long size = file.getSize(); + + if (!"".equals(orginFileName)) { + filePath = storePathString + File.separator + newName; + file.transferTo(new File(EgovWebUtil.filePathBlackList(filePath))); + } + + 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)); + + result.add(fvo); + + fileKey++; + } + + return result; + } + + /** + * 첨부파일을 서버에 저장한다. + * + * @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; + + try { + stream = file.getInputStream(); + File cFile = new File(stordFilePath); + + if (!cFile.isDirectory()) { + boolean _flag = cFile.mkdir(); + if (!_flag) { + throw new IOException("Directory creation Failed "); + } + } + + 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); + } + } finally { + EgovResourceCloseHelper.close(bos, stream); + } + } + + /** + * 서버의 파일을 다운로드한다. + * + * @param request + * @param response + * @throws Exception + */ + public static void downFile(HttpServletRequest request, HttpServletResponse response) throws Exception { + + String downFileName = ""; + String orgFileName = ""; + + if ((String) request.getAttribute("downFile") == null) { + downFileName = ""; + } else { + downFileName = (String) request.getAttribute("downFile"); + } + + if ((String) request.getAttribute("orgFileName") == null) { + orgFileName = ""; + } else { + orgFileName = (String) request.getAttribute("orginFile"); + } + + orgFileName = orgFileName.replaceAll("\r", "").replaceAll("\n", ""); + + File file = new File(EgovWebUtil.filePathBlackList(downFileName)); + + if (!file.exists()) { + throw new FileNotFoundException(downFileName); + } + + if (!file.isFile()) { + throw new FileNotFoundException(downFileName); + } + + byte[] buffer = new byte[BUFF_SIZE]; //buffer size 2K. + + 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 = null; + BufferedOutputStream outs = null; + + try { + fin = new BufferedInputStream(new FileInputStream(file)); + outs = new BufferedOutputStream(response.getOutputStream()); + int read = 0; + + while ((read = fin.read(buffer)) != -1) { + outs.write(buffer, 0, read); + } + } finally { + EgovResourceCloseHelper.close(outs, fin); + } + } + + /** + * 첨부로 등록된 파일을 서버에 업로드한다. + * + * @param file + * @return + * @throws Exception + */ + public static HashMap uploadFile(MultipartFile file) throws Exception { + + HashMap map = new HashMap(); + //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 = getTimeStamp(); // 2012.11 KISA 보안조치 + 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; + + try { + stream = file.getInputStream(); + File cFile = new File(EgovWebUtil.filePathBlackList(stordFilePath)); + + if (!cFile.isDirectory()){ + //2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + if (cFile.mkdirs()){ + LOGGER.debug("[file.mkdirs] saveFolder : Creation Success "); + }else{ + LOGGER.error("[file.mkdirs] saveFolder : Creation Fail "); + } + } + + bos = new FileOutputStream(EgovWebUtil.filePathBlackList(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); + } + } finally { + EgovResourceCloseHelper.close(bos, stream); + } + } + + /** + * 서버 파일에 대하여 다운로드를 처리한다. + * + * @param response + * @param streFileNm 파일저장 경로가 포함된 형태 + * @param orignFileNm + * @throws Exception + */ + public void downFile(HttpServletResponse response, String streFileNm, String orignFileNm) throws Exception { + String downFileName = streFileNm; + String orgFileName = orignFileNm; + + File file = new File(downFileName); + + if (!file.exists()) { + throw new FileNotFoundException(downFileName); + } + + if (!file.isFile()) { + throw new FileNotFoundException(downFileName); + } + + int fSize = (int) file.length(); + if (fSize > 0) { + BufferedInputStream in = null; + + try { + in = new BufferedInputStream(new FileInputStream(file)); + + String mimetype = "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 { + EgovResourceCloseHelper.close(in); + } + 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(""); + printwriter.println("


    Could not get file name:
    " + requestedFile + "

    "); + printwriter.println("


    Back

    "); + printwriter.println("


    © webAccess"); + printwriter.println(""); + 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(); + //*/ + } + + /** + * 공통 컴포넌트 utl.fcc 패키지와 Dependency제거를 위해 내부 메서드로 추가 정의함 + * 응용어플리케이션에서 고유값을 사용하기 위해 시스템에서17자리의TIMESTAMP값을 구하는 기능 + * + * @param + * @return Timestamp 값 + * @see + */ + private static String getTimeStamp() { + + String rtnStr = null; + + // 문자열로 변환하기 위한 패턴 설정(년도-월-일 시:분:초:초(자정이후 초)) + String pattern = "yyyyMMddhhmmssSSS"; + + SimpleDateFormat sdfCurrent = new SimpleDateFormat(pattern, Locale.KOREA); + Timestamp ts = new Timestamp(System.currentTimeMillis()); + + rtnStr = sdfCurrent.format(ts.getTime()); + + return rtnStr; + } +} diff --git a/src/main/java/egovframework/com/cmm/service/EgovProperties.java b/src/main/java/egovframework/com/cmm/service/EgovProperties.java new file mode 100644 index 00000000..9231f480 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/EgovProperties.java @@ -0,0 +1,223 @@ +package egovframework.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 egovframework.com.cmm.EgovWebUtil; +import egovframework.com.cmm.util.EgovResourceCloseHelper; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Class Name : EgovProperties.java + * Description : properties값들을 파일로부터 읽어와 Globals클래스의 정적변수로 로드시켜주는 클래스로 + * 문자열 정보 기준으로 사용할 전역변수를 시스템 재시작으로 반영할 수 있도록 한다. + * Modification Information + * + * 수정일 수정자 수정내용 + * ---------- -------- --------------------------- + * 2009.01.19 박지욱 최초 생성 + * 2011.07.20 서준식 Globals파일의 상대경로를 읽은 메서드 추가 + * 2014.10.13 이기하 Globals.properties 값이 null일 경우 오류처리 + * 2019.04.26 신용호 RELATIVE_PATH_PREFIX Path 적용 방식 개선 + * @author 공통 서비스 개발팀 박지욱 + * @since 2009. 01. 19 + * @version 1.0 + * @see + * + */ + +public class EgovProperties { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovProperties.class); + + //파일구분자 + final static String FILE_SEPARATOR = System.getProperty("file.separator"); + + //프로퍼티 파일의 물리적 위치 + //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().substring(0, EgovProperties.class.getResource("").getPath().lastIndexOf("com")); + //public static final String RELATIVE_PATH_PREFIX = EgovProperties.class.getProtectionDomain().getCodeSource().getLocation().getPath().substring(0,EgovProperties.class.getProtectionDomain().getCodeSource().getLocation().getPath().indexOf("WEB-INF/classes/")+"WEB-INF/classes/".length())+"egovframework/"; + + 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 = ""; + + LOGGER.debug("getPathProperty : {} = {}", 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)); + + value = props.getProperty(keyName); + value = (value == null) ? "" : value.trim();//KISA 보안약점 조치 (2018-10-29, 윤창원) + value = RELATIVE_PATH_PREFIX + "egovProps" + System.getProperty("file.separator") + value; + } 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값으로 하는 프로퍼티 값을 반환한다(Globals.java 전용) + * @param keyName String + * @return String + */ + public static String getProperty(String keyName) { + String value = ""; + + LOGGER.debug("===>>> getProperty"+EgovProperties.class.getProtectionDomain().getCodeSource().getLocation().getPath()); + 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 { + Properties props = new Properties(); + + fis = new FileInputStream(EgovWebUtil.filePathBlackList(fileName)); + props.load(new BufferedInputStream(fis)); + fis.close(); + + String value = props.getProperty(key); + value = RELATIVE_PATH_PREFIX + "egovProps" + System.getProperty("file.separator") + value; + + return value; + } 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); + } + } + + /** + * 주어진 파일에서 인자로 주어진 문자열을 Key값으로 하는 프로퍼티 값을 반환한다 + * @param fileName String + * @param key String + * @return String + */ + public static String getProperty(String fileName, String key) { + FileInputStream fis = null; + try { + Properties props = new Properties(); + + fis = new FileInputStream(EgovWebUtil.filePathBlackList(fileName)); + props.load(new BufferedInputStream(fis)); + fis.close(); + + String value = props.getProperty(key); + + return value; + } 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); + } + } + + /** + * 주어진 프로파일의 내용을 파싱하여 (key-value) 형태의 구조체 배열을 반환한다. + * @param property String + * @return ArrayList + */ + public static ArrayList> loadPropertyFile(String property) { + + // key - value 형태로 된 배열 결과 + ArrayList> keyList = new ArrayList>(); + + String src = property.replace('\\', File.separatorChar).replace('/', File.separatorChar); + FileInputStream fis = null; + try { + + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + if (srcFile.exists()) { + + Properties props = new Properties(); + fis = new FileInputStream(src); + props.load(new BufferedInputStream(fis)); + fis.close(); + + Enumeration plist = props.propertyNames(); + if (plist != null) { + while (plist.hasMoreElements()) { + Map map = new HashMap(); + String key = (String) plist.nextElement(); + map.put(key, props.getProperty(key)); + keyList.add(map); + } + } + } + } catch (IOException ex) { + LOGGER.debug("IO Exception", ex); + throw new RuntimeException(ex); + } finally { + EgovResourceCloseHelper.close(fis); + } + + return keyList; + } +} diff --git a/src/main/java/egovframework/com/cmm/service/EgovUserDetailsService.java b/src/main/java/egovframework/com/cmm/service/EgovUserDetailsService.java new file mode 100644 index 00000000..796f5ef5 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/EgovUserDetailsService.java @@ -0,0 +1,26 @@ +package egovframework.com.cmm.service; + +import java.util.List; + +public interface EgovUserDetailsService { + + /** + * 인증된 사용자객체를 VO형식으로 가져온다. + * @return Object - 사용자 ValueObject + */ + public Object getAuthenticatedUser(); + + /** + * 인증된 사용자의 권한 정보를 가져온다. + * 예) [ROLE_ADMIN, ROLE_USER, ROLE_A, ROLE_B, ROLE_RESTRICTED, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED, IS_AUTHENTICATED_ANONYMOUSLY] + * @return List - 사용자 권한정보 목록 + */ + public List getAuthorities(); + + /** + * 인증된 사용자 여부를 체크한다. + * @return Boolean - 인증된 사용자 여부(TRUE / FALSE) + */ + public Boolean isAuthenticated(); + +} diff --git a/src/main/java/egovframework/com/cmm/service/FileVO.java b/src/main/java/egovframework/com/cmm/service/FileVO.java new file mode 100644 index 00000000..6f5e0f3f --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/FileVO.java @@ -0,0 +1,240 @@ +package egovframework.com.cmm.service; + +import java.io.Serializable; + +import org.apache.commons.lang3.builder.ToStringBuilder; + +/** + * @Class Name : FileVO.java + * @Description : 파일정보 처리를 위한 VO 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 25. 이삼섭 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 25. + * @version + * @see + * + */ +@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 = ""; + + /** + * atchFileId attribute를 리턴한다. + * + * @return the atchFileId + */ + public String getAtchFileId() { + return atchFileId; + } + + /** + * atchFileId attribute 값을 설정한다. + * + * @param atchFileId + * the atchFileId to set + */ + public void setAtchFileId(String atchFileId) { + this.atchFileId = atchFileId; + } + + /** + * creatDt attribute를 리턴한다. + * + * @return the creatDt + */ + public String getCreatDt() { + return creatDt; + } + + /** + * creatDt attribute 값을 설정한다. + * + * @param creatDt + * the creatDt to set + */ + public void setCreatDt(String creatDt) { + this.creatDt = creatDt; + } + + /** + * fileCn attribute를 리턴한다. + * + * @return the fileCn + */ + public String getFileCn() { + return fileCn; + } + + /** + * fileCn attribute 값을 설정한다. + * + * @param fileCn + * the fileCn to set + */ + public void setFileCn(String fileCn) { + this.fileCn = fileCn; + } + + /** + * fileExtsn attribute를 리턴한다. + * + * @return the fileExtsn + */ + public String getFileExtsn() { + return fileExtsn; + } + + /** + * fileExtsn attribute 값을 설정한다. + * + * @param fileExtsn + * the fileExtsn to set + */ + public void setFileExtsn(String fileExtsn) { + this.fileExtsn = fileExtsn; + } + + /** + * fileMg attribute를 리턴한다. + * + * @return the fileMg + */ + public String getFileMg() { + return fileMg; + } + + /** + * fileMg attribute 값을 설정한다. + * + * @param fileMg + * the fileMg to set + */ + public void setFileMg(String fileMg) { + this.fileMg = fileMg; + } + + /** + * fileSn attribute를 리턴한다. + * + * @return the fileSn + */ + public String getFileSn() { + return fileSn; + } + + /** + * fileSn attribute 값을 설정한다. + * + * @param fileSn + * the fileSn to set + */ + public void setFileSn(String fileSn) { + this.fileSn = fileSn; + } + + /** + * fileStreCours attribute를 리턴한다. + * + * @return the fileStreCours + */ + public String getFileStreCours() { + return fileStreCours; + } + + /** + * fileStreCours attribute 값을 설정한다. + * + * @param fileStreCours + * the fileStreCours to set + */ + public void setFileStreCours(String fileStreCours) { + this.fileStreCours = fileStreCours; + } + + /** + * orignlFileNm attribute를 리턴한다. + * + * @return the orignlFileNm + */ + public String getOrignlFileNm() { + return orignlFileNm; + } + + /** + * orignlFileNm attribute 값을 설정한다. + * + * @param orignlFileNm + * the orignlFileNm to set + */ + public void setOrignlFileNm(String orignlFileNm) { + this.orignlFileNm = orignlFileNm; + } + + /** + * streFileNm attribute를 리턴한다. + * + * @return the streFileNm + */ + public String getStreFileNm() { + return streFileNm; + } + + /** + * streFileNm attribute 값을 설정한다. + * + * @param streFileNm + * the streFileNm to set + */ + public void setStreFileNm(String streFileNm) { + this.streFileNm = streFileNm; + } + + /** + * toString 메소드를 대치한다. + */ + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + +} diff --git a/src/main/java/egovframework/com/cmm/service/Globals.java b/src/main/java/egovframework/com/cmm/service/Globals.java new file mode 100644 index 00000000..ae7674b1 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/Globals.java @@ -0,0 +1,58 @@ +package egovframework.com.cmm.service; + +/** + * Class Name : Globals.java + * Description : 시스템 구동 시 프로퍼티를 통해 사용될 전역변수를 정의한다. + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.01.19 박지욱 최초 생성 + * + * @author 공통 서비스 개발팀 박지욱 + * @since 2009. 01. 19 + * @version 1.0 + * @see + * + */ + +public class Globals { + //OS 유형 + public static final String OS_TYPE = EgovProperties.getProperty("Globals.OsType"); + //DB 유형 + public static final String DB_TYPE = EgovProperties.getProperty("Globals.DbType"); + //메인 페이지 + public static final String MAIN_PAGE = EgovProperties.getProperty("Globals.MainPage"); + //ShellFile 경로 + public static final String SHELL_FILE_PATH = EgovProperties.getPathProperty("Globals.ShellFilePath"); + //퍼로퍼티 파일 위치 + public static final String CONF_PATH = EgovProperties.getPathProperty("Globals.ConfPath"); + //Server정보 프로퍼티 위치 + public static final String SERVER_CONF_PATH = EgovProperties.getPathProperty("Globals.ServerConfPath"); + //Client정보 프로퍼티 위치 + public static final String CLIENT_CONF_PATH = EgovProperties.getPathProperty("Globals.ClientConfPath"); + //파일포맷 정보 프로퍼티 위치 + public static final String FILE_FORMAT_PATH = EgovProperties.getPathProperty("Globals.FileFormatPath"); + + //파일 업로드 원 파일명 + 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"; + + //메일발송요청 XML파일경로 + public static final String MAIL_REQUEST_PATH = EgovProperties.getPathProperty("Globals.MailRequestPath"); + //메일발송응답 XML파일경로 + public static final String MAIL_RESPONSE_PATH = EgovProperties.getPathProperty("Globals.MailRResponsePath"); + + // G4C 연결용 IP (localhost) + public static final String LOCAL_IP = EgovProperties.getProperty("Globals.LocalIp"); + + + +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/CmmUseDAO.java b/src/main/java/egovframework/com/cmm/service/impl/CmmUseDAO.java new file mode 100644 index 00000000..62a284ce --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/CmmUseDAO.java @@ -0,0 +1,62 @@ +package egovframework.com.cmm.service.impl; + +import java.util.List; + +import egovframework.com.cmm.ComDefaultCodeVO; +import egovframework.com.cmm.service.CmmnDetailCode; + +import org.springframework.stereotype.Repository; + +/** + * @Class Name : CmmUseDAO.java + * @Description : 공통코드등 전체 업무에서 공용해서 사용해야 하는 서비스를 정의하기위한 데이터 접근 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 11. 이삼섭 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 11. + * @version + * @see + * + */ +@Repository("cmmUseDAO") +public class CmmUseDAO extends EgovComAbstractDAO { + + /** + * 주어진 조건에 따른 공통코드를 불러온다. + * + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectCmmCodeDetail(ComDefaultCodeVO vo) throws Exception { + return (List) list("CmmUseDAO.selectCmmCodeDetail", vo); + } + + /** + * 공통코드로 사용할 조직정보를 를 불러온다. + * + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectOgrnztIdDetail(ComDefaultCodeVO vo) throws Exception { + return (List) list("CmmUseDAO.selectOgrnztIdDetail", vo); + } + + /** + * 공통코드로 사용할그룹정보를 를 불러온다. + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectGroupIdDetail(ComDefaultCodeVO vo) throws Exception { + return (List) list("CmmUseDAO.selectGroupIdDetail", vo); + } +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/EgoDummyUserDetailsServiceImpl.java b/src/main/java/egovframework/com/cmm/service/impl/EgoDummyUserDetailsServiceImpl.java new file mode 100644 index 00000000..58414492 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/EgoDummyUserDetailsServiceImpl.java @@ -0,0 +1,70 @@ +package egovframework.com.cmm.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.service.EgovUserDetailsService; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +/** + * + * @author 공통서비스 개발팀 서준식 + * @since 2011. 8. 12. + * @version 1.0 + * @see + * + *
    + * 개정이력(Modification Information)
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011. 8. 12.    서준식        최초생성
    + *  2017. 9. 04.    장동한        클래스 이름 변경(EgovTestUserDetailsServiceImpl > EgovUserDetailsService)
    + * 
    + *
    + *  
    + */ + +public class EgoDummyUserDetailsServiceImpl extends EgovAbstractServiceImpl implements + EgovUserDetailsService { + + //로그인 객체 + LoginVO loginVO = new LoginVO(); + //권한목록 객체 + List listAuth = new ArrayList(); + + @Override + public Object getAuthenticatedUser() { + 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 getAuthorities() { + // 권한 설정을 리턴한다. + 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; + } + +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/EgovCmmUseServiceImpl.java b/src/main/java/egovframework/com/cmm/service/impl/EgovCmmUseServiceImpl.java new file mode 100644 index 00000000..680be705 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/EgovCmmUseServiceImpl.java @@ -0,0 +1,91 @@ +package egovframework.com.cmm.service.impl; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import egovframework.com.cmm.ComDefaultCodeVO; +import egovframework.com.cmm.service.CmmnDetailCode; +import egovframework.com.cmm.service.EgovCmmUseService; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +/** + * @Class Name : EgovCmmUseServiceImpl.java + * @Description : 공통코드등 전체 업무에서 공용해서 사용해야 하는 서비스를 정의하기위한 서비스 구현 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 11. 이삼섭 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 11. + * @version + * @see + * + */ +@Service("EgovCmmUseService") +public class EgovCmmUseServiceImpl extends EgovAbstractServiceImpl implements EgovCmmUseService { + + @Resource(name = "cmmUseDAO") + private CmmUseDAO cmmUseDAO; + + /** + * 공통코드를 조회한다. + * + * @param vo + * @return + * @throws Exception + */ + public List selectCmmCodeDetail(ComDefaultCodeVO vo) throws Exception { + return cmmUseDAO.selectCmmCodeDetail(vo); + } + + /** + * ComDefaultCodeVO의 리스트를 받아서 여러개의 코드 리스트를 맵에 담아서 리턴한다. + * + * @param voList + * @return + * @throws Exception + */ + public Map> selectCmmCodeDetails(List voList) throws Exception { + ComDefaultCodeVO vo; + Map> map = new HashMap>(); + + Iterator iter = voList.iterator(); + while (iter.hasNext()) { + vo = (ComDefaultCodeVO)iter.next(); + map.put(vo.getCodeId(), cmmUseDAO.selectCmmCodeDetail(vo)); + } + + return map; + } + + /** + * 조직정보를 코드형태로 리턴한다. + * + * @param 조회조건정보 vo + * @return 조직정보 List + * @throws Exception + */ + public List selectOgrnztIdDetail(ComDefaultCodeVO vo) throws Exception { + return cmmUseDAO.selectOgrnztIdDetail(vo); + } + + /** + * 그룹정보를 코드형태로 리턴한다. + * + * @param 조회조건정보 vo + * @return 그룹정보 List + * @throws Exception + */ + public List selectGroupIdDetail(ComDefaultCodeVO vo) throws Exception { + return cmmUseDAO.selectGroupIdDetail(vo); + } +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/EgovComAbstractDAO.java b/src/main/java/egovframework/com/cmm/service/impl/EgovComAbstractDAO.java new file mode 100644 index 00000000..4906374f --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/EgovComAbstractDAO.java @@ -0,0 +1,306 @@ +/** + * + */ +package egovframework.com.cmm.service.impl; + +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import org.apache.ibatis.session.ResultHandler; +import org.apache.ibatis.session.RowBounds; +import org.apache.ibatis.session.SqlSessionFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import egovframework.rte.psl.dataaccess.EgovAbstractMapper; +/** + * EgovComAbstractDAO.java 클래스 + * + * @author 서준식 + * @since 2011. 9. 23. + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    -------------    ----------------------
    + *   2011. 9. 23.   서준식        최초 생성
    + *   2016. 5. 11.   장동한        myBatis 방식 적용
    + * 
    + */ +public abstract class EgovComAbstractDAO extends EgovAbstractMapper{ + + private final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); + + @Resource(name="egov.sqlSession") + public void setSqlSessionFactory(SqlSessionFactory sqlSession) { + super.setSqlSessionFactory(sqlSession); + } + + /** + * 입력 처리 SQL mapping 을 실행한다. + * + * @param queryId - 입력 처리 SQL mapping 쿼리 ID + * + * @return DBMS가 지원하는 경우 insert 적용 결과 count + */ + @Override + public int insert(String queryId) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().insert(queryId); + } + + /** + * 입력 처리 SQL mapping 을 실행한다. + * + * @param queryId - 입력 처리 SQL mapping 쿼리 ID + * @param parameterObject - 입력 처리 SQL mapping 입력 데이터를 세팅한 파라메터 객체(보통 VO 또는 Map) + * + * @return DBMS가 지원하는 경우 insert 적용 결과 count + */ + @Override + public int insert(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().insert(queryId, parameterObject); + } + + /** + * 수정 처리 SQL mapping 을 실행한다. + * + * @param queryId - 수정 처리 SQL mapping 쿼리 ID + * + * @return DBMS가 지원하는 경우 update 적용 결과 count + */ + @Override + public int update(String queryId) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().update(queryId); + } + + /** + * 수정 처리 SQL mapping 을 실행한다. + * + * @param queryId - 수정 처리 SQL mapping 쿼리 ID + * @param parameterObject - 수정 처리 SQL mapping 입력 데이터(key 조건 및 변경 데이터)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * + * @return DBMS가 지원하는 경우 update 적용 결과 count + */ + @Override + public int update(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().update(queryId, parameterObject); + } + + /** + * 삭제 처리 SQL mapping 을 실행한다. + * + * @param queryId - 삭제 처리 SQL mapping 쿼리 ID + * + * @return DBMS가 지원하는 경우 delete 적용 결과 count + */ + @Override + public int delete(String queryId) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().delete(queryId); + } + + /** + * 삭제 처리 SQL mapping 을 실행한다. + * + * @param queryId - 삭제 처리 SQL mapping 쿼리 ID + * @param parameterObject - 삭제 처리 SQL mapping 입력 데이터(일반적으로 key 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * + * @return DBMS가 지원하는 경우 delete 적용 결과 count + */ + @Override + public int delete(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().delete(queryId, parameterObject); + } + + //CHECKSTYLE:OFF + /** + * 명명규칙에 맞춰 selectOne()로 변경한다. + * @deprecated select() 메소드로 대체 + * + * @see EgovAbstractMapper.selectOne() + */ + //CHECKSTYLE:ON + @Deprecated + public Object selectByPk(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectOne(queryId, parameterObject); + } + + /** + * 단건조회 처리 SQL mapping 을 실행한다. + * + * @param queryId - 단건 조회 처리 SQL mapping 쿼리 ID + * + * @return 결과 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 단일 결과 객체(보통 VO 또는 Map) + */ + @Override + public T selectOne(String queryId) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectOne(queryId); + } + + /** + * 단건조회 처리 SQL mapping 을 실행한다. + * + * @param queryId - 단건 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 단건 조회 처리 SQL mapping 입력 데이터(key)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * + * @return 결과 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 단일 결과 객체(보통 VO 또는 Map) + */ + @Override + public T selectOne(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectOne(queryId, parameterObject); + } + + /** + * 결과 목록을 Map 을 변환한다. + * 모든 구문이 파라미터를 필요로 하지는 않기 때문에, 파라미터 객체를 요구하지 않는 형태로 오버로드되었다. + * + * @param queryId - 단건 조회 처리 SQL mapping 쿼리 ID + * @param mapKey - 결과 객체의 프로퍼티 중 하나를 키로 사용 + * + * @return 결과 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 단일 결과 객체(보통 VO 또는 Map)의 Map + */ + @Override + public Map selectMap(String queryId, String mapKey) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectMap(queryId, mapKey); + } + + /** + * 결과 목록을 Map 을 변환한다. + * 모든 구문이 파라미터를 필요로 하지는 않기 때문에, 파라미터 객체를 요구하지 않는 형태로 오버로드되었다. + * + * @param queryId - 단건 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 맵 조회 처리 SQL mapping 입력 데이터(조회 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * @param mapKey - 결과 객체의 프로퍼티 중 하나를 키로 사용 + * + * @return 결과 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 단일 결과 객체(보통 VO 또는 Map)의 Map + */ + @Override + public Map selectMap(String queryId, Object parameterObject, String mapKey) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectMap(queryId, parameterObject, mapKey); + } + + /** + * 결과 목록을 Map 을 변환한다. + * 모든 구문이 파라미터를 필요로 하지는 않기 때문에, 파라미터 객체를 요구하지 않는 형태로 오버로드되었다. + * + * @param queryId - 단건 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 맵 조회 처리 SQL mapping 입력 데이터(조회 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * @param mapKey - 결과 객체의 프로퍼티 중 하나를 키로 사용 + * @param rowBounds - 특정 개수 만큼의 레코드를 건너띄게 함 + * + * @return 결과 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 단일 결과 객체(보통 VO 또는 Map)의 Map + */ + @Override + public Map selectMap(String queryId, Object parameterObject, String mapKey, RowBounds rowBounds) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectMap(queryId, parameterObject, mapKey, rowBounds); + } + + //CHECKSTYLE:OFF + /** + * 명명규칙에 맞춰 selectList()로 변경한다. + * + * @see EgovAbstractMapper.selectList() + * @deprecated List 메소드로 대체 + */ + //CHECKSTYLE:ON + @Deprecated + public List list(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectList(queryId, parameterObject); + } + + /** + * 리스트 조회 처리 SQL mapping 을 실행한다. + * + * @param queryId - 리스트 조회 처리 SQL mapping 쿼리 ID + * + * @return 결과 List 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 결과 객체(보통 VO 또는 Map)의 List + */ + @Override + public List selectList(String queryId) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectList(queryId); + } + + /** + * 리스트 조회 처리 SQL mapping 을 실행한다. + * + * @param queryId - 리스트 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 리스트 조회 처리 SQL mapping 입력 데이터(조회 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * + * @return 결과 List 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 결과 객체(보통 VO 또는 Map)의 List + */ + @Override + public List selectList(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectList(queryId, parameterObject); + } + + /** + * 리스트 조회 처리 SQL mapping 을 실행한다. + * + * @param queryId - 리스트 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 리스트 조회 처리 SQL mapping 입력 데이터(조회 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * @param rowBounds - 특정 개수 만큼의 레코드를 건너띄게 함 + * + * @return 결과 List 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 결과 객체(보통 VO 또는 Map)의 List + */ + @Override + public List selectList(String queryId, Object parameterObject, RowBounds rowBounds) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectList(queryId, parameterObject, rowBounds); + } + + /** + * 부분 범위 리스트 조회 처리 SQL mapping 을 실행한다. + * (부분 범위 - pageIndex 와 pageSize 기반으로 현재 부분 범위 조회를 위한 skipResults, maxResults 를 계산하여 ibatis 호출) + * + * @param queryId - 리스트 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 리스트 조회 처리 SQL mapping 입력 데이터(조회 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * @param pageIndex - 현재 페이지 번호 + * @param pageSize - 한 페이지 조회 수(pageSize) + * + * @return 부분 범위 결과 List 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 부분 범위 결과 객체(보통 VO 또는 Map) List + */ + @Override + public List listWithPaging(String queryId, Object parameterObject, int pageIndex, int pageSize) { + LOGGER.debug("queryId = "+queryId); + int skipResults = pageIndex * pageSize; + //int maxResults = (pageIndex * pageSize) + pageSize; + + RowBounds rowBounds = new RowBounds(skipResults, pageSize); + + return getSqlSession().selectList(queryId, parameterObject, rowBounds); + } + + /** + * SQL 조회 결과를 ResultHandler를 이용해서 출력한다. + * ResultHandler를 상속해 구현한 커스텀 핸들러의 handleResult() 메서드에 따라 실행된다. + * + * @param queryId - 리스트 조회 처리 SQL mapping 쿼리 ID + * @param handler - 조회 결과를 제어하기 위해 구현한 ResultHandler + * @return + * + * @return 결과 List 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 결과 객체(보통 VO 또는 Map)의 List + */ + @Override + public void listToOutUsingResultHandler(String queryId, ResultHandler handler) { + LOGGER.debug("queryId = "+queryId); + getSqlSession().select(queryId, handler); + } +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/EgovFileMngServiceImpl.java b/src/main/java/egovframework/com/cmm/service/impl/EgovFileMngServiceImpl.java new file mode 100644 index 00000000..9257998d --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/EgovFileMngServiceImpl.java @@ -0,0 +1,156 @@ +package egovframework.com.cmm.service.impl; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import egovframework.com.cmm.service.EgovFileMngService; +import egovframework.com.cmm.service.FileVO; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +/** + * @Class Name : EgovFileMngServiceImpl.java + * @Description : 파일정보의 관리를 위한 구현 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 25. 이삼섭 최초생성 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 25. + * @version + * @see + * + */ +@Service("EgovFileMngService") +public class EgovFileMngServiceImpl extends EgovAbstractServiceImpl implements EgovFileMngService { + + @Resource(name = "FileManageDAO") + private FileManageDAO fileMngDAO; + + /** + * 여러 개의 파일을 삭제한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#deleteFileInfs(java.util.List) + */ + public void deleteFileInfs(List fvoList) throws Exception { + fileMngDAO.deleteFileInfs(fvoList); + } + + /** + * 하나의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#insertFileInf(egovframework.com.cmm.service.FileVO) + */ + public String insertFileInf(FileVO fvo) throws Exception { + String atchFileId = fvo.getAtchFileId(); + + fileMngDAO.insertFileInf(fvo); + + return atchFileId; + } + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#insertFileInfs(java.util.List) + */ + public String insertFileInfs(List fvoList) throws Exception { + String atchFileId = ""; + + if (fvoList.size() != 0) { + atchFileId = fileMngDAO.insertFileInfs(fvoList); + } + if (atchFileId == "") { + atchFileId = null; + } + return atchFileId; + } + + /** + * 파일에 대한 목록을 조회한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#selectFileInfs(egovframework.com.cmm.service.FileVO) + */ + public List selectFileInfs(FileVO fvo) throws Exception { + return fileMngDAO.selectFileInfs(fvo); + } + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 수정한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#updateFileInfs(java.util.List) + */ + public void updateFileInfs(List fvoList) throws Exception { + //Delete & Insert + fileMngDAO.updateFileInfs(fvoList); + } + + /** + * 하나의 파일을 삭제한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#deleteFileInf(egovframework.com.cmm.service.FileVO) + */ + public void deleteFileInf(FileVO fvo) throws Exception { + fileMngDAO.deleteFileInf(fvo); + } + + /** + * 파일에 대한 상세정보를 조회한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#selectFileInf(egovframework.com.cmm.service.FileVO) + */ + public FileVO selectFileInf(FileVO fvo) throws Exception { + return fileMngDAO.selectFileInf(fvo); + } + + /** + * 파일 구분자에 대한 최대값을 구한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#getMaxFileSN(egovframework.com.cmm.service.FileVO) + */ + public int getMaxFileSN(FileVO fvo) throws Exception { + return fileMngDAO.getMaxFileSN(fvo); + } + + /** + * 전체 파일을 삭제한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#deleteAllFileInf(egovframework.com.cmm.service.FileVO) + */ + public void deleteAllFileInf(FileVO fvo) throws Exception { + fileMngDAO.deleteAllFileInf(fvo); + } + + /** + * 파일명 검색에 대한 목록을 조회한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#selectFileListByFileNm(egovframework.com.cmm.service.FileVO) + */ + public Map selectFileListByFileNm(FileVO fvo) throws Exception { + List result = fileMngDAO.selectFileListByFileNm(fvo); + int cnt = fileMngDAO.selectFileListCntByFileNm(fvo); + + Map map = new HashMap(); + + map.put("resultList", result); + map.put("resultCnt", Integer.toString(cnt)); + + return map; + } + + /** + * 이미지 파일에 대한 목록을 조회한다. + * + * @see egovframework.com.cmm.service.EgovFileMngService#selectImageFileList(egovframework.com.cmm.service.FileVO) + */ + public List selectImageFileList(FileVO vo) throws Exception { + return fileMngDAO.selectImageFileList(vo); + } +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/EgovUserDetailsSessionServiceImpl.java b/src/main/java/egovframework/com/cmm/service/impl/EgovUserDetailsSessionServiceImpl.java new file mode 100644 index 00000000..a23c5b96 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/EgovUserDetailsSessionServiceImpl.java @@ -0,0 +1,65 @@ +package egovframework.com.cmm.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import egovframework.com.cmm.service.EgovUserDetailsService; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; + +/** + * + * @author 공통서비스 개발팀 서준식 + * @since 2011. 6. 25. + * @version 1.0 + * @see + * + *
    + * 개정이력(Modification Information) 
    + * 
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011. 8. 12.    서준식        최초생성
    + *  
    + *  
    + */ + +public class EgovUserDetailsSessionServiceImpl extends EgovAbstractServiceImpl implements EgovUserDetailsService { + + public Object getAuthenticatedUser() { + if (RequestContextHolder.getRequestAttributes() == null) { + return null; + } + + return RequestContextHolder.getRequestAttributes().getAttribute("loginVO", RequestAttributes.SCOPE_SESSION); + + } + + public List getAuthorities() { + + // 권한 설정을 리턴한다. + List listAuth = new ArrayList(); + + return listAuth; + } + + public Boolean isAuthenticated() { + // 인증된 유저인지 확인한다. + + if (RequestContextHolder.getRequestAttributes() == null) { + return false; + } else { + + if (RequestContextHolder.getRequestAttributes().getAttribute("loginVO", RequestAttributes.SCOPE_SESSION) == null) { + return false; + } else { + return true; + } + } + + } + +} diff --git a/src/main/java/egovframework/com/cmm/service/impl/FileManageDAO.java b/src/main/java/egovframework/com/cmm/service/impl/FileManageDAO.java new file mode 100644 index 00000000..a7f63540 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/FileManageDAO.java @@ -0,0 +1,181 @@ +package egovframework.com.cmm.service.impl; + +import java.util.Iterator; +import java.util.List; + +import egovframework.com.cmm.service.FileVO; + +import org.springframework.stereotype.Repository; + +/** + * @Class Name : EgovFileMngDAO.java + * @Description : 파일정보 관리를 위한 데이터 처리 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2009. 3. 25. 이삼섭 최초생성 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 3. 25. + * @version + * @see + * + */ +@Repository("FileManageDAO") +public class FileManageDAO extends EgovComAbstractDAO { + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @param fileList + * @return + * @throws Exception + */ + public String insertFileInfs(List fileList) throws Exception { + FileVO vo = (FileVO) fileList.get(0); + String atchFileId = vo.getAtchFileId(); + + insert("FileManageDAO.insertFileMaster", vo); + + Iterator iter = fileList.iterator(); + while (iter.hasNext()) { + vo = (FileVO) iter.next(); + + insert("FileManageDAO.insertFileDetail", vo); + } + + return atchFileId; + } + + /** + * 하나의 파일에 대한 정보(속성 및 상세)를 등록한다. + * + * @param vo + * @throws Exception + */ + public void insertFileInf(FileVO vo) throws Exception { + insert("FileManageDAO.insertFileMaster", vo); + insert("FileManageDAO.insertFileDetail", vo); + } + + /** + * 여러 개의 파일에 대한 정보(속성 및 상세)를 수정한다. + * + * @param fileList + * @throws Exception + */ + public void updateFileInfs(List fileList) throws Exception { + FileVO vo; + Iterator iter = fileList.iterator(); + while (iter.hasNext()) { + vo = (FileVO) iter.next(); + insert("FileManageDAO.insertFileDetail", vo); + } + } + + /** + * 여러 개의 파일을 삭제한다. + * + * @param fileList + * @throws Exception + */ + public void deleteFileInfs(List fileList) throws Exception { + Iterator iter = fileList.iterator(); + FileVO vo; + while (iter.hasNext()) { + vo = (FileVO) iter.next(); + + delete("FileManageDAO.deleteFileDetail", vo); + } + } + + /** + * 하나의 파일을 삭제한다. + * + * @param fvo + * @throws Exception + */ + public void deleteFileInf(FileVO fvo) throws Exception { + delete("FileManageDAO.deleteFileDetail", fvo); + } + + /** + * 파일에 대한 목록을 조회한다. + * + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectFileInfs(FileVO vo) throws Exception { + return (List) list("FileManageDAO.selectFileList", vo); + } + + /** + * 파일 구분자에 대한 최대값을 구한다. + * + * @param fvo + * @return + * @throws Exception + */ + public int getMaxFileSN(FileVO fvo) throws Exception { + return (Integer) selectOne("FileManageDAO.getMaxFileSN", fvo); + } + + /** + * 파일에 대한 상세정보를 조회한다. + * + * @param fvo + * @return + * @throws Exception + */ + public FileVO selectFileInf(FileVO fvo) throws Exception { + return (FileVO) selectOne("FileManageDAO.selectFileInf", fvo); + } + + /** + * 전체 파일을 삭제한다. + * + * @param fvo + * @throws Exception + */ + public void deleteAllFileInf(FileVO fvo) throws Exception { + update("FileManageDAO.deleteCOMTNFILE", fvo); + } + + /** + * 파일명 검색에 대한 목록을 조회한다. + * + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectFileListByFileNm(FileVO fvo) throws Exception { + return (List) list("FileManageDAO.selectFileListByFileNm", fvo); + } + + /** + * 파일명 검색에 대한 목록 전체 건수를 조회한다. + * + * @param fvo + * @return + * @throws Exception + */ + public int selectFileListCntByFileNm(FileVO fvo) throws Exception { + return (Integer) selectOne("FileManageDAO.selectFileListCntByFileNm", fvo); + } + + /** + * 이미지 파일에 대한 목록을 조회한다. + * + * @param vo + * @return + * @throws Exception + */ + @SuppressWarnings("unchecked") + public List selectImageFileList(FileVO vo) throws Exception { + return (List) list("FileManageDAO.selectImageFileList", vo); + } +} diff --git a/src/main/java/egovframework/com/cmm/taglibs/DoubleSubmitTag.java b/src/main/java/egovframework/com/cmm/taglibs/DoubleSubmitTag.java new file mode 100644 index 00000000..95a750a5 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/taglibs/DoubleSubmitTag.java @@ -0,0 +1,88 @@ +package egovframework.com.cmm.taglibs; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import egovframework.com.cmm.util.EgovDoubleSubmitHelper; + +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; + +/** + * TagSupport to support to double submit preventer + * @author Vincent Han + * @since 2014.08.07 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일        수정자       수정내용
    + *  -------       --------    ---------------------------
    + *   2014.08.07	표준프레임워크센터	최초 생성
    + *
    + * 
    + */ +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 map = null; + + if (session.getAttribute(EgovDoubleSubmitHelper.SESSION_TOKEN_KEY) == null) { + map = new HashMap(); + + session.setAttribute(EgovDoubleSubmitHelper.SESSION_TOKEN_KEY, map); + } else { + map = (Map) 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(""); + + try { + pageContext.getOut().print(buffer.toString()); + } catch (IOException e) { + throw new JspTagException("Error: IOException while writing to the user"); + } + + return SKIP_BODY; + } + +} diff --git a/src/main/java/egovframework/com/cmm/util/EgovBasicLogger.java b/src/main/java/egovframework/com/cmm/util/EgovBasicLogger.java new file mode 100644 index 00000000..59112613 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/util/EgovBasicLogger.java @@ -0,0 +1,83 @@ +package egovframework.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 + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일        수정자       수정내용
    + *  -------       --------    ---------------------------
    + *   2014.09.18	표준프레임워크센터	최초 생성
    + *
    + * 
    + */ +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); + } +} diff --git a/src/main/java/egovframework/com/cmm/util/EgovDoubleSubmitHelper.java b/src/main/java/egovframework/com/cmm/util/EgovDoubleSubmitHelper.java new file mode 100644 index 00000000..672087ea --- /dev/null +++ b/src/main/java/egovframework/com/cmm/util/EgovDoubleSubmitHelper.java @@ -0,0 +1,80 @@ +package egovframework.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; + +/** + * Utility class to support to double submit preventer + * @author Vincent Han + * @since 2014.08.07 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일        수정자       수정내용
    + *  -------       --------    ---------------------------
    + *   2014.08.07	표준프레임워크센터	최초 생성
    + *
    + * 
    + */ +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) { + throw new RuntimeException("Double Submit Preventer TagLig isn't set. Check JSP."); + } + + String parameter = request.getParameter(EgovDoubleSubmitHelper.PARAMETER_NAME); + + // check parameter + if (parameter == null) { + throw new RuntimeException("Double Submit Preventer parameter isn't set. Check JSP."); + } + + @SuppressWarnings("unchecked") + Map map = (Map) 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; + } +} diff --git a/src/main/java/egovframework/com/cmm/util/EgovHttpRequestHelper.java b/src/main/java/egovframework/com/cmm/util/EgovHttpRequestHelper.java new file mode 100644 index 00000000..4da5ef4d --- /dev/null +++ b/src/main/java/egovframework/com/cmm/util/EgovHttpRequestHelper.java @@ -0,0 +1,56 @@ +package egovframework.com.cmm.util; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +/** + * @Class Name : EgovHttpRequestHelper.java + * @Description : HTTP Request 정보 취득 Helper 클래스 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- ------- ------------------- + * 2014.09.11 표준프레임워크 최초생성 +* @author Vincent Han + * @since 2014.09.11 + * @version 3.5 + * @see
    + * web.xml 상에 다음과 같은 Listener 등록 필요
    + * <listener>
    + *	  <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    + * </listener>
    + * 
    + */ +public class EgovHttpRequestHelper { + + public static boolean isInHttpRequest() { + try { + getCurrentRequest(); + } catch (IllegalStateException ise) { + return false; + } + + return true; + } + + public static HttpServletRequest getCurrentRequest() { + ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); + + return sra.getRequest(); + } + + public static String getRequestIp() { + return getCurrentRequest().getRemoteAddr(); + } + + public static String getRequestURI() { + return getCurrentRequest().getRequestURI(); + } + + public static HttpSession getCurrentSession() { + return getCurrentRequest().getSession(); + } +} diff --git a/src/main/java/egovframework/com/cmm/util/EgovMybaitsUtil.java b/src/main/java/egovframework/com/cmm/util/EgovMybaitsUtil.java new file mode 100644 index 00000000..542b669b --- /dev/null +++ b/src/main/java/egovframework/com/cmm/util/EgovMybaitsUtil.java @@ -0,0 +1,135 @@ +package egovframework.com.cmm.util; + +import java.lang.reflect.Array; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * EgovMybaitsUtil 클래스 + * + * @author 장동한 + * @since 2016.06.07 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일        수정자           수정내용
    + *  -------      -------------  ----------------------
    + *   2016.06.07  장동한           최초 생성
    + *   2017.03.03     조성원 	  시큐어코딩(ES)-오류 메시지를 통한 정보노출[CWE-209]
    + *   2017.07.21  장동한 			isEquals에서 String Character 비교 가능하도록
    + *   
    + * 
    + */ + + +public class EgovMybaitsUtil { + + private static final Logger logger = LoggerFactory.getLogger(EgovMybaitsUtil.class); + + /** + * Empty 여부를 확인한다. + * @param o Object + * @return boolean + * @exception IllegalArgumentException + */ + public static boolean isEmpty(Object o) throws IllegalArgumentException { + try { + if(o == null) return true; + + if(o instanceof String) { + if(((String)o).length() == 0){ + return true; + } + } else if(o instanceof Collection) { + if(((Collection)o).isEmpty()){ + return true; + } + } else if(o.getClass().isArray()) { + if(Array.getLength(o) == 0){ + return true; + } + } else if(o instanceof Map) { + if(((Map)o).isEmpty()){ + return true; + } + }else { + return false; + } + + return false; + //2017.03.03 조성원 시큐어코딩(ES)-오류 메시지를 통한 정보노출[CWE-209] + } catch(IllegalArgumentException e) { + logger.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch(Exception e) { + logger.error("["+e.getClass()+"] Try/Catch...Exception : " + e.getMessage()); + } + return false; + } + + /** + * Not Empty 여부를 확인한다. + * @param o Object + * @return boolean + * @exception IllegalArgumentException + */ + public static boolean isNotEmpty(Object o) { + return !isEmpty(o); + } + + /** + * Equal 여부를 확인한다. + * @param obj Object, obj Object + * @return boolean + */ + + public static boolean isEquals(Object obj, Object obj2){ + if(isEmpty(obj)) return false; + + if(obj instanceof String && obj2 instanceof String) { + if( (String.valueOf(obj)).equals( String.valueOf(obj2) )){ + return true; + } + }else if(obj instanceof String && obj2 instanceof Character) { + if( (String.valueOf(obj) ).equals( String.valueOf(obj2) )){ + return true; + } + }else if(obj instanceof String && obj2 instanceof Integer) { + if( (String.valueOf(obj)).equals( String.valueOf((Integer)obj2) )){ + return true; + } + + }else if(obj instanceof Integer && obj2 instanceof String) { + if( (String.valueOf(obj2)).equals( String.valueOf((Integer)obj) )){ + return true; + } + } else if(obj instanceof Integer && obj instanceof Integer) { + if((Integer)obj == (Integer)obj2){ + return true; + } + } + + return false; + } + + /** + * String의 Equal 여부를 확인한다. + * @param obj Object, obj Object + * @return boolean + */ + public static boolean isEqualsStr(Object obj, String s){ + if(isEmpty(obj)) return false; + + if(s.equals(String.valueOf(obj))){ + return true; + } + return false; + } + +} diff --git a/src/main/java/egovframework/com/cmm/util/EgovResourceCloseHelper.java b/src/main/java/egovframework/com/cmm/util/EgovResourceCloseHelper.java new file mode 100644 index 00000000..4901b153 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/util/EgovResourceCloseHelper.java @@ -0,0 +1,146 @@ +package egovframework.com.cmm.util; + +import java.io.Closeable; +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +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 + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일        수정자       수정내용
    + *  -------       --------    ---------------------------
    + *   2014.09.18	표준프레임워크센터	최초 생성
    + *
    + * 
    + */ +public class EgovResourceCloseHelper { + /** + * Resource close 처리. + * @param resources + */ + public static void close(Closeable ... resources) { + for (Closeable resource : resources) { + if (resource != null) { + try { + resource.close(); + } catch (IOException ignore) {//KISA 보안약점 조치 (2018-10-29, 윤창원) + EgovBasicLogger.ignore("Occurred IOException to close resource is ingored!!"); + } 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 (SQLException ignore) {//KISA 보안약점 조치 (2018-10-29, 윤창원) + EgovBasicLogger.ignore("Occurred SQLException to close resource is ingored!!"); + } catch (Exception ignore) { + EgovBasicLogger.ignore("Occurred Exception to close resource is ingored!!"); + } + } else if (object instanceof Statement) { + try { + ((Statement)object).close(); + } catch (SQLException ignore) {//KISA 보안약점 조치 (2018-10-29, 윤창원) + EgovBasicLogger.ignore("Occurred SQLException to close resource is ingored!!"); + } catch (Exception ignore) { + EgovBasicLogger.ignore("Occurred Exception to close resource is ingored!!"); + } + } else if (object instanceof Connection) { + try { + ((Connection)object).close(); + } catch (SQLException ignore) { + EgovBasicLogger.ignore("Occurred SQLException to close resource is ingored!!"); + } 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 (IOException ignore) { + EgovBasicLogger.ignore("Occurred IOException to close resource is ingored!!"); + } catch (Exception ignore) { + EgovBasicLogger.ignore("Occurred Exception to shutdown ouput is ignored!!"); + } + + try { + socket.close(); + } catch (IOException ignore) { + EgovBasicLogger.ignore("Occurred IOException to close resource is ingored!!"); + } catch (Exception ignore) { + EgovBasicLogger.ignore("Occurred Exception to close resource is ignored!!"); + } + } + + if (server != null) { + try { + server.close(); + } catch (IOException ignore) { + EgovBasicLogger.ignore("Occurred IOException to close resource is ingored!!"); + } 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 (IOException ignore) { + EgovBasicLogger.ignore("Occurred IOException to close resource is ingored!!"); + } catch (Exception ignore) { + EgovBasicLogger.ignore("Occurred Exception to shutdown ouput is ignored!!"); + } + + try { + socket.close(); + } catch (IOException ignore) { + EgovBasicLogger.ignore("Occurred IOException to close resource is ingored!!"); + } catch (Exception ignore) { + EgovBasicLogger.ignore("Occurred Exception to close resource is ignored!!"); + } + } + } + } +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/cmm/util/EgovUrlRewriteFilter.java b/src/main/java/egovframework/com/cmm/util/EgovUrlRewriteFilter.java new file mode 100644 index 00000000..0af1b961 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/util/EgovUrlRewriteFilter.java @@ -0,0 +1,109 @@ +package egovframework.com.cmm.util; + +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; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.util.AntPathMatcher; + +/** + * @Class Name : UrlRewriteFilter.java + * @Description : UrlRewriteFilter Class + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ --------- --------- ------------------------------- + * @ 2014.09.30 최초생성 + * + * @author 전자정부 표준프레임워크 유지보수 + * @since 2014. 09.30 + * @version 1.0 + * @see + * + * Copyright (C) by MOPAS All right reserved. + */ +public class EgovUrlRewriteFilter implements Filter { + + @SuppressWarnings("unused") + private FilterConfig config; + + private String targetURI; + private String httpsPort; + private String httpPort; + + private String[] uriPatterns; + + @Override + public void init(FilterConfig config) throws ServletException { + + String delimiter = ","; + this.config = config; + + this.targetURI = config.getInitParameter("targetURI"); + this.httpsPort = config.getInitParameter("httpsPort"); + this.httpPort = config.getInitParameter("httpPort"); + + this.uriPatterns = targetURI.split(delimiter); + + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { + + HttpServletRequest req = (HttpServletRequest) request; + HttpServletResponse res = (HttpServletResponse) response; + + String uri = req.getRequestURI(); + String getProtocol = req.getScheme(); + String getDomain = req.getServerName(); + + AntPathMatcher pm = new AntPathMatcher(); + + for (String uriPattern : uriPatterns) { + + if (pm.match(uriPattern.trim(), uri)) { + + if (getProtocol.toLowerCase().equals("http")) { + + response.setContentType("text/html"); + + String httpsPath = "https" + "://" + getDomain + ":" + httpsPort + uri; + String site = new String(httpsPath); + res.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); + res.setHeader("Location", site); + + } + + }else if(getProtocol.toLowerCase().equals("https")){ + + response.setContentType("text/html"); + + String httpPath = "http" + "://" + getDomain + ":" + httpPort + uri; + + String site = new String(httpPath); + res.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); + res.setHeader("Location", site); + + } + } + + chain.doFilter(req, res); + + } + + @Override + public void destroy() { + this.targetURI = null; + this.httpsPort = null; + this.httpPort = null; + this.uriPatterns = null; + } + +} diff --git a/src/main/java/egovframework/com/cmm/util/EgovUserDetailsHelper.java b/src/main/java/egovframework/com/cmm/util/EgovUserDetailsHelper.java new file mode 100644 index 00000000..0f67b141 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/util/EgovUserDetailsHelper.java @@ -0,0 +1,61 @@ +package egovframework.com.cmm.util; + +import java.util.List; + +import egovframework.com.cmm.service.EgovUserDetailsService; + +/** + * EgovUserDetails Helper 클래스 + * + * @author sjyoon + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    -------------    ----------------------
    + *   2009.03.10  sjyoon         최초 생성
    + *   2011.07.01	 서준식          interface 생성후 상세 로직의 분리
    + * 
    + */ + +public class EgovUserDetailsHelper { + + static EgovUserDetailsService egovUserDetailsService; + + public EgovUserDetailsService getEgovUserDetailsService() { + return egovUserDetailsService; + } + + public void setEgovUserDetailsService(EgovUserDetailsService egovUserDetailsService) { + EgovUserDetailsHelper.egovUserDetailsService = egovUserDetailsService; + } + + /** + * 인증된 사용자객체를 VO형식으로 가져온다. + * @return Object - 사용자 ValueObject + */ + public static Object getAuthenticatedUser() { + return egovUserDetailsService.getAuthenticatedUser(); + } + + /** + * 인증된 사용자의 권한 정보를 가져온다. + * + * @return List - 사용자 권한정보 목록 + */ + public static List getAuthorities() { + return egovUserDetailsService.getAuthorities(); + } + + /** + * 인증된 사용자 여부를 체크한다. + * @return Boolean - 인증된 사용자 여부(TRUE / FALSE) + */ + public static Boolean isAuthenticated() { + return egovUserDetailsService.isAuthenticated(); + } +} diff --git a/src/main/java/egovframework/com/cmm/util/EgovWildcardReloadableResourceBundleMessageSource.java b/src/main/java/egovframework/com/cmm/util/EgovWildcardReloadableResourceBundleMessageSource.java new file mode 100644 index 00000000..fdbeb1a4 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/util/EgovWildcardReloadableResourceBundleMessageSource.java @@ -0,0 +1,96 @@ +package egovframework.com.cmm.util; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; + +/** + * @Class Name : EgovWildcardReloadableResourceBundleMessageSource + * @Description : 다국어 properties 파일을 팩키지 구조의 폴더로 읽어드리는 MessageSource + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2016.06.10 장동한 최초 생성 + * + * @author 2016 표준프레임워크 유지보수 장동한 + * @since 2016.06.10 + * @version 1.0 + * @see + * + */ + +public class EgovWildcardReloadableResourceBundleMessageSource extends + org.springframework.context.support.ReloadableResourceBundleMessageSource { + private ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); + + public void setEgovBasenames(String... basenames) { + if (basenames != null) { + List baseNames = new ArrayList(); + for (int i = 0; i < basenames.length; i++) { + + String basename = StringUtils.trimToEmpty(basenames[i]); + if(basename.indexOf("classpath:/") > -1 ){ + baseNames.add(basename); + }else if(StringUtils.isNotBlank(basename)) { + try { + + Resource[] resources = resourcePatternResolver.getResources(basename); + + for (int j = 0; j < resources.length; j++) { + Resource resource = resources[j]; + String uri = resource.getURI().toString(); + String baseName = null; + + if(uri.indexOf(".properties") == -1){continue;} + + if (resource instanceof FileSystemResource) { + baseName = "classpath:" + StringUtils.substringBetween(uri, "/classes/", ".properties"); + baseName = baseName.substring(0,baseName.indexOf("_")); + baseName = baseName.replaceAll("classpath:", "classpath:/"); + if(baseNames.indexOf(baseName) > -1){continue;}; + + } else if (resource instanceof ClassPathResource) { + baseName = StringUtils.substringBefore(uri, ".properties"); + baseName = baseName.substring(0,baseName.indexOf("_")); + baseName = baseName.replaceAll("classpath:", "classpath:/"); + } else if (resource instanceof UrlResource) { + baseName = "classpath:" + StringUtils.substringBetween(uri, ".jar!/", ".properties"); + baseName = baseName.substring(0,baseName.indexOf("_")); + baseName = baseName.replaceAll("classpath:", "classpath:/"); + } + if (baseName != null) { + String fullName = processBasename(baseName); + baseNames.add(fullName); + } + } + } catch (IOException e) { + logger.debug("No message source files found for basename " + basename + "."); + } + } + + + } + + logger.debug("EgovWildcardReloadableResourceBundleMessageSource>>basenames>["+baseNames+"}"); + setBasenames(baseNames.toArray(new String[baseNames.size()])); + } + } + + String processBasename(String baseName) { + String prefix = StringUtils.substringBeforeLast(baseName, "/"); + String name = StringUtils.substringAfterLast(baseName, "/"); + do { + name = StringUtils.substringBeforeLast(name, "_"); + } while (name.contains("_")); + return prefix + "/" + name; + } +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/cmm/util/EgovXssChecker.java b/src/main/java/egovframework/com/cmm/util/EgovXssChecker.java new file mode 100644 index 00000000..9bc0016b --- /dev/null +++ b/src/main/java/egovframework/com/cmm/util/EgovXssChecker.java @@ -0,0 +1,77 @@ +package egovframework.com.cmm.util; + +import javax.servlet.http.HttpServletRequest; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.exception.EgovXssException; + +/** + * EgovXssChecker 클래스 + * + * @author 장동한 + * @since 2016.10.27 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일        수정자           수정내용
    + *  -------      -------------  ----------------------
    + *   2016.10.17  장동한           최초 생성
    + *   2017.03.03     조성원 	  시큐어코딩(ES)-오류 메시지를 통한 정보노출[CWE-209]
    + * 
    + */ + + +public class EgovXssChecker { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovXssChecker.class); + + /** + * 사용자에 대한 크로스사이트스크립트(Xss) 확인한다. + * 수정, 상세조회, 삭제시 사용 + * @param uniqId Stirng + * @return boolean + * @exception IllegalArgumentException + */ + public static boolean checkerUserXss(HttpServletRequest request, String sUniqId) throws Exception { + + boolean bLog = false; + + try { + //@ 공통모듈을 이용한 권한체크 + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + + if(bLog){ + LOGGER.debug("@Step1. XSS Check uniqId : {}", sUniqId); + LOGGER.debug("Step2. XSS Session uniqId : {}", loginVO.getId()); + LOGGER.debug("Step3. XSS Session getUniqId : {}", loginVO.getUniqId()); + LOGGER.debug("Step4. XSS Session getAuthorities : {}", EgovUserDetailsHelper.getAuthorities()); + } + + //체크 값에 대한 무결성 체크 + if(sUniqId == null || loginVO.getUniqId() == null){ + throw new EgovXssException("XSS00001", "errors.xss.checkerUser"); + } else if (loginVO.getUniqId().equals("")) { // KISA 보안약점 조치 (2018-12-11, 신용호) + throw new EgovXssException("XSS00001", "errors.xss.checkerUser"); + } + + //사용자에에 대한 Xss 체크 + if(!sUniqId.equals(loginVO.getUniqId())){ + throw new EgovXssException("XSS00002", "errors.xss.checkerUser"); + } + //2017.03.03 조성원 시큐어코딩(ES)-오류 메시지를 통한 정보노출[CWE-209] + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch(Exception e) { + LOGGER.error("["+e.getClass()+"] Try/Catch...Exception : " + e.getMessage()); + } + return true; + } + + +} diff --git a/src/main/java/egovframework/com/cmm/web/EgovBindingInitializer.java b/src/main/java/egovframework/com/cmm/web/EgovBindingInitializer.java new file mode 100644 index 00000000..33a1ab45 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovBindingInitializer.java @@ -0,0 +1,22 @@ +package egovframework.com.cmm.web; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.springframework.beans.propertyeditors.CustomDateEditor; +import org.springframework.beans.propertyeditors.StringTrimmerEditor; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.support.WebBindingInitializer; +import org.springframework.web.context.request.WebRequest; + +public class EgovBindingInitializer implements WebBindingInitializer { + + + public void initBinder(WebDataBinder binder, WebRequest request) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + dateFormat.setLenient(false); + binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false)); + binder.registerCustomEditor(String.class, new StringTrimmerEditor(false)); + } + +} diff --git a/src/main/java/egovframework/com/cmm/web/EgovComIndexController.java b/src/main/java/egovframework/com/cmm/web/EgovComIndexController.java new file mode 100644 index 00000000..c3745e7e --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovComIndexController.java @@ -0,0 +1,169 @@ +package egovframework.com.cmm.web; + +/** + * 컴포넌트 설치 후 설치된 컴포넌트들을 IncludedInfo annotation을 통해 찾아낸 후 + * 화면에 표시할 정보를 처리하는 Controller 클래스 + * + * 개발시 메뉴 구조가 잡히기 전에 배포파일들에 포함된 공통 컴포넌트들의 목록성 화면에 + * URL을 제공하여 개발자가 편하게 활용하도록 하기 위해 작성된 것으로, + * 실제 운영되는 시스템에서는 적용해서는 안 됨 + * 실 운영 시에는 삭제해서 배포해도 좋음 + * + * 운영시에 본 컨트롤을 사용하여 메뉴를 구성하는 경우 성능 문제를 일으키거나 + * 사용자별 메뉴 구성에 오류를 발생할 수 있음 + * @author 공통컴포넌트 정진오 + * @since 2011.08.26 + * @version 2.0.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *  수정일		수정자		수정내용
    + *  -------    	--------    ---------------------------
    + *  2011.08.26	정진오 		최초 생성
    + *  2011.09.16  서준식		컨텐츠 페이지 생성
    + *  2011.09.26  이기하		header, footer 페이지 생성
    + * 
    + */ + +import java.lang.reflect.Method; +import java.util.Map; +import java.util.TreeMap; + +import egovframework.com.cmm.IncludedCompInfoVO; +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.annotation.IncludedInfo; +import egovframework.com.cmm.util.EgovUserDetailsHelper; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class EgovComIndexController implements ApplicationContextAware, InitializingBean { + + private ApplicationContext applicationContext; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovComIndexController.class); + + private Map map; + + public void afterPropertiesSet() throws Exception {} + + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + + LOGGER.info("EgovComIndexController setApplicationContext method has called!"); + } + + @RequestMapping("/egovIndex.do") + public String index(ModelMap model) { + return "egovframework/com/cmm/EgovUnitMain"; + } + + @RequestMapping("/EgovTop.do") + public String top() { + return "egovframework/com/cmm/EgovUnitTop"; + } + + @RequestMapping("/EgovBottom.do") + public String bottom() { + return "egovframework/com/cmm/EgovUnitBottom"; + } + + @RequestMapping("/EgovContent.do") + public String setContent(ModelMap model) { + + LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + model.addAttribute("loginVO", loginVO); + + return "egovframework/com/cmm/EgovUnitContent"; + } + + @RequestMapping("/EgovLeft.do") + public String setLeftMenu(ModelMap model) { + + /* 최초 한 번만 실행하여 map에 저장해 놓는다. */ + if (map == null) { + map = new TreeMap(); + RequestMapping rmAnnotation; + IncludedInfo annotation; + IncludedCompInfoVO zooVO; + + /* + * EgovLoginController가 AOP Proxy되는 바람에 클래스를 reflection으로 가져올 수 없음 + */ + try { + Class loginController = Class.forName("egovframework.com.uat.uia.web.EgovLoginController"); + Method[] methods = loginController.getMethods(); + for (int i = 0; i < methods.length; i++) { + annotation = methods[i].getAnnotation(IncludedInfo.class); + + if (annotation != null) { + LOGGER.debug("Found @IncludedInfo Method : {}", methods[i]); + zooVO = new IncludedCompInfoVO(); + zooVO.setName(annotation.name()); + zooVO.setOrder(annotation.order()); + zooVO.setGid(annotation.gid()); + + rmAnnotation = methods[i].getAnnotation(RequestMapping.class); + if ("".equals(annotation.listUrl()) && rmAnnotation != null) { + zooVO.setListUrl(rmAnnotation.value()[0]); + } else { + zooVO.setListUrl(annotation.listUrl()); + } + map.put(zooVO.getOrder(), zooVO); + } + } + } catch (ClassNotFoundException e) { + LOGGER.error("No egovframework.com.uat.uia.web.EgovLoginController!!"); + } + /* 여기까지 AOP Proxy로 인한 코드 */ + + /*@Controller Annotation 처리된 클래스를 모두 찾는다.*/ + Map myZoos = applicationContext.getBeansWithAnnotation(Controller.class); + LOGGER.debug("How many Controllers : ", myZoos.size()); + for (final Object myZoo : myZoos.values()) { + Class zooClass = myZoo.getClass(); + + Method[] methods = zooClass.getMethods(); + LOGGER.debug("Controller Detected {}", zooClass); + for (int i = 0; i < methods.length; i++) { + annotation = methods[i].getAnnotation(IncludedInfo.class); + + if (annotation != null) { + //LOG.debug("Found @IncludedInfo Method : " + methods[i] ); + zooVO = new IncludedCompInfoVO(); + zooVO.setName(annotation.name()); + zooVO.setOrder(annotation.order()); + zooVO.setGid(annotation.gid()); + /* + * 목록형 조회를 위한 url 매핑은 @IncludedInfo나 @RequestMapping에서 가져온다 + */ + rmAnnotation = methods[i].getAnnotation(RequestMapping.class); + if ("".equals(annotation.listUrl())) { + zooVO.setListUrl(rmAnnotation.value()[0]); + } else { + zooVO.setListUrl(annotation.listUrl()); + } + + map.put(zooVO.getOrder(), zooVO); + } + } + } + } + + model.addAttribute("resultList", map.values()); + + LOGGER.debug("EgovComIndexController index is called "); + + return "egovframework/com/cmm/EgovUnitLeft"; + } +} diff --git a/src/main/java/egovframework/com/cmm/web/EgovComUtlController.java b/src/main/java/egovframework/com/cmm/web/EgovComUtlController.java new file mode 100644 index 00000000..6eff9fcc --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovComUtlController.java @@ -0,0 +1,93 @@ +package egovframework.com.cmm.web; + +import java.util.List; + +import javax.annotation.Resource; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import egovframework.com.cmm.EgovWebUtil; +import egovframework.rte.fdl.property.EgovPropertyService; + +/** + * @Class Name : EgovComUtlController.java + * @Description : 공통유틸리티성 작업을 위한 Controller + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ---------- -------- --------------------------- + * 2009.03.02 조재영 최초 생성 + * 2011.10.07 이기하 .action -> .do로 변경하면서 동일 매핑이 되어 삭제처리 + * 2015.11.12 김연호 한국인터넷진흥원 웹 취약점 개선 + * 2019.04.25 신용호 moveToPage() 화이트리스트 처리 + * + * @author 공통서비스 개발팀 조재영 + * @since 2009.03.02 + * @version 1.0 + * @see + * + */ +@Controller +public class EgovComUtlController { + + //@Resource(name = "egovUserManageService") + //private EgovUserManageService egovUserManageService; + private static final Logger LOGGER = LoggerFactory.getLogger(EgovComUtlController.class); + + @Resource(name = "egovPageLinkWhitelist") + protected List egovWhitelist; + + /** EgovPropertyService */ + @Resource(name = "propertiesService") + protected EgovPropertyService propertiesService; + + /** + * JSP 호출작업만 처리하는 공통 함수 + */ + @RequestMapping(value="/EgovPageLink.do") + public String moveToPage(@RequestParam("link") String linkPage){ + String link = linkPage; + link = link.replace(";", ""); + link = link.replace(".", ""); + + // service 사용하여 리턴할 결과값 처리하는 부분은 생략하고 단순 페이지 링크만 처리함 + if (linkPage==null || linkPage.equals("")){ + link="egovframework/com/cmm/egovError"; + } + + // 화이트 리스트 처리 + // whitelist목록에 있는 경우 결과가 true, 결과가 false인경우 FAIL처리 + if (egovWhitelist.contains(linkPage) == false) { + LOGGER.debug("Page Link WhiteList Error! Please check whitelist!"); + link="egovframework/com/cmm/egovError"; + } + + // 안전한 경로 문자열로 조치 + link = EgovWebUtil.filePathBlackList(link); + + return link; + } + + /** + * 모달조회 + * @return String + * @exception Exception + */ + @RequestMapping(value="/EgovModal.do") + public String selectUtlJsonInquire() throws Exception { + return "egovframework/com/cmm/EgovModal"; + } + + /** + * validato rule dynamic Javascript + */ + @RequestMapping("/validator.do") + public String validate(){ + return "egovframework/com/cmm/validator"; + } + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/cmm/web/EgovFileDownloadController.java b/src/main/java/egovframework/com/cmm/web/EgovFileDownloadController.java new file mode 100644 index 00000000..5324868e --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovFileDownloadController.java @@ -0,0 +1,154 @@ +package egovframework.com.cmm.web; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Controller; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import egovframework.com.cmm.EgovBrowserUtil; +import egovframework.com.cmm.service.EgovFileMngService; +import egovframework.com.cmm.service.FileVO; +import egovframework.com.cmm.util.EgovBasicLogger; +import egovframework.com.cmm.util.EgovResourceCloseHelper; +import egovframework.com.cmm.util.EgovUserDetailsHelper; + +/** + * 파일 다운로드를 위한 컨트롤러 클래스 + * @author 공통서비스개발팀 이삼섭 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *     수정일      	수정자           수정내용
    + *  ------------   --------    ---------------------------
    + *   2009.03.25  	이삼섭          최초 생성
    + *   2014.02.24		이기하          IE11 브라우저 한글 파일 다운로드시 에러 수정
    + *   2018.08.28		신용호          Safari, Chrome, Firefox, Opera 한글파일 다운로드 처리 수정 (macOS에서 확장자 exe붙는 문제 처리)
    + *
    + * Copyright (C) 2009 by MOPAS  All right reserved.
    + * 
    + */ +@Controller +public class EgovFileDownloadController { + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + /** + * 브라우저 구분 얻기. + * + * @param request + * @return + */ + private String getBrowser(HttpServletRequest request) { + String header = request.getHeader("User-Agent"); + if (header.indexOf("MSIE") > -1) { + return "MSIE"; + } else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지 + return "Trident"; + } else if (header.indexOf("Chrome") > -1) { + return "Chrome"; + } else if (header.indexOf("Opera") > -1) { + return "Opera"; + } + return "Firefox"; + } + + /** + * 첨부파일로 등록된 파일에 대하여 다운로드를 제공한다. + * + * @param commandMap + * @param response + * @throws Exception + */ + @RequestMapping(value = "/cmm/fms/FileDown.do") + public void cvplFileDownload(@RequestParam Map commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception { + + String atchFileId = (String) commandMap.get("atchFileId"); + String fileSn = (String) commandMap.get("fileSn"); + + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + + if (isAuthenticated) { + + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(atchFileId); + fileVO.setFileSn(fileSn); + FileVO fvo = fileService.selectFileInf(fileVO); + + File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); + long fSize = uFile.length(); + + if (fSize > 0) { + String mimetype = "application/x-msdownload"; + + String userAgent = request.getHeader("User-Agent"); + HashMap result = EgovBrowserUtil.getBrowser(userAgent); + if ( !EgovBrowserUtil.MSIE.equals(result.get(EgovBrowserUtil.TYPEKEY)) ) { + mimetype = "application/x-stuff"; + } + + String contentDisposition = EgovBrowserUtil.getDisposition(fvo.getOrignlFileNm(),userAgent,"UTF-8"); + //response.setBufferSize(fSize); // OutOfMemeory 발생 + response.setContentType(mimetype); + //response.setHeader("Content-Disposition", "attachment; filename=\"" + contentDisposition + "\""); + response.setHeader("Content-Disposition", contentDisposition); + response.setContentLengthLong(fSize); + + /* + * FileCopyUtils.copy(in, response.getOutputStream()); + * in.close(); + * response.getOutputStream().flush(); + * response.getOutputStream().close(); + */ + BufferedInputStream in = null; + BufferedOutputStream out = null; + + try { + in = new BufferedInputStream(new FileInputStream(uFile)); + out = new BufferedOutputStream(response.getOutputStream()); + + FileCopyUtils.copy(in, out); + out.flush(); + } catch (IOException ex) { + // 다음 Exception 무시 처리 + // Connection reset by peer: socket write error + EgovBasicLogger.ignore("IO Exception", ex); + } finally { + EgovResourceCloseHelper.close(in, out); + } + + } else { + response.setContentType("application/x-msdownload"); + + PrintWriter printwriter = response.getWriter(); + + printwriter.println(""); + printwriter.println("


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

    "); + printwriter.println("


    Back

    "); + printwriter.println("


    © webAccess"); + printwriter.println(""); + + printwriter.flush(); + printwriter.close(); + } + } + } +} diff --git a/src/main/java/egovframework/com/cmm/web/EgovFileMngController.java b/src/main/java/egovframework/com/cmm/web/EgovFileMngController.java new file mode 100644 index 00000000..bd72ee09 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovFileMngController.java @@ -0,0 +1,165 @@ +package egovframework.com.cmm.web; + +import java.util.List; +import java.util.Map; + +import egovframework.com.cmm.service.EgovFileMngService; +import egovframework.com.cmm.service.FileVO; +import egovframework.com.cmm.util.EgovUserDetailsHelper; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * 파일 조회, 삭제, 다운로드 처리를 위한 컨트롤러 클래스 + * @author 공통서비스개발팀 이삼섭 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.3.25  이삼섭          최초 생성
    + *   2016.10.13 장동한           deleteFileInf 메소드 return 방식 수정
    + *
    + * 
    + */ +@Controller +public class EgovFileMngController { + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + /** + * 첨부파일에 대한 목록을 조회한다. + * + * @param fileVO + * @param atchFileId + * @param sessionVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/cmm/fms/selectFileInfs.do") + public String selectFileInfs(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam Map commandMap, ModelMap model) throws Exception { + String atchFileId = (String)commandMap.get("param_atchFileId"); + + fileVO.setAtchFileId(atchFileId); + List result = fileService.selectFileInfs(fileVO); + + model.addAttribute("fileList", result); + model.addAttribute("updateFlag", "N"); + model.addAttribute("fileListCnt", result.size()); + model.addAttribute("atchFileId", atchFileId); + + return "egovframework/com/cmm/fms/EgovFileList"; + } + + /** + * 첨부파일 변경을 위한 수정페이지로 이동한다. + * + * @param fileVO + * @param atchFileId + * @param sessionVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/cmm/fms/selectFileInfsForUpdate.do") + public String selectFileInfsForUpdate(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam Map commandMap, + //SessionVO sessionVO, + ModelMap model) throws Exception { + + String atchFileId = (String)commandMap.get("param_atchFileId"); + + fileVO.setAtchFileId(atchFileId); + + List result = fileService.selectFileInfs(fileVO); + + model.addAttribute("fileList", result); + model.addAttribute("updateFlag", "Y"); + model.addAttribute("fileListCnt", result.size()); + model.addAttribute("atchFileId", atchFileId); + + return "egovframework/com/cmm/fms/EgovFileList"; + } + + /** + * 첨부파일에 대한 삭제를 처리한다. + * + * @param fileVO + * @param returnUrl + * @param sessionVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/cmm/fms/deleteFileInfs.do") + public String deleteFileInf(@ModelAttribute("searchVO") FileVO fileVO, + //SessionVO sessionVO, + HttpServletRequest request, + ModelMap model) throws Exception { + + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + + if (isAuthenticated) { + fileService.deleteFileInf(fileVO); + } + + return "blank"; + + //-------------------------------------------- + // contextRoot가 있는 경우 제외 시켜야 함 + //-------------------------------------------- + ////return "forward:/cmm/fms/selectFileInfs.do"; + //return "forward:" + returnUrl; + /* ******************************************************* + * modify by jdh + ******************************************************* + if ("".equals(request.getContextPath()) || "/".equals(request.getContextPath())) { + return "forward:" + returnUrl; + } + + if (returnUrl.startsWith(request.getContextPath())) { + return "forward:" + returnUrl.substring(returnUrl.indexOf("/", 1)); + } else { + return "forward:" + returnUrl; + } + */ + ////------------------------------------------ + } + + /** + * 이미지 첨부파일에 대한 목록을 조회한다. + * + * @param fileVO + * @param atchFileId + * @param sessionVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/cmm/fms/selectImageFileInfs.do") + public String selectImageFileInfs(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam Map commandMap, + //SessionVO sessionVO, + ModelMap model) throws Exception { + + String atchFileId = (String)commandMap.get("atchFileId"); + + fileVO.setAtchFileId(atchFileId); + List result = fileService.selectImageFileList(fileVO); + + model.addAttribute("fileList", result); + + return "egovframework/com/cmm/fms/EgovImgFileList"; + } +} diff --git a/src/main/java/egovframework/com/cmm/web/EgovImageProcessController.java b/src/main/java/egovframework/com/cmm/web/EgovImageProcessController.java new file mode 100644 index 00000000..9b9d5c1b --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovImageProcessController.java @@ -0,0 +1,132 @@ +package egovframework.com.cmm.web; + +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.util.Map; + +import egovframework.com.cmm.SessionVO; +import egovframework.com.cmm.service.EgovFileMngService; +import egovframework.com.cmm.service.FileVO; +import egovframework.com.cmm.util.EgovResourceCloseHelper; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + + +/** + * @Class Name : EgovImageProcessController.java + * @Description : + * @Modification Information + * + * 수정일 수정자 수정내용 + * ---------- --------- ------------------- + * 2009.04.02 이삼섭 최초생성 + * 2014.03.31 유지보수 fileSn 오류수정 + * 2018.08.31 이정은 MimeType 중복설정 제거 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 4. 2. + * @version + * @see + * + */ +@SuppressWarnings("serial") +@Controller +public class EgovImageProcessController extends HttpServlet { + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovImageProcessController.class); + + /** + * 첨부된 이미지에 대한 미리보기 기능을 제공한다. + * + * @param atchFileId + * @param fileSn + * @param sessionVO + * @param model + * @param response + * @throws Exception + */ + @RequestMapping("/cmm/fms/getImage.do") + public void getImageInf(SessionVO sessionVO, ModelMap model, @RequestParam Map commandMap, HttpServletResponse response) throws Exception { + + //@RequestParam("atchFileId") String atchFileId, + //@RequestParam("fileSn") String fileSn, + String atchFileId = (String)commandMap.get("atchFileId"); + String fileSn = (String)commandMap.get("fileSn"); + + FileVO vo = new FileVO(); + + vo.setAtchFileId(atchFileId); + vo.setFileSn(fileSn); + + //------------------------------------------------------------ + // fileSn이 없는 경우 마지막 파일 참조 + //------------------------------------------------------------ + if (fileSn == null || fileSn.equals("")) { + int newMaxFileSN = fileService.getMaxFileSN(vo); + vo.setFileSn(Integer.toString(newMaxFileSN - 1)); + } + //------------------------------------------------------------ + + FileVO fvo = fileService.selectFileInf(vo); + + //String fileLoaction = fvo.getFileStreCours() + fvo.getStreFileNm(); + + File file = null; + FileInputStream fis = null; + + BufferedInputStream in = null; + ByteArrayOutputStream bStream = null; + + try { + file = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); + fis = new FileInputStream(file); + + in = new BufferedInputStream(fis); + bStream = new ByteArrayOutputStream(); + + int imgByte; + while ((imgByte = in.read()) != -1) { + bStream.write(imgByte); + } + + String type = ""; + + if (fvo.getFileExtsn() != null && !"".equals(fvo.getFileExtsn())) { + if ("jpg".equals(fvo.getFileExtsn().toLowerCase())) { + type = "image/jpeg"; + } else { + type = "image/" + fvo.getFileExtsn().toLowerCase(); + } + /*type = "image/" + fvo.getFileExtsn().toLowerCase();*/ + + } else { + LOGGER.debug("Image fileType is null."); + } + + response.setHeader("Content-Type", type); + response.setContentLength(bStream.size()); + + bStream.writeTo(response.getOutputStream()); + + response.getOutputStream().flush(); + response.getOutputStream().close(); + + } finally { + EgovResourceCloseHelper.close(bStream, in, fis); + } + } +} diff --git a/src/main/java/egovframework/com/cmm/web/EgovMultipartResolver.java b/src/main/java/egovframework/com/cmm/web/EgovMultipartResolver.java new file mode 100644 index 00000000..a90121fd --- /dev/null +++ b/src/main/java/egovframework/com/cmm/web/EgovMultipartResolver.java @@ -0,0 +1,130 @@ +package egovframework.com.cmm.web; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the ";License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS"; BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.servlet.ServletContext; + +import org.apache.commons.fileupload.FileItem; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartException; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartResolver; + +/** + * 실행환경의 파일업로드 처리를 위한 기능 클래스 + * @author 공통서비스개발팀 이삼섭 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.3.25  이삼섭          최초 생성
    + *   2011.06.11 서준식          스프링 3.0 업그레이드 API변경으로인한 수정
    + *
    + * 
    + */ +public class EgovMultipartResolver extends CommonsMultipartResolver { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovMultipartResolver.class); + + public EgovMultipartResolver() {} + + /** + * 첨부파일 처리를 위한 multipart resolver를 생성한다. + * + * @param servletContext + */ + public EgovMultipartResolver(ServletContext servletContext) { + super(servletContext); + } + + /** + * multipart에 대한 parsing을 처리한다. + */ + @SuppressWarnings("rawtypes") + @Override + protected MultipartParsingResult parseFileItems(List fileItems, String encoding) { + + //스프링 3.0변경으로 수정한 부분 + MultiValueMap multipartFiles = new LinkedMultiValueMap(); + Map multipartParameters = new HashMap(); + + // Extract multipart files and multipart parameters. + for (Iterator it = fileItems.iterator(); it.hasNext();) { + FileItem fileItem = (FileItem)it.next(); + + if (fileItem.isFormField()) { + + String value = null; + if (encoding != null) { + try { + value = fileItem.getString(encoding); + } catch (UnsupportedEncodingException ex) { + LOGGER.warn("Could not decode multipart item '{}' with encoding '{}': using platform default" + , fileItem.getFieldName(), encoding); + value = fileItem.getString(); + } + } else { + value = fileItem.getString(); + } + String[] curParam = (String[])multipartParameters.get(fileItem.getFieldName()); + if (curParam == null) { + // simple form field + multipartParameters.put(fileItem.getFieldName(), new String[] { value }); + } else { + // array of simple form fields + String[] newParam = StringUtils.addStringToArray(curParam, value); + multipartParameters.put(fileItem.getFieldName(), newParam); + } + } else { + + if (fileItem.getSize() > 0) { + // multipart file field + CommonsMultipartFile file = new CommonsMultipartFile(fileItem); + + //스프링 3.0 업그레이드 API변경으로인한 수정 + List fileList = new ArrayList(); + fileList.add(file); + + if (multipartFiles.put(fileItem.getName(), fileList) != null) { // CHANGED!! + throw new MultipartException("Multiple files for field name [" + file.getName() + "] found - not supported by MultipartResolver"); + } + LOGGER.debug("Found multipart file [{"+file.getName()+"}] of size {"+file.getSize()+"} bytes with original filename [{"+ file.getOriginalFilename()+"}], stored {"+file.getStorageDescription()+"}"); + + } + + } + } + + return new MultipartParsingResult(multipartFiles, multipartParameters, null); + } +} diff --git a/src/main/java/egovframework/com/cop/ems/service/AtchmnFileVO.java b/src/main/java/egovframework/com/cop/ems/service/AtchmnFileVO.java new file mode 100644 index 00000000..cff2fb2e --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/AtchmnFileVO.java @@ -0,0 +1,147 @@ +package egovframework.com.cop.ems.service; + +/** + * 발송메일에 첨부되는 파일 VO 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *
    + *  
    + */ +public class AtchmnFileVO { + + /** 첨부파일ID */ + private String atchFileId; + /** 파일연번 */ + private String fileSn; + /** 원파일명 */ + private String orignlFileNm; + /** 저장파일명 */ + private String streFileNm; + /** 파일저장경로 */ + private String fileStreCours; + /** 파일확장자 */ + private String fileExtsn; + /** 파일크기 */ + private int fileMg; + + /** + * atchFileId attribute 를 리턴한다. + * @return String + */ + public String getAtchFileId() { + return atchFileId; + } + + /** + * atchFileId attribute 값을 설정한다. + * @param atchFileId String + */ + public void setAtchFileId(String atchFileId) { + this.atchFileId = atchFileId; + } + + /** + * fileSn attribute 를 리턴한다. + * @return String + */ + public String getFileSn() { + return fileSn; + } + + /** + * fileSn attribute 값을 설정한다. + * @param fileSn String + */ + public void setFileSn(String fileSn) { + this.fileSn = fileSn; + } + + /** + * orignlFileNm attribute 를 리턴한다. + * @return String + */ + public String getOrignlFileNm() { + return orignlFileNm; + } + + /** + * orignlFileNm attribute 값을 설정한다. + * @param orignlFileNm String + */ + public void setOrignlFileNm(String orignlFileNm) { + this.orignlFileNm = orignlFileNm; + } + + /** + * streFileNm attribute 를 리턴한다. + * @return String + */ + public String getStreFileNm() { + return streFileNm; + } + + /** + * streFileNm attribute 값을 설정한다. + * @param streFileNm String + */ + public void setStreFileNm(String streFileNm) { + this.streFileNm = streFileNm; + } + + /** + * fileStreCours attribute 를 리턴한다. + * @return String + */ + public String getFileStreCours() { + return fileStreCours; + } + + /** + * fileStreCours attribute 값을 설정한다. + * @param fileStreCours String + */ + public void setFileStreCours(String fileStreCours) { + this.fileStreCours = fileStreCours; + } + + /** + * fileExtsn attribute 를 리턴한다. + * @return String + */ + public String getFileExtsn() { + return fileExtsn; + } + + /** + * fileExtsn attribute 값을 설정한다. + * @param fileExtsn String + */ + public void setFileExtsn(String fileExtsn) { + this.fileExtsn = fileExtsn; + } + + /** + * fileMg attribute 를 리턴한다. + * @return int + */ + public int getFileMg() { + return fileMg; + } + + /** + * fileMg attribute 값을 설정한다. + * @param fileMg int + */ + public void setFileMg(int fileMg) { + this.fileMg = fileMg; + } +} diff --git a/src/main/java/egovframework/com/cop/ems/service/EgovMultiPartEmail.java b/src/main/java/egovframework/com/cop/ems/service/EgovMultiPartEmail.java new file mode 100644 index 00000000..3125e0fb --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/EgovMultiPartEmail.java @@ -0,0 +1,129 @@ +package egovframework.com.cop.ems.service; + +import java.io.Serializable; + +import org.apache.commons.mail.DefaultAuthenticator; +import org.apache.commons.mail.EmailAttachment; +import org.apache.commons.mail.EmailException; +import org.apache.commons.mail.MultiPartEmail; + +/** + * 발송메일에 첨부파일용으로 사용되는 VO 클래스 + * @author 공통서비스 개발팀 이기하 + * @since 2011.12.06 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *    수정일      	수정자          수정내용
    + *  ----------     --------    ---------------------------
    + *  2011.12.06		이기하          최초 생성
    + *  2013.05.23		이기하          thread-safe 하게 변경
    + *
    + *  
    + */ + +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(); + } + + public String send(String addTo, String subject, String msg) throws EmailException { + return send(addTo, subject, msg, null); + } + + public String send(String addTo, String subject, String msg, EmailAttachment attachment) 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); + email.addTo(addTo); + email.setSubject(subject); + email.setMsg(msg); + + if (attachment != null) { + email.attach(attachment); + } + + return email.send(); + + } + +} diff --git a/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailDetailService.java b/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailDetailService.java new file mode 100644 index 00000000..ffb2d80c --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailDetailService.java @@ -0,0 +1,42 @@ +package egovframework.com.cop.ems.service; + +/** + * 발송메일을 상세 조회하는 비즈니스 인터페이스 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *
    + *  
    + */ +public interface EgovSndngMailDetailService { + + /** + * 발송메일을 상세 조회한다. + * @param vo SndngMailVO + * @return SndngMailVO + * @exception Exception + */ + SndngMailVO selectSndngMail(SndngMailVO vo) throws Exception; + + /** + * 발송메일을 삭제한다. + * @param vo SndngMailVO + * @exception + */ + void deleteSndngMail(SndngMailVO vo) throws Exception; + + /** + * 첨부파일을 삭제한다. + * @param vo SndngMailVO + * @exception + */ + void deleteAtchmnFile(SndngMailVO vo) throws Exception; +} diff --git a/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailDtlsService.java b/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailDtlsService.java new file mode 100644 index 00000000..0dac5c27 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailDtlsService.java @@ -0,0 +1,47 @@ +package egovframework.com.cop.ems.service; + +import java.util.List; + +import egovframework.com.cmm.ComDefaultVO; + +/** + * 발송메일 내역을 조회하는 비즈니스 인터페이스 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *
    + *  
    + */ +public interface EgovSndngMailDtlsService { + + /** + * 발송메일 목록을 조회한다. + * @param vo ComDefaultVO + * @return List + * @exception Exception + */ + List selectSndngMailList(ComDefaultVO vo) throws Exception; + + /** + * 발송메일 총건수를 조회한다. + * @param vo ComDefaultVO + * @return int + * @exception + */ + int selectSndngMailListTotCnt(ComDefaultVO vo) throws Exception; + + /** + * 발송메일을 삭제한다. + * @param vo SndngMailVO + * @exception + */ + void deleteSndngMailList(SndngMailVO vo) throws Exception; +} diff --git a/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailRegistService.java b/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailRegistService.java new file mode 100644 index 00000000..1de0aa45 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailRegistService.java @@ -0,0 +1,44 @@ +package egovframework.com.cop.ems.service; + +/** + * 발송메일등록, 발송요청XML파일 생성하는 비즈니스 인터페이스 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *
    + *  
    + */ +public interface EgovSndngMailRegistService { + + /** + * 발송할 메일을 등록한다 + * @param vo SndngMailVO + * @return boolean + * @exception Exception + */ + boolean insertSndngMail(SndngMailVO vo) throws Exception; + + /** + * 발송할 메일을 XML파일로 만들어 저장한다. + * @param vo SndngMailVO + * @return boolean + * @exception Exception + */ + public boolean trnsmitXmlData(SndngMailVO vo) throws Exception; + + /** + * 발송메일 발송결과 XML파일을 읽어 발송결과코드에 수정한다. + * @param xml String + * @return boolean + * @exception Exception + */ + public boolean recptnXmlData(String xml) throws Exception; +} diff --git a/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailService.java b/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailService.java new file mode 100644 index 00000000..789eb7cc --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/EgovSndngMailService.java @@ -0,0 +1,28 @@ +package egovframework.com.cop.ems.service; + +/** + * 메일 솔루션과 연동해서 이용해서 메일을 보내는 서비스 클래스 + * @since 2011.09.09 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011.09.09  서준식       최초 작성
    + *
    + *  
    + */ + +public interface EgovSndngMailService { + + /** + * 메일을 발송한다 + * @param vo SndngMailVO + * @return boolean + * @exception Exception + */ + boolean sndngMail(SndngMailVO vo) throws Exception; +} diff --git a/src/main/java/egovframework/com/cop/ems/service/SndngMail.java b/src/main/java/egovframework/com/cop/ems/service/SndngMail.java new file mode 100644 index 00000000..8541db61 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/SndngMail.java @@ -0,0 +1,147 @@ +package egovframework.com.cop.ems.service; + +/** + * 발송메일 모델 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *
    + *  
    + */ +public class SndngMail { + + /** 발신자 */ + public String dsptchPerson; + /** 내용 */ + public String emailCn; + /** 메시지ID */ + public String mssageId; + /** 수신자 */ + public String recptnPerson; + /** 제목 */ + public String sj; + /** 발송결과코드 */ + public String sndngResultCode; + /** 발신일자 */ + private String sndngDe; + + /** + * dsptchPerson attribute 를 리턴한다. + * @return String + */ + public String getDsptchPerson() { + return dsptchPerson; + } + + /** + * dsptchPerson attribute 값을 설정한다. + * @param dsptchPerson String + */ + public void setDsptchPerson(String dsptchPerson) { + this.dsptchPerson = dsptchPerson; + } + + /** + * emailCn attribute 를 리턴한다. + * @return String + */ + public String getEmailCn() { + return emailCn; + } + + /** + * emailCn attribute 값을 설정한다. + * @param emailCn String + */ + public void setEmailCn(String emailCn) { + this.emailCn = emailCn; + } + + /** + * mssageId attribute 를 리턴한다. + * @return String + */ + public String getMssageId() { + return mssageId; + } + + /** + * mssageId attribute 값을 설정한다. + * @param mssageId String + */ + public void setMssageId(String mssageId) { + this.mssageId = mssageId; + } + + /** + * recptnPerson attribute 를 리턴한다. + * @return String + */ + public String getRecptnPerson() { + return recptnPerson; + } + + /** + * recptnPerson attribute 값을 설정한다. + * @param recptnPerson String + */ + public void setRecptnPerson(String recptnPerson) { + this.recptnPerson = recptnPerson; + } + + /** + * sj attribute 를 리턴한다. + * @return String + */ + public String getSj() { + return sj; + } + + /** + * sj attribute 값을 설정한다. + * @param sj String + */ + public void setSj(String sj) { + this.sj = sj; + } + + /** + * sndngResultCode attribute 를 리턴한다. + * @return String + */ + public String getSndngResultCode() { + return sndngResultCode; + } + + /** + * sndngResultCode attribute 값을 설정한다. + * @param sndngResultCode String + */ + public void setSndngResultCode(String sndngResultCode) { + this.sndngResultCode = sndngResultCode; + } + + /** + * sndngDe attribute 를 리턴한다. + * @return String + */ + public String getSndngDe() { + return sndngDe; + } + + /** + * sndngDe attribute 값을 설정한다. + * @param sndngDe String + */ + public void setSndngDe(String sndngDe) { + this.sndngDe = sndngDe; + } +} diff --git a/src/main/java/egovframework/com/cop/ems/service/SndngMailVO.java b/src/main/java/egovframework/com/cop/ems/service/SndngMailVO.java new file mode 100644 index 00000000..d5380f82 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/SndngMailVO.java @@ -0,0 +1,240 @@ +package egovframework.com.cop.ems.service; + +/** + * 발송메일 VO 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *  2011.12.06  이기하          첨부파일경로(fileStreCours), 첨부파일이름(orignlFileNm) 추가
    + *
    + *  
    + */ +public class SndngMailVO { + + /** 메세지ID */ + private String mssageId; + /** 발신자 */ + private String dsptchPerson; + /** 수신자 */ + private String recptnPerson; + /** 제목 */ + private String sj; + /** 발송결과코드 */ + private String sndngResultCode; + /** 메일내용 */ + private String emailCn; + /** 첨부파일ID */ + private String atchFileId; + /** 첨부파일경로 */ + private String fileStreCours; + /** 첨부파일이름 */ + private String orignlFileNm; + /** 발신일자 */ + private String sndngDe; + /** 첨부파일ID 리스트 */ + private String atchFileIdList; + /** 발송요청XML내용 */ + private String xmlContent; + /** 팝업링크여부(Y/N) */ + private String link; + + /** + * mssageId attribute 를 리턴한다. + * @return String + */ + public String getMssageId() { + return mssageId; + } + + /** + * mssageId attribute 값을 설정한다. + * @param mssageId String + */ + public void setMssageId(String mssageId) { + this.mssageId = mssageId; + } + + /** + * dsptchPerson attribute 를 리턴한다. + * @return String + */ + public String getDsptchPerson() { + return dsptchPerson; + } + + /** + * dsptchPerson attribute 값을 설정한다. + * @param dsptchPerson String + */ + public void setDsptchPerson(String dsptchPerson) { + this.dsptchPerson = dsptchPerson; + } + + /** + * recptnPerson attribute 를 리턴한다. + * @return String + */ + public String getRecptnPerson() { + return recptnPerson; + } + + /** + * recptnPerson attribute 값을 설정한다. + * @param recptnPerson String + */ + public void setRecptnPerson(String recptnPerson) { + this.recptnPerson = recptnPerson; + } + + /** + * sj attribute 를 리턴한다. + * @return String + */ + public String getSj() { + return sj; + } + + /** + * sj attribute 값을 설정한다. + * @param sj String + */ + public void setSj(String sj) { + this.sj = sj; + } + + /** + * sndngResultCode attribute 를 리턴한다. + * @return String + */ + public String getSndngResultCode() { + return sndngResultCode; + } + + /** + * sndngResultCode attribute 값을 설정한다. + * @param sndngResultCode String + */ + public void setSndngResultCode(String sndngResultCode) { + this.sndngResultCode = sndngResultCode; + } + + /** + * emailCn attribute 를 리턴한다. + * @return String + */ + public String getEmailCn() { + return emailCn; + } + + /** + * emailCn attribute 값을 설정한다. + * @param emailCn String + */ + public void setEmailCn(String emailCn) { + this.emailCn = emailCn; + } + + /** + * atchFileId attribute 를 리턴한다. + * @return String + */ + public String getAtchFileId() { + return atchFileId; + } + + /** + * atchFileId attribute 값을 설정한다. + * @param atchFileId String + */ + public void setAtchFileId(String atchFileId) { + this.atchFileId = atchFileId; + } + + public String getFileStreCours() { + return fileStreCours; + } + + public void setFileStreCours(String fileStreCours) { + this.fileStreCours = fileStreCours; + } + + public String getOrignlFileNm() { + return orignlFileNm; + } + + public void setOrignlFileNm(String orignlFileNm) { + this.orignlFileNm = orignlFileNm; + } + + /** + * sndngDe attribute 를 리턴한다. + * @return String + */ + public String getSndngDe() { + return sndngDe; + } + + /** + * sndngDe attribute 값을 설정한다. + * @param sndngDe String + */ + public void setSndngDe(String sndngDe) { + this.sndngDe = sndngDe; + } + + /** + * atchFileIdList attribute 를 리턴한다. + * @return String + */ + public String getAtchFileIdList() { + return atchFileIdList; + } + + /** + * atchFileIdList attribute 값을 설정한다. + * @param atchFileIdList String + */ + public void setAtchFileIdList(String atchFileIdList) { + this.atchFileIdList = atchFileIdList; + } + + /** + * xmlContent attribute 를 리턴한다. + * @return String + */ + public String getXmlContent() { + return xmlContent; + } + + /** + * xmlContent attribute 값을 설정한다. + * @param xmlContent String + */ + public void setXmlContent(String xmlContent) { + this.xmlContent = xmlContent; + } + + /** + * link attribute 를 리턴한다. + * @return String + */ + public String getLink() { + return link; + } + + /** + * link attribute 값을 설정한다. + * @param link String + */ + public void setLink(String link) { + this.link = link; + } +} diff --git a/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailDetailServiceImpl.java b/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailDetailServiceImpl.java new file mode 100644 index 00000000..5bfe8242 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailDetailServiceImpl.java @@ -0,0 +1,90 @@ +package egovframework.com.cop.ems.service.impl; + +import java.io.File; + +import egovframework.com.cmm.service.EgovFileMngService; +import egovframework.com.cmm.service.FileVO; +import egovframework.com.cmm.service.Globals; +import egovframework.com.cop.ems.service.EgovSndngMailDetailService; +import egovframework.com.cop.ems.service.SndngMailVO; +import egovframework.com.utl.sim.service.EgovFileTool; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +/** + * 발송메일을 상세 조회하는 비즈니스 구현 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *
    + *  
    + */ +@Service("sndngMailDetailService") +public class EgovSndngMailDetailServiceImpl extends EgovAbstractServiceImpl implements EgovSndngMailDetailService { + + // 파일구분자 + static final char FILE_SEPARATOR = File.separatorChar; + + @Resource(name = "sndngMailDetailDAO") + private SndngMailDetailDAO sndngMailDetailDAO; + + @Resource(name = "EgovFileMngService") + private EgovFileMngService egovFileMngService; + + /** + * 발송메일을 상세 조회한다. + * @param vo SndngMailVO + * @return SndngMailVO + * @exception Exception + */ + @Override + public SndngMailVO selectSndngMail(SndngMailVO vo) throws Exception { + + // 1. 발송메일 정보를 조회한다. + SndngMailVO resultMailVO = sndngMailDetailDAO.selectSndngMail(vo); + + return resultMailVO; + } + + /** + * 발송메일을 삭제한다. + * @param vo SndngMailVO + * @exception + */ + @Override + public void deleteSndngMail(SndngMailVO vo) throws Exception { + + // 1. 발송메일을 삭제한다. + sndngMailDetailDAO.deleteSndngMail(vo); + + // 2. 발송요청XML파일을 삭제한다. + String xmlFile = Globals.MAIL_REQUEST_PATH + vo.getMssageId() + ".xml"; + EgovFileTool.deleteFile(xmlFile); + } + + /** + * 첨부파일을 삭제한다. + * @param vo SndngMailVO + * @exception + */ + @Override + public void deleteAtchmnFile(SndngMailVO vo) throws Exception { + + // 1. 첨부파일 목록을 삭제한다. (이삼섭 책임 제공) + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vo.getAtchFileId()); + egovFileMngService.deleteAllFileInf(fileVO); + } +} diff --git a/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailDtlsServiceImpl.java b/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailDtlsServiceImpl.java new file mode 100644 index 00000000..3b70e230 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailDtlsServiceImpl.java @@ -0,0 +1,90 @@ +package egovframework.com.cop.ems.service.impl; + +import java.util.List; + +import egovframework.com.cmm.ComDefaultVO; +import egovframework.com.cop.ems.service.EgovSndngMailDetailService; +import egovframework.com.cop.ems.service.EgovSndngMailDtlsService; +import egovframework.com.cop.ems.service.SndngMailVO; +import egovframework.com.utl.fcc.service.EgovStringUtil; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +/** + * 발송메일 내역을 조회하는 비즈니스 구현 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *
    + *  
    + */ +@Service("sndngMailDtlsService") +public class EgovSndngMailDtlsServiceImpl extends EgovAbstractServiceImpl implements EgovSndngMailDtlsService { + + @Resource(name = "sndngMailDtlsDAO") + private SndngMailDtlsDAO sndngMailDtlsDAO; + + @Resource(name = "sndngMailDetailService") + private EgovSndngMailDetailService sndngMailDetailService; + + /** + * 발송메일 목록을 조회한다. + * @param vo ComDefaultVO + * @return List + * @exception Exception + */ + @Override + public List selectSndngMailList(ComDefaultVO vo) throws Exception { + return sndngMailDtlsDAO.selectSndngMailList(vo); + } + + /** + * 발송메일 총건수를 조회한다. + * @param vo ComDefaultVO + * @return int + * @exception + */ + @Override + public int selectSndngMailListTotCnt(ComDefaultVO vo) throws Exception { + return sndngMailDtlsDAO.selectSndngMailListTotCnt(vo); + } + + /** + * 발송메일을 삭제한다. + * @param vo SndngMailVO + * @exception + */ + @Override + public void deleteSndngMailList(SndngMailVO vo) throws Exception { + + // 1. 발송메일을 삭제한다. + String[] sbuf = EgovStringUtil.split(vo.getMssageId(), ","); + for (int i = 0; i < sbuf.length; i++) { + SndngMailVO sndngMailVO = new SndngMailVO(); + sndngMailVO.setMssageId(sbuf[i]); + sndngMailDetailService.deleteSndngMail(sndngMailVO); + } + + // 2. 첨부파일을 삭제한다. + if (vo.getAtchFileIdList() != null) {//KISA 보안약점 조치 (2018-10-29, 윤창원) + String[] fbuf = EgovStringUtil.split(vo.getAtchFileIdList(), ","); + for (int i = 0; i < fbuf.length; i++) { + SndngMailVO sndngMailVO = new SndngMailVO(); + sndngMailVO.setAtchFileId(fbuf[i]); + sndngMailDetailService.deleteAtchmnFile(sndngMailVO); + } + } + } +} diff --git a/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailRegistServiceImpl.java b/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailRegistServiceImpl.java new file mode 100644 index 00000000..6466fce8 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailRegistServiceImpl.java @@ -0,0 +1,187 @@ +package egovframework.com.cop.ems.service.impl; + +import java.io.File; +import java.util.List; + +import egovframework.com.cmm.service.EgovFileMngService; +import egovframework.com.cmm.service.FileVO; +import egovframework.com.cmm.service.Globals; +import egovframework.com.cop.ems.service.AtchmnFileVO; +import egovframework.com.cop.ems.service.EgovSndngMailRegistService; +import egovframework.com.cop.ems.service.EgovSndngMailService; +import egovframework.com.cop.ems.service.SndngMailVO; +import egovframework.com.utl.fcc.service.EgovStringUtil; +import egovframework.com.utl.sim.service.EgovXMLDoc; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import egovframework.rte.fdl.idgnr.EgovIdGnrService; + +import javax.annotation.Resource; + +import noNamespace.SndngMailDocument; + +import org.springframework.stereotype.Service; + +/** + * 발송메일등록, 발송요청XML파일 생성하는 비즈니스 구현 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *  2011.07.27  서준식          메일 발송내역 DB 저장시 첨부파일이 없으면 NULL로 변경
    + *  2011.12.06  이기하          메일 첨부파일이 기능 추가
    + *  2015.02.02  표준프레임워크  메일 첨부파일 오류 수정
    + *  
    + */ +@Service("sndngMailRegistService") +public class EgovSndngMailRegistServiceImpl extends EgovAbstractServiceImpl implements EgovSndngMailRegistService { + + /** SndngMailRegistDAO */ + @Resource(name = "sndngMailRegistDAO") + private SndngMailRegistDAO sndngMailRegistDAO; + + /** Message ID Generation */ + @Resource(name = "egovMailMsgIdGnrService") + private EgovIdGnrService egovMailMsgIdGnrService; + + @Resource(name = "egovSndngMailService") + private EgovSndngMailService egovSndngMailService; + + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + + /** + * 발송할 메일을 등록한다 + * @param vo SndngMailVO + * @return boolean + * @exception Exception + */ + @Override + public boolean insertSndngMail(SndngMailVO vo) throws Exception { + //KISA 보안약점 조치 (2018-10-29, 윤창원) + String recptnPersons = EgovStringUtil.isNullToString(vo.getRecptnPerson()).replaceAll(" ", ""); + String[] recptnPersonList = recptnPersons.split(";"); + + for (int j = 0; j < recptnPersonList.length; j++) { + + // 1-0.메세지ID를 생성한다. + String mssageId = egovMailMsgIdGnrService.getNextStringId(); + + // 1-1.발송메일 데이터를 만든다. + SndngMailVO mailVO = new SndngMailVO(); + mailVO.setMssageId(mssageId); + mailVO.setDsptchPerson(vo.getDsptchPerson()); + mailVO.setRecptnPerson(recptnPersonList[j]); + mailVO.setSj(vo.getSj()); + //mailVO.setEmailCn(EgovStringUtil.checkHtmlView(vo.getEmailCn())); + mailVO.setEmailCn(vo.getEmailCn()); + mailVO.setSndngResultCode("R"); // 발송결과 요청 + + if (vo.getAtchFileId() == null || vo.getAtchFileId().equals("")) { + mailVO.setAtchFileId(null); + mailVO.setFileStreCours(null); + mailVO.setOrignlFileNm(null); + } else { + FileVO fileVO = new FileVO(); + fileVO.setAtchFileId(vo.getAtchFileId()); + fileVO.setFileSn("0"); + FileVO fvo = fileService.selectFileInf(fileVO); + + File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); + + mailVO.setAtchFileId(vo.getAtchFileId()); + mailVO.setFileStreCours(uFile.getPath()); + mailVO.setOrignlFileNm(vo.getOrignlFileNm()); + } + + // 1-3.발송메일을 등록한다. + sndngMailRegistDAO.insertSndngMail(mailVO); + + // 1-4.메일을 발송한다. + boolean sendingMailResult = egovSndngMailService.sndngMail(mailVO); + + if (!sendingMailResult) { + mailVO.setSndngResultCode("F"); // 발송결과 실패 + sndngMailRegistDAO.updateSndngMail(mailVO); // 발송상태를 DB에 업데이트 한다. + return false; + } + + // 1-5.발송메일 요청XML 파일을 생성한다. + trnsmitXmlData(mailVO); + } + return true; + } + + /** + * 발송할 메일을 XML파일로 만들어 저장한다. + * @param vo SndngMailVO + * @return boolean + * @exception Exception + */ + @Override + public boolean trnsmitXmlData(SndngMailVO vo) throws Exception { + + // 1. 첨부파일 목록 (원파일명, 저장파일명) + String orignlFileList = ""; + String streFileList = ""; + List atchmnFileList = sndngMailRegistDAO.selectAtchmnFileList(vo); + for (int i = 0; i < atchmnFileList.size(); i++) { + AtchmnFileVO fileVO = (AtchmnFileVO) atchmnFileList.get(i); + String orignlFile = fileVO.getOrignlFileNm(); + String streFile = fileVO.getFileStreCours() + fileVO.getStreFileNm(); + orignlFileList += orignlFile + ";"; + streFileList += streFile + ";"; + } + + // 2. XML데이터를 만든다. + SndngMailDocument mailDoc; + SndngMailDocument.SndngMail mailElement; + mailDoc = SndngMailDocument.Factory.newInstance(); + mailElement = mailDoc.addNewSndngMail(); + mailElement.setMssageId(vo.getMssageId()); + mailElement.setDsptchPerson(vo.getDsptchPerson()); + mailElement.setRecptnPerson(vo.getRecptnPerson()); + mailElement.setSj(vo.getSj()); + mailElement.setEmailCn(vo.getEmailCn()); + mailElement.setSndngResultCode(vo.getSndngResultCode()); + mailElement.setOrignlFileList(orignlFileList); + mailElement.setStreFileList(streFileList); + + // 2. XML파일로 저장한다. + String xmlFile = Globals.MAIL_REQUEST_PATH + vo.getMssageId() + ".xml"; + boolean result = EgovXMLDoc.getClassToXML(mailDoc, xmlFile); + if (result == true) { + recptnXmlData(xmlFile); + } + return result; + } + + /** + * 발송메일 발송결과 XML파일을 읽어 발송결과코드에 수정한다. + * @param xml String + * @return boolean + * @exception Exception + */ + @Override + public boolean recptnXmlData(String xmlFile) throws Exception { + + // 1. XML파일에서 발송결과코드를 가져온다. + SndngMailDocument mailDoc = EgovXMLDoc.getXMLToClass(xmlFile); + SndngMailDocument.SndngMail mailElement = mailDoc.getSndngMail(); + SndngMailVO sndngMailVO = new SndngMailVO(); + sndngMailVO.setMssageId(mailElement.getMssageId()); + sndngMailVO.setSndngResultCode("C"); // 발송결과 완료 + + // 2. DB에 업데이트 한다. + sndngMailRegistDAO.updateSndngMail(sndngMailVO); + + return true; + } +} diff --git a/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailServiceImpl.java b/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailServiceImpl.java new file mode 100644 index 00000000..8cb02fbf --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/impl/EgovSndngMailServiceImpl.java @@ -0,0 +1,112 @@ +package egovframework.com.cop.ems.service.impl; + +import egovframework.com.cop.ems.service.EgovMultiPartEmail; +import egovframework.com.cop.ems.service.EgovSndngMailService; +import egovframework.com.cop.ems.service.SndngMailVO; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import javax.annotation.Resource; + +import org.apache.commons.mail.EmailAttachment; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.mail.MailAuthenticationException; +import org.springframework.mail.MailParseException; +import org.springframework.mail.MailSendException; +import org.springframework.stereotype.Service; + +/** + * 메일 솔루션과 연동해서 이용해서 메일을 보내는 서비스 구현 클래스 + * @since 2011.09.09 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011.09.09  서준식       최초 작성
    + *  2011.12.06  이기하       메일 첨부파일이 기능 추가
    + *  2013.05.23  이기하       메일 첨부파일이 없을 때 로직 추가
    + *
    + *  
    + */ +@Service("egovSndngMailService") +public class EgovSndngMailServiceImpl extends EgovAbstractServiceImpl implements EgovSndngMailService { + + @Resource(name = "egovMultiPartEmail") + private EgovMultiPartEmail egovMultiPartEmail; + + /** SndngMailRegistDAO */ + @Resource(name = "sndngMailRegistDAO") + private SndngMailRegistDAO sndngMailRegistDAO; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovSndngMailServiceImpl.class); + + /** + * 메일을 발송한다 + * @param vo SndngMailVO + * @return boolean + * @exception Exception + */ + @Override + @SuppressWarnings("unused") + public boolean sndngMail(SndngMailVO sndngMailVO) throws Exception { + + String recptnPerson = (sndngMailVO.getRecptnPerson() == null) ? "" : sndngMailVO.getRecptnPerson(); // 수신자 + String subject = (sndngMailVO.getSj() == null) ? "" : sndngMailVO.getSj(); // 메일제목 + String emailCn = (sndngMailVO.getEmailCn() == null) ? "" : sndngMailVO.getEmailCn(); // 메일내용 + String atchmnFileNm = (sndngMailVO.getOrignlFileNm() == null) ? "" : sndngMailVO.getOrignlFileNm(); // 첨부파일이름 + String atchmnFilePath = (sndngMailVO.getFileStreCours() == null) ? "" : sndngMailVO.getFileStreCours(); // 첨부파일경로 + + try { + EmailAttachment attachment = new EmailAttachment(); + // 첨부파일이 있을 때 + if (atchmnFileNm != "" && atchmnFileNm != null && atchmnFilePath != "" && atchmnFilePath != null) { + // 첨부할 attachment 정보를 생성합니다 + attachment.setPath(atchmnFilePath); + attachment.setDisposition(EmailAttachment.ATTACHMENT); + attachment.setDescription("첨부파일입니다"); + //attachment.setName(new String(atchmnFileNm.getBytes("UTF-8"),"latin1")); // 구버전의 경우 필요 + attachment.setName(atchmnFileNm); + + // 2015.05.08 주석수정 - 첨부파일 정보를 포함한 메일을 전송합니다 + egovMultiPartEmail.send(recptnPerson, subject, emailCn, attachment); + } + else + { + // 메일을 전송합니다 + egovMultiPartEmail.send(recptnPerson, subject, emailCn); + } + + Throwable t = new Throwable(); + + } catch (MailParseException ex) { + sndngMailVO.setSndngResultCode("F"); // 발송결과 실패 + sndngMailRegistDAO.updateSndngMail(sndngMailVO); // 발송상태를 DB에 업데이트 한다. + LOGGER.error("Sending Mail Exception : {} [failure when parsing the message]", ex.getCause()); + return false; + } catch (MailAuthenticationException ex) { + sndngMailVO.setSndngResultCode("F"); // 발송결과 실패 + sndngMailRegistDAO.updateSndngMail(sndngMailVO); // 발송상태를 DB에 업데이트 한다. + LOGGER.error("Sending Mail Exception : {} [authentication failure]", ex.getCause()); + return false; + } catch (MailSendException ex) { + sndngMailVO.setSndngResultCode("F"); // 발송결과 실패 + sndngMailRegistDAO.updateSndngMail(sndngMailVO); // 발송상태를 DB에 업데이트 한다. + LOGGER.error("Sending Mail Exception : {} [failure when sending the message]", ex.getCause()); + return false; + } catch (Exception ex) { + sndngMailVO.setSndngResultCode("F"); // 발송결과 실패 + sndngMailRegistDAO.updateSndngMail(sndngMailVO); // 발송상태를 DB에 업데이트 한다. + LOGGER.error("Sending Mail Exception : {} [unknown Exception]", ex.getCause()); + LOGGER.debug(ex.getMessage()); + return false; + } + + return true; + } + +} diff --git a/src/main/java/egovframework/com/cop/ems/service/impl/SndngMailDetailDAO.java b/src/main/java/egovframework/com/cop/ems/service/impl/SndngMailDetailDAO.java new file mode 100644 index 00000000..d839eaa6 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/impl/SndngMailDetailDAO.java @@ -0,0 +1,66 @@ +package egovframework.com.cop.ems.service.impl; + +import java.util.List; + +import egovframework.com.cmm.service.impl.EgovComAbstractDAO; +import egovframework.com.cop.ems.service.SndngMailVO; + +import org.springframework.stereotype.Repository; + +/** + * 발송메일을 상세 조회하는 DAO 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *
    + *  
    + */ +@Repository("sndngMailDetailDAO") +public class SndngMailDetailDAO extends EgovComAbstractDAO { + + /** + * 발송메일을 상세 조회한다. + * @param vo SndngMailVO + * @return SndngMailVO + * @exception Exception + */ + public SndngMailVO selectSndngMail(SndngMailVO vo) throws Exception { + return (SndngMailVO) selectOne("sndngMailDetailDAO.selectSndngMail", vo); + } + + /** + * 발송메일에 첨부된 파일목록을 조회한다. + * @param vo SndngMailVO + * @return List + * @exception + */ + public List selectAtchmnFileList(SndngMailVO vo) { + return list("sndngMailDetailDAO.selectAtchmnFileList", vo); + } + + /** + * 발송메일을 삭제한다. + * @param vo SndngMailVO + * @exception + */ + public void deleteSndngMail(SndngMailVO vo) throws Exception { + delete("sndngMailDetailDAO.deleteSndngMail", vo); + } + + /** + * 첨부파일 목록을 삭제한다. + * @param vo SndngMailVO + * @exception + */ + public void deleteAtchmnFileList(SndngMailVO vo) throws Exception { + delete("sndngMailDetailDAO.deleteAtchmnFileList", vo); + } +} diff --git a/src/main/java/egovframework/com/cop/ems/service/impl/SndngMailDtlsDAO.java b/src/main/java/egovframework/com/cop/ems/service/impl/SndngMailDtlsDAO.java new file mode 100644 index 00000000..5d8a6331 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/impl/SndngMailDtlsDAO.java @@ -0,0 +1,48 @@ +package egovframework.com.cop.ems.service.impl; + +import java.util.List; + +import egovframework.com.cmm.ComDefaultVO; +import egovframework.com.cmm.service.impl.EgovComAbstractDAO; + +import org.springframework.stereotype.Repository; + +/** + * 발송메일 내역을 조회하는 DAO 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *
    + *  
    + */ +@Repository("sndngMailDtlsDAO") +public class SndngMailDtlsDAO extends EgovComAbstractDAO { + + /** + * 발송메일 목록을 조회한다. + * @param vo ComDefaultVO + * @return List + * @exception Exception + */ + public List selectSndngMailList(ComDefaultVO vo) throws Exception { + return list("SndngMailDtlsDAO.selectSndngMailList_D", vo); + } + + /** + * 발송메일 총건수를 조회한다. + * @param vo ComDefaultVO + * @return int + * @exception + */ + public int selectSndngMailListTotCnt(ComDefaultVO vo) { + return (Integer) selectOne("SndngMailDtlsDAO.selectSndngMailListTotCnt_S", vo); + } +} diff --git a/src/main/java/egovframework/com/cop/ems/service/impl/SndngMailRegistDAO.java b/src/main/java/egovframework/com/cop/ems/service/impl/SndngMailRegistDAO.java new file mode 100644 index 00000000..578f85a7 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/service/impl/SndngMailRegistDAO.java @@ -0,0 +1,60 @@ +package egovframework.com.cop.ems.service.impl; + +import java.util.List; + +import egovframework.com.cmm.service.impl.EgovComAbstractDAO; +import egovframework.com.cop.ems.service.SndngMailVO; + +import org.springframework.stereotype.Repository; + +/** + * 발송메일을 등록하는 DAO 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *
    + *  
    + */ +@Repository("sndngMailRegistDAO") +public class SndngMailRegistDAO extends EgovComAbstractDAO { + + /** + * 발송할 메일을 등록한다 + * @param vo SndngMailVO + * @return SndngMailVO + * @exception Exception + */ + public SndngMailVO insertSndngMail(SndngMailVO vo) throws Exception { + insert("sndngMailRegistDAO.insertSndngMail", vo); + return new SndngMailVO() ; + } + + /** + * 발송할 메일에 있는 첨부파일 목록을 조회한다. + * @param vo SndngMailVO + * @return List + * @exception Exception + */ + public List selectAtchmnFileList(SndngMailVO vo) throws Exception { + return selectList("sndngMailRegistDAO.selectAtchmnFileList", vo); + } + + /** + * 발송결과를 수정한다. + * @param vo SndngMailVO + * @return SndngMailVO + * @exception Exception + */ + public SndngMailVO updateSndngMail(SndngMailVO vo) throws Exception { + update("sndngMailRegistDAO.updateSndngMail", vo); + return new SndngMailVO(); + } +} diff --git a/src/main/java/egovframework/com/cop/ems/web/EgovSndngMailDetailController.java b/src/main/java/egovframework/com/cop/ems/web/EgovSndngMailDetailController.java new file mode 100644 index 00000000..2c1969a5 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/web/EgovSndngMailDetailController.java @@ -0,0 +1,163 @@ +package egovframework.com.cop.ems.web; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.PrintWriter; + +import egovframework.com.cmm.EgovWebUtil; +import egovframework.com.cmm.service.Globals; +import egovframework.com.cop.ems.service.EgovSndngMailDetailService; +import egovframework.com.cop.ems.service.SndngMailVO; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * 발송메일을 상세 조회하는 컨트롤러 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *  2011.10.10	이기하			보안점검 후속조치(교차접속 스크립트 공격 취약성 방지(파라미터 문자열 교체),
    + *  											  HTTP 응답분할 방지)
    + *  2017.03.03 	조성원 	시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754]
    + *
    + *  
    + */ +@Controller +public class EgovSndngMailDetailController { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovSndngMailDetailController.class); + + /** EgovSndngMailDetailService */ + @Resource(name = "sndngMailDetailService") + private EgovSndngMailDetailService sndngMailDetailService; + + /** + * 발송메일을 상세 조회한다. + * @param sndngMailVO SndngMailVO + * @return String + * @exception Exception + */ + @RequestMapping(value = "/cop/ems/selectSndngMailDetail.do") + public String selectSndngMail(@ModelAttribute("sndngMailVO") SndngMailVO sndngMailVO, ModelMap model) throws Exception { + + if (sndngMailVO == null || sndngMailVO.getMssageId() == null || sndngMailVO.getMssageId().equals("")) { + return "egovframework/com/cmm/egovError"; + } + + // 1. 발송메일을 상세 조회한다. + SndngMailVO resultMailVO = sndngMailDetailService.selectSndngMail(sndngMailVO); + + // 2. 결과 리턴 + model.addAttribute("resultInfo", resultMailVO); + if (!resultMailVO.getMssageId().equals("")) { + // 발송메일 상세조회 화면 이동 + return "egovframework/com/cop/ems/EgovMailDetail"; + } else { + // 오류 페이지 이동 + return "egovframework/com/cmm/egovError"; + } + } + + /** + * 발송메일을 삭제한다. + * @param sndngMailVO SndngMailVO + * @return String + * @exception Exception + */ + @RequestMapping(value = "/cop/ems/deleteSndngMail.do") + public String deleteSndngMail(@ModelAttribute("sndngMailVO") SndngMailVO sndngMailVO, ModelMap model) throws Exception { + + if (sndngMailVO == null || sndngMailVO.getMssageId() == null || sndngMailVO.getMssageId().equals("")) { + return "egovframework/com/cmm/egovError"; + } + + // 1. 발송메일을 삭제한다. + sndngMailDetailService.deleteSndngMail(sndngMailVO); + + // 2. 첨부파일을 삭제한다. + sndngMailDetailService.deleteAtchmnFile(sndngMailVO); + + // 3. 발송메일 목록 페이지 이동 + return "redirect:/cop/ems/selectSndngMailList.do"; + } + + /** + * 발송메일 내용조회로 돌아간다. + * @param sndngMailVO SndngMailVO + * @return String + * @exception Exception + */ + @RequestMapping(value = "/cop/ems/backSndngMailDetail.do") + public String backSndngMailDtls(@ModelAttribute("sndngMailVO") SndngMailVO sndngMailVO, ModelMap model) throws Exception { + + return "redirect:/cop/ems/selectSndngMailList.do"; + } + + /** + * XML형태의 발송요청메일을 조회한다. + * @param sndngMailVO SndngMailVO + * @exception Exception + */ + @RequestMapping(value = "/cop/ems/selectSndngMailXml.do") + public void selectSndngMailXml(@ModelAttribute("sndngMailVO") SndngMailVO sndngMailVO, HttpServletResponse response, ModelMap model) throws Exception { + String xmlFile = Globals.MAIL_REQUEST_PATH + sndngMailVO.getMssageId() + ".xml"; + File uFile = new File(EgovWebUtil.filePathBlackList(xmlFile)); + int fSize = (int) uFile.length(); + + if (fSize > 0) { + String mimetype = "application/x-msdownload;charset=UTF-8"; + + response.setContentType(mimetype); + response.setHeader("Content-Disposition", "attachment; filename=\"" + uFile.getName() + "\""); + response.setContentLength(fSize); + + BufferedInputStream in = null; + try { + in = new BufferedInputStream(new FileInputStream(uFile)); + FileCopyUtils.copy(in, response.getOutputStream()); + } finally { + if (in != null) { + try { + in.close(); + //2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + }catch (IOException ignore){ + LOGGER.error("[IOException] : Connection Close"); + } catch (Exception ignore) { + LOGGER.error("["+ ignore.getClass() +"] : Connection Close ", ignore.getMessage()); + } + } + } + response.getOutputStream().flush(); + response.getOutputStream().close(); + } else { + response.setContentType("application/x-msdownload"); + PrintWriter printwriter = response.getWriter(); + printwriter.println(""); + printwriter.println("


    Could not get file name:
    " + EgovWebUtil.clearXSSMinimum(xmlFile) + "

    "); + printwriter.println("


    Back

    "); + printwriter.println("


    © webAccess"); + printwriter.println(""); + printwriter.flush(); + printwriter.close(); + } + } +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/cop/ems/web/EgovSndngMailDtlsController.java b/src/main/java/egovframework/com/cop/ems/web/EgovSndngMailDtlsController.java new file mode 100644 index 00000000..767916c7 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/web/EgovSndngMailDtlsController.java @@ -0,0 +1,107 @@ +package egovframework.com.cop.ems.web; + +import java.util.List; + +import egovframework.com.cmm.ComDefaultVO; +import egovframework.com.cmm.EgovMessageSource; +import egovframework.com.cmm.annotation.IncludedInfo; +import egovframework.com.cop.ems.service.EgovSndngMailDtlsService; +import egovframework.com.cop.ems.service.SndngMailVO; + +import egovframework.rte.fdl.property.EgovPropertyService; +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * 발송메일 내역을 조회하는 컨트롤러 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.12  박지욱          최초 생성
    + *
    + *  
    + */ +@Controller +public class EgovSndngMailDtlsController { + + /** EgovSndngMailDtlsService */ + @Resource(name = "sndngMailDtlsService") + private EgovSndngMailDtlsService sndngMailDtlsService; + + /** EgovPropertyService */ + @Resource(name = "propertiesService") + protected EgovPropertyService propertiesService; + + /** EgovMessageSource */ + @Resource(name = "egovMessageSource") + EgovMessageSource egovMessageSource; + + /** + * 발송메일 내역을 조회한다 + * @param searchVO ComDefaultVO + * @return String + * @exception Exception + */ + @IncludedInfo(name = "발송메일내역", order = 361, gid = 40) + @RequestMapping(value = "/cop/ems/selectSndngMailList.do") + public String selectSndngMailList(@ModelAttribute("searchVO") ComDefaultVO searchVO, ModelMap model) throws Exception { + + // 발송메일 내역 조회 + /** EgovPropertyService.sample */ + searchVO.setPageUnit(propertiesService.getInt("pageUnit")); + searchVO.setPageSize(propertiesService.getInt("pageSize")); + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(searchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(searchVO.getPageUnit()); + paginationInfo.setPageSize(searchVO.getPageSize()); + + searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + List sndngMailList = sndngMailDtlsService.selectSndngMailList(searchVO); + model.addAttribute("resultList", sndngMailList); + + int totCnt = sndngMailDtlsService.selectSndngMailListTotCnt(searchVO); + paginationInfo.setTotalRecordCount(totCnt); + model.addAttribute("paginationInfo", paginationInfo); + model.addAttribute("message", egovMessageSource.getMessage("success.common.select")); + + return "egovframework/com/cop/ems/EgovMailDtls"; + } + + /** + * 발송메일을 삭제한다. + * @param sndngMailVO SndngMailVO + * @return String + * @exception + */ + @RequestMapping(value = "/cop/ems/deleteSndngMailList.do") + public String deleteSndngMailList(@ModelAttribute("sndngMailVO") SndngMailVO sndngMailVO, ModelMap model) throws Exception { + + if (sndngMailVO == null || sndngMailVO.getMssageId() == null || sndngMailVO.getMssageId().equals("")) { + return "egovframework/com/cmm/egovError"; + } + + // 1. 발송메일을 삭제한다. + sndngMailDtlsService.deleteSndngMailList(sndngMailVO); + + // 2. 발송메일 목록 페이지 이동 + return "redirect:/cop/ems/selectSndngMailList.do"; + } +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/cop/ems/web/EgovSndngMailRegistController.java b/src/main/java/egovframework/com/cop/ems/web/EgovSndngMailRegistController.java new file mode 100644 index 00000000..e3d4d415 --- /dev/null +++ b/src/main/java/egovframework/com/cop/ems/web/EgovSndngMailRegistController.java @@ -0,0 +1,148 @@ +package egovframework.com.cop.ems.web; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.annotation.IncludedInfo; +import egovframework.com.cmm.service.EgovFileMngService; +import egovframework.com.cmm.service.EgovFileMngUtil; +import egovframework.com.cmm.service.FileVO; +import egovframework.com.cmm.util.EgovUserDetailsHelper; +import egovframework.com.cop.ems.service.EgovSndngMailRegistService; +import egovframework.com.cop.ems.service.SndngMailVO; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +/** + * 발송메일등록, 발송요청XML파일 생성하는 컨트롤러 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.12 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      	수정자          수정내용
    + *  ----------     --------    ---------------------------
    + *  2009.03.12  	박지욱          최초 생성
    + *  2011.12.06  	이기하          메일 첨부파일이 기능 추가
    + *  2015.05.08  	조정국          오류페이지 표시 경로 수정 - insertSndngMail()
    + *
    + *  
    + */ +@Controller +public class EgovSndngMailRegistController { + + /** EgovSndngMailRegistService */ + @Resource(name = "sndngMailRegistService") + private EgovSndngMailRegistService sndngMailRegistService; + + /** EgovFileMngService */ + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileMngService; + + /** EgovFileMngUtil */ + @Resource(name = "EgovFileMngUtil") + private EgovFileMngUtil fileUtil; + + /** 파일구분자 */ + static final char FILE_SEPARATOR = File.separatorChar; + + /** + * 발송메일 등록화면으로 들어간다 + * @param sndngMailVO SndngMailVO + * @return String + * @exception Exception + */ + @IncludedInfo(name = "메일발송", order = 360, gid = 40) + @RequestMapping(value = "/cop/ems/insertSndngMailView.do") + public String insertSndngMailView(@ModelAttribute("sndngMailVO") SndngMailVO sndngMailVO, ModelMap model) throws Exception { + + model.addAttribute("resultInfo", sndngMailVO); + return "egovframework/com/cop/ems/EgovMailRegist"; + } + + /** + * 발송메일을 등록한다 + * @param multiRequest MultipartHttpServletRequest + * @param sndngMailVO SndngMailVO + * @return String + * @exception Exception + */ + @RequestMapping(value = "/cop/ems/insertSndngMail.do") + public String insertSndngMail(final MultipartHttpServletRequest multiRequest, @ModelAttribute("sndngMailVO") SndngMailVO sndngMailVO, ModelMap model, HttpServletRequest request) + throws Exception { + + String link = "N"; + if (sndngMailVO != null && sndngMailVO.getLink() != null && !sndngMailVO.getLink().equals("")) { + link = sndngMailVO.getLink(); + } + + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + // KISA 보안취약점 조치 (2018-12-10, 신용호) + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + + if(!isAuthenticated) { + return "egovframework/com/uat/uia/EgovLoginUsr"; + } + + List _result = new ArrayList(); + String _atchFileId = ""; + final Map files = multiRequest.getFileMap(); + if (!files.isEmpty()) { + _result = fileUtil.parseFileInf(files, "MSG_", 0, "", ""); + _atchFileId = fileMngService.insertFileInfs(_result); //파일이 생성되고나면 생성된 첨부파일 ID를 리턴한다. + + } + + String orignlFileList = ""; + + for (int i = 0; i < _result.size(); i++) { + FileVO fileVO = _result.get(i); + orignlFileList = fileVO.getOrignlFileNm(); + } + + if (sndngMailVO != null) { + sndngMailVO.setAtchFileId(_atchFileId); + sndngMailVO.setDsptchPerson(user.getId()); + sndngMailVO.setOrignlFileNm(orignlFileList); + } + + // 발송메일을 등록한다. + boolean result = sndngMailRegistService.insertSndngMail(sndngMailVO); + if (result) { + if (link.equals("N")) { + return "redirect:/cop/ems/selectSndngMailList.do"; + } else { + model.addAttribute("closeYn", "Y"); + return "egovframework/com/cop/ems/EgovMailRegist"; + } + } else { + return "egovframework/com/cmm/error/egovError"; + } + } + + /** + * 발송메일 내용조회로 돌아간다. + * @param sndngMailVO SndngMailVO + * @return String + * @exception Exception + */ + @RequestMapping(value = "/cop/ems/backSndngMailRegist.do") + public String backSndngMailRegist(@ModelAttribute("sndngMailVO") SndngMailVO sndngMailVO, ModelMap model) throws Exception { + + return "redirect:/cop/ems/selectSndngMailList.do"; + } +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/sec/ram/service/AuthorManage.java b/src/main/java/egovframework/com/sec/ram/service/AuthorManage.java new file mode 100644 index 00000000..d5c6c43c --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/service/AuthorManage.java @@ -0,0 +1,124 @@ +package egovframework.com.sec.ram.service; + +import egovframework.com.cmm.ComDefaultVO; + +/** + * 권한관리에 대한 model 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.20  이문준          최초 생성
    + *
    + * 
    + */ + +public class AuthorManage extends ComDefaultVO { + + /** + * serialVersionUID + */ + private static final long serialVersionUID = 1L; + /** + * 권한관리 + */ + private AuthorManage authorManage; + /** + * 권한코드 + */ + private String authorCode; + /** + * 권한등록일자 + */ + private String authorCreatDe; + /** + * 권한코드설명 + */ + private String authorDc; + /** + * 권한 명 + */ + private String authorNm; + + /** + * authorManage attribute 를 리턴한다. + * @return AuthorManage + */ + public AuthorManage getAuthorManage() { + return authorManage; + } + /** + * authorManage attribute 값을 설정한다. + * @param authorManage AuthorManage + */ + public void setAuthorManage(AuthorManage authorManage) { + this.authorManage = authorManage; + } + /** + * authorCode attribute 를 리턴한다. + * @return String + */ + public String getAuthorCode() { + return authorCode; + } + /** + * authorCode attribute 값을 설정한다. + * @param authorCode String + */ + public void setAuthorCode(String authorCode) { + this.authorCode = authorCode; + } + /** + * authorCreatDe attribute 를 리턴한다. + * @return String + */ + public String getAuthorCreatDe() { + return authorCreatDe; + } + /** + * authorCreatDe attribute 값을 설정한다. + * @param authorCreatDe String + */ + public void setAuthorCreatDe(String authorCreatDe) { + this.authorCreatDe = authorCreatDe; + } + /** + * authorDc attribute 를 리턴한다. + * @return String + */ + public String getAuthorDc() { + return authorDc; + } + /** + * authorDc attribute 값을 설정한다. + * @param authorDc String + */ + public void setAuthorDc(String authorDc) { + this.authorDc = authorDc; + } + /** + * authorNm attribute 를 리턴한다. + * @return String + */ + public String getAuthorNm() { + return authorNm; + } + /** + * authorNm attribute 값을 설정한다. + * @param authorNm String + */ + public void setAuthorNm(String authorNm) { + this.authorNm = authorNm; + } + + + + + +} diff --git a/src/main/java/egovframework/com/sec/ram/service/AuthorManageVO.java b/src/main/java/egovframework/com/sec/ram/service/AuthorManageVO.java new file mode 100644 index 00000000..241281d5 --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/service/AuthorManageVO.java @@ -0,0 +1,47 @@ +package egovframework.com.sec.ram.service; + +import java.util.List; + +/** + * 권한관리에 대한 Vo 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.20  이문준          최초 생성
    + *
    + * 
    + */ + +public class AuthorManageVO extends AuthorManage { + + private static final long serialVersionUID = 1L; + + List authorManageList; + + + /** + * authorManageList attribute 를 리턴한다. + * @return List + */ + public List getAuthorManageList() { + return authorManageList; + } + + /** + * authorManageList attribute 값을 설정한다. + * @param authorManageList List + */ + public void setAuthorManageList(List authorManageList) { + this.authorManageList = authorManageList; + } + + + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/sec/ram/service/AuthorRoleManage.java b/src/main/java/egovframework/com/sec/ram/service/AuthorRoleManage.java new file mode 100644 index 00000000..be709666 --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/service/AuthorRoleManage.java @@ -0,0 +1,210 @@ +package egovframework.com.sec.ram.service; + +import egovframework.com.cmm.ComDefaultVO; + +/** + * 권한별 롤 관리에 대한 model 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.20  이문준          최초 생성
    + *
    + * 
    + */ + +public class AuthorRoleManage extends ComDefaultVO { + + /** + * serialVersionUID + */ + private static final long serialVersionUID = 1L; + /** + * 권한 롤 관리 + */ + private AuthorRoleManage authorRole; + /** + * 권한코드 + */ + private String authorCode; + /** + * 롤코드 + */ + private String roleCode; + /** + * 롤명 + */ + private String roleNm; + /** + * 롤 패턴 + */ + private String rolePtn; + /** + * 롤 설명 + */ + private String roleDc; + /** + * 롤 타입 + */ + private String roleTyp; + /** + * 롤 순서정렬 + */ + private String roleSort; + /** + * 롤 등록여부 + */ + private String regYn; + /** + * 등록일자 + */ + private String creatDt; + /** + * authorRole attribute 를 리턴한다. + * @return AuthorRoleManage + */ + public AuthorRoleManage getAuthorRole() { + return authorRole; + } + /** + * authorRole attribute 값을 설정한다. + * @param authorRole AuthorRoleManage + */ + public void setAuthorRole(AuthorRoleManage authorRole) { + this.authorRole = authorRole; + } + /** + * authorCode attribute 를 리턴한다. + * @return String + */ + public String getAuthorCode() { + return authorCode; + } + /** + * authorCode attribute 값을 설정한다. + * @param authorCode String + */ + public void setAuthorCode(String authorCode) { + this.authorCode = authorCode; + } + /** + * roleCode attribute 를 리턴한다. + * @return String + */ + public String getRoleCode() { + return roleCode; + } + /** + * roleCode attribute 값을 설정한다. + * @param roleCode String + */ + public void setRoleCode(String roleCode) { + this.roleCode = roleCode; + } + /** + * roleNm attribute 를 리턴한다. + * @return String + */ + public String getRoleNm() { + return roleNm; + } + /** + * roleNm attribute 값을 설정한다. + * @param roleNm String + */ + public void setRoleNm(String roleNm) { + this.roleNm = roleNm; + } + /** + * rolePtn attribute 를 리턴한다. + * @return String + */ + public String getRolePtn() { + return rolePtn; + } + /** + * rolePtn attribute 값을 설정한다. + * @param rolePtn String + */ + public void setRolePtn(String rolePtn) { + this.rolePtn = rolePtn; + } + /** + * roleDc attribute 를 리턴한다. + * @return String + */ + public String getRoleDc() { + return roleDc; + } + /** + * roleDc attribute 값을 설정한다. + * @param roleDc String + */ + public void setRoleDc(String roleDc) { + this.roleDc = roleDc; + } + /** + * roleTyp attribute 를 리턴한다. + * @return String + */ + public String getRoleTyp() { + return roleTyp; + } + /** + * roleTyp attribute 값을 설정한다. + * @param roleTyp String + */ + public void setRoleTyp(String roleTyp) { + this.roleTyp = roleTyp; + } + /** + * roleSort attribute 를 리턴한다. + * @return String + */ + public String getRoleSort() { + return roleSort; + } + /** + * roleSort attribute 값을 설정한다. + * @param roleSort String + */ + public void setRoleSort(String roleSort) { + this.roleSort = roleSort; + } + /** + * regYn attribute 를 리턴한다. + * @return String + */ + public String getRegYn() { + return regYn; + } + /** + * regYn attribute 값을 설정한다. + * @param regYn String + */ + public void setRegYn(String regYn) { + this.regYn = regYn; + } + /** + * creatDt attribute 를 리턴한다. + * @return String + */ + public String getCreatDt() { + return creatDt; + } + /** + * creatDt attribute 값을 설정한다. + * @param creatDt String + */ + public void setCreatDt(String creatDt) { + this.creatDt = creatDt; + } + + +} diff --git a/src/main/java/egovframework/com/sec/ram/service/AuthorRoleManageVO.java b/src/main/java/egovframework/com/sec/ram/service/AuthorRoleManageVO.java new file mode 100644 index 00000000..de8da9e3 --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/service/AuthorRoleManageVO.java @@ -0,0 +1,46 @@ +package egovframework.com.sec.ram.service; + +import java.util.List; + +/** + * 권한별 롤 관리에 대한 Vo 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.20  이문준          최초 생성
    + *
    + * 
    + */ + +public class AuthorRoleManageVO extends AuthorRoleManage { + + private static final long serialVersionUID = 1L; + + List authorRoleList; + + /** + * authorRoleList attribute 를 리턴한다. + * @return List + */ + public List getAuthorRoleList() { + return authorRoleList; + } + + /** + * authorRoleList attribute 값을 설정한다. + * @param authorRoleList List + */ + public void setAuthorRoleList(List authorRoleList) { + this.authorRoleList = authorRoleList; + } + + + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/sec/ram/service/EgovAuthorManageService.java b/src/main/java/egovframework/com/sec/ram/service/EgovAuthorManageService.java new file mode 100644 index 00000000..43881199 --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/service/EgovAuthorManageService.java @@ -0,0 +1,75 @@ +package egovframework.com.sec.ram.service; + +import java.util.List; + +/** + * 권한관리에 관한 서비스 인터페이스 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.20  이문준          최초 생성
    + *
    + * 
    + */ + +public interface EgovAuthorManageService { + /** + * 모든 권한목록을 조회한다. + * @param authorManageVO AuthorManageVO + * @return List + * @exception Exception + */ + public List selectAuthorAllList(AuthorManageVO authorManageVO) throws Exception; + + /** + * 시스템 사용자중 불필요한 시스템권한정보를 화면에 조회하여 데이터베이스에서 삭제 + * @param authorManage AuthorManage + * @exception Exception + */ + public void deleteAuthor(AuthorManage authorManage) throws Exception; + + /** + * 사용자의 시스테접근권한를 화면에서 입력하여 입력항목의 정합성을 체크하고 데이터베이스에 저장 + * @param authorManage AuthorManage + * @exception Exception + */ + public void insertAuthor(AuthorManage authorManage) throws Exception; + + /** + * 개별사용자에게 할당된 권한 조회 + * @param authorManageVO AuthorManageVO + * @exception Exception + */ + public AuthorManageVO selectAuthor(AuthorManageVO authorManageVO) throws Exception; + + /** + * 개별사용자에게 할당된 권한리스트 조회 + * @param authorManageVO AuthorManageVO + * @return List + * @exception Exception + */ + public List selectAuthorList(AuthorManageVO authorManageVO) throws Exception; + + /** + * 화면에 조회된 사용자권한정보를 수정하여 항목의 정합성을 체크하고 수정된 데이터를 데이터베이스에 반영 + * @param authorManage AuthorManage + * @exception Exception + */ + public void updateAuthor(AuthorManage authorManage) throws Exception; + + /** + * 목록조회 카운트를 반환한다 + * @param authorManageVO AuthorManageVO + * @return int + * @exception Exception + */ + public int selectAuthorListTotCnt(AuthorManageVO authorManageVO) throws Exception; + +} diff --git a/src/main/java/egovframework/com/sec/ram/service/EgovAuthorRoleManageService.java b/src/main/java/egovframework/com/sec/ram/service/EgovAuthorRoleManageService.java new file mode 100644 index 00000000..f093a697 --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/service/EgovAuthorRoleManageService.java @@ -0,0 +1,68 @@ +package egovframework.com.sec.ram.service; + +import java.util.List; + +/** + * 권한별 롤 관리에 관한 서비스 인터페이스 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.20  이문준          최초 생성
    + *
    + * 
    + */ + +public interface EgovAuthorRoleManageService { + + /** + * 권한 롤 관계정보를 조회 + * @param authorRoleManageVO AuthorRoleManageVO + * @exception Exception + */ + public AuthorRoleManageVO selectAuthorRole(AuthorRoleManageVO authorRoleManageVO) throws Exception; + + /** + * 권한 롤 관계정보 목록 조회 + * @param authorRoleManageVO AuthorRoleManageVO + * @return List + * @exception Exception + */ + public List selectAuthorRoleList(AuthorRoleManageVO authorRoleManageVO) throws Exception; + + /** + * 권한 롤 관계정보를 화면에서 입력하여 입력항목의 정합성을 체크하고 데이터베이스에 저장 + * @param authorRoleManage AuthorRoleManage + * @exception Exception + */ + public void insertAuthorRole(AuthorRoleManage authorRoleManage) throws Exception; + + /** + * 수정된 권한 롤 관계정보를 데이터베이스에 반영 + * @param authorRoleManage AuthorRoleManage + * @exception Exception + */ + public void updateAuthorRole(AuthorRoleManage authorRoleManage) throws Exception; + + /** + * 권한 롤 관계정보를 화면에 조회하여 데이터베이스에서 삭제 + * @param authorRoleManage AuthorRoleManage + * @exception Exception + */ + public void deleteAuthorRole(AuthorRoleManage authorRoleManage) throws Exception; + + /** + * 목록조회 카운트를 반환한다 + * @param authorRoleManageVO AuthorRoleManageVO + * @return int + * @exception Exception + */ + public int selectAuthorRoleListTotCnt(AuthorRoleManageVO authorRoleManageVO) throws Exception; + +} diff --git a/src/main/java/egovframework/com/sec/ram/service/impl/AuthorManageDAO.java b/src/main/java/egovframework/com/sec/ram/service/impl/AuthorManageDAO.java new file mode 100644 index 00000000..708b8d19 --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/service/impl/AuthorManageDAO.java @@ -0,0 +1,99 @@ +package egovframework.com.sec.ram.service.impl; + +import java.util.List; + +import egovframework.com.cmm.service.impl.EgovComAbstractDAO; +import egovframework.com.sec.ram.service.AuthorManage; +import egovframework.com.sec.ram.service.AuthorManageVO; + +import org.springframework.stereotype.Repository; + +/** + * 권한관리에 대한 DAO 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.11  이문준          최초 생성
    + *
    + * 
    + */ + +@Repository("authorManageDAO") +public class AuthorManageDAO extends EgovComAbstractDAO { + + /** + * 권한목록을 조회한다. + * @param authorManageVO AuthorManageVO + * @return List + * @exception Exception + */ + @SuppressWarnings("unchecked") + public List selectAuthorList(AuthorManageVO authorManageVO) throws Exception { + return (List) list("authorManageDAO.selectAuthorList", authorManageVO); + } + + /** + * 권한을 등록한다. + * @param authorManage AuthorManage + * @exception Exception + */ + public void insertAuthor(AuthorManage authorManage) throws Exception { + insert("authorManageDAO.insertAuthor", authorManage); + } + + /** + * 권한을 수정한다. + * @param authorManage AuthorManage + * @exception Exception + */ + public void updateAuthor(AuthorManage authorManage) throws Exception { + update("authorManageDAO.updateAuthor", authorManage); + } + + /** + * 권한을 삭제한다. + * @param authorManage AuthorManage + * @exception Exception + */ + public void deleteAuthor(AuthorManage authorManage) throws Exception { + delete("authorManageDAO.deleteAuthor", authorManage); + } + + /** + * 권한을 조회한다. + * @param authorManageVO AuthorManageVO + * @return AuthorManageVO + * @exception Exception + */ + public AuthorManageVO selectAuthor(AuthorManageVO authorManageVO) throws Exception { + return (AuthorManageVO) selectOne("authorManageDAO.selectAuthor", authorManageVO); + } + + /** + * 권한목록 총 갯수를 조회한다. + * @param authorManageVO AuthorManageVO + * @return int + * @exception Exception + */ + public int selectAuthorListTotCnt(AuthorManageVO authorManageVO) throws Exception { + return (Integer)selectOne("authorManageDAO.selectAuthorListTotCnt", authorManageVO); + } + + /** + * 모든 권한목록을 조회한다. + * @param authorManageVO AuthorManageVO + * @return List + * @exception Exception + */ + @SuppressWarnings("unchecked") + public List selectAuthorAllList(AuthorManageVO authorManageVO) throws Exception { + return (List) list("authorManageDAO.selectAuthorAllList", authorManageVO); + } +} diff --git a/src/main/java/egovframework/com/sec/ram/service/impl/AuthorRoleManageDAO.java b/src/main/java/egovframework/com/sec/ram/service/impl/AuthorRoleManageDAO.java new file mode 100644 index 00000000..fbc9407c --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/service/impl/AuthorRoleManageDAO.java @@ -0,0 +1,89 @@ +package egovframework.com.sec.ram.service.impl; + +import java.util.List; + +import egovframework.com.cmm.service.impl.EgovComAbstractDAO; +import egovframework.com.sec.ram.service.AuthorRoleManage; +import egovframework.com.sec.ram.service.AuthorRoleManageVO; + +import org.springframework.stereotype.Repository; + +/** + * 권한별 롤관리에 대한 DAO 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.11  이문준          최초 생성
    + *
    + * 
    + */ + +@Repository("authorRoleManageDAO") +public class AuthorRoleManageDAO extends EgovComAbstractDAO { + + /** + * 권한 롤 관계정보를 조회 + * @param authorRoleManageVO AuthorRoleManageVO + * @return AuthorRoleManageVO + * @exception Exception + */ + public AuthorRoleManageVO selectAuthorRole(AuthorRoleManageVO authorRoleManageVO) throws Exception { + return (AuthorRoleManageVO) selectOne("authorRoleManageDAO.selectAuthorRole", authorRoleManageVO); + } + + /** + * 권한 롤 관계정보 목록 조회 + * @param authorRoleManageVO AuthorRoleManageVO + * @return List + * @exception Exception + */ + @SuppressWarnings("unchecked") + public List selectAuthorRoleList(AuthorRoleManageVO authorRoleManageVO) throws Exception { + return (List) list("authorRoleManageDAO.selectAuthorRoleList", authorRoleManageVO); + } + + /** + * 권한 롤 관계정보를 화면에서 입력하여 입력항목의 정합성을 체크하고 데이터베이스에 저장 + * @param authorRoleManage AuthorRoleManage + * @exception Exception + */ + public void insertAuthorRole(AuthorRoleManage authorRoleManage) throws Exception { + insert("authorRoleManageDAO.insertAuthorRole", authorRoleManage); + } + + /** + * 수정된 권한 롤 관계정보를 데이터베이스에 반영 + * @param authorRoleManage AuthorRoleManage + * @exception Exception + */ + public void updateAuthorRole(AuthorRoleManage authorRoleManage) throws Exception { + update("authorRoleManageDAO.updateAuthorRole", authorRoleManage); + } + + /** + * 권한 롤 관계정보를 화면에 조회하여 데이터베이스에서 삭제 + * @param authorRoleManage AuthorRoleManage + * @exception Exception + */ + public void deleteAuthorRole(AuthorRoleManage authorRoleManage) throws Exception { + delete("authorRoleManageDAO.deleteAuthorRole", authorRoleManage); + } + + /** + * 목록조회 카운트를 반환한다 + * @param authorRoleManageVO AuthorRoleManageVO + * @return int + * @exception Exception + */ + public int selectAuthorRoleListTotCnt(AuthorRoleManageVO authorRoleManageVO) throws Exception { + return (Integer)selectOne("authorRoleManageDAO.selectAuthorRoleListTotCnt", authorRoleManageVO); + } + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/sec/ram/service/impl/EgovAuthorManageServiceImpl.java b/src/main/java/egovframework/com/sec/ram/service/impl/EgovAuthorManageServiceImpl.java new file mode 100644 index 00000000..ad7c3673 --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/service/impl/EgovAuthorManageServiceImpl.java @@ -0,0 +1,107 @@ +package egovframework.com.sec.ram.service.impl; + +import java.util.List; + +import egovframework.com.sec.ram.service.AuthorManage; +import egovframework.com.sec.ram.service.AuthorManageVO; +import egovframework.com.sec.ram.service.EgovAuthorManageService; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +/** + * 권한관리에 관한 ServiceImpl 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.11  이문준          최초 생성
    + *
    + * 
    + */ + +@Service("egovAuthorManageService") +public class EgovAuthorManageServiceImpl extends EgovAbstractServiceImpl implements EgovAuthorManageService { + + @Resource(name="authorManageDAO") + private AuthorManageDAO authorManageDAO; + + /** + * 권한 목록을 조회한다. + * @param authorManageVO AuthorManageVO + * @return List + * @exception Exception + */ + public List selectAuthorList(AuthorManageVO authorManageVO) throws Exception { + return authorManageDAO.selectAuthorList(authorManageVO); + } + + /** + * 권한을 등록한다. + * @param authorManage AuthorManage + * @exception Exception + */ + public void insertAuthor(AuthorManage authorManage) throws Exception { + authorManageDAO.insertAuthor(authorManage); + } + + /** + * 권한을 수정한다. + * @param authorManage AuthorManage + * @exception Exception + */ + public void updateAuthor(AuthorManage authorManage) throws Exception { + authorManageDAO.updateAuthor(authorManage); + } + + /** + * 권한을 삭제한다. + * @param authorManage AuthorManage + * @exception Exception + */ + public void deleteAuthor(AuthorManage authorManage) throws Exception { + authorManageDAO.deleteAuthor(authorManage); + } + + /** + * 권한을 조회한다. + * @param authorManageVO AuthorManageVO + * @return AuthorManageVO + * @exception Exception + */ + public AuthorManageVO selectAuthor(AuthorManageVO authorManageVO) throws Exception { + AuthorManageVO resultVO = authorManageDAO.selectAuthor(authorManageVO); + if (resultVO == null) + throw processException("info.nodata.msg"); + return resultVO; + } + + /** + * 권한 목록 카운트를 조회한다. + * @param authorManageVO AuthorManageVO + * @return int + * @exception Exception + */ + public int selectAuthorListTotCnt(AuthorManageVO authorManageVO) throws Exception { + return authorManageDAO.selectAuthorListTotCnt(authorManageVO); + } + + /** + * 모든 권한목록을 조회한다. + * @param authorManageVO AuthorManageVO + * @return List + * @exception Exception + */ + public List selectAuthorAllList(AuthorManageVO authorManageVO) throws Exception { + return authorManageDAO.selectAuthorAllList(authorManageVO); + } +} diff --git a/src/main/java/egovframework/com/sec/ram/service/impl/EgovAuthorRoleManageServiceImpl.java b/src/main/java/egovframework/com/sec/ram/service/impl/EgovAuthorRoleManageServiceImpl.java new file mode 100644 index 00000000..cf0f7b89 --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/service/impl/EgovAuthorRoleManageServiceImpl.java @@ -0,0 +1,94 @@ +package egovframework.com.sec.ram.service.impl; + +import java.util.List; + +import egovframework.com.sec.ram.service.AuthorRoleManage; +import egovframework.com.sec.ram.service.AuthorRoleManageVO; +import egovframework.com.sec.ram.service.EgovAuthorRoleManageService; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +/** + * 권한별 롤관리에 대한 DAO 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.11  이문준          최초 생성
    + *
    + * 
    + */ + +@Service("egovAuthorRoleManageService") +public class EgovAuthorRoleManageServiceImpl extends EgovAbstractServiceImpl implements EgovAuthorRoleManageService { + + @Resource(name="authorRoleManageDAO") + private AuthorRoleManageDAO authorRoleManageDAO; + + /** + * 권한 롤 관계정보를 조회 + * @param authorRoleManageVO AuthorRoleManageVO + * @return AuthorRoleManageVO + * @exception Exception + */ + public AuthorRoleManageVO selectAuthorRole(AuthorRoleManageVO authorRoleManageVO) throws Exception { + return authorRoleManageDAO.selectAuthorRole(authorRoleManageVO); + } + + /** + * 권한 롤 관계정보 목록 조회 + * @param authorRoleManageVO AuthorRoleManageVO + * @return List + * @exception Exception + */ + public List selectAuthorRoleList(AuthorRoleManageVO authorRoleManageVO) throws Exception { + return authorRoleManageDAO.selectAuthorRoleList(authorRoleManageVO); + } + + /** + * 권한 롤 관계정보를 화면에서 입력하여 입력항목의 정합성을 체크하고 데이터베이스에 저장 + * @param authorRoleManage AuthorRoleManage + * @exception Exception + */ + public void insertAuthorRole(AuthorRoleManage authorRoleManage) throws Exception { + authorRoleManageDAO.insertAuthorRole(authorRoleManage); + } + + /** + * 수정된 권한 롤 관계정보를 데이터베이스에 반영 + * @param authorRoleManage AuthorRoleManage + * @exception Exception + */ + public void updateAuthorRole(AuthorRoleManage authorRoleManage) throws Exception { + authorRoleManageDAO.updateAuthorRole(authorRoleManage); + } + + /** + * 권한 롤 관계정보를 화면에 조회하여 데이터베이스에서 삭제 + * @param authorRoleManage AuthorRoleManage + * @exception Exception + */ + public void deleteAuthorRole(AuthorRoleManage authorRoleManage) throws Exception { + authorRoleManageDAO.deleteAuthorRole(authorRoleManage); + } + + /** + * 목록조회 카운트를 반환한다 + * @param authorRoleManageVO AuthorRoleManageVO + * @return int + * @exception Exception + */ + public int selectAuthorRoleListTotCnt(AuthorRoleManageVO authorRoleManageVO) throws Exception { + return authorRoleManageDAO.selectAuthorRoleListTotCnt(authorRoleManageVO); + } +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/sec/ram/service/impl/EgovUserDetailsSecurityServiceImpl.java b/src/main/java/egovframework/com/sec/ram/service/impl/EgovUserDetailsSecurityServiceImpl.java new file mode 100644 index 00000000..59cc693b --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/service/impl/EgovUserDetailsSecurityServiceImpl.java @@ -0,0 +1,65 @@ +package egovframework.com.sec.ram.service.impl; + +import java.util.List; + +import egovframework.com.cmm.service.EgovUserDetailsService; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; + +/** + *권한관리 인증에 대한 ServiceImpl 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.11  이문준          최초 생성
    + *
    + * 
    + */ + +public class EgovUserDetailsSecurityServiceImpl extends EgovAbstractServiceImpl implements EgovUserDetailsService { + + + /** + * 인증된 사용자객체를 VO형식으로 가져온다. + * @return Object - 사용자 ValueObject + */ + public Object getAuthenticatedUser() { + + // 이 메소드의 경우 인증이 되지 않더라고 null을 리턴하지 않기 때문에 + // 명시적으로 인증되지 않은 경우 null을 리턴하도록 수정함 + + if (EgovUserDetailsHelper.isAuthenticated()) { + return EgovUserDetailsHelper.getAuthenticatedUser(); + } + + return null; + } + + + /** + * 인증된 사용자의 권한 정보를 가져온다. + * 예) [ROLE_ADMIN, ROLE_USER, ROLE_A, ROLE_B, ROLE_RESTRICTED, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED, IS_AUTHENTICATED_ANONYMOUSLY] + * @return List - 사용자 권한정보 목록 + */ + public List getAuthorities() { + return EgovUserDetailsHelper.getAuthorities(); + } + + /** + * 인증된 사용자 여부를 체크한다. + * @return Boolean - 인증된 사용자 여부(TRUE / FALSE) + */ + + public Boolean isAuthenticated() { + return EgovUserDetailsHelper.isAuthenticated(); + } + +} diff --git a/src/main/java/egovframework/com/sec/ram/web/EgovAuthorManageController.java b/src/main/java/egovframework/com/sec/ram/web/EgovAuthorManageController.java new file mode 100644 index 00000000..dcb8b67b --- /dev/null +++ b/src/main/java/egovframework/com/sec/ram/web/EgovAuthorManageController.java @@ -0,0 +1,232 @@ +package egovframework.com.sec.ram.web; + +import egovframework.com.cmm.EgovMessageSource; +import egovframework.com.cmm.SessionVO; +import egovframework.com.cmm.annotation.IncludedInfo; +import egovframework.com.sec.ram.service.AuthorManage; +import egovframework.com.sec.ram.service.AuthorManageVO; +import egovframework.com.sec.ram.service.EgovAuthorManageService; + +import egovframework.rte.fdl.property.EgovPropertyService; +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; + +import javax.annotation.Resource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.SessionAttributes; +import org.springmodules.validation.commons.DefaultBeanValidator; + +/** + * 권한관리에 관한 controller 클래스를 정의한다. + * @author 공통서비스 개발팀 이문준 + * @since 2009.06.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.03.11  이문준          최초 생성
    + *   2011.8.26	정진오			IncludedInfo annotation 추가s
    + *
    + * 
    + */ + + +@Controller +@SessionAttributes(types=SessionVO.class) +public class EgovAuthorManageController { + + @Resource(name="egovMessageSource") + EgovMessageSource egovMessageSource; + + @Resource(name = "egovAuthorManageService") + private EgovAuthorManageService egovAuthorManageService; + + /** EgovPropertyService */ + @Resource(name = "propertiesService") + protected EgovPropertyService propertiesService; + + @Autowired + private DefaultBeanValidator beanValidator; + + /** + * 권한 목록화면 이동 + * @return String + * @exception Exception + */ + @RequestMapping("/sec/ram/EgovAuthorListView.do") + public String selectAuthorListView() + throws Exception { + return "egovframework/com/sec/ram/EgovAuthorManage"; + } + + /** + * 권한 목록을 조회한다 + * @param authorManageVO AuthorManageVO + * @return String + * @exception Exception + */ + @IncludedInfo(name="권한관리", listUrl="/sec/ram/EgovAuthorList.do", order = 60,gid = 20) + @RequestMapping(value="/sec/ram/EgovAuthorList.do") + public String selectAuthorList(@ModelAttribute("authorManageVO") AuthorManageVO authorManageVO, + ModelMap model) + throws Exception { + + /** EgovPropertyService.sample */ + //authorManageVO.setPageUnit(propertiesService.getInt("pageUnit")); + //authorManageVO.setPageSize(propertiesService.getInt("pageSize")); + + /** paging */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(authorManageVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(authorManageVO.getPageUnit()); + paginationInfo.setPageSize(authorManageVO.getPageSize()); + + authorManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + authorManageVO.setLastIndex(paginationInfo.getLastRecordIndex()); + authorManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorList(authorManageVO)); + model.addAttribute("authorList", authorManageVO.getAuthorManageList()); + + int totCnt = egovAuthorManageService.selectAuthorListTotCnt(authorManageVO); + paginationInfo.setTotalRecordCount(totCnt); + model.addAttribute("paginationInfo", paginationInfo); + model.addAttribute("message", egovMessageSource.getMessage("success.common.select")); + + return "egovframework/com/sec/ram/EgovAuthorManage"; + } + + /** + * 권한 세부정보를 조회한다. + * @param authorCode String + * @param authorManageVO AuthorManageVO + * @return String + * @exception Exception + */ + @RequestMapping(value="/sec/ram/EgovAuthor.do") + public String selectAuthor(@RequestParam("authorCode") String authorCode, + @ModelAttribute("authorManageVO") AuthorManageVO authorManageVO, + ModelMap model) throws Exception { + + authorManageVO.setAuthorCode(authorCode); + + model.addAttribute("authorManage", egovAuthorManageService.selectAuthor(authorManageVO)); + model.addAttribute("message", egovMessageSource.getMessage("success.common.select")); + return "egovframework/com/sec/ram/EgovAuthorUpdate"; + } + + /** + * 권한 등록화면 이동 + * @return String + * @exception Exception + */ + @RequestMapping("/sec/ram/EgovAuthorInsertView.do") + public String insertAuthorView(@ModelAttribute("authorManage") AuthorManage authorManage) + throws Exception { + return "egovframework/com/sec/ram/EgovAuthorInsert"; + } + + /** + * 권한 세부정보를 등록한다. + * @param authorManage AuthorManage + * @param bindingResult BindingResult + * @return String + * @exception Exception + */ + @RequestMapping(value="/sec/ram/EgovAuthorInsert.do") + public String insertAuthor(@ModelAttribute("authorManage") AuthorManage authorManage, + BindingResult bindingResult, + ModelMap model) throws Exception { + + beanValidator.validate(authorManage, bindingResult); //validation 수행 + + if (bindingResult.hasErrors()) { + return "egovframework/com/sec/ram/EgovAuthorInsert"; + } else { + egovAuthorManageService.insertAuthor(authorManage); + model.addAttribute("message", egovMessageSource.getMessage("success.common.insert")); + return "forward:/sec/ram/EgovAuthorList.do"; + } + } + + /** + * 권한 세부정보를 수정한다. + * @param authorManage AuthorManage + * @param bindingResult BindingResult + * @return String + * @exception Exception + */ + @RequestMapping(value="/sec/ram/EgovAuthorUpdate.do") + public String updateAuthor(@ModelAttribute("authorManage") AuthorManage authorManage, + BindingResult bindingResult, + Model model) throws Exception { + + beanValidator.validate(authorManage, bindingResult); //validation 수행 + + if (bindingResult.hasErrors()) { + return "egovframework/com/sec/ram/EgovAuthorUpdate"; + } else { + egovAuthorManageService.updateAuthor(authorManage); + model.addAttribute("message", egovMessageSource.getMessage("success.common.update")); + return "forward:/sec/ram/EgovAuthorList.do"; + } + } + + /** + * 권한 세부정보를 삭제한다. + * @param authorManage AuthorManage + * @return String + * @exception Exception + */ + @RequestMapping(value="/sec/ram/EgovAuthorDelete.do") + public String deleteAuthor(@ModelAttribute("authorManage") AuthorManage authorManage, + Model model) throws Exception { + + egovAuthorManageService.deleteAuthor(authorManage); + model.addAttribute("message", egovMessageSource.getMessage("success.common.delete")); + return "forward:/sec/ram/EgovAuthorList.do"; + } + + /** + * 권한목록을 삭제한다. + * @param authorCodes String + * @param authorManage AuthorManage + * @return String + * @exception Exception + */ + @RequestMapping(value="/sec/ram/EgovAuthorListDelete.do") + public String deleteAuthorList(@RequestParam("authorCodes") String authorCodes, + @ModelAttribute("authorManage") AuthorManage authorManage, + Model model) throws Exception { + + String [] strAuthorCodes = authorCodes.split(";"); + for(int i=0; i + * << 개정이력(Modification Information) >> + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.03.11 이문준 최초 생성 + * 2011.09.07 서준식 롤 등록시 이미 등록된 경우 데이터 중복 에러 발생 문제 수정 + *
    + */ +@Controller +public class EgovAuthorRoleController { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovAuthorRoleController.class); + + @Resource(name="egovMessageSource") + EgovMessageSource egovMessageSource; + + @Resource(name = "egovAuthorRoleManageService") + private EgovAuthorRoleManageService egovAuthorRoleManageService; + + /** EgovPropertyService */ + @Resource(name = "propertiesService") + protected EgovPropertyService propertiesService; + + /** + * 권한 롤 관계 화면 이동 + * @return "egovframework/com/sec/ram/EgovDeptAuthorList" + * @exception Exception + */ + @RequestMapping("/sec/ram/EgovAuthorRoleListView.do") + public String selectAuthorRoleListView() throws Exception { + + return "egovframework/com/sec/ram/EgovAuthorRoleManage"; + } + + /** + * 권한별 할당된 롤 목록 조회 + * + * @param authorRoleManageVO AuthorRoleManageVO + * @return String + * @exception Exception + */ + @RequestMapping(value="/sec/ram/EgovAuthorRoleList.do") + public String selectAuthorRoleList(@ModelAttribute("authorRoleManageVO") AuthorRoleManageVO authorRoleManageVO, + ModelMap model) throws Exception { + + /** paging */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(authorRoleManageVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(authorRoleManageVO.getPageUnit()); + paginationInfo.setPageSize(authorRoleManageVO.getPageSize()); + + authorRoleManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + authorRoleManageVO.setLastIndex(paginationInfo.getLastRecordIndex()); + authorRoleManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + authorRoleManageVO.setAuthorRoleList(egovAuthorRoleManageService.selectAuthorRoleList(authorRoleManageVO)); + model.addAttribute("authorRoleList", authorRoleManageVO.getAuthorRoleList()); + model.addAttribute("searchVO", authorRoleManageVO); + + int totCnt = egovAuthorRoleManageService.selectAuthorRoleListTotCnt(authorRoleManageVO); + paginationInfo.setTotalRecordCount(totCnt); + model.addAttribute("paginationInfo", paginationInfo); + + model.addAttribute("message", egovMessageSource.getMessage("success.common.select")); + + return "egovframework/com/sec/ram/EgovAuthorRoleManage"; + } + + /** + * 권한정보에 롤을 할당하여 데이터베이스에 등록 + * @param authorCode String + * @param roleCodes String + * @param regYns String + * @param authorRoleManage AuthorRoleManage + * @return String + * @exception Exception + */ + @RequestMapping(value="/sec/ram/EgovAuthorRoleInsert.do") + public String insertAuthorRole(@RequestParam("authorCode") String authorCode, + @RequestParam("roleCodes") String roleCodes, + @RequestParam("regYns") String regYns, + @RequestParam Map commandMap, + @ModelAttribute("authorRoleManage") AuthorRoleManage authorRoleManage, + ModelMap model) throws Exception { + + String [] strRoleCodes = roleCodes.split(";"); + String [] strRegYns = regYns.split(";"); + + authorRoleManage.setRoleCode(authorCode); + + for(int i=0; i + * 개정이력(Modification Information) + * + * 수정일 수정자 수정내용 + * ----------- -------- --------------------------- + * 2011.08.29 서준식 최초생성 + * 2011.12.12 유지보수 사용자 로그인 정보 간섭 가능성 문제(멤버 변수 EgovUserDetails userDetails를 로컬변수로 변경) + * 2014.03.07 유지보수 로그인된 상태에서 다시 로그인 시 미처리 되는 문제 수정 (로그인 처리 URL 파라미터화) + * 2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + * 2017.07.10 장동한 실행환경 v3.7(Spring Security 4.0.3 적용) + * 2017.07.21 장동한 로그인인증제한 작업 + * + * + */ + +public class EgovSpringSecurityLoginFilter implements Filter { + + private FilterConfig config; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovSpringSecurityLoginFilter.class); + + public void destroy() { + } + + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + + LOGGER.info("EgovSpringSecurityLoginFilter called..."); + + // 로그인 URL + String loginURL = config.getInitParameter("loginURL"); + loginURL = loginURL.replaceAll("\r", "").replaceAll("\n", ""); + + String loginProcessURL = config.getInitParameter("loginProcessURL"); + loginProcessURL = loginProcessURL.replaceAll("\r", "").replaceAll("\n", ""); + + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext()); + EgovLoginService loginService = (EgovLoginService) act.getBean("loginService"); + EgovLoginConfig egovLoginConfig = (EgovLoginConfig) act.getBean("egovLoginConfig"); + + EgovMessageSource egovMessageSource = (EgovMessageSource) act.getBean("egovMessageSource"); + + HttpServletRequest httpRequest = (HttpServletRequest) request; + HttpServletResponse httpResponse = (HttpServletResponse) response; + HttpSession session = httpRequest.getSession(); + //String isLocallyAuthenticated = (String)session.getAttribute("isLocallyAuthenticated"); + String isRemotelyAuthenticated = (String) session.getAttribute("isRemotelyAuthenticated"); + + String requestURL = ((HttpServletRequest) request).getRequestURI(); + + //스프링 시큐리티 인증이 처리 되었는지 EgovUserDetailsHelper.getAuthenticatedUser() 메서드를 통해 확인한다. + //context-common.xml 빈 설정에 egovUserDetailsSecurityService를 등록 해서 사용해야 정상적으로 동작한다. + if (EgovUserDetailsHelper.getAuthenticatedUser() == null || requestURL.contains(loginProcessURL)) { + + if (isRemotelyAuthenticated != null && isRemotelyAuthenticated.equals("true")) { + try { + //세션 토큰 정보를 가지고 DB로부터 사용자 정보를 가져옴 + LoginVO loginVO = (LoginVO) session.getAttribute("loginVOForDBAuthentication"); + loginVO = loginService.actionLoginByEsntlId(loginVO); + + if (loginVO != null && loginVO.getId() != null && !loginVO.getId().equals("")) { + //세션 로그인 + session.setAttribute("loginVO", loginVO); + + //로컬 인증결과 세션에 저장 + session.setAttribute("isLocallyAuthenticated", "true"); + + //스프링 시큐리티 로그인 + //httpResponse.sendRedirect(httpRequest.getContextPath() + "/j_spring_security_check?j_username=" + loginVO.getUserSe() + loginVO.getId() + "&j_password=" + loginVO.getUniqId()); + + UsernamePasswordAuthenticationFilter springSecurity = null; + + Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); + if (beans.size() > 0) { + springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; + springSecurity.setUsernameParameter("egov_security_username"); + springSecurity.setPasswordParameter("egov_security_password"); + springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() +"/egov_security_login", "POST")); + } else { + LOGGER.error("No AuthenticationProcessingFilter"); + throw new IllegalStateException("No AuthenticationProcessingFilter"); + } + //springSecurity.setContinueChainBeforeSuccessfulAuthentication(false); // false 이면 chain 처리 되지 않음.. (filter가 아닌 경우 false로...) + + LOGGER.debug("before security filter call...."); + springSecurity.doFilter(new RequestWrapperForSecurity(httpRequest, loginVO.getUserSe() + loginVO.getId(), loginVO.getUniqId()), httpResponse, chain); + LOGGER.debug("after security filter call...."); + + } + //2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch(Exception e) { + LOGGER.error("["+e.getClass()+"] Try/Catch...Exception : " + e.getMessage()); + } + + } else if (isRemotelyAuthenticated == null) { + if (requestURL.contains(loginProcessURL)) { + + String password = httpRequest.getParameter("password"); + + // 보안점검 후속 조치(Password 검증) + if (password == null || password.equals("") || password.length() < 8 || password.length() > 20) { + httpRequest.setAttribute("message", egovMessageSource.getMessage("fail.common.login.password",request.getLocale())); + RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(loginURL); + dispatcher.forward(httpRequest, httpResponse); + //chain.doFilter(request, response); + return; + } + + LoginVO loginVO = new LoginVO(); + + loginVO.setId(httpRequest.getParameter("id")); + loginVO.setPassword(password); + loginVO.setUserSe(httpRequest.getParameter("userSe")); + + //------------------------------------------------------------------ + // 로그인시 로그인인증제한 활성화 처리 + //------------------------------------------------------------------ + if(egovLoginConfig.isLock()){ + try{ + Map mapLockUserInfo = (EgovMap)loginService.selectLoginIncorrect(loginVO); + if(mapLockUserInfo != null){ + //로그인인증제한 처리 + String sLoginIncorrectCode = loginService.processLoginIncorrect(loginVO, mapLockUserInfo); + if(!sLoginIncorrectCode.equals("E")){ + if(sLoginIncorrectCode.equals("L")){ + request.setAttribute("message", egovMessageSource.getMessageArgs("fail.common.loginIncorrect", new Object[] {egovLoginConfig.getLockCount(),request.getLocale()})); + }else if(sLoginIncorrectCode.equals("C")){ + request.setAttribute("message", egovMessageSource.getMessage("fail.common.login",request.getLocale())); + } + httpRequest.getRequestDispatcher(loginURL).forward(request, response); + return; + } + }else{ + request.setAttribute("message", egovMessageSource.getMessage("fail.common.login",request.getLocale())); + httpRequest.getRequestDispatcher(loginURL).forward(request, response); + return; + } + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] : "+ e.getMessage()); + } catch(Exception ex) { + LOGGER.error("Login Exception : {}", ex.getCause(), ex); + httpRequest.setAttribute("message", egovMessageSource.getMessage("fail.common.login",request.getLocale())); + RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(loginURL); + dispatcher.forward(httpRequest, httpResponse); + } + } + + //------------------------------------------------------------------ + // 사용자 로그인 처리 + //------------------------------------------------------------------ + try { + //사용자 입력 id, password로 DB 인증을 실행함 + loginVO = loginService.actionLogin(loginVO); + //사용자 IP 기록 + loginVO.setIp(request.getRemoteAddr()); + if (loginVO != null && loginVO.getId() != null && !loginVO.getId().equals("")) { + //세션 로그인 + session.setAttribute("loginVO", loginVO); + + //로컬 인증결과 세션에 저장 + session.setAttribute("isLocallyAuthenticated", "true"); + + //스프링 시큐리티 로그인 + //httpResponse.sendRedirect(httpRequest.getContextPath() + "/j_spring_security_check?j_username=" + loginVO.getUserSe() + loginVO.getId() + "&j_password=" + loginVO.getUniqId()); + + UsernamePasswordAuthenticationFilter springSecurity = null; + + Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); + if (beans.size() > 0) { + springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; + springSecurity.setUsernameParameter("egov_security_username"); + springSecurity.setPasswordParameter("egov_security_password"); + springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() +"/egov_security_login", "POST")); + } else { + LOGGER.error("No AuthenticationProcessingFilter"); + throw new IllegalStateException("No AuthenticationProcessingFilter"); + } + //springSecurity.setContinueChainBeforeSuccessfulAuthentication(false); // false 이면 chain 처리 되지 않음.. (filter가 아닌 경우 false로...) + + LOGGER.debug("before security filter call...."); + springSecurity.doFilter(new RequestWrapperForSecurity(httpRequest, loginVO.getUserSe() + loginVO.getId(), loginVO.getUniqId()), httpResponse, chain); + LOGGER.debug("after security filter call...."); + + } else { + //사용자 정보가 없는 경우 로그인 화면으로 redirect 시킴 + httpRequest.setAttribute("message", egovMessageSource.getMessage("fail.common.login",request.getLocale())); + RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(loginURL); + dispatcher.forward(httpRequest, httpResponse); + + //chain.doFilter(request, response); + + return; + + } + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] : "+ e.getMessage()); + } catch (Exception ex) { + //DB인증 예외가 발생할 경우 로그인 화면으로 redirect 시킴 + LOGGER.error("Login Exception : {}", ex.getCause(), ex); + httpRequest.setAttribute("message", egovMessageSource.getMessage("fail.common.login",request.getLocale())); + RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(loginURL); + dispatcher.forward(httpRequest, httpResponse); + //chain.doFilter(request, response); + + return; + + } + return; + } + + } + } + + chain.doFilter(request, response); + } + + public void init(FilterConfig filterConfig) throws ServletException { + this.config = filterConfig; + } +} + +class RequestWrapperForSecurity extends HttpServletRequestWrapper { + private String username = null; + private String password = null; + + public RequestWrapperForSecurity(HttpServletRequest request, String username, String password) { + super(request); + + this.username = username; + this.password = password; + } + + @Override + public String getServletPath() { + return ((HttpServletRequest) super.getRequest()).getContextPath() + "/egov_security_login"; + } + + @Override + public String getRequestURI() { + return ((HttpServletRequest) super.getRequest()).getContextPath() + "/egov_security_login"; + } + + @Override + public String getParameter(String name) { + if (name.equals("egov_security_username")) { + return username; + } + + if (name.equals("egov_security_password")) { + return password; + } + + return super.getParameter(name); + } +} diff --git a/src/main/java/egovframework/com/sec/security/filter/EgovSpringSecurityLogoutFilter.java b/src/main/java/egovframework/com/sec/security/filter/EgovSpringSecurityLogoutFilter.java new file mode 100644 index 00000000..f53b7843 --- /dev/null +++ b/src/main/java/egovframework/com/sec/security/filter/EgovSpringSecurityLogoutFilter.java @@ -0,0 +1,62 @@ +package egovframework.com.sec.security.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; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * + * @author 공통서비스 개발팀 서준식 + * @since 2011. 8. 29. + * @version 1.0 + * @see + * + *
    + * 개정이력(Modification Information)
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011. 8. 29.    서준식        최초생성
    + *  2017.07.10      장동한       실행환경 v3.7(Spring Security 4.0.3 적용)
    + *
    + *  
    + */ + +public class EgovSpringSecurityLogoutFilter implements Filter{ + + @SuppressWarnings("unused") + private FilterConfig config; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovSpringSecurityLogoutFilter.class); + + public void destroy() {} + + + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + + String requestURL = ((HttpServletRequest)request).getRequestURI(); + LOGGER.debug(requestURL); + + ((HttpServletRequest)request).getSession().setAttribute("loginVO", null); + ((HttpServletResponse)response).sendRedirect(((HttpServletRequest)request).getContextPath() + "/egov_security_logout"); + + } + + public void init(FilterConfig filterConfig) throws ServletException { + + this.config = filterConfig; + + } +} diff --git a/src/main/java/egovframework/com/sym/cal/service/EgovCalRestdeManageService.java b/src/main/java/egovframework/com/sym/cal/service/EgovCalRestdeManageService.java new file mode 100644 index 00000000..1e3af278 --- /dev/null +++ b/src/main/java/egovframework/com/sym/cal/service/EgovCalRestdeManageService.java @@ -0,0 +1,132 @@ +package egovframework.com.sym.cal.service; + +import java.util.List; + +/** + * + * 휴일에 관한 서비스 인터페이스 클래스를 정의한다 + * @author 공통서비스 개발팀 이중호 + * @since 2009.04.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.04.01  이중호          최초 생성
    + *
    + * 
    + */ +public interface EgovCalRestdeManageService { + + /** + * 일반달력 팝업 정보를 조회한다. + * @param restde + * @return List(일반달력 팝업 날짜정보) + * @throws Exception + */ + List selectNormalRestdePopup(Restde restde) throws Exception; + + /** + * 행정달력 팝업 정보를 조회한다. + * @param restde + * @return List(행정달력 팝업 날짜정보) + * @throws Exception + */ + List selectAdministRestdePopup(Restde restde) throws Exception; + + /** + * 일반달력 일간 정보를 조회한다. + * @param restde + * @return List(일반달력 일간 날짜정보) + * @throws Exception + */ + List selectNormalDayCal(Restde restde) throws Exception; + + /** + * 일반달력 일간 휴일을 조회한다. + * @param restde + * @return List(일반달력 일간 휴일정보) + * @throws Exception + */ + List selectNormalDayRestde(Restde restde) throws Exception; + + /** + * 일반달력 월간 휴일을 조회한다. + * @param restde + * @return List(일반달력 월간 휴일정보) + * @throws Exception + */ + List selectNormalMonthRestde(Restde restde) throws Exception; + + /** + * 행정달력 일간 정보를 조회한다. + * @param restde + * @return List(행정달력 일간 날짜정보) + * @throws Exception + */ + List selectAdministDayCal(Restde restde) throws Exception; + + /** + * 행정달력 일간 휴일을 조회한다. + * @param restde + * @return List(행정달력 일간 휴일정보) + * @throws Exception + */ + List selectAdministDayRestde(Restde restde) throws Exception; + + /** + * 행정달력 월간 휴일을 조회한다. + * @param restde + * @return List(행정달력 월간 휴일정보) + * @throws Exception + */ + List selectAdministMonthRestde(Restde restde) throws Exception; + + /** + * 휴일을 삭제한다. + * @param restde + * @throws Exception + */ + void deleteRestde(Restde restde) throws Exception; + + /** + * 휴일을 등록한다. + * @param restde + * @throws Exception + */ + void insertRestde(Restde restde) throws Exception; + + /** + * 휴일 상세항목을 조회한다. + * @param restde + * @return Restde(휴일) + * @throws Exception + */ + Restde selectRestdeDetail(Restde restde) throws Exception; + + /** + * 휴일 목록을 조회한다. + * @param searchVO + * @return List(휴일 목록) + * @throws Exception + */ + List selectRestdeList(RestdeVO searchVO) throws Exception; + + /** + * 휴일 총 갯수를 조회한다. + * @param searchVO + * @return int(휴일 총 갯수) + */ + int selectRestdeListTotCnt(RestdeVO searchVO) throws Exception; + + /** + * 휴일을 수정한다. + * @param restde + * @throws Exception + */ + void updateRestde(Restde restde) throws Exception; + +} diff --git a/src/main/java/egovframework/com/sym/cal/service/Restde.java b/src/main/java/egovframework/com/sym/cal/service/Restde.java new file mode 100644 index 00000000..dde9021b --- /dev/null +++ b/src/main/java/egovframework/com/sym/cal/service/Restde.java @@ -0,0 +1,404 @@ +package egovframework.com.sym.cal.service; + +import java.io.Serializable; + +/** + * 휴일 모델 클래스 + * @author 공통서비스 개발팀 이중호 + * @since 2009.04.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.04.01  이중호          최초 생성
    + *
    + * 
    + */ +public class Restde implements Serializable { + + private static final long serialVersionUID = -8509545779844669658L; + + /* + * 휴일번호 + */ + private int restdeNo = 0; + + /* + * 휴일일자 + */ + private String restdeDe = ""; + + /* + * 휴일명 + */ + private String restdeNm = ""; + + /* + * 휴일설명 + */ + private String restdeDc = ""; + + /* + * 휴일구분 + */ + private String restdeSe = ""; + + /* + * 휴일구분코드 + */ + private String restdeSeCode = ""; + + /* + * 최초등록자ID + */ + private String frstRegisterId = ""; + + /* + * 최종수정자ID + */ + private String lastUpdusrId = ""; + + /* + * 년 + */ + private String year = ""; + + /* + * 월 + */ + private String month = ""; + + /* + * 일 + */ + private String day = ""; + + /* + * 휴일여부 + */ + private String restdeAt = ""; + + /* + * 달력셀 + */ + private int cellNum = 0; + + /* + * 월별 주순위 + */ + private int weeks = 0; + + /* + * 월 주수 + */ + private int maxWeeks = 0; + + /* + * 요일 + */ + private int week = 0; + + /* + * 시작요일 + */ + private int startWeekMonth = 0; + + /* + * 마지막 일자 + */ + private int lastDayMonth = 0; + + /** + * restdeNo attribute 를 리턴한다. + * @return int + */ + public int getRestdeNo() { + return restdeNo; + } + + /** + * restdeNo attribute 값을 설정한다. + * @param restdeNo int + */ + public void setRestdeNo(int restdeNo) { + this.restdeNo = restdeNo; + } + + /** + * restdeDe attribute 를 리턴한다. + * @return String + */ + public String getRestdeDe() { + return restdeDe; + } + + /** + * restdeDe attribute 값을 설정한다. + * @param restdeDe String + */ + public void setRestdeDe(String restdeDe) { + this.restdeDe = restdeDe; + } + + /** + * restdeNm attribute 를 리턴한다. + * @return String + */ + public String getRestdeNm() { + return restdeNm; + } + + /** + * restdeNm attribute 값을 설정한다. + * @param restdeNm String + */ + public void setRestdeNm(String restdeNm) { + this.restdeNm = restdeNm; + } + + /** + * restdeDc attribute 를 리턴한다. + * @return String + */ + public String getRestdeDc() { + return restdeDc; + } + + /** + * restdeDc attribute 값을 설정한다. + * @param restdeDc String + */ + public void setRestdeDc(String restdeDc) { + this.restdeDc = restdeDc; + } + + /** + * restdeSe attribute 를 리턴한다. + * @return String + */ + public String getRestdeSe() { + return restdeSe; + } + + /** + * restdeSe attribute 값을 설정한다. + * @param restdeSe String + */ + public void setRestdeSe(String restdeSe) { + this.restdeSe = restdeSe; + } + + /** + * restdeSeCode attribute 를 리턴한다. + * @return String + */ + public String getRestdeSeCode() { + return restdeSeCode; + } + + /** + * restdeSeCode attribute 값을 설정한다. + * @param restdeSeCode String + */ + public void setRestdeSeCode(String restdeSeCode) { + this.restdeSeCode = restdeSeCode; + } + + /** + * 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; + } + + /** + * year attribute 를 리턴한다. + * @return String + */ + public String getYear() { + return year; + } + + /** + * year attribute 값을 설정한다. + * @param year String + */ + public void setYear(String year) { + this.year = year; + } + + /** + * month attribute 를 리턴한다. + * @return String + */ + public String getMonth() { + return month; + } + + /** + * month attribute 값을 설정한다. + * @param month String + */ + public void setMonth(String month) { + this.month = month; + } + + /** + * day attribute 를 리턴한다. + * @return String + */ + public String getDay() { + return day; + } + + /** + * day attribute 값을 설정한다. + * @param day String + */ + public void setDay(String day) { + this.day = day; + } + + /** + * restdeAt attribute 를 리턴한다. + * @return String + */ + public String getRestdeAt() { + return restdeAt; + } + + /** + * restdeAt attribute 값을 설정한다. + * @param restdeAt String + */ + public void setRestdeAt(String restdeAt) { + this.restdeAt = restdeAt; + } + + /** + * cellNum attribute 를 리턴한다. + * @return int + */ + public int getCellNum() { + return cellNum; + } + + /** + * cellNum attribute 값을 설정한다. + * @param cellNum int + */ + public void setCellNum(int cellNum) { + this.cellNum = cellNum; + } + + /** + * weeks attribute 를 리턴한다. + * @return int + */ + public int getWeeks() { + return weeks; + } + + /** + * weeks attribute 값을 설정한다. + * @param weeks int + */ + public void setWeeks(int weeks) { + this.weeks = weeks; + } + + /** + * maxWeeks attribute 를 리턴한다. + * @return int + */ + public int getMaxWeeks() { + return maxWeeks; + } + + /** + * maxWeeks attribute 값을 설정한다. + * @param maxWeeks int + */ + public void setMaxWeeks(int maxWeeks) { + this.maxWeeks = maxWeeks; + } + + /** + * week attribute 를 리턴한다. + * @return int + */ + public int getWeek() { + return week; + } + + /** + * week attribute 값을 설정한다. + * @param week int + */ + public void setWeek(int week) { + this.week = week; + } + + /** + * startWeekMonth attribute 를 리턴한다. + * @return int + */ + public int getStartWeekMonth() { + return startWeekMonth; + } + + /** + * startWeekMonth attribute 값을 설정한다. + * @param startWeekMonth int + */ + public void setStartWeekMonth(int startWeekMonth) { + this.startWeekMonth = startWeekMonth; + } + + /** + * lastDayMonth attribute 를 리턴한다. + * @return int + */ + public int getLastDayMonth() { + return lastDayMonth; + } + + /** + * lastDayMonth attribute 값을 설정한다. + * @param lastDayMonth int + */ + public void setLastDayMonth(int lastDayMonth) { + this.lastDayMonth = lastDayMonth; + } + + +} diff --git a/src/main/java/egovframework/com/sym/cal/service/RestdeVO.java b/src/main/java/egovframework/com/sym/cal/service/RestdeVO.java new file mode 100644 index 00000000..5e732a48 --- /dev/null +++ b/src/main/java/egovframework/com/sym/cal/service/RestdeVO.java @@ -0,0 +1,199 @@ +package egovframework.com.sym.cal.service; + +import java.io.Serializable; + +/** + * + * 휴일 VO 클래스 + * @author 공통서비스 개발팀 이중호 + * @since 2009.04.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.04.01  이중호          최초 생성
    + *
    + * 
    + */ +public class RestdeVO extends Restde implements Serializable { + + private static final long serialVersionUID = 2548377950888283294L; + + /** 검색조건 */ + 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; + + /** + * searchCondition attribute 를 리턴한다. + * @return String + */ + public String getSearchCondition() { + return searchCondition; + } + + /** + * searchCondition attribute 값을 설정한다. + * @param searchCondition String + */ + public void setSearchCondition(String searchCondition) { + this.searchCondition = searchCondition; + } + + /** + * searchKeyword attribute 를 리턴한다. + * @return String + */ + public String getSearchKeyword() { + return searchKeyword; + } + + /** + * searchKeyword attribute 값을 설정한다. + * @param searchKeyword String + */ + public void setSearchKeyword(String searchKeyword) { + this.searchKeyword = searchKeyword; + } + + /** + * searchUseYn attribute 를 리턴한다. + * @return String + */ + public String getSearchUseYn() { + return searchUseYn; + } + + /** + * searchUseYn attribute 값을 설정한다. + * @param searchUseYn String + */ + public void setSearchUseYn(String searchUseYn) { + this.searchUseYn = searchUseYn; + } + + /** + * pageIndex attribute 를 리턴한다. + * @return int + */ + public int getPageIndex() { + return pageIndex; + } + + /** + * pageIndex attribute 값을 설정한다. + * @param pageIndex int + */ + public void setPageIndex(int pageIndex) { + this.pageIndex = pageIndex; + } + + /** + * pageUnit attribute 를 리턴한다. + * @return int + */ + public int getPageUnit() { + return pageUnit; + } + + /** + * pageUnit attribute 값을 설정한다. + * @param pageUnit int + */ + public void setPageUnit(int pageUnit) { + this.pageUnit = pageUnit; + } + + /** + * pageSize attribute 를 리턴한다. + * @return int + */ + public int getPageSize() { + return pageSize; + } + + /** + * pageSize attribute 값을 설정한다. + * @param pageSize int + */ + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + /** + * firstIndex attribute 를 리턴한다. + * @return int + */ + public int getFirstIndex() { + return firstIndex; + } + + /** + * firstIndex attribute 값을 설정한다. + * @param firstIndex int + */ + public void setFirstIndex(int firstIndex) { + this.firstIndex = firstIndex; + } + + /** + * lastIndex attribute 를 리턴한다. + * @return int + */ + public int getLastIndex() { + return lastIndex; + } + + /** + * lastIndex attribute 값을 설정한다. + * @param lastIndex int + */ + public void setLastIndex(int lastIndex) { + this.lastIndex = lastIndex; + } + + /** + * recordCountPerPage attribute 를 리턴한다. + * @return int + */ + public int getRecordCountPerPage() { + return recordCountPerPage; + } + + /** + * recordCountPerPage attribute 값을 설정한다. + * @param recordCountPerPage int + */ + public void setRecordCountPerPage(int recordCountPerPage) { + this.recordCountPerPage = recordCountPerPage; + } + + + +} diff --git a/src/main/java/egovframework/com/sym/cal/service/impl/EgovCalRestdeManageServiceImpl.java b/src/main/java/egovframework/com/sym/cal/service/impl/EgovCalRestdeManageServiceImpl.java new file mode 100644 index 00000000..23a96ee6 --- /dev/null +++ b/src/main/java/egovframework/com/sym/cal/service/impl/EgovCalRestdeManageServiceImpl.java @@ -0,0 +1,153 @@ +package egovframework.com.sym.cal.service.impl; + +import java.util.List; + +import egovframework.com.sym.cal.service.EgovCalRestdeManageService; +import egovframework.com.sym.cal.service.Restde; +import egovframework.com.sym.cal.service.RestdeVO; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + + + +/** + * + * 휴일에 대한 서비스 구현클래스를 정의한다 + * @author 공통서비스 개발팀 이중호 + * @since 2009.04.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.04.01  이중호          최초 생성
    + *
    + * 
    + */ +@Service("RestdeManageService") +public class EgovCalRestdeManageServiceImpl extends EgovAbstractServiceImpl implements EgovCalRestdeManageService { + + @Resource(name="RestdeManageDAO") + private RestdeManageDAO restdeManageDAO; + + /** + * 일반달력 팝업 정보를 조회한다. + */ + @Override + public List selectNormalRestdePopup(Restde restde) throws Exception { + return restdeManageDAO.selectNormalRestdePopup(restde); + } + + /** + * 행정달력 팝업 정보를 조회한다. + */ + @Override + public List selectAdministRestdePopup(Restde restde) throws Exception { + return restdeManageDAO.selectAdministRestdePopup(restde); + } + + /** + * 일반달력 일간 정보를 조회한다. + */ + @Override + public List selectNormalDayCal(Restde restde) throws Exception { + return restdeManageDAO.selectNormalDayCal(restde); + } + + /** + * 일반달력 일간 휴일을 조회한다. + */ + @Override + public List selectNormalDayRestde(Restde restde) throws Exception { + return restdeManageDAO.selectNormalDayRestde(restde); + } + + /** + * 일반달력 월간 휴일을 조회한다. + */ + @Override + public List selectNormalMonthRestde(Restde restde) throws Exception { + return restdeManageDAO.selectNormalMonthRestde(restde); + } + + /** + * 행정달력 일간 정보를 조회한다. + */ + @Override + public List selectAdministDayCal(Restde restde) throws Exception { + return restdeManageDAO.selectAdministDayCal(restde); + } + + /** + * 행정달력 일간 휴일을 조회한다. + */ + @Override + public List selectAdministDayRestde(Restde restde) throws Exception { + return restdeManageDAO.selectAdministDayRestde(restde); + } + + /** + * 행정달력 월간 휴일을 조회한다. + */ + @Override + public List selectAdministMonthRestde(Restde restde) throws Exception { + return restdeManageDAO.selectAdministMonthRestde(restde); + } + + /** + * 휴일을 삭제한다. + */ + @Override + public void deleteRestde(Restde restde) throws Exception { + restdeManageDAO.deleteRestde(restde); + } + + /** + * 휴일을 등록한다. + */ + @Override + public void insertRestde(Restde restde) throws Exception { + restdeManageDAO.insertRestde(restde); + } + + /** + * 휴일 상세항목을 조회한다. + */ + @Override + public Restde selectRestdeDetail(Restde restde) throws Exception { + Restde ret = restdeManageDAO.selectRestdeDetail(restde); + return ret; + } + + /** + * 휴일 목록을 조회한다. + */ + @Override + public List selectRestdeList(RestdeVO searchVO) throws Exception { + return restdeManageDAO.selectRestdeList(searchVO); + } + + /** + * 휴일 총 갯수를 조회한다. + */ + @Override + public int selectRestdeListTotCnt(RestdeVO searchVO) throws Exception { + return restdeManageDAO.selectRestdeListTotCnt(searchVO); + } + + /** + * 휴일을 수정한다. + */ + @Override + public void updateRestde(Restde restde) throws Exception { + restdeManageDAO.updateRestde(restde); + } + +} diff --git a/src/main/java/egovframework/com/sym/cal/service/impl/RestdeManageDAO.java b/src/main/java/egovframework/com/sym/cal/service/impl/RestdeManageDAO.java new file mode 100644 index 00000000..76a2e44e --- /dev/null +++ b/src/main/java/egovframework/com/sym/cal/service/impl/RestdeManageDAO.java @@ -0,0 +1,170 @@ +package egovframework.com.sym.cal.service.impl; + +import java.util.List; + +import egovframework.com.cmm.service.impl.EgovComAbstractDAO; +import egovframework.com.sym.cal.service.Restde; +import egovframework.com.sym.cal.service.RestdeVO; + +import org.springframework.stereotype.Repository; + +/** + * + * 휴일에 대한 데이터 접근 클래스를 정의한다 + * @author 공통서비스 개발팀 이중호 + * @since 2009.04.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.04.01  이중호          최초 생성
    + *
    + * 
    + */ +@Repository("RestdeManageDAO") +public class RestdeManageDAO extends EgovComAbstractDAO { + + /** + * 일반달력 팝업 정보를 조회한다. + * @param restde + * @return List(일반달력 팝업 날짜정보) + * @throws Exception + */ + public List selectNormalRestdePopup(Restde restde) throws Exception { + return selectList("RestdeManageDAO.selectNormalRestdePopup", restde); + } + + /** + * 행정달력 팝업 정보를 조회한다. + * @param restde + * @return List(행정달력 팝업 날짜정보) + * @throws Exception + */ + public List selectAdministRestdePopup(Restde restde) throws Exception { + return selectList("RestdeManageDAO.selectAdministRestdePopup", restde); + } + + /** + * 일반달력 일간 정보를 조회한다. + * @param restde + * @return List(일반달력 일간 날짜정보) + * @throws Exception + */ + public List selectNormalDayCal(Restde restde) throws Exception { + return selectList("RestdeManageDAO.selectNormalDayCal", restde); + } + + /** + * 일반달력 일간 휴일을 조회한다. + * @param restde + * @return List(일반달력 일간 휴일정보) + * @throws Exception + */ + public List selectNormalDayRestde(Restde restde) throws Exception { + return selectList("RestdeManageDAO.selectNormalDayRestde", restde); + } + + /** + * 일반달력 월간 휴일을 조회한다. + * @param restde + * @return List(일반달력 월간 휴일정보) + * @throws Exception + */ + public List selectNormalMonthRestde(Restde restde) throws Exception { + return selectList("RestdeManageDAO.selectNormalMonthRestde", restde); + } + + /** + * 행정달력 일간 정보를 조회한다. + * @param restde + * @return List(행정달력 일간 날짜정보) + * @throws Exception + */ + public List selectAdministDayCal(Restde restde) throws Exception { + return selectList("RestdeManageDAO.selectAdministDayCal", restde); + } + + /** + * 행정달력 일간 휴일을 조회한다. + * @param restde + * @return List(행정달력 일간 휴일정보) + * @throws Exception + */ + public List selectAdministDayRestde(Restde restde) throws Exception { + return selectList("RestdeManageDAO.selectAdministDayRestde", restde); + } + + /** + * 행정달력 월간 휴일을 조회한다. + * @param restde + * @return List(행정달력 월간 휴일정보) + * @throws Exception + */ + public List selectAdministMonthRestde(Restde restde) throws Exception { + return selectList("RestdeManageDAO.selectAdministMonthRestde", restde); + } + + /** + * 휴일을 삭제한다. + * @param restde + * @throws Exception + */ + public void deleteRestde(Restde restde) throws Exception { + delete("RestdeManageDAO.deleteRestde", restde); + } + + + /** + * 휴일을 등록한다. + * @param restde + * @throws Exception + */ + public void insertRestde(Restde restde) throws Exception { + insert("RestdeManageDAO.insertRestde", restde); + } + + /** + * 휴일 상세항목을 조회한다. + * @param restde + * @return Restde(휴일) + * @throws Exception + */ + public Restde selectRestdeDetail(Restde restde) throws Exception { + return (Restde) selectOne("RestdeManageDAO.selectRestdeDetail", restde); + } + + + /** + * 휴일 목록을 조회한다. + * @param searchVO + * @return List(휴일 목록) + * @throws Exception + */ + public List selectRestdeList(RestdeVO searchVO) throws Exception { + return selectList("RestdeManageDAO.selectRestdeList", searchVO); + } + + /** + * 글 총 갯수를 조회한다. + * @param searchVO + * @return int(휴일 총 갯수) + * @throws Exception + */ + public int selectRestdeListTotCnt(RestdeVO searchVO) throws Exception { + return (Integer)selectOne("RestdeManageDAO.selectRestdeListTotCnt", searchVO); + } + + /** + * 휴일을 수정한다. + * @param restde + * @throws Exception + */ + public void updateRestde(Restde restde) throws Exception { + update("RestdeManageDAO.updateRestde", restde); + } + +} diff --git a/src/main/java/egovframework/com/sym/cal/web/EgovCalRestdeManageController.java b/src/main/java/egovframework/com/sym/cal/web/EgovCalRestdeManageController.java new file mode 100644 index 00000000..dad4483d --- /dev/null +++ b/src/main/java/egovframework/com/sym/cal/web/EgovCalRestdeManageController.java @@ -0,0 +1,1531 @@ +package egovframework.com.sym.cal.web; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; +import java.util.Map; + +import egovframework.com.cmm.ComDefaultCodeVO; +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.annotation.IncludedInfo; +import egovframework.com.cmm.service.EgovCmmUseService; +import egovframework.com.sym.cal.service.EgovCalRestdeManageService; +import egovframework.com.sym.cal.service.Restde; +import egovframework.com.sym.cal.service.RestdeVO; + +import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import egovframework.rte.fdl.property.EgovPropertyService; +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; + +import javax.annotation.Resource; + +import org.apache.commons.collections.map.ListOrderedMap; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springmodules.validation.commons.DefaultBeanValidator; + + +/** + * + * 공휴일에 관한 요청을 받아 서비스 클래스로 요청을 전달하고 서비스클래스에서 처리한 결과를 웹 화면으로 전달을 위한 Controller를 정의한다 + * @author 공통서비스 개발팀 이중호 + * @since 2009.04.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.04.01  이중호          최초 생성
    + *   2011.8.26	  정진오	   IncludedInfo annotation 추가
    + *   2011.10.18  서준식          보안점검 조치 사항으로 sql injection에 대비한 파라미터 체크(달력 출력을 위한 숫자만 가능하도록)
    + * 
    + */ + +@Controller +public class EgovCalRestdeManageController { + + @Resource(name = "RestdeManageService") + private EgovCalRestdeManageService restdeManageService; + + /** EgovPropertyService */ + @Resource(name = "propertiesService") + protected EgovPropertyService propertiesService; + + @Resource(name="egovRestDeIdGnrService") + private EgovIdGnrService idgenService; + + @Resource(name="EgovCmmUseService") + private EgovCmmUseService cmmUseService; + + @Autowired + private DefaultBeanValidator beanValidator; + + public BindingResult checkRestdeWithValidator(Restde restde, BindingResult bindingResult){ + + restde.setRestdeDe("dummy"); + restde.setRestdeNm("dummy"); + restde.setRestdeDc("dummy"); + restde.setRestdeSeCode("dummy"); + + beanValidator.validate(restde, bindingResult); + + return bindingResult; + } + + /** + * 달력 메인창을 호출한다. + * @param model + * @return "egovframework/com/sym/cal/EgovNormalCalPopup" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/callCalPopup.do") + public String callCalendar (ModelMap model + ) throws Exception { + return "egovframework/com/sym/cal/EgovCalPopup"; + } + + /** + * 달력을 호출한다. + * @param model + * @return "egovframework/com/sym/cal/EgovNormalCalPopup" + * @throws Exception + */ + @SuppressWarnings("unused") + @RequestMapping(value="/sym/cal/callCal.do") + public String callCal (Restde restde, BindingResult bindingResult + , ModelMap model + ) throws Exception { + + //2011.10.18 달력 출력을 위해 필요한 숫자 이외의 값을 사용하는 경우 체크 + bindingResult = checkRestdeWithValidator(restde, bindingResult); + + if(bindingResult.hasErrors()){ + + return "egovframework/com/cmm/error/dataAccessFailure"; + + } + + + Calendar cal = Calendar.getInstance(); + + if(restde.getYear()==null || restde.getYear().equals("")){ + restde.setYear(Integer.toString(cal.get(Calendar.YEAR))); + } + if(restde.getMonth()==null || restde.getMonth().equals("")){ + restde.setMonth(Integer.toString(cal.get(Calendar.MONTH)+1)); + } + int iYear = Integer.parseInt(restde.getYear()); + int iMonth = Integer.parseInt(restde.getMonth()); + + if (iMonth<1){ + iYear--; + iMonth = 12; + } + if (iMonth>12){ + iYear++; + iMonth = 1; + } + if (iYear<1){ + iYear = 1; + iMonth = 1; + } + if (iYear>9999){ + iYear = 9999; + iMonth = 12; + } + + cal.set(iYear,iMonth-1,1); + + int firstWeek = cal.get(Calendar.DAY_OF_WEEK); + int lastDay = cal.getActualMaximum(Calendar.DATE); + int week = cal.get(Calendar.DAY_OF_WEEK); + + String year = Integer.toString(iYear); + String month = Integer.toString(iMonth); + String day = Integer.toString(cal.get(Calendar.DAY_OF_MONTH)); + + restde.setStartWeekMonth(firstWeek); + restde.setLastDayMonth(lastDay); + restde.setYear(year); + restde.setMonth(month); + + List CalInfoList = new ArrayList(); + String tmpDay = ""; + + /** + * 계산... START + */ + for(int i=0; i<42;i++) { + ListOrderedMap map = new ListOrderedMap(); + int cc = i + 1; + int dd = cc-firstWeek+1; + + if (dd > 0 && dd <= lastDay) { + tmpDay = Integer.toString(dd); + } else { + tmpDay = ""; + } + + map.put("year", year); + map.put("month", month); + map.put("day", tmpDay); + map.put("cellNum", cc); + map.put("weeks", (cc - 1) / 7 + 1); + map.put("week", (week-1) % 7 + 1); + map.put("restAt", ((week-1) % 7 + 1==1) ? "Y" : "N"); + + if (dd > 0 && dd <= lastDay) { + week ++; + } + CalInfoList.add(map); + + } + /** + * 계산... END + */ + + model.addAttribute("resultList", CalInfoList); + + return "egovframework/com/sym/cal/EgovCalendar"; + } + + /** + * 일반달력 팝업 메인창을 호출한다. + * @param model + * @return "egovframework/com/sym/cal/EgovNormalCalPopup" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovNormalCalPopup.do") + public String callNormalCalPopup (ModelMap model + ) throws Exception { + return "egovframework/com/sym/cal/EgovNormalCalPopup"; + } + + /** + * 일반달력 팝업 정보를 조회한다. + * @param restde + * @param model + * @return "egovframework/com/sym/cal/EgovNormalCalendar" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovselectNormalCalendar.do") + public String selectNormalRestdePopup (Restde restde, BindingResult bindingResult + , ModelMap model + ) throws Exception { + + //2011.10.18 달력 출력을 위해 필요한 숫자 이외의 값을 사용하는 경우 체크 + bindingResult = checkRestdeWithValidator(restde, bindingResult); + + if(bindingResult.hasErrors()){ + + return "egovframework/com/cmm/error/dataAccessFailure"; + + } + + Calendar cal = Calendar.getInstance(); + + if(restde.getYear()==null || restde.getYear().equals("")){ + restde.setYear(Integer.toString(cal.get(Calendar.YEAR))); + } + if(restde.getMonth()==null || restde.getMonth().equals("")){ + restde.setMonth(Integer.toString(cal.get(Calendar.MONTH)+1)); + } + int iYear = Integer.parseInt(restde.getYear()); + int iMonth = Integer.parseInt(restde.getMonth()); + + if (iMonth<1){ + iYear--; + iMonth = 12; + } + if (iMonth>12){ + iYear++; + iMonth = 1; + } + if (iYear<1){ + iYear = 1; + iMonth = 1; + } + if (iYear>9999){ + iYear = 9999; + iMonth = 12; + } + restde.setYear(Integer.toString(iYear)); + restde.setMonth(Integer.toString(iMonth)); + + cal.set(iYear,iMonth-1,1); + + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + + List CalInfoList = restdeManageService.selectNormalRestdePopup(restde); + + model.addAttribute("resultList", CalInfoList); + + return "egovframework/com/sym/cal/EgovNormalCalendar"; + } + + + /** + * 행정달력 팝업 메인창을 호출한다. + * @param model + * @return "egovframework/com/sym/cal/EgovAdministCalPopup" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovAdministCalPopup.do") + public String callAdministCalPopup (ModelMap model + ) throws Exception { + return "egovframework/com/sym/cal/EgovAdministCalPopup"; + } + + /** + * 행정달력 팝업 정보를 조회한다. + * @param restde + * @param model + * @return "egovframework/com/sym/cal/EgovAdministCalendar" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovselectAdministCalendar.do") + public String selectAdministRestdePopup (Restde restde, BindingResult bindingResult + , ModelMap model + ) throws Exception { + + //2011.10.18 달력 출력을 위해 필요한 숫자 이외의 값을 사용하는 경우 체크 + bindingResult = checkRestdeWithValidator(restde, bindingResult); + + if(bindingResult.hasErrors()){ + + return "egovframework/com/cmm/error/dataAccessFailure"; + + } + + Calendar cal = Calendar.getInstance(); + + if(restde.getYear()==null || restde.getYear().equals("")){ + restde.setYear(Integer.toString(cal.get(Calendar.YEAR))); + } + if(restde.getMonth()==null || restde.getMonth().equals("")){ + restde.setMonth(Integer.toString(cal.get(Calendar.MONTH)+1)); + } + int iYear = Integer.parseInt(restde.getYear()); + int iMonth = Integer.parseInt(restde.getMonth()); + + if (iMonth<1){ + iYear--; + iMonth = 12; + } + if (iMonth>12){ + iYear++; + iMonth = 1; + } + if (iYear<1){ + iYear = 1; + iMonth = 1; + } + if (iYear>9999){ + iYear = 9999; + iMonth = 12; + } + restde.setYear(Integer.toString(iYear)); + restde.setMonth(Integer.toString(iMonth)); + + cal.set(iYear,iMonth-1,1); + + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + + List CalInfoList = restdeManageService.selectAdministRestdePopup(restde); + + model.addAttribute("resultList", CalInfoList); + + return "egovframework/com/sym/cal/EgovAdministCalendar"; + } + + /** + * 일반달력 일간 + * @param restde + * @param model + * @return "egovframework/com/sym/cal/EgovNormalDayCalendar" + * @throws Exception + */ + @SuppressWarnings("static-access") + @RequestMapping(value="/sym/cal/EgovNormalDayCalendar.do") + public String selectNormalDayCalendar (Restde restde, BindingResult bindingResult + , ModelMap model + ) throws Exception { + + //2011.10.18 달력 출력을 위해 필요한 숫자 이외의 값을 사용하는 경우 체크 + bindingResult = checkRestdeWithValidator(restde, bindingResult); + + if(bindingResult.hasErrors()){ + + return "egovframework/com/cmm/error/dataAccessFailure"; + + } + + Calendar cal = Calendar.getInstance(); + + + if(restde.getYear()==null || restde.getYear().equals("")){ + restde.setYear(Integer.toString(cal.get(Calendar.YEAR))); + } + if(restde.getMonth()==null || restde.getMonth().equals("")){ + restde.setMonth(Integer.toString(cal.get(Calendar.MONTH)+1)); + } + if(restde.getDay()==null || restde.getDay().equals("")){ + restde.setDay(Integer.toString(cal.get(Calendar.DATE))); + } + + int iYear = Integer.parseInt(restde.getYear()); + int iMonth = Integer.parseInt(restde.getMonth()); + int iDay = Integer.parseInt(restde.getDay()); + + if (iMonth<1){ + iYear--; + iMonth = 12; + } + if (iMonth>12){ + iYear++; + iMonth = 1; + } + if (iYear<1){ + iYear = 1; + iMonth = 1; + } + if (iYear>9999){ + iYear = 9999; + iMonth = 12; + } + restde.setYear(Integer.toString(iYear)); + restde.setMonth(Integer.toString(iMonth)); + + cal.set(iYear,iMonth-1,iDay); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + + cal.set(iYear,iMonth-1,Integer.parseInt(restde.getDay())); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DAY_OF_MONTH)); + + restde.setYear(Integer.toString(cal.get(cal.YEAR))); + restde.setMonth(Integer.toString(cal.get(cal.MONTH)+1)); + restde.setDay(Integer.toString(cal.get(cal.DAY_OF_MONTH))); + restde.setWeek(cal.get(cal.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + + List CalInfoList = restdeManageService.selectNormalDayCal(restde); + List NormalWeekRestdeList = restdeManageService.selectNormalDayRestde(restde); + + model.addAttribute("resultList", CalInfoList); + model.addAttribute("RestdeList", NormalWeekRestdeList); + + return "egovframework/com/sym/cal/EgovNormalDayCalendar"; + } + + /** + * 일반달력 주간 + * @param restde + * @param model + * @return "egovframework/com/sym/cal/EgovNormalWeekCalendar" + * @throws Exception + */ + @SuppressWarnings("static-access") + @RequestMapping(value="/sym/cal/EgovNormalWeekCalendar.do") + public String selectNormalWeekCalendar (Restde restde, BindingResult bindingResult + , ModelMap model + ) throws Exception { + + //2011.10.18 달력 출력을 위해 필요한 숫자 이외의 값을 사용하는 경우 체크 + bindingResult = checkRestdeWithValidator(restde, bindingResult); + + if(bindingResult.hasErrors()){ + + return "egovframework/com/cmm/error/dataAccessFailure"; + + } + + Calendar cal = Calendar.getInstance(); + + if(restde.getYear()==null || restde.getYear().equals("")){ + restde.setYear(Integer.toString(cal.get(Calendar.YEAR))); + } + if(restde.getMonth()==null || restde.getMonth().equals("")){ + restde.setMonth(Integer.toString(cal.get(Calendar.MONTH)+1)); + } + if(restde.getDay()==null || restde.getDay().equals("")){ + restde.setDay(Integer.toString(cal.get(Calendar.DATE))); + } + + int iYear = Integer.parseInt(restde.getYear()); + int iMonth = Integer.parseInt(restde.getMonth()); + + if (iMonth<1){ + iYear--; + iMonth = 12; + } + if (iMonth>12){ + iYear++; + iMonth = 1; + } + if (iYear<1){ + iYear = 1; + iMonth = 1; + } + if (iYear>9999){ + iYear = 9999; + iMonth = 12; + } + restde.setYear(Integer.toString(iYear)); + restde.setMonth(Integer.toString(iMonth)); + + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + + cal.set(iYear,iMonth-1,Integer.parseInt(restde.getDay())); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DAY_OF_MONTH)); + + int iStartWeek = restde.getStartWeekMonth(); + int iLastDate = restde.getLastDayMonth(); + int iDayWeek = cal.get(Calendar.DAY_OF_WEEK); + + int iMaxWeeks = (int)Math.floor(iLastDate/7); + iMaxWeeks = iMaxWeeks + (int)Math.ceil(((iLastDate - iMaxWeeks * 7) + iStartWeek - 1) / 7.0); + restde.setMaxWeeks(iMaxWeeks); + + if (iMaxWeeks < restde.getWeeks()) { + restde.setWeeks(iMaxWeeks); + } + + Restde vo = new Restde(); + Calendar weekCal = Calendar.getInstance(); + weekCal.setTime(cal.getTime()); + + if(restde.getWeeks()!=0){ + weekCal.set(weekCal.DATE, (restde.getWeeks() - 1) * 7 + 1); + if(restde.getWeeks()>1){ + iDayWeek = weekCal.get(weekCal.DAY_OF_WEEK); + weekCal.add(weekCal.DATE, (-1)*(iDayWeek-1)); + } + restde.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH)+1)); + } + + iDayWeek = weekCal.get(weekCal.DAY_OF_WEEK); + + // 일요일 + weekCal.add(weekCal.DATE, (-1)*(iDayWeek-1)); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_1 = restdeManageService.selectNormalDayCal(vo); + List NormalWeekRestdeList_1 = restdeManageService.selectNormalDayRestde(vo); + + // 월요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_2 = restdeManageService.selectNormalDayCal(vo); + List NormalWeekRestdeList_2 = restdeManageService.selectNormalDayRestde(vo); + + // 화요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_3 = restdeManageService.selectNormalDayCal(vo); + List NormalWeekRestdeList_3 = restdeManageService.selectNormalDayRestde(vo); + + // 수요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_4 = restdeManageService.selectNormalDayCal(vo); + List NormalWeekRestdeList_4 = restdeManageService.selectNormalDayRestde(vo); + + // 목요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_5 = restdeManageService.selectNormalDayCal(vo); + List NormalWeekRestdeList_5 = restdeManageService.selectNormalDayRestde(vo); + + // 금요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_6 = restdeManageService.selectNormalDayCal(vo); + List NormalWeekRestdeList_6 = restdeManageService.selectNormalDayRestde(vo); + + // 토요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_7 = restdeManageService.selectNormalDayCal(vo); + List NormalWeekRestdeList_7 = restdeManageService.selectNormalDayRestde(vo); + + model.addAttribute("resultList_1", CalInfoList_1); + model.addAttribute("resultList_2", CalInfoList_2); + model.addAttribute("resultList_3", CalInfoList_3); + model.addAttribute("resultList_4", CalInfoList_4); + model.addAttribute("resultList_5", CalInfoList_5); + model.addAttribute("resultList_6", CalInfoList_6); + model.addAttribute("resultList_7", CalInfoList_7); + model.addAttribute("RestdeList_1", NormalWeekRestdeList_1); + model.addAttribute("RestdeList_2", NormalWeekRestdeList_2); + model.addAttribute("RestdeList_3", NormalWeekRestdeList_3); + model.addAttribute("RestdeList_4", NormalWeekRestdeList_4); + model.addAttribute("RestdeList_5", NormalWeekRestdeList_5); + model.addAttribute("RestdeList_6", NormalWeekRestdeList_6); + model.addAttribute("RestdeList_7", NormalWeekRestdeList_7); + + List CalInfoList = restdeManageService.selectNormalDayCal(restde); + model.addAttribute("resultList", CalInfoList); + + return "egovframework/com/sym/cal/EgovNormalWeekCalendar"; + } + + /** + * 일반달력 월간 + * @param restde + * @param model + * @return "egovframework/com/sym/cal/EgovNormalMonthCalendar" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovNormalMonthCalendar.do") + public String selectNormalMonthCalendar (Restde restde, BindingResult bindingResult + , ModelMap model + ) throws Exception { + + //2011.10.18 달력 출력을 위해 필요한 숫자 이외의 값을 사용하는 경우 체크 + bindingResult = checkRestdeWithValidator(restde, bindingResult); + + if(bindingResult.hasErrors()){ + + return "egovframework/com/cmm/error/dataAccessFailure"; + + } + + Calendar cal = Calendar.getInstance(); + + if(restde.getYear()==null || restde.getYear().equals("")){ + restde.setYear(Integer.toString(cal.get(Calendar.YEAR))); + } + if(restde.getMonth()==null || restde.getMonth().equals("")){ + restde.setMonth(Integer.toString(cal.get(Calendar.MONTH)+1)); + } + int iYear = Integer.parseInt(restde.getYear()); + int iMonth = Integer.parseInt(restde.getMonth()); + + if (iMonth<1){ + iYear--; + iMonth = 12; + } + if (iMonth>12){ + iYear++; + iMonth = 1; + } + if (iYear<1){ + iYear = 1; + iMonth = 1; + } + if (iYear>9999){ + iYear = 9999; + iMonth = 12; + } + restde.setYear(Integer.toString(iYear)); + restde.setMonth(Integer.toString(iMonth)); + + cal.set(iYear,iMonth-1,1); + + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + + List CalInfoList = restdeManageService.selectNormalRestdePopup(restde); + + + List NormalMonthRestdeList = restdeManageService.selectNormalMonthRestde(restde); + + model.addAttribute("resultList", CalInfoList); + model.addAttribute("RestdeList", NormalMonthRestdeList); + + return "egovframework/com/sym/cal/EgovNormalMonthCalendar"; + } + + /** + * 일반달력 연간 + * @param restde + * @param model + * @return "egovframework/com/sym/cal/EgovNormalYearCalendar" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovNormalYearCalendar.do") + public String selectNormalYearCalendar (Restde restde, BindingResult bindingResult + , ModelMap model + ) throws Exception { + + //2011.10.18 달력 출력을 위해 필요한 숫자 이외의 값을 사용하는 경우 체크 + bindingResult = checkRestdeWithValidator(restde, bindingResult); + + if(bindingResult.hasErrors()){ + + return "egovframework/com/cmm/error/dataAccessFailure"; + + } + + Calendar cal = Calendar.getInstance(); + + if(restde.getYear()==null || restde.getYear().equals("")){ + restde.setYear(Integer.toString(cal.get(Calendar.YEAR))); + } + if(restde.getMonth()==null || restde.getMonth().equals("")){ + restde.setMonth(Integer.toString(cal.get(Calendar.MONTH)+1)); + } + int iYear = Integer.parseInt(restde.getYear()); + int iMonth = Integer.parseInt(restde.getMonth()); + + if (iMonth<1){ + iYear--; + iMonth = 12; + } + if (iMonth>12){ + iYear++; + iMonth = 1; + } + if (iYear<1){ + iYear = 1; + iMonth = 1; + } + if (iYear>9999){ + iYear = 9999; + iMonth = 12; + } + restde.setYear(Integer.toString(iYear)); + + /* 월별확인 */ + + /* 1월 */ + iMonth = 1; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_1 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_1 = restdeManageService.selectNormalMonthRestde(restde); + + /* 2월 */ + iMonth = 2; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_2 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_2 = restdeManageService.selectNormalMonthRestde(restde); + + /* 3월 */ + iMonth = 3; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_3 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_3 = restdeManageService.selectNormalMonthRestde(restde); + + /* 4월 */ + iMonth = 4; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_4 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_4 = restdeManageService.selectNormalMonthRestde(restde); + + /* 5월 */ + iMonth = 5; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_5 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_5 = restdeManageService.selectNormalMonthRestde(restde); + + /* 6월 */ + iMonth = 6; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_6 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_6 = restdeManageService.selectNormalMonthRestde(restde); + + /* 7월 */ + iMonth = 7; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_7 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_7 = restdeManageService.selectNormalMonthRestde(restde); + + /* 8월 */ + iMonth = 8; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_8 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_8 = restdeManageService.selectNormalMonthRestde(restde); + + /* 9월 */ + iMonth = 9; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_9 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_9 = restdeManageService.selectNormalMonthRestde(restde); + + /* 10월 */ + iMonth = 10; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_10 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_10 = restdeManageService.selectNormalMonthRestde(restde); + + /* 11월 */ + iMonth = 11; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_11 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_11 = restdeManageService.selectNormalMonthRestde(restde); + + /* 12월 */ + iMonth = 12; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_12 = restdeManageService.selectNormalRestdePopup(restde); + List NormalMonthRestdeList_12 = restdeManageService.selectNormalMonthRestde(restde); + + model.addAttribute("resultList_1" , CalInfoList_1 ); + model.addAttribute("resultList_2" , CalInfoList_2 ); + model.addAttribute("resultList_3" , CalInfoList_3 ); + model.addAttribute("resultList_4" , CalInfoList_4 ); + model.addAttribute("resultList_5" , CalInfoList_5 ); + model.addAttribute("resultList_6" , CalInfoList_6 ); + model.addAttribute("resultList_7" , CalInfoList_7 ); + model.addAttribute("resultList_8" , CalInfoList_8 ); + model.addAttribute("resultList_9" , CalInfoList_9 ); + model.addAttribute("resultList_10", CalInfoList_10); + model.addAttribute("resultList_11", CalInfoList_11); + model.addAttribute("resultList_12", CalInfoList_12); + model.addAttribute("RestdeList_1" , NormalMonthRestdeList_1 ); + model.addAttribute("RestdeList_2" , NormalMonthRestdeList_2 ); + model.addAttribute("RestdeList_3" , NormalMonthRestdeList_3 ); + model.addAttribute("RestdeList_4" , NormalMonthRestdeList_4 ); + model.addAttribute("RestdeList_5" , NormalMonthRestdeList_5 ); + model.addAttribute("RestdeList_6" , NormalMonthRestdeList_6 ); + model.addAttribute("RestdeList_7" , NormalMonthRestdeList_7 ); + model.addAttribute("RestdeList_8" , NormalMonthRestdeList_8 ); + model.addAttribute("RestdeList_9" , NormalMonthRestdeList_9 ); + model.addAttribute("RestdeList_10", NormalMonthRestdeList_10); + model.addAttribute("RestdeList_11", NormalMonthRestdeList_11); + model.addAttribute("RestdeList_12", NormalMonthRestdeList_12); + + return "egovframework/com/sym/cal/EgovNormalYearCalendar"; + } + + + /** + * 행정달력 일간 + * @param restde + * @param model + * @return "egovframework/com/sym/cal/EgovAdministDayCalendar" + * @throws Exception + */ + @SuppressWarnings("static-access") + @RequestMapping(value="/sym/cal/EgovAdministDayCalendar.do") + public String selectAdministDayCalendar (Restde restde, BindingResult bindingResult + , ModelMap model + ) throws Exception { + + //2011.10.18 달력 출력을 위해 필요한 숫자 이외의 값을 사용하는 경우 체크 + bindingResult = checkRestdeWithValidator(restde, bindingResult); + + if(bindingResult.hasErrors()){ + + return "egovframework/com/cmm/error/dataAccessFailure"; + + } + + Calendar cal = Calendar.getInstance(); + + + if(restde.getYear()==null || restde.getYear().equals("")){ + restde.setYear(Integer.toString(cal.get(Calendar.YEAR))); + } + if(restde.getMonth()==null || restde.getMonth().equals("")){ + restde.setMonth(Integer.toString(cal.get(Calendar.MONTH)+1)); + } + if(restde.getDay()==null || restde.getDay().equals("")){ + restde.setDay(Integer.toString(cal.get(Calendar.DATE))); + } + + int iYear = Integer.parseInt(restde.getYear()); + int iMonth = Integer.parseInt(restde.getMonth()); + int iDay = Integer.parseInt(restde.getDay()); + + if (iMonth<1){ + iYear--; + iMonth = 12; + } + if (iMonth>12){ + iYear++; + iMonth = 1; + } + if (iYear<1){ + iYear = 1; + iMonth = 1; + } + if (iYear>9999){ + iYear = 9999; + iMonth = 12; + } + restde.setYear(Integer.toString(iYear)); + restde.setMonth(Integer.toString(iMonth)); + + cal.set(iYear,iMonth-1,iDay); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + + cal.set(iYear,iMonth-1,Integer.parseInt(restde.getDay())); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DAY_OF_MONTH)); + + restde.setYear(Integer.toString(cal.get(cal.YEAR))); + restde.setMonth(Integer.toString(cal.get(cal.MONTH)+1)); + restde.setDay(Integer.toString(cal.get(cal.DAY_OF_MONTH))); + restde.setWeek(cal.get(cal.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + + List CalInfoList = restdeManageService.selectAdministDayCal(restde); + List AdministWeekRestdeList = restdeManageService.selectAdministDayRestde(restde); + + model.addAttribute("resultList", CalInfoList); + model.addAttribute("RestdeList", AdministWeekRestdeList); + + return "egovframework/com/sym/cal/EgovAdministDayCalendar"; + } + + + /** + * 행정달력 주간 + * @param restde + * @param model + * @return "egovframework/com/sym/cal/EgovAdministWeekCalendar" + * @throws Exception + */ + @SuppressWarnings("static-access") + @RequestMapping(value="/sym/cal/EgovAdministWeekCalendar.do") + public String selectAdministWeekCalendar (Restde restde, BindingResult bindingResult + , ModelMap model + ) throws Exception { + + //2011.10.18 달력 출력을 위해 필요한 숫자 이외의 값을 사용하는 경우 체크 + bindingResult = checkRestdeWithValidator(restde, bindingResult); + + if(bindingResult.hasErrors()){ + + return "egovframework/com/cmm/error/dataAccessFailure"; + + } + + Calendar cal = Calendar.getInstance(); + + if(restde.getYear()==null || restde.getYear().equals("")){ + restde.setYear(Integer.toString(cal.get(Calendar.YEAR))); + } + if(restde.getMonth()==null || restde.getMonth().equals("")){ + restde.setMonth(Integer.toString(cal.get(Calendar.MONTH)+1)); + } + if(restde.getDay()==null || restde.getDay().equals("")){ + restde.setDay(Integer.toString(cal.get(Calendar.DATE))); + } + + int iYear = Integer.parseInt(restde.getYear()); + int iMonth = Integer.parseInt(restde.getMonth()); + + if (iMonth<1){ + iYear--; + iMonth = 12; + } + if (iMonth>12){ + iYear++; + iMonth = 1; + } + if (iYear<1){ + iYear = 1; + iMonth = 1; + } + if (iYear>9999){ + iYear = 9999; + iMonth = 12; + } + restde.setYear(Integer.toString(iYear)); + restde.setMonth(Integer.toString(iMonth)); + + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + + cal.set(iYear,iMonth-1,Integer.parseInt(restde.getDay())); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DAY_OF_MONTH)); + + int iStartWeek = restde.getStartWeekMonth(); + int iLastDate = restde.getLastDayMonth(); + int iDayWeek = cal.get(Calendar.DAY_OF_WEEK); + + int iMaxWeeks = (int)Math.floor(iLastDate/7); + iMaxWeeks = iMaxWeeks + (int)Math.ceil(((iLastDate - iMaxWeeks * 7) + iStartWeek - 1) / 7.0); + restde.setMaxWeeks(iMaxWeeks); + + if (iMaxWeeks < restde.getWeeks()) { + restde.setWeeks(iMaxWeeks); + } + + Restde vo = new Restde(); + Calendar weekCal = Calendar.getInstance(); + weekCal.setTime(cal.getTime()); + + if(restde.getWeeks()!=0){ + weekCal.set(weekCal.DATE, (restde.getWeeks() - 1) * 7 + 1); + if(restde.getWeeks()>1){ + iDayWeek = weekCal.get(weekCal.DAY_OF_WEEK); + weekCal.add(weekCal.DATE, (-1)*(iDayWeek-1)); + } + restde.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH)+1)); + } + List CalInfoList = restdeManageService.selectAdministDayCal(restde); + + iDayWeek = weekCal.get(weekCal.DAY_OF_WEEK); + + // 일요일 + weekCal.add(weekCal.DATE, (-1)*(iDayWeek-1)); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_1 = restdeManageService.selectAdministDayCal(vo); + List AdministWeekRestdeList_1 = restdeManageService.selectAdministDayRestde(vo); + + // 월요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_2 = restdeManageService.selectAdministDayCal(vo); + List AdministWeekRestdeList_2 = restdeManageService.selectAdministDayRestde(vo); + + // 화요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_3 = restdeManageService.selectAdministDayCal(vo); + List AdministWeekRestdeList_3 = restdeManageService.selectAdministDayRestde(vo); + + // 수요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_4 = restdeManageService.selectAdministDayCal(vo); + List AdministWeekRestdeList_4 = restdeManageService.selectAdministDayRestde(vo); + + // 목요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_5 = restdeManageService.selectAdministDayCal(vo); + List AdministWeekRestdeList_5 = restdeManageService.selectAdministDayRestde(vo); + + // 금요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_6 = restdeManageService.selectAdministDayCal(vo); + List AdministWeekRestdeList_6 = restdeManageService.selectAdministDayRestde(vo); + + // 토요일 + weekCal.add(weekCal.DATE, 1); + vo.setYear(Integer.toString(weekCal.get(weekCal.YEAR))); + vo.setMonth(Integer.toString(weekCal.get(weekCal.MONTH)+1)); + vo.setDay(Integer.toString(weekCal.get(weekCal.DAY_OF_MONTH))); + vo.setWeek(weekCal.get(weekCal.DAY_OF_WEEK)); + List CalInfoList_7 = restdeManageService.selectAdministDayCal(vo); + List AdministWeekRestdeList_7 = restdeManageService.selectAdministDayRestde(vo); + + model.addAttribute("resultList_1", CalInfoList_1); + model.addAttribute("resultList_2", CalInfoList_2); + model.addAttribute("resultList_3", CalInfoList_3); + model.addAttribute("resultList_4", CalInfoList_4); + model.addAttribute("resultList_5", CalInfoList_5); + model.addAttribute("resultList_6", CalInfoList_6); + model.addAttribute("resultList_7", CalInfoList_7); + model.addAttribute("RestdeList_1", AdministWeekRestdeList_1); + model.addAttribute("RestdeList_2", AdministWeekRestdeList_2); + model.addAttribute("RestdeList_3", AdministWeekRestdeList_3); + model.addAttribute("RestdeList_4", AdministWeekRestdeList_4); + model.addAttribute("RestdeList_5", AdministWeekRestdeList_5); + model.addAttribute("RestdeList_6", AdministWeekRestdeList_6); + model.addAttribute("RestdeList_7", AdministWeekRestdeList_7); + + model.addAttribute("resultList", CalInfoList); + + return "egovframework/com/sym/cal/EgovAdministWeekCalendar"; + } + + /** + * 행정달력 월간 + * @param restde + * @param model + * @return "egovframework/com/sym/cal/EgovAdministMonthCalendar" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovAdministMonthCalendar.do") + public String selectAdministMonthCalendar (Restde restde, BindingResult bindingResult + , ModelMap model + ) throws Exception { + + //2011.10.18 달력 출력을 위해 필요한 숫자 이외의 값을 사용하는 경우 체크 + bindingResult = checkRestdeWithValidator(restde, bindingResult); + + if(bindingResult.hasErrors()){ + + return "egovframework/com/cmm/error/dataAccessFailure"; + + } + + Calendar cal = Calendar.getInstance(); + + if(restde.getYear()==null || restde.getYear().equals("")){ + restde.setYear(Integer.toString(cal.get(Calendar.YEAR))); + } + if(restde.getMonth()==null || restde.getMonth().equals("")){ + restde.setMonth(Integer.toString(cal.get(Calendar.MONTH)+1)); + } + int iYear = Integer.parseInt(restde.getYear()); + int iMonth = Integer.parseInt(restde.getMonth()); + + if (iMonth<1){ + iYear--; + iMonth = 12; + } + if (iMonth>12){ + iYear++; + iMonth = 1; + } + if (iYear<1){ + iYear = 1; + iMonth = 1; + } + if (iYear>9999){ + iYear = 9999; + iMonth = 12; + } + restde.setYear(Integer.toString(iYear)); + restde.setMonth(Integer.toString(iMonth)); + + cal.set(iYear,iMonth-1,1); + + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + + List CalInfoList = restdeManageService.selectAdministRestdePopup(restde); + + + List AdministMonthRestdeList = restdeManageService.selectAdministMonthRestde(restde); + + model.addAttribute("resultList", CalInfoList); + model.addAttribute("RestdeList", AdministMonthRestdeList); + + return "egovframework/com/sym/cal/EgovAdministMonthCalendar"; + } + + + /** + * 행정달력 연간 + * @param restde + * @param model + * @return "egovframework/com/sym/cal/EgovAdministYearCalendar" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovAdministYearCalendar.do") + public String selectAdministYearCalendar (Restde restde, BindingResult bindingResult + , ModelMap model + ) throws Exception { + + //2011.10.18 달력 출력을 위해 필요한 숫자 이외의 값을 사용하는 경우 체크 + bindingResult = checkRestdeWithValidator(restde, bindingResult); + + if(bindingResult.hasErrors()){ + + return "egovframework/com/cmm/error/dataAccessFailure"; + + } + + Calendar cal = Calendar.getInstance(); + + if(restde.getYear()==null || restde.getYear().equals("")){ + restde.setYear(Integer.toString(cal.get(Calendar.YEAR))); + } + if(restde.getMonth()==null || restde.getMonth().equals("")){ + restde.setMonth(Integer.toString(cal.get(Calendar.MONTH)+1)); + } + int iYear = Integer.parseInt(restde.getYear()); + int iMonth = Integer.parseInt(restde.getMonth()); + + if (iMonth<1){ + iYear--; + iMonth = 12; + } + if (iMonth>12){ + iYear++; + iMonth = 1; + } + if (iYear<1){ + iYear = 1; + iMonth = 1; + } + if (iYear>9999){ + iYear = 9999; + iMonth = 12; + } + restde.setYear(Integer.toString(iYear)); + + /* 월별확인 */ + + /* 1월 */ + iMonth = 1; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_1 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_1 = restdeManageService.selectAdministMonthRestde(restde); + + /* 2월 */ + iMonth = 2; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_2 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_2 = restdeManageService.selectAdministMonthRestde(restde); + + /* 3월 */ + iMonth = 3; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_3 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_3 = restdeManageService.selectAdministMonthRestde(restde); + + /* 4월 */ + iMonth = 4; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_4 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_4 = restdeManageService.selectAdministMonthRestde(restde); + + /* 5월 */ + iMonth = 5; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_5 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_5 = restdeManageService.selectAdministMonthRestde(restde); + + /* 6월 */ + iMonth = 6; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_6 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_6 = restdeManageService.selectAdministMonthRestde(restde); + + /* 7월 */ + iMonth = 7; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_7 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_7 = restdeManageService.selectAdministMonthRestde(restde); + + /* 8월 */ + iMonth = 8; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_8 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_8 = restdeManageService.selectAdministMonthRestde(restde); + + /* 9월 */ + iMonth = 9; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_9 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_9 = restdeManageService.selectAdministMonthRestde(restde); + + /* 10월 */ + iMonth = 10; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_10 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_10 = restdeManageService.selectAdministMonthRestde(restde); + + /* 11월 */ + iMonth = 11; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_11 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_11 = restdeManageService.selectAdministMonthRestde(restde); + + /* 12월 */ + iMonth = 12; + restde.setMonth(Integer.toString(iMonth)); + cal.set(iYear,iMonth-1,1); + restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); + restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + List CalInfoList_12 = restdeManageService.selectAdministRestdePopup(restde); + List AdministMonthRestdeList_12 = restdeManageService.selectAdministMonthRestde(restde); + + model.addAttribute("resultList_1" , CalInfoList_1 ); + model.addAttribute("resultList_2" , CalInfoList_2 ); + model.addAttribute("resultList_3" , CalInfoList_3 ); + model.addAttribute("resultList_4" , CalInfoList_4 ); + model.addAttribute("resultList_5" , CalInfoList_5 ); + model.addAttribute("resultList_6" , CalInfoList_6 ); + model.addAttribute("resultList_7" , CalInfoList_7 ); + model.addAttribute("resultList_8" , CalInfoList_8 ); + model.addAttribute("resultList_9" , CalInfoList_9 ); + model.addAttribute("resultList_10", CalInfoList_10); + model.addAttribute("resultList_11", CalInfoList_11); + model.addAttribute("resultList_12", CalInfoList_12); + model.addAttribute("RestdeList_1" , AdministMonthRestdeList_1 ); + model.addAttribute("RestdeList_2" , AdministMonthRestdeList_2 ); + model.addAttribute("RestdeList_3" , AdministMonthRestdeList_3 ); + model.addAttribute("RestdeList_4" , AdministMonthRestdeList_4 ); + model.addAttribute("RestdeList_5" , AdministMonthRestdeList_5 ); + model.addAttribute("RestdeList_6" , AdministMonthRestdeList_6 ); + model.addAttribute("RestdeList_7" , AdministMonthRestdeList_7 ); + model.addAttribute("RestdeList_8" , AdministMonthRestdeList_8 ); + model.addAttribute("RestdeList_9" , AdministMonthRestdeList_9 ); + model.addAttribute("RestdeList_10", AdministMonthRestdeList_10); + model.addAttribute("RestdeList_11", AdministMonthRestdeList_11); + model.addAttribute("RestdeList_12", AdministMonthRestdeList_12); + + return "egovframework/com/sym/cal/EgovAdministYearCalendar"; + } + + + /** + * 휴일을 삭제한다. + * @param loginVO + * @param restde + * @param model + * @return "forward:/sym/cal/EgovRestdeList.do" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovRestdeRemove.do") + public String deleteRestde (@ModelAttribute("loginVO") LoginVO loginVO + , Restde restde + , ModelMap model + ) throws Exception { + restdeManageService.deleteRestde(restde); + return "forward:/sym/cal/EgovRestdeList.do"; + } + + + /** + * 휴일을 등록한다. + * @param loginVO + * @param restde + * @param bindingResult + * @param model + * @return "egovframework/com/sym/cal/EgovRestdeRegist" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovRestdeRegist.do") + public String insertRestde (@ModelAttribute("loginVO") LoginVO loginVO + , @ModelAttribute("restde") Restde restde + , BindingResult bindingResult + , ModelMap model + ) throws Exception { + if (restde.getRestdeDe() == null + ||restde.getRestdeDe().equals("")) { + + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + vo.setCodeId("COM017"); + List restdeCodeList = cmmUseService.selectCmmCodeDetail(vo); + model.addAttribute("restdeCode", restdeCodeList); + + return "egovframework/com/sym/cal/EgovRestdeRegist"; + } + + beanValidator.validate(restde, bindingResult); + if (bindingResult.hasErrors()){ + return "egovframework/com/sym/cal/EgovRestdeRegist"; + } + + restde.setRestdeNo(idgenService.getNextIntegerId()%1000000); + restde.setFrstRegisterId(loginVO.getUniqId()); + + restdeManageService.insertRestde(restde); + return "forward:/sym/cal/EgovRestdeList.do"; + } + + + /** + * 휴일 세부내역을 조회한다. + * @param loginVO + * @param restde + * @param model + * @return "egovframework/com/sym/cal/EgovRestdeDetail" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovRestdeDetail.do") + public String selectRestdeDetail (@ModelAttribute("loginVO") LoginVO loginVO + , Restde restde + , ModelMap model + ) throws Exception { + Restde vo = restdeManageService.selectRestdeDetail(restde); + model.addAttribute("result", vo); + + return "egovframework/com/sym/cal/EgovRestdeDetail"; + } + + /** + * 휴일 리스트를 조회한다. + * @param loginVO + * @param searchVO + * @param model + * @return "egovframework/com/sym/cal/EgovRestdeList" + * @throws Exception + */ + @IncludedInfo(name="공휴일관리(달력)", listUrl="/sym/cal/EgovRestdeList.do", order = 1300 ,gid = 90) + @RequestMapping(value="/sym/cal/EgovRestdeList.do") + public String selectRestdeList (@ModelAttribute("loginVO") LoginVO loginVO + , @ModelAttribute("searchVO") RestdeVO searchVO + , ModelMap model + ) throws Exception { + /** EgovPropertyService.sample */ + searchVO.setPageUnit(propertiesService.getInt("pageUnit")); + searchVO.setPageSize(propertiesService.getInt("pageSize")); + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(searchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(searchVO.getPageUnit()); + paginationInfo.setPageSize(searchVO.getPageSize()); + + searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + List CmmnCodeList = restdeManageService.selectRestdeList(searchVO); + model.addAttribute("resultList", CmmnCodeList); + + int totCnt = restdeManageService.selectRestdeListTotCnt(searchVO); + paginationInfo.setTotalRecordCount(totCnt); + model.addAttribute("paginationInfo", paginationInfo); + + return "egovframework/com/sym/cal/EgovRestdeList"; + } + + /** + * 휴일을 수정한다. + * @param loginVO + * @param restde + * @param bindingResult + * @param commandMap + * @param model + * @return "egovframework/com/sym/cal/EgovRestdeModify" + * @throws Exception + */ + @RequestMapping(value="/sym/cal/EgovRestdeModify.do") + public String updateRestde (@ModelAttribute("loginVO") LoginVO loginVO + , @ModelAttribute("restde") Restde restde + , BindingResult bindingResult + , @RequestParam Map commandMap + , ModelMap model + ) throws Exception { + String sCmd = commandMap.get("cmd") == null ? "" : (String)commandMap.get("cmd"); + if (sCmd.equals("")) { + Restde vo = restdeManageService.selectRestdeDetail(restde); + model.addAttribute("restde", vo); + + ComDefaultCodeVO CodeVO = new ComDefaultCodeVO(); + CodeVO.setCodeId("COM017"); + List restdeCodeList = cmmUseService.selectCmmCodeDetail(CodeVO); + model.addAttribute("restdeCode", restdeCodeList); + + return "egovframework/com/sym/cal/EgovRestdeModify"; + } else if (sCmd.equals("Modify")) { + beanValidator.validate(restde, bindingResult); + if (bindingResult.hasErrors()){ + ComDefaultCodeVO CodeVO = new ComDefaultCodeVO(); + CodeVO.setCodeId("COM017"); + List restdeCodeList = cmmUseService.selectCmmCodeDetail(CodeVO); + model.addAttribute("restdeCode", restdeCodeList); + + return "egovframework/com/sym/cal/EgovRestdeModify"; + } + + restde.setLastUpdusrId(loginVO.getUniqId()); + restdeManageService.updateRestde(restde); + return "forward:/sym/cal/EgovRestdeList.do"; + } else { + return "forward:/sym/cal/EgovRestdeList.do"; + } + } + + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/uat/sso/filter/EgovSSOLoginFilter.java b/src/main/java/egovframework/com/uat/sso/filter/EgovSSOLoginFilter.java new file mode 100644 index 00000000..ca65d71e --- /dev/null +++ b/src/main/java/egovframework/com/uat/sso/filter/EgovSSOLoginFilter.java @@ -0,0 +1,151 @@ +package egovframework.com.uat.sso.filter; + +import java.io.IOException; + +import egovframework.com.cmm.LoginVO; +import egovframework.com.uat.sso.service.EgovSSOService; +import egovframework.com.uat.uia.service.EgovLoginService; + +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; +import javax.servlet.http.HttpSession; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.context.ApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +/** + * + * @author 공통서비스 개발팀 서준식 + * @since 2011. 8. 2. + * @version 1.0 + * @see + * + *
    + * 개정이력(Modification Information)
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011. 8. 2.    서준식        최초생성
    + *
    + *  
    + */ + +public class EgovSSOLoginFilter implements Filter { + + private FilterConfig config; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovSSOLoginFilter.class); + + public void destroy() { + } + + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext()); + EgovSSOService egovSSOService = null; + try { + egovSSOService = (EgovSSOService) act.getBean("egovSSOService"); + if (egovSSOService == null) { + LOGGER.error("Fail to create 'EgovSSOService' object"); + chain.doFilter(request, response); + return; + } + } catch (NoSuchBeanDefinitionException ex) { + LOGGER.error("No SSO ServiceImpl Class!"); + } + + EgovLoginService loginService = (EgovLoginService) act.getBean("loginService"); + + HttpServletRequest httpRequest = (HttpServletRequest) request; + HttpSession session = httpRequest.getSession(); + String isLocallyAuthenticated = (String) session.getAttribute("isLocallyAuthenticated"); + String isRemotelyAuthenticated = (String) session.getAttribute("isRemotelyAuthenticated"); + boolean isSSOLoggedOn = false; + + if (isLocallyAuthenticated != null && (isLocallyAuthenticated.equals("true"))) { + if (isRemotelyAuthenticated == null) { + + try { + //sso서버에 토큰 생성 + egovSSOService.requestIssueToken(request, response); + //로컬 인증 적용 여부 완료를 세션에 저장 + session.setAttribute("isLocallyAuthenticated", "true"); + //sso 인증 완료 여부를 세션에 저장 + session.setAttribute("isRemotelyAuthenticated", "true"); + + } catch (IllegalStateException ex) {//KISA 보안약점 조치 (2018-10-29, 윤창원) + session.setAttribute("isRemotelyAuthenticated", "fail"); + LOGGER.debug("SSO Authentication fail : invalidated session {}", ex.getMessage()); + } catch (Exception ex) { + session.setAttribute("isRemotelyAuthenticated", "fail"); + LOGGER.debug("SSO Authentication fail : {}", ex.getMessage()); + } + + } + } else if (isLocallyAuthenticated == null) { + if (isRemotelyAuthenticated == null) { + //sso서버에 토큰이 존재하는지 체크함 + isSSOLoggedOn = egovSSOService.hasTokenInSSOServer(httpRequest, response); + if (isSSOLoggedOn) { + //서버에 토큰이 존재할 경우 로컬 인증을 위해 isRemotelyAuthenticated true로 변경 + session.setAttribute("isRemotelyAuthenticated", "true"); + + //로컬 DB인증을 위한 loginVO 객체를 세션에 저장 + session.setAttribute("loginVOForDBAuthentication", egovSSOService.getLoginVO(request, response)); + } + } + } + + chain.doFilter(request, response); + + isLocallyAuthenticated = (String) session.getAttribute("isLocallyAuthenticated"); + isRemotelyAuthenticated = (String) session.getAttribute("isRemotelyAuthenticated"); + + if (isLocallyAuthenticated != null && isLocallyAuthenticated.equals("true")) { + if (isRemotelyAuthenticated == null) { + + } + } else if (isLocallyAuthenticated == null) { + if (isRemotelyAuthenticated == null) { + + } else if (isRemotelyAuthenticated != null && isRemotelyAuthenticated.equals("true")) { + + try { + //세션 토큰 정보를 가지고 DB로부터 사용자 정보를 가져옴 + LoginVO loginVO = (LoginVO) session.getAttribute("loginVOForDBAuthentication"); + loginVO = loginService.actionLoginByEsntlId(loginVO); + if (loginVO != null && loginVO.getId() != null && !loginVO.getId().equals("")) { + //세션 로그인 + session.setAttribute("loginVO", loginVO); + + //로컬 인증결과 세션에 저장 + session.setAttribute("isLocallyAuthenticated", "true"); + } else { + LOGGER.debug("Local authentication by sso is failed"); + } + + } catch (IllegalStateException ex) {//KISA 보안약점 조치 (2018-10-29, 윤창원) + LOGGER.debug("Local authentication by sso is failed (Invalidated session) : {}", ex.getMessage()); + } catch (Exception ex) { + //DB인증 예외가 발생할 경우 로그를 남기고 로컬인증을 시키지 않고 그대로 진행함. + LOGGER.debug("Local authentication by sso is failed : {}", ex.getMessage()); + } + + } + } + + } + + public void init(FilterConfig filterConfig) throws ServletException { + + this.config = filterConfig; + } +} diff --git a/src/main/java/egovframework/com/uat/sso/filter/EgovSSOLogoutFilter.java b/src/main/java/egovframework/com/uat/sso/filter/EgovSSOLogoutFilter.java new file mode 100644 index 00000000..5e710897 --- /dev/null +++ b/src/main/java/egovframework/com/uat/sso/filter/EgovSSOLogoutFilter.java @@ -0,0 +1,57 @@ +package egovframework.com.uat.sso.filter; + +import java.io.IOException; + +import egovframework.com.uat.sso.service.EgovSSOService; + +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; + +import org.springframework.context.ApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +/** + * + * @author 공통서비스 개발팀 서준식 + * @since 2011. 8. 29. + * @version 1.0 + * @see + * + *
    + * 개정이력(Modification Information)
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011. 8. 29.    서준식        최초생성
    + *
    + *  
    + */ + +public class EgovSSOLogoutFilter implements Filter{ + private FilterConfig config; + + public void destroy() {} + + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext()); + EgovSSOService egovSSOService = (EgovSSOService) act.getBean("egovSSOService"); + + String returnURL = config.getInitParameter("returnURL"); + + ((HttpServletRequest)request).getSession().setAttribute("loginVO", null); + egovSSOService.ssoLogout(request, response, ((HttpServletRequest)request).getContextPath() + returnURL); + + } + + public void init(FilterConfig filterConfig) throws ServletException { + + this.config = filterConfig; + } +} diff --git a/src/main/java/egovframework/com/uat/sso/service/EgovSSOService.java b/src/main/java/egovframework/com/uat/sso/service/EgovSSOService.java new file mode 100644 index 00000000..c449de9c --- /dev/null +++ b/src/main/java/egovframework/com/uat/sso/service/EgovSSOService.java @@ -0,0 +1,61 @@ +package egovframework.com.uat.sso.service; + +import java.io.IOException; + +import egovframework.com.cmm.LoginVO; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + + +/** + * + * @author 공통서비스 개발팀 서준식 + * @since 2011. 8. 2. + * @version 1.0 + * @see + * + *
    + * 개정이력(Modification Information) 
    + * 
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011. 8. 2.    서준식        최초생성
    + *  
    + *  
    + */ + +public interface EgovSSOService { + + /** + * SSO 통합 인증 서버에 인증여부를 확인 하는 메서드 + * + */ + public boolean hasTokenInSSOServer(ServletRequest request, ServletResponse response); + + /** + * SSO 통합 인증 서버에 인증 토큰 생성을 요청하는 메서드 + * + */ + public void requestIssueToken(ServletRequest request, ServletResponse response) throws Exception ; + + + /** + * SSO 통합 인증 서버에 인증이 된 경우 인증 서버의 토큰을 활용하여 로컬 로그인을 처리하는 메서드 + * + */ + public void ssoLoginByServer(ServletRequest request, ServletResponse response) throws Exception; + + + /** + * 토큰 정보를 바탕으로 loginVO 객체를 생성하는 메서드 + * + */ + public LoginVO getLoginVO(ServletRequest request, ServletResponse response); + + /** + * SSO 통합 인증 서버에 글로벌 로그아웃(토큰 삭제)을 요청하는 메서드 + * + */ + public void ssoLogout(ServletRequest request, ServletResponse response, String returnURL) throws IOException; +} diff --git a/src/main/java/egovframework/com/uat/uap/filter/EgovLoginPolicyFilter.java b/src/main/java/egovframework/com/uat/uap/filter/EgovLoginPolicyFilter.java new file mode 100644 index 00000000..6523d1e3 --- /dev/null +++ b/src/main/java/egovframework/com/uat/uap/filter/EgovLoginPolicyFilter.java @@ -0,0 +1,126 @@ +package egovframework.com.uat.uap.filter; + +import java.io.IOException; +import java.net.URLEncoder; + +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; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.ApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +import egovframework.com.cmm.EgovMessageSource; +import egovframework.com.uat.uap.service.EgovLoginPolicyService; +import egovframework.com.uat.uap.service.LoginPolicyVO; +import egovframework.com.utl.sim.service.EgovClntInfo; + +/** + * 로그인 정책 체크 필터 + * @author 공통서비스 개발팀 서준식 + * @since 2011.07.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2011.07.01  서준식          최초 생성
    + *  2017-02-14  이정은          시큐어코딩(ES) - 시큐어코딩 부적절한 예외 처리[CWE-253, CWE-440, CWE-754]
    + *
    + *  
    + */ +public class EgovLoginPolicyFilter implements Filter { + + private FilterConfig config; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovLoginPolicyFilter.class); + + public void destroy() { + } + + /** + * IP를 이용해 로그인을 제한하는 메서든 + * @param request + * @param response + * @param chain + * @return void + * @exception IOException, ServletException + */ + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext()); + EgovLoginPolicyService egovLoginPolicyService = (EgovLoginPolicyService) act.getBean("egovLoginPolicyService"); + EgovMessageSource egovMessageSource = (EgovMessageSource) act.getBean("egovMessageSource"); + + HttpServletRequest httpRequest = (HttpServletRequest) request; + + String id = request.getParameter("id"); + //String password = request.getParameter("password"); + String userSe = request.getParameter("userSe"); + String userIp = ""; + + if (id == null || userSe == null) { + ((HttpServletResponse) response).sendRedirect(httpRequest.getContextPath() + "/uat/uia/egovLoginUsr.do"); + } + + // 1. LoginVO를 DB로 부터 가져오는 과정 + + try { + // 접속IP + userIp = EgovClntInfo.getClntIP((HttpServletRequest) request); + + boolean loginPolicyYn = true; + + LoginPolicyVO loginPolicyVO = new LoginPolicyVO(); + loginPolicyVO.setEmplyrId(id); + loginPolicyVO = egovLoginPolicyService.selectLoginPolicy(loginPolicyVO); + + if (loginPolicyVO == null) { + loginPolicyYn = true; + } else { + if (loginPolicyVO.getLmttAt().equals("Y")) { + if (!userIp.equals(loginPolicyVO.getIpInfo())) { + loginPolicyYn = false; + } + } + } + + if (loginPolicyYn) { + chain.doFilter(request, response); + + } else { + String message = URLEncoder.encode(egovMessageSource.getMessage("fail.common.login.ip"),"UTF-8"); + ((HttpServletRequest) request).setAttribute("message", message); + ((HttpServletResponse) response).sendRedirect(httpRequest.getContextPath() + "/uat/uia/egovLoginUsr.do?message="+message); + } + + } catch (IOException e) {//KISA 보안약점 조치 (2018-10-29, 윤창원) + LOGGER.error("["+ e.getClass() +"] : ", e.getMessage()); + ((HttpServletResponse) response).sendRedirect(httpRequest.getContextPath() + "/uat/uia/egovLoginUsr.do?login_error=1"); + } catch (Exception e) { +// LOGGER.error("Exception: {}", e.getClass().getName()); +// LOGGER.error("Exception Message: {}", e.getMessage()); + // 2017-02-14 이정은 시큐어코딩(ES) - 시큐어코딩 부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + LOGGER.error("["+ e.getClass() +"] : ", e.getMessage()); + + ((HttpServletResponse) response).sendRedirect(httpRequest.getContextPath() + "/uat/uia/egovLoginUsr.do?login_error=1"); + } + } + + public void init(FilterConfig config) throws ServletException { + + this.config = config; + + } + +} diff --git a/src/main/java/egovframework/com/uat/uap/service/EgovLoginPolicyService.java b/src/main/java/egovframework/com/uat/uap/service/EgovLoginPolicyService.java new file mode 100644 index 00000000..7c904b45 --- /dev/null +++ b/src/main/java/egovframework/com/uat/uap/service/EgovLoginPolicyService.java @@ -0,0 +1,72 @@ +/** + * 개요 + * - 로그인정책에 대한 Service Interface를 정의한다. + * + * 상세내용 + * - 로그인정책에 대한 등록, 수정, 삭제, 조회, 반영확인 기능을 제공한다. + * - 로그인정책의 조회기능은 목록조회, 상세조회로 구분된다. + * @author lee.m.j + * @version 1.0 + * @created 03-8-2009 오후 2:08:54 + *
    + * == 개정이력(Modification Information) ==
    + * 
    + *   수정일       수정자           수정내용
    + *  -------     --------    ---------------------------
    + *  2009.8.3    이문준     최초 생성
    + * 
    + */ + +package egovframework.com.uat.uap.service; + +import java.util.List; + + +public interface EgovLoginPolicyService { + + /** + * 로그인정책 목록을 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return List - 로그인정책 목록 + */ + public List selectLoginPolicyList(LoginPolicyVO loginPolicyVO) throws Exception; + + /** + * 로그인정책 목록 수를 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return int + */ + public int selectLoginPolicyListTotCnt(LoginPolicyVO loginPolicyVO) throws Exception; + + /** + * 로그인정책 목록의 상세정보를 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return LoginPolicyVO - 로그인정책 VO + */ + public LoginPolicyVO selectLoginPolicy(LoginPolicyVO loginPolicyVO) throws Exception; + + /** + * 로그인정책 정보를 신규로 등록한다. + * @param loginPolicy - 로그인정책 model + */ + public void insertLoginPolicy(LoginPolicy loginPolicy) throws Exception; + + /** + * 기 등록된 로그인정책 정보를 수정한다. + * @param loginPolicy - 로그인정책 model + */ + public void updateLoginPolicy(LoginPolicy loginPolicy) throws Exception; + + /** + * 기 등록된 로그인정책 정보를 삭제한다. + * @param loginPolicy - 로그인정책 model + */ + public void deleteLoginPolicy(LoginPolicy loginPolicy) throws Exception; + + /** + * 로그인정책에 대한 현재 반영되어 있는 결과를 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return LoginPolicyVO - 로그인정책 VO + */ + public LoginPolicyVO selectLoginPolicyResult(LoginPolicyVO loginPolicyVO) throws Exception; +} diff --git a/src/main/java/egovframework/com/uat/uap/service/LoginPolicy.java b/src/main/java/egovframework/com/uat/uap/service/LoginPolicy.java new file mode 100644 index 00000000..bebbf78a --- /dev/null +++ b/src/main/java/egovframework/com/uat/uap/service/LoginPolicy.java @@ -0,0 +1,174 @@ +/** + * 개요 + * - 로그인정책에 대한 model 클래스를 정의한다. + * + * 상세내용 + * - 로그인정책정보의 사용자ID, IP정보, 중복허용여부, 제한여부 항목을 관리한다. + * @author lee.m.j + * @version 1.0 + * @created 03-8-2009 오후 2:08:53 + *
    + * == 개정이력(Modification Information) ==
    + * 
    + *   수정일       수정자           수정내용
    + *  -------     --------    ---------------------------
    + *  2009.8.3    이문준     최초 생성
    + * 
    + */ + +package egovframework.com.uat.uap.service; + +import egovframework.com.cmm.ComDefaultVO; + +public class LoginPolicy extends ComDefaultVO { + + /** + * serialVersionUID + */ + private static final long serialVersionUID = 1L; + /** + * 사용자 ID + */ + private String emplyrId; + /** + * 사용자 명 + */ + private String emplyrNm; + /** + * 사용자 구분 + */ + private String emplyrSe; + /** + * IP정보 + */ + private String ipInfo; + /** + * 중복허용여부 + */ + private String dplctPermAt; + /** + * 제한여부 + */ + private String lmttAt; + /** + * 등록자 ID + */ + private String userId; + /** + * 등록일시 + */ + private String regDate; + /** + * 등록여부 + */ + private String regYn; + + /** + * @return the emplyrId + */ + public String getEmplyrId() { + return emplyrId; + } + /** + * @param emplyrId the emplyrId to set + */ + public void setEmplyrId(String emplyrId) { + this.emplyrId = emplyrId; + } + /** + * @return the emplyrNm + */ + public String getEmplyrNm() { + return emplyrNm; + } + /** + * @param emplyrNm the emplyrNm to set + */ + public void setEmplyrNm(String emplyrNm) { + this.emplyrNm = emplyrNm; + } + /** + * @return the emplyrSe + */ + public String getEmplyrSe() { + return emplyrSe; + } + /** + * @param emplyrSe the emplyrSe to set + */ + public void setEmplyrSe(String emplyrSe) { + this.emplyrSe = emplyrSe; + } + /** + * @return the ipInfo + */ + public String getIpInfo() { + return ipInfo; + } + /** + * @param ipInfo the ipInfo to set + */ + public void setIpInfo(String ipInfo) { + this.ipInfo = ipInfo; + } + /** + * @return the dplctPermAt + */ + public String getDplctPermAt() { + return dplctPermAt; + } + /** + * @param dplctPermAt the dplctPermAt to set + */ + public void setDplctPermAt(String dplctPermAt) { + this.dplctPermAt = dplctPermAt; + } + /** + * @return the lmttAt + */ + public String getLmttAt() { + return lmttAt; + } + /** + * @param lmttAt the lmttAt to set + */ + public void setLmttAt(String lmttAt) { + this.lmttAt = lmttAt; + } + /** + * @return the userId + */ + public String getUserId() { + return userId; + } + /** + * @param userId the userId to set + */ + public void setUserId(String userId) { + this.userId = userId; + } + /** + * @return the regDate + */ + public String getRegDate() { + return regDate; + } + /** + * @param regDate the regDate to set + */ + public void setRegDate(String regDate) { + this.regDate = regDate; + } + /** + * @return the regYn + */ + public String getRegYn() { + return regYn; + } + /** + * @param regYn the regYn to set + */ + public void setRegYn(String regYn) { + this.regYn = regYn; + } +} diff --git a/src/main/java/egovframework/com/uat/uap/service/LoginPolicyVO.java b/src/main/java/egovframework/com/uat/uap/service/LoginPolicyVO.java new file mode 100644 index 00000000..8019840b --- /dev/null +++ b/src/main/java/egovframework/com/uat/uap/service/LoginPolicyVO.java @@ -0,0 +1,64 @@ +/** + * 개요 + * - 로그인정책에 대한 VO 클래스를 정의한다. + * + * 상세내용 + * - 로그인정책정보의 목록 항목을 관리한다. + * @author lee.m.j + * @version 1.0 + * @created 03-8-2009 오후 2:08:55 + *
    + * == 개정이력(Modification Information) ==
    + * 
    + *   수정일       수정자           수정내용
    + *  -------     --------    ---------------------------
    + *  2009.8.3    이문준     최초 생성
    + * 
    + */ + +package egovframework.com.uat.uap.service; + +import java.util.List; + +public class LoginPolicyVO extends LoginPolicy { + + /** + * serialVersionUID + */ + private static final long serialVersionUID = 1L; + /** + * 로그인 정책 목록 + */ + List loginPolicyList; + /** + * 삭제 여부 + */ + String [] delYn; + + /** + * @return the loginPolicyList + */ + public List getLoginPolicyList() { + return loginPolicyList; + } + /** + * @param loginPolicyList the loginPolicyList to set + */ + public void setLoginPolicyList(List loginPolicyList) { + this.loginPolicyList = loginPolicyList; + } + /** + * @return the delYn + */ + public String[] getDelYn() { + return delYn; + } + /** + * @param delYn the delYn to set + */ + public void setDelYn(String[] delYn) { + this.delYn = delYn; + } + + +} diff --git a/src/main/java/egovframework/com/uat/uap/service/impl/EgovLoginPolicyServiceImpl.java b/src/main/java/egovframework/com/uat/uap/service/impl/EgovLoginPolicyServiceImpl.java new file mode 100644 index 00000000..8711e5bc --- /dev/null +++ b/src/main/java/egovframework/com/uat/uap/service/impl/EgovLoginPolicyServiceImpl.java @@ -0,0 +1,100 @@ +/** + * 개요 + * - 로그인정책에 대한 ServiceImpl 클래스를 정의한다. + * + * 상세내용 + * - 로그인정책에 대한 등록, 수정, 삭제, 조회, 반영확인 기능을 제공한다. + * - 로그인정책의 조회기능은 목록조회, 상세조회로 구분된다. + * @author lee.m.j + * @version 1.0 + * @created 03-8-2009 오후 2:08:54 + *
    + * == 개정이력(Modification Information) ==
    + * 
    + *   수정일       수정자           수정내용
    + *  -------     --------    ---------------------------
    + *  2009.8.3    이문준     최초 생성
    + * 
    + */ + +package egovframework.com.uat.uap.service.impl; + +import java.util.List; + +import egovframework.com.uat.uap.service.EgovLoginPolicyService; +import egovframework.com.uat.uap.service.LoginPolicy; +import egovframework.com.uat.uap.service.LoginPolicyVO; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +@Service("egovLoginPolicyService") +public class EgovLoginPolicyServiceImpl extends EgovAbstractServiceImpl implements EgovLoginPolicyService { + + @Resource(name="loginPolicyDAO") + LoginPolicyDAO loginPolicyDAO; + + /** + * 로그인정책 목록을 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return List - 로그인정책 목록 + */ + public List selectLoginPolicyList(LoginPolicyVO loginPolicyVO) throws Exception { + return loginPolicyDAO.selectLoginPolicyList(loginPolicyVO); + } + + /** + * 로그인정책 목록 수를 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return int + */ + public int selectLoginPolicyListTotCnt(LoginPolicyVO loginPolicyVO) throws Exception { + return loginPolicyDAO.selectLoginPolicyListTotCnt(loginPolicyVO); + } + + /** + * 로그인정책 목록의 상세정보를 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return LoginPolicyVO - 로그인정책 VO + */ + public LoginPolicyVO selectLoginPolicy(LoginPolicyVO loginPolicyVO) throws Exception { + return loginPolicyDAO.selectLoginPolicy(loginPolicyVO); + } + + /** + * 로그인정책 정보를 신규로 등록한다. + * @param loginPolicy - 로그인정책 model + */ + public void insertLoginPolicy(LoginPolicy loginPolicy) throws Exception { + loginPolicyDAO.insertLoginPolicy(loginPolicy); + } + + /** + * 기 등록된 로그인정책 정보를 수정한다. + * @param loginPolicy - 로그인정책 model + */ + public void updateLoginPolicy(LoginPolicy loginPolicy) throws Exception { + loginPolicyDAO.updateLoginPolicy(loginPolicy); + } + + /** + * 기 등록된 로그인정책 정보를 삭제한다. + * @param loginPolicy - 로그인정책 model + */ + public void deleteLoginPolicy(LoginPolicy loginPolicy) throws Exception { + loginPolicyDAO.deleteLoginPolicy(loginPolicy); + } + + /** + * 로그인정책에 대한 현재 반영되어 있는 결과를 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return LoginPolicyVO - 로그인정책 VO + */ + public LoginPolicyVO selectLoginPolicyResult(LoginPolicyVO loginPolicyVO) throws Exception { + return loginPolicyDAO.selectLoginPolicyResult(loginPolicyVO); + } + +} diff --git a/src/main/java/egovframework/com/uat/uap/service/impl/LoginPolicyDAO.java b/src/main/java/egovframework/com/uat/uap/service/impl/LoginPolicyDAO.java new file mode 100644 index 00000000..30a64930 --- /dev/null +++ b/src/main/java/egovframework/com/uat/uap/service/impl/LoginPolicyDAO.java @@ -0,0 +1,92 @@ +/** + * 개요 + * - 로그인정책에 대한 DAO 클래스를 정의한다. + * + * 상세내용 + * - 로그인정책에 대한 등록, 수정, 삭제, 조회, 반영확인 기능을 제공한다. + * - 로그인정책의 조회기능은 목록조회, 상세조회로 구분된다. + * @author lee.m.j + * @version 1.0 + * @created 03-8-2009 오후 2:08:54 + *
    + * == 개정이력(Modification Information) ==
    + * 
    + *   수정일       수정자           수정내용
    + *  -------     --------    ---------------------------
    + *  2009.8.3    이문준     최초 생성
    + * 
    + */ + +package egovframework.com.uat.uap.service.impl; + +import java.util.List; + +import egovframework.com.cmm.service.impl.EgovComAbstractDAO; +import egovframework.com.uat.uap.service.LoginPolicy; +import egovframework.com.uat.uap.service.LoginPolicyVO; + +import org.springframework.stereotype.Repository; + +@Repository("loginPolicyDAO") +public class LoginPolicyDAO extends EgovComAbstractDAO { + + /** + * 로그인정책 목록을 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return List - 로그인정책 목록 + */ + public List selectLoginPolicyList(LoginPolicyVO loginPolicyVO) throws Exception { + return selectList("loginPolicyDAO.selectLoginPolicyList", loginPolicyVO); + } + + /** + * 로그인정책 목록 수를 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return int + */ + public int selectLoginPolicyListTotCnt(LoginPolicyVO loginPolicyVO) throws Exception { + return (Integer)selectOne("loginPolicyDAO.selectLoginPolicyListTotCnt", loginPolicyVO); + } + + /** + * 로그인정책 목록의 상세정보를 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return LoginPolicyVO - 로그인정책 VO + */ + public LoginPolicyVO selectLoginPolicy(LoginPolicyVO loginPolicyVO) throws Exception { + return (LoginPolicyVO)selectOne("loginPolicyDAO.selectLoginPolicy", loginPolicyVO); + } + + /** + * 로그인정책 정보를 신규로 등록한다. + * @param loginPolicy - 로그인정책 model + */ + public void insertLoginPolicy(LoginPolicy loginPolicy) throws Exception { + insert("loginPolicyDAO.insertLoginPolicy", loginPolicy); + } + + /** + * 기 등록된 로그인정책 정보를 수정한다. + * @param loginPolicy - 로그인정책 model + */ + public void updateLoginPolicy(LoginPolicy loginPolicy) throws Exception { + update("loginPolicyDAO.updateLoginPolicy", loginPolicy); + } + + /** + * 기 등록된 로그인정책 정보를 삭제한다. + * @param loginPolicy - 로그인정책 model + */ + public void deleteLoginPolicy(LoginPolicy loginPolicy) throws Exception { + delete("loginPolicyDAO.deleteLoginPolicy", loginPolicy); + } + + /** + * 로그인정책에 대한 현재 반영되어 있는 결과를 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return LoginPolicyVO - 로그인정책 VO + */ + public LoginPolicyVO selectLoginPolicyResult(LoginPolicyVO loginPolicyVO) throws Exception { + return null; + } +} diff --git a/src/main/java/egovframework/com/uat/uap/web/EgovLoginPolicyController.java b/src/main/java/egovframework/com/uat/uap/web/EgovLoginPolicyController.java new file mode 100644 index 00000000..e4ee476f --- /dev/null +++ b/src/main/java/egovframework/com/uat/uap/web/EgovLoginPolicyController.java @@ -0,0 +1,210 @@ +/** + * 개요 + * - 로그인정책에 대한 controller 클래스를 정의한다. + * + * 상세내용 + * - 로그인정책에 대한 등록, 수정, 삭제, 조회, 반영확인 기능을 제공한다. + * - 로그인정책의 조회기능은 목록조회, 상세조회로 구분된다. + * @author lee.m.j + * @version 1.0 + * @created 03-8-2009 오후 2:08:53 + *
    + * == 개정이력(Modification Information) ==
    + * 
    + *   수정일       수정자           수정내용
    + *  -------     --------    ---------------------------
    + *  2009.8.3    이문준     최초 생성
    + *  2011.8.26	정진오			IncludedInfo annotation 추가
    + * 
    + */ + +package egovframework.com.uat.uap.web; + +import egovframework.com.cmm.EgovMessageSource; +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.annotation.IncludedInfo; +import egovframework.com.cmm.util.EgovUserDetailsHelper; +import egovframework.com.uat.uap.service.EgovLoginPolicyService; +import egovframework.com.uat.uap.service.LoginPolicy; +import egovframework.com.uat.uap.service.LoginPolicyVO; + +import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; + +import javax.annotation.Resource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springmodules.validation.commons.DefaultBeanValidator; + + +@Controller +public class EgovLoginPolicyController { + + + + + @Resource(name="egovMessageSource") + EgovMessageSource egovMessageSource; + + @Resource(name="egovLoginPolicyService") + EgovLoginPolicyService egovLoginPolicyService; + + @Autowired + private DefaultBeanValidator beanValidator; + + /** + * 로그인정책 목록 조회화면으로 이동한다. + * @return String - 리턴 Url + */ + @RequestMapping("/uat/uap/selectLoginPolicyListView.do") + public String selectLoginPolicyListView() throws Exception { + return "egovframework/com/uat/uap/EgovLoginPolicyList"; + } + + /** + * 로그인정책 목록을 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return String - 리턴 Url + */ + @IncludedInfo(name="로그인정책관리", order = 30 ,gid = 10) + @RequestMapping("/uat/uap/selectLoginPolicyList.do") + public String selectLoginPolicyList(@ModelAttribute("loginPolicyVO") LoginPolicyVO loginPolicyVO, + ModelMap model) throws Exception { + + /** paging */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(loginPolicyVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(loginPolicyVO.getPageUnit()); + paginationInfo.setPageSize(loginPolicyVO.getPageSize()); + + loginPolicyVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + loginPolicyVO.setLastIndex(paginationInfo.getLastRecordIndex()); + loginPolicyVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + loginPolicyVO.setLoginPolicyList(egovLoginPolicyService.selectLoginPolicyList(loginPolicyVO)); + model.addAttribute("loginPolicyList", loginPolicyVO.getLoginPolicyList()); + + int totCnt = egovLoginPolicyService.selectLoginPolicyListTotCnt(loginPolicyVO); + paginationInfo.setTotalRecordCount(totCnt); + model.addAttribute("paginationInfo", paginationInfo); + model.addAttribute("message", egovMessageSource.getMessage("success.common.select")); + + return "egovframework/com/uat/uap/EgovLoginPolicyList"; + } + + /** + * 로그인정책 목록의 상세정보를 조회한다. + * @param loginPolicyVO - 로그인정책 VO + * @return String - 리턴 Url + */ + @RequestMapping("/uat/uap/getLoginPolicy.do") + public String selectLoginPolicy(@RequestParam("emplyrId") String emplyrId, + @ModelAttribute("loginPolicyVO") LoginPolicyVO loginPolicyVO, + ModelMap model) throws Exception { + + loginPolicyVO.setEmplyrId(emplyrId); + + model.addAttribute("loginPolicy", egovLoginPolicyService.selectLoginPolicy(loginPolicyVO)); + model.addAttribute("message", egovMessageSource.getMessage("success.common.select")); + + LoginPolicyVO vo = (LoginPolicyVO)model.get("loginPolicy"); + + if(vo.getRegYn().equals("N")) + return "egovframework/com/uat/uap/EgovLoginPolicyRegist"; + else + return "egovframework/com/uat/uap/EgovLoginPolicyUpdt"; + } + + /** + * 로그인정책 정보 등록화면으로 이동한다. + * @param loginPolicy - 로그인정책 model + * @return String - 리턴 Url + */ + @RequestMapping("/uat/uap/addLoginPolicyView.do") + public String insertLoginPolicyView(@RequestParam("emplyrId") String emplyrId, + @ModelAttribute("loginPolicyVO") LoginPolicyVO loginPolicyVO, + ModelMap model) throws Exception { + + loginPolicyVO.setEmplyrId(emplyrId); + + model.addAttribute("loginPolicy", egovLoginPolicyService.selectLoginPolicy(loginPolicyVO)); + model.addAttribute("message", egovMessageSource.getMessage("success.common.select")); + + return "egovframework/com/uat/uap/EgovLoginPolicyRegist"; + } + + /** + * 로그인정책 정보를 신규로 등록한다. + * @param loginPolicy - 로그인정책 model + * @return String - 리턴 Url + */ + @RequestMapping("/uat/uap/addLoginPolicy.do") + public String insertLoginPolicy(@ModelAttribute("loginPolicy") LoginPolicy loginPolicy, + BindingResult bindingResult, + ModelMap model) throws Exception { + + beanValidator.validate(loginPolicy, bindingResult); //validation 수행 + + if (bindingResult.hasErrors()) { + model.addAttribute("loginPolicyVO", loginPolicy); + return "egovframework/com/uat/uap/EgovLoginPolicyRegist"; + } else { + + LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + loginPolicy.setUserId(user.getId()); + + egovLoginPolicyService.insertLoginPolicy(loginPolicy); + model.addAttribute("message", egovMessageSource.getMessage("success.common.update")); + + return "forward:/uat/uap/getLoginPolicy.do"; + } + } + + /** + * 기 등록된 로그인정책 정보를 수정한다. + * @param loginPolicy - 로그인정책 model + * @return String - 리턴 Url + */ + @RequestMapping("/uat/uap/updtLoginPolicy.do") + public String updateLoginPolicy(@ModelAttribute("loginPolicy") LoginPolicy loginPolicy, + BindingResult bindingResult, + ModelMap model) throws Exception { + + beanValidator.validate(loginPolicy, bindingResult); //validation 수행 + + if (bindingResult.hasErrors()) { + model.addAttribute("loginPolicyVO", loginPolicy); + return "egovframework/com/uat/uap/EgovLoginPolicyUpdt"; + } else { + LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + loginPolicy.setUserId(user.getId()); + + egovLoginPolicyService.updateLoginPolicy(loginPolicy); + model.addAttribute("message", egovMessageSource.getMessage("success.common.update")); + + return "forward:/uat/uap/selectLoginPolicyList.do"; + } + } + + /** + * 기 등록된 로그인정책 정보를 삭제한다. + * @param loginPolicy - 로그인정책 model + * @return String - 리턴 Url + */ + @RequestMapping("/uat/uap/removeLoginPolicy.do") + public String deleteLoginPolicy(@ModelAttribute("loginPolicy") LoginPolicy loginPolicy, + ModelMap model) throws Exception { + + egovLoginPolicyService.deleteLoginPolicy(loginPolicy); + + model.addAttribute("message", egovMessageSource.getMessage("success.common.delete")); + return "forward:/uat/uap/selectLoginPolicyList.do"; + } + + +} diff --git a/src/main/java/egovframework/com/uat/uia/service/EgovLoginService.java b/src/main/java/egovframework/com/uat/uia/service/EgovLoginService.java new file mode 100644 index 00000000..8f242acf --- /dev/null +++ b/src/main/java/egovframework/com/uat/uia/service/EgovLoginService.java @@ -0,0 +1,85 @@ +package egovframework.com.uat.uia.service; + +import java.util.Map; + +import egovframework.com.cmm.LoginVO; + +/** + * 일반 로그인, 인증서 로그인을 처리하는 비즈니스 인터페이스 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.06 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + * 
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.06  박지욱          최초 생성 
    + *  2011.08.26  서준식          EsntlId를 이용한 로그인 추가
    + *  2017.07.21  장동한 			로그인인증제한 작업
    + *  
    + */ +public interface EgovLoginService { + + /** + * 2011.08.26 + * EsntlId를 이용한 로그인을 처리한다 + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + public LoginVO actionLoginByEsntlId(LoginVO vo) throws Exception; + + /** + * 일반 로그인을 처리한다 + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + LoginVO actionLogin(LoginVO vo) throws Exception; + + /** + * 인증서 로그인을 처리한다 + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + LoginVO actionCrtfctLogin(LoginVO vo) throws Exception; + + /** + * 아이디를 찾는다. + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + LoginVO searchId(LoginVO vo) throws Exception; + + /** + * 비밀번호를 찾는다. + * @param vo LoginVO + * @return boolean + * @exception Exception + */ + boolean searchPassword(LoginVO vo) throws Exception; + + + /** + * 로그인인증제한을 처리한다. + * @param vo LoginVO + * @return boolean + * @exception Exception + */ + String processLoginIncorrect(LoginVO vo, Map mapLockUserInfo) throws Exception; + + /** + * 로그인인증제한을 조회한다. + * @param vo LoginVO + * @param Map mapLockUserInfo + * @return boolean + * @exception Exception + */ + Map selectLoginIncorrect(LoginVO vo) throws Exception; + +} diff --git a/src/main/java/egovframework/com/uat/uia/service/impl/EgovLoginServiceImpl.java b/src/main/java/egovframework/com/uat/uia/service/impl/EgovLoginServiceImpl.java new file mode 100644 index 00000000..c2604710 --- /dev/null +++ b/src/main/java/egovframework/com/uat/uia/service/impl/EgovLoginServiceImpl.java @@ -0,0 +1,244 @@ +package egovframework.com.uat.uia.service.impl; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.config.EgovLoginConfig; +import egovframework.com.cop.ems.service.EgovSndngMailRegistService; +import egovframework.com.cop.ems.service.SndngMailVO; +import egovframework.com.uat.uia.service.EgovLoginService; +import egovframework.com.utl.fcc.service.EgovNumberUtil; +import egovframework.com.utl.fcc.service.EgovStringUtil; +import egovframework.com.utl.sim.service.EgovFileScrty; +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import egovframework.rte.psl.dataaccess.util.EgovMap; + +/** + * 일반 로그인, 인증서 로그인을 처리하는 비즈니스 구현 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.06 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.06  박지욱          최초 생성
    + *  2011.08.26  서준식          EsntlId를 이용한 로그인 추가
    + *  2014.12.08	이기하			암호화방식 변경(EgovFileScrty.encryptPassword)
    + *  2017.07.21  장동한 			로그인인증제한 작업
    + *  
    + */ +@Service("loginService") +public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements EgovLoginService { + + @Resource(name="loginDAO") + private LoginDAO loginDAO; + + /** EgovSndngMailRegistService */ + @Resource(name = "sndngMailRegistService") + private EgovSndngMailRegistService sndngMailRegistService; + + @Resource(name = "egovLoginConfig") + EgovLoginConfig egovLoginConfig; + + /** + * 2011.08.26 + * EsntlId를 이용한 로그인을 처리한다 + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + @Override + public LoginVO actionLoginByEsntlId(LoginVO vo) throws Exception { + + LoginVO loginVO = loginDAO.actionLoginByEsntlId(vo); + + // 3. 결과를 리턴한다. + if (loginVO != null && !loginVO.getId().equals("") && !loginVO.getPassword().equals("")) { + return loginVO; + } else { + loginVO = new LoginVO(); + } + + return loginVO; + } + + + /** + * 일반 로그인을 처리한다 + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + @Override + public LoginVO actionLogin(LoginVO vo) throws Exception { + + // 1. 입력한 비밀번호를 암호화한다. + String enpassword = EgovFileScrty.encryptPassword(vo.getPassword(), vo.getId()); + vo.setPassword(enpassword); + + // 2. 아이디와 암호화된 비밀번호가 DB와 일치하는지 확인한다. + LoginVO loginVO = loginDAO.actionLogin(vo); + + // 3. 결과를 리턴한다. + if (loginVO != null && !loginVO.getId().equals("") && !loginVO.getPassword().equals("")) { + return loginVO; + } else { + loginVO = new LoginVO(); + } + + return loginVO; + } + + /** + * 인증서 로그인을 처리한다 + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + @Override + public LoginVO actionCrtfctLogin(LoginVO vo) throws Exception { + + // 1. DN값으로 ID, PW를 조회한다. + LoginVO loginVO = loginDAO.actionCrtfctLogin(vo); + + // 3. 결과를 리턴한다. + if (loginVO != null && !loginVO.getId().equals("") && !loginVO.getPassword().equals("")) { + return loginVO; + } else { + loginVO = new LoginVO(); + } + + return loginVO; + } + + /** + * 아이디를 찾는다. + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + @Override + public LoginVO searchId(LoginVO vo) throws Exception { + + // 1. 이름, 이메일주소가 DB와 일치하는 사용자 ID를 조회한다. + LoginVO loginVO = loginDAO.searchId(vo); + + // 2. 결과를 리턴한다. + if (loginVO != null && !loginVO.getId().equals("")) { + return loginVO; + } else { + loginVO = new LoginVO(); + } + + return loginVO; + } + + /** + * 비밀번호를 찾는다. + * @param vo LoginVO + * @return boolean + * @exception Exception + */ + @Override + public boolean searchPassword(LoginVO vo) throws Exception { + + boolean result = true; + + // 1. 아이디, 이름, 이메일주소, 비밀번호 힌트, 비밀번호 정답이 DB와 일치하는 사용자 Password를 조회한다. + LoginVO loginVO = loginDAO.searchPassword(vo); + if (loginVO == null || loginVO.getPassword() == null || "".equals(loginVO.getPassword())) { + return false; + } + + // 2. 임시 비밀번호를 생성한다.(영+영+숫+영+영+숫+영+영=8자리) + String newpassword = ""; + for (int i = 1; i <= 8; i++) { + // 영자 + if (i % 3 != 0) { + newpassword += EgovStringUtil.getRandomStr('a', 'z'); + // 숫자 + } else { + newpassword += EgovNumberUtil.getRandomNum(0, 9); + } + } + + // 3. 임시 비밀번호를 암호화하여 DB에 저장한다. + LoginVO pwVO = new LoginVO(); + String enpassword = EgovFileScrty.encryptPassword(newpassword, vo.getId()); + pwVO.setId(vo.getId()); + pwVO.setPassword(enpassword); + pwVO.setUserSe(vo.getUserSe()); + loginDAO.updatePassword(pwVO); + + // 4. 임시 비밀번호를 이메일 발송한다.(메일연동솔루션 활용) + SndngMailVO sndngMailVO = new SndngMailVO(); + sndngMailVO.setDsptchPerson("webmaster"); + sndngMailVO.setRecptnPerson(vo.getEmail()); + sndngMailVO.setSj("[MOPAS] 임시 비밀번호를 발송했습니다."); + sndngMailVO.setEmailCn("고객님의 임시 비밀번호는 " + newpassword + " 입니다."); + sndngMailVO.setAtchFileId(""); + + result = sndngMailRegistService.insertSndngMail(sndngMailVO); + + return result; + } + + + /** + * 로그인인증제한을 조회한다. + * @param vo LoginVO + * @return boolean + * @exception Exception + */ + public Map selectLoginIncorrect(LoginVO vo) throws Exception{ + return loginDAO.selectLoginIncorrect(vo); + } + + /** + * 로그인인증제한을 처리한다. + * @param vo LoginVO + * @return boolean + * @exception Exception + */ + public String processLoginIncorrect(LoginVO vo, Map mapLockUserInfo) throws Exception{ + String sRtnCode = "C"; + //KISA 보안약점 조치 (2018-10-29, 윤창원) + String enpassword = EgovFileScrty.encryptPassword(vo.getPassword(), EgovStringUtil.isNullToString(vo.getId())); + Map mapParam = new HashMap(); + mapParam.put("USER_SE", vo.getUserSe()); + mapParam.put("id", EgovStringUtil.isNullToString(vo.getId()));//KISA 보안약점 조치 (2018-10-29, 윤창원) + //잠김시 + if("Y".equals(((String)mapLockUserInfo.get("lockAt")))){ + sRtnCode = "L"; + //패드워드 인증시 + }else if( ((String)mapLockUserInfo.get("userPw")).equals(enpassword) ){ + //LOCK 해제 + mapParam.put("updateAt", "E"); + loginDAO.updateLoginIncorrect(mapParam); + sRtnCode = "E"; + //패드워드 비인증시 + }else if(!"Y".equals(((String)mapLockUserInfo.get("lockAt")))){ + //LOCK 설정 + if( Integer.parseInt(String.valueOf(mapLockUserInfo.get("lockCnt")))+1 >= egovLoginConfig.getLockCount() ){ + mapParam.put("updateAt", "L"); + loginDAO.updateLoginIncorrect(mapParam); + sRtnCode = "L"; + //LOCK 증가 + }else{ + mapParam.put("updateAt", "C"); + loginDAO.updateLoginIncorrect(mapParam); + sRtnCode = "C"; + } + } + return sRtnCode; + } +} diff --git a/src/main/java/egovframework/com/uat/uia/service/impl/LoginDAO.java b/src/main/java/egovframework/com/uat/uia/service/impl/LoginDAO.java new file mode 100644 index 00000000..fb11d183 --- /dev/null +++ b/src/main/java/egovframework/com/uat/uia/service/impl/LoginDAO.java @@ -0,0 +1,114 @@ +package egovframework.com.uat.uia.service.impl; + +import java.util.Map; + +import org.springframework.stereotype.Repository; + +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.service.impl.EgovComAbstractDAO; + +/** + * 일반 로그인, 인증서 로그인을 처리하는 DAO 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.06 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자          수정내용
    + *  -------    --------    ---------------------------
    + *  2009.03.06  박지욱          최초 생성
    + *  2011.08.26  서준식          EsntlId를 이용한 로그인 추가
    + *  2017.07.21  장동한 			로그인인증제한 작업
    + *  
    + */ +@Repository("loginDAO") +public class LoginDAO extends EgovComAbstractDAO { + + /** + * 2011.08.26 + * EsntlId를 이용한 로그인을 처리한다 + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + public LoginVO actionLoginByEsntlId(LoginVO vo) throws Exception { + return (LoginVO)selectOne("LoginUsr.ssoLoginByEsntlId", vo); + } + + /** + * 일반 로그인을 처리한다 + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + public LoginVO actionLogin(LoginVO vo) throws Exception { + return (LoginVO)selectOne("LoginUsr.actionLogin", vo); + } + + /** + * 인증서 로그인을 처리한다 + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + public LoginVO actionCrtfctLogin(LoginVO vo) throws Exception { + + return (LoginVO)selectOne("LoginUsr.actionCrtfctLogin", vo); + } + + /** + * 아이디를 찾는다. + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + public LoginVO searchId(LoginVO vo) throws Exception { + + return (LoginVO)selectOne("LoginUsr.searchId", vo); + } + + /** + * 비밀번호를 찾는다. + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + public LoginVO searchPassword(LoginVO vo) throws Exception { + + return (LoginVO)selectOne("LoginUsr.searchPassword", vo); + } + + /** + * 변경된 비밀번호를 저장한다. + * @param vo LoginVO + * @exception Exception + */ + public void updatePassword(LoginVO vo) throws Exception { + update("LoginUsr.updatePassword", vo); + } + + + /** + * 로그인인증제한 내역을 조회한다. + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + public Map selectLoginIncorrect(LoginVO vo) throws Exception { + return (Map)selectOne("LoginUsr.selectLoginIncorrect", vo); + } + + /** + * 로그인인증제한 내역을 업데이트 한다. + * @param vo LoginVO + * @return LoginVO + * @exception Exception + */ + public void updateLoginIncorrect(Map map) throws Exception { + update("LoginUsr.updateLoginIncorrect"+map.get("USER_SE"), map); + } + +} diff --git a/src/main/java/egovframework/com/uat/uia/web/EgovLoginController.java b/src/main/java/egovframework/com/uat/uia/web/EgovLoginController.java new file mode 100644 index 00000000..e2e6280d --- /dev/null +++ b/src/main/java/egovframework/com/uat/uia/web/EgovLoginController.java @@ -0,0 +1,541 @@ +package egovframework.com.uat.uia.web; + +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; + +import egovframework.com.cmm.ComDefaultCodeVO; +import egovframework.com.cmm.EgovComponentChecker; +import egovframework.com.cmm.EgovMessageSource; +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.annotation.IncludedInfo; +import egovframework.com.cmm.config.EgovLoginConfig; +import egovframework.com.cmm.service.EgovCmmUseService; +import egovframework.com.cmm.service.Globals; +import egovframework.com.cmm.util.EgovUserDetailsHelper; +import egovframework.com.uat.uia.service.EgovLoginService; +import egovframework.com.utl.sim.service.EgovClntInfo; +import egovframework.rte.psl.dataaccess.util.EgovMap; + +/* +import com.gpki.gpkiapi.cert.X509Certificate; +import com.gpki.servlet.GPKIHttpServletRequest; +import com.gpki.servlet.GPKIHttpServletResponse; +*/ + +/** + * 일반 로그인, 인증서 로그인을 처리하는 컨트롤러 클래스 + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.06 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일            수정자          수정내용
    + *  ----------  --------  ---------------------------
    + *  2009.03.06  박지욱          최초 생성
    + *  2011.8.26	정진오          IncludedInfo annotation 추가
    + *  2011.09.07  서준식          스프링 시큐리티 로그인 및 SSO 인증 로직을 필터로 분리
    + *  2011.09.25  서준식          사용자 관리 컴포넌트 미포함에 대한 점검 로직 추가
    + *  2011.09.27  서준식          인증서 로그인시 스프링 시큐리티 사용에 대한 체크 로직 추가
    + *  2011.10.27  서준식          아이디 찾기 기능에서 사용자 리름 공백 제거 기능 추가
    + *  2017.07.21  장동한          로그인인증제한 작업
    + *  2018.10.26  신용호          로그인 화면에 message 파라미터 전달 수정
    + *  
    + */ +@Controller +public class EgovLoginController { + + /** EgovLoginService */ + @Resource(name = "loginService") + private EgovLoginService loginService; + + /** EgovCmmUseService */ + @Resource(name = "EgovCmmUseService") + private EgovCmmUseService cmmUseService; + + /** EgovMessageSource */ + @Resource(name = "egovMessageSource") + EgovMessageSource egovMessageSource; + + @Resource(name = "egovLoginConfig") + EgovLoginConfig egovLoginConfig; + + /** log */ + private static final Logger LOGGER = LoggerFactory.getLogger(EgovLoginController.class); + + /** + * 로그인 화면으로 들어간다 + * @param vo - 로그인후 이동할 URL이 담긴 LoginVO + * @return 로그인 페이지 + * @exception Exception + */ + @IncludedInfo(name = "로그인", listUrl = "/uat/uia/egovLoginUsr.do", order = 10, gid = 10) + @RequestMapping(value = "/uat/uia/egovLoginUsr.do") + public String loginUsrView(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + if (EgovComponentChecker.hasComponent("mberManageService")) { + model.addAttribute("useMemberManage", "true"); + } + + //권한체크시 에러 페이지 이동 + String auth_error = request.getParameter("auth_error") == null ? "" : (String)request.getParameter("auth_error"); + if(auth_error != null && auth_error.equals("1")){ + return "egovframework/com/cmm/error/accessDenied"; + } + + /* + GPKIHttpServletResponse gpkiresponse = null; + GPKIHttpServletRequest gpkirequest = null; + + try{ + + gpkiresponse=new GPKIHttpServletResponse(response); + gpkirequest= new GPKIHttpServletRequest(request); + gpkiresponse.setRequest(gpkirequest); + model.addAttribute("challenge", gpkiresponse.getChallenge()); + return "egovframework/com/uat/uia/EgovLoginUsr"; + + }catch(Exception e){ + return "egovframework/com/cmm/egovError"; + } + */ + String message = (String)request.getParameter("message"); + if (message!=null) model.addAttribute("message", message); + + return "egovframework/com/uat/uia/EgovLoginUsr"; + } + + /** + * 일반(세션) 로그인을 처리한다 + * @param vo - 아이디, 비밀번호가 담긴 LoginVO + * @param request - 세션처리를 위한 HttpServletRequest + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/actionLogin.do") + public String actionLogin(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletRequest request, ModelMap model) throws Exception { + + // 1. 로그인인증제한 활성화시 + if( egovLoginConfig.isLock()){ + Map mapLockUserInfo = (EgovMap)loginService.selectLoginIncorrect(loginVO); + if(mapLockUserInfo != null){ + //2.1 로그인인증제한 처리 + String sLoginIncorrectCode = loginService.processLoginIncorrect(loginVO, mapLockUserInfo); + if(!sLoginIncorrectCode.equals("E")){ + if(sLoginIncorrectCode.equals("L")){ + model.addAttribute("message", egovMessageSource.getMessageArgs("fail.common.loginIncorrect", new Object[] {egovLoginConfig.getLockCount(),request.getLocale()})); + }else if(sLoginIncorrectCode.equals("C")){ + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login",request.getLocale())); + } + return "egovframework/com/uat/uia/EgovLoginUsr"; + } + }else{ + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login",request.getLocale())); + return "egovframework/com/uat/uia/EgovLoginUsr"; + } + } + + // 2. 로그인 처리 + LoginVO resultVO = loginService.actionLogin(loginVO); + + // 3. 일반 로그인 처리 + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("")) { + + // 3-1. 로그인 정보를 세션에 저장 + request.getSession().setAttribute("loginVO", resultVO); + + return "redirect:/uat/uia/actionMain.do"; + + } else { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login",request.getLocale())); + return "egovframework/com/uat/uia/EgovLoginUsr"; + } + } + + /** + * 인증서 로그인을 처리한다 + * @param vo - 주민번호가 담긴 LoginVO + * @return result - 로그인결과(세션정보) + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/actionCrtfctLogin.do") + public String actionCrtfctLogin(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + + // 접속IP + String userIp = EgovClntInfo.getClntIP(request); + LOGGER.debug("User IP : {}", userIp); + + /* + // 1. GPKI 인증 + GPKIHttpServletResponse gpkiresponse = null; + GPKIHttpServletRequest gpkirequest = null; + String dn = ""; + try{ + gpkiresponse = new GPKIHttpServletResponse(response); + gpkirequest = new GPKIHttpServletRequest(request); + gpkiresponse.setRequest(gpkirequest); + X509Certificate cert = null; + + byte[] signData = null; + byte[] privatekey_random = null; + String signType = ""; + String queryString = ""; + + cert = gpkirequest.getSignerCert(); + dn = cert.getSubjectDN(); + + java.math.BigInteger b = cert.getSerialNumber(); + b.toString(); + int message_type = gpkirequest.getRequestMessageType(); + if( message_type == gpkirequest.ENCRYPTED_SIGNDATA || message_type == gpkirequest.LOGIN_ENVELOP_SIGN_DATA || + message_type == gpkirequest.ENVELOP_SIGNDATA || message_type == gpkirequest.SIGNED_DATA){ + signData = gpkirequest.getSignedData(); + if(privatekey_random != null) { + privatekey_random = gpkirequest.getSignerRValue(); + } + signType = gpkirequest.getSignType(); + } + queryString = gpkirequest.getQueryString(); + }catch(Exception e){ + return "cmm/egovError"; + } + + // 2. 업무사용자 테이블에서 dn값으로 사용자의 ID, PW를 조회하여 이를 일반로그인 형태로 인증하도록 함 + if (dn != null && !dn.equals("")) { + + loginVO.setDn(dn); + LoginVO resultVO = loginService.actionCrtfctLogin(loginVO); + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("")) { + + //스프링 시큐리티패키지를 사용하는지 체크하는 로직 + if(EgovComponentChecker.hasComponent("egovAuthorManageService")){ + // 3-1. spring security 연동 + return "redirect:/j_spring_security_check?j_username=" + resultVO.getUserSe() + resultVO.getId() + "&j_password=" + resultVO.getUniqId(); + + }else{ + // 3-2. 로그인 정보를 세션에 저장 + request.getSession().setAttribute("loginVO", resultVO); + return "redirect:/uat/uia/actionMain.do"; + } + + + } else { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "egovframework/com/uat/uia/EgovLoginUsr"; + } + } else { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "egovframework/com/uat/uia/EgovLoginUsr"; + } + */ + return "egovframework/com/uat/uia/EgovLoginUsr"; + } + + /** + * 로그인 후 메인화면으로 들어간다 + * @param + * @return 로그인 페이지 + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/actionMain.do") + public String actionMain(ModelMap model) throws Exception { + + // 1. Spring Security 사용자권한 처리 + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (!isAuthenticated) { + model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); + return "egovframework/com/uat/uia/EgovLoginUsr"; + } + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + + LOGGER.debug("User Id : {}", user.getId()); + + /* + // 2. 메뉴조회 + MenuManageVO menuManageVO = new MenuManageVO(); + menuManageVO.setTmp_Id(user.getId()); + menuManageVO.setTmp_UserSe(user.getUserSe()); + menuManageVO.setTmp_Name(user.getName()); + menuManageVO.setTmp_Email(user.getEmail()); + menuManageVO.setTmp_OrgnztId(user.getOrgnztId()); + menuManageVO.setTmp_UniqId(user.getUniqId()); + List list_headmenu = menuManageService.selectMainMenuHead(menuManageVO); + model.addAttribute("list_headmenu", list_headmenu); + */ + + // 3. 메인 페이지 이동 + String main_page = Globals.MAIN_PAGE; + + LOGGER.debug("Globals.MAIN_PAGE > " + Globals.MAIN_PAGE); + LOGGER.debug("main_page > {}", main_page); + + if (main_page.startsWith("/")) { + return "forward:" + main_page; + } else { + return main_page; + } + + /* + if (main_page != null && !main_page.equals("")) { + + // 3-1. 설정된 메인화면이 있는 경우 + return main_page; + + } else { + + // 3-2. 설정된 메인화면이 없는 경우 + if (user.getUserSe().equals("USR")) { + return "egovframework/com/EgovMainView"; + } else { + return "egovframework/com/EgovMainViewG"; + } + } + */ + } + + /** + * 로그아웃한다. + * @return String + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/actionLogout.do") + public String actionLogout(HttpServletRequest request, ModelMap model) throws Exception { + + /*String userIp = EgovClntInfo.getClntIP(request); + + // 1. Security 연동 + return "redirect:/j_spring_security_logout";*/ + + request.getSession().setAttribute("loginVO", null); + + //return "redirect:/egovDevIndex.jsp"; + return "redirect:/EgovContent.do"; + } + + /** + * 아이디/비밀번호 찾기 화면으로 들어간다 + * @param + * @return 아이디/비밀번호 찾기 페이지 + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/egovIdPasswordSearch.do") + public String idPasswordSearchView(ModelMap model) throws Exception { + + // 1. 비밀번호 힌트 공통코드 조회 + ComDefaultCodeVO vo = new ComDefaultCodeVO(); + vo.setCodeId("COM022"); + List code = cmmUseService.selectCmmCodeDetail(vo); + model.addAttribute("pwhtCdList", code); + + return "egovframework/com/uat/uia/EgovIdPasswordSearch"; + } + + /** + * 인증서안내 화면으로 들어간다 + * @return 인증서안내 페이지 + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/egovGpkiIssu.do") + public String gpkiIssuView(ModelMap model) throws Exception { + return "egovframework/com/uat/uia/EgovGpkiIssu"; + } + + /** + * 아이디를 찾는다. + * @param vo - 이름, 이메일주소, 사용자구분이 담긴 LoginVO + * @return result - 아이디 + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/searchId.do") + public String searchId(@ModelAttribute("loginVO") LoginVO loginVO, ModelMap model) throws Exception { + + if (loginVO == null || loginVO.getName() == null || loginVO.getName().equals("") && loginVO.getEmail() == null || loginVO.getEmail().equals("") + && loginVO.getUserSe() == null || loginVO.getUserSe().equals("")) { + return "egovframework/com/cmm/egovError"; + } + + // 1. 아이디 찾기 + loginVO.setName(loginVO.getName().replaceAll(" ", "")); + LoginVO resultVO = loginService.searchId(loginVO); + + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("")) { + + model.addAttribute("resultInfo", "아이디는 " + resultVO.getId() + " 입니다."); + return "egovframework/com/uat/uia/EgovIdPasswordResult"; + } else { + model.addAttribute("resultInfo", egovMessageSource.getMessage("fail.common.idsearch")); + return "egovframework/com/uat/uia/EgovIdPasswordResult"; + } + } + + /** + * 비밀번호를 찾는다. + * @param vo - 아이디, 이름, 이메일주소, 비밀번호 힌트, 비밀번호 정답, 사용자구분이 담긴 LoginVO + * @return result - 임시비밀번호전송결과 + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/searchPassword.do") + public String searchPassword(@ModelAttribute("loginVO") LoginVO loginVO, ModelMap model) throws Exception { + + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (loginVO == null || loginVO.getId() == null || loginVO.getId().equals("") && loginVO.getName() == null || "".equals(loginVO.getName()) && loginVO.getEmail() == null + || loginVO.getEmail().equals("") && loginVO.getPasswordHint() == null || "".equals(loginVO.getPasswordHint()) && loginVO.getPasswordCnsr() == null + || "".equals(loginVO.getPasswordCnsr()) && loginVO.getUserSe() == null || "".equals(loginVO.getUserSe())) { + return "egovframework/com/cmm/egovError"; + } + + // 1. 비밀번호 찾기 + boolean result = loginService.searchPassword(loginVO); + + // 2. 결과 리턴 + if (result) { + model.addAttribute("resultInfo", "임시 비밀번호를 발송하였습니다."); + return "egovframework/com/uat/uia/EgovIdPasswordResult"; + } else { + model.addAttribute("resultInfo", egovMessageSource.getMessage("fail.common.pwsearch")); + return "egovframework/com/uat/uia/EgovIdPasswordResult"; + } + } + + /** + * 개발 시스템 구축 시 발급된 GPKI 서버용인증서에 대한 암호화데이터를 구한다. + * 최초 한번만 실행하여, 암호화데이터를 EgovGpkiVariables.js의 ServerCert에 넣는다. + * @return String + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/getEncodingData.do") + public void getEncodingData() throws Exception { + + /* + X509Certificate x509Cert = null; + byte[] cert = null; + String base64cert = null; + try { + x509Cert = Disk.readCert("/product/jeus/egovProps/gpkisecureweb/certs/SVR1311000011_env.cer"); + cert = x509Cert.getCert(); + Base64 base64 = new Base64(); + base64cert = base64.encode(cert); + log.info("+++ Base64로 변환된 인증서는 : " + base64cert); + + } catch (GpkiApiException e) { + e.printStackTrace(); + } + */ + } + + /** + * 인증서 DN추출 팝업을 호출한다. + * @return 인증서 등록 페이지 + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/EgovGpkiRegist.do") + public String gpkiRegistView(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + + /** GPKI 인증 부분 */ + // OS에 따라 (local NT(로컬) / server Unix(서버)) 구분 + String os = System.getProperty("os.arch"); + LOGGER.debug("OS : {}", os); + + //String virusReturn = null; + + /* + // 브라우저 이름을 받기위한 처리 + String webKind = EgovClntInfo.getClntWebKind(request); + String[] ss = webKind.split(" "); + String browser = ss[1]; + model.addAttribute("browser",browser); + // -- 여기까지 + if (os.equalsIgnoreCase("x86")) { + //Local Host TEST 진행중 + } else { + if (browser.equalsIgnoreCase("Explorer")) { + GPKIHttpServletResponse gpkiresponse = null; + GPKIHttpServletRequest gpkirequest = null; + + try { + gpkiresponse = new GPKIHttpServletResponse(response); + gpkirequest = new GPKIHttpServletRequest(request); + + gpkiresponse.setRequest(gpkirequest); + model.addAttribute("challenge", gpkiresponse.getChallenge()); + + return "egovframework/com/uat/uia/EgovGpkiRegist"; + + } catch (Exception e) { + return "egovframework/com/cmm/egovError"; + } + } + } + */ + return "egovframework/com/uat/uia/EgovGpkiRegist"; + } + + /** + * 인증서 DN값을 추출한다 + * @return result - dn값 + * @exception Exception + */ + @RequestMapping(value = "/uat/uia/actionGpkiRegist.do") + public String actionGpkiRegist(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception { + + /** GPKI 인증 부분 */ + // OS에 따라 (local NT(로컬) / server Unix(서버)) 구분 + String os = System.getProperty("os.arch"); + LOGGER.debug("OS : {}", os); + + // String virusReturn = null; + @SuppressWarnings("unused") + String dn = ""; + + // 브라우저 이름을 받기위한 처리 + String webKind = EgovClntInfo.getClntWebKind(request); + String[] ss = webKind.split(" "); + String browser = ss[1]; + model.addAttribute("browser", browser); + /* + // -- 여기까지 + if (os.equalsIgnoreCase("x86")) { + // Local Host TEST 진행중 + } else { + if (browser.equalsIgnoreCase("Explorer")) { + GPKIHttpServletResponse gpkiresponse = null; + GPKIHttpServletRequest gpkirequest = null; + try { + gpkiresponse = new GPKIHttpServletResponse(response); + gpkirequest = new GPKIHttpServletRequest(request); + gpkiresponse.setRequest(gpkirequest); + X509Certificate cert = null; + + // byte[] signData = null; + // byte[] privatekey_random = null; + // String signType = ""; + // String queryString = ""; + + cert = gpkirequest.getSignerCert(); + dn = cert.getSubjectDN(); + + model.addAttribute("dn", dn); + model.addAttribute("challenge", gpkiresponse.getChallenge()); + + return "egovframework/com/uat/uia/EgovGpkiRegist"; + } catch (Exception e) { + return "egovframework/com/cmm/egovError"; + } + } + } + */ + return "egovframework/com/uat/uia/EgovGpkiRegist"; + } +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovDateFormat.java b/src/main/java/egovframework/com/utl/fcc/service/EgovDateFormat.java new file mode 100644 index 00000000..53c94287 --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovDateFormat.java @@ -0,0 +1,146 @@ +package egovframework.com.utl.fcc.service; + +import java.text.DateFormat; +import java.util.Date; +import java.util.Locale; + +/** + * 날짜 및 시간에 대한 변환을 수행하는 클래스 + */ +public class EgovDateFormat { + + /** + * 기본 Locale에 해당하는 형식으로 날짜를 변환한다. + * + * @param date 날짜 + * @return 날짜 문자열 + */ + public static String formatDate(Date date) { + return DateFormat.getDateInstance().format(date); + } + + /** + * Locale에 해당하는 형식으로 날짜를 변환한다. + * + * @param locale 로케일 + * @param date 날짜 + * @return 날짜 문자열 + */ + public static String formatDate(Locale locale, Date date) { + return DateFormat.getDateInstance(DateFormat.DEFAULT, locale).format(date); + } + + /** + * 주어진 스타일에 따라, 기본 Locale에 해당하는 형식으로 날짜를 변환한다. + * + * @param style 날짜 스타일 (사용 가능한 값 : {@link DateFormat#FULL}, {@link DateFormat#LONG}, {@link DateFormat#MEDIUM}, {@link DateFormat#SHORT}, {@link DateFormat#DEFAULT}) + * @param date 날짜 + * @return 날짜 문자열 + */ + public static String formatDate(int style, Date date) { + return DateFormat.getDateInstance(style).format(date); + } + + /** + * 주어진 스타일에 따라, Locale에 해당하는 형식으로 날짜를 변환한다. + * + * @param style 날짜 스타일 (사용 가능한 값 : {@link DateFormat#FULL}, {@link DateFormat#LONG}, {@link DateFormat#MEDIUM}, {@link DateFormat#SHORT}, {@link DateFormat#DEFAULT}) + * @param locale 로케일 + * @param date 날짜 + * @return 날짜 문자열 + */ + public static String formatDate(int style, Locale locale, Date date) { + return DateFormat.getDateInstance(style, locale).format(date); + } + + /** + * 기본 Locale에 해당하는 형식으로 날짜 및 시간을 변환한다. + * + * @param date 날짜 및 시간 + * @return 날짜 및 시간 문자열 + */ + public static String formatDateTime(Date date) { + return DateFormat.getDateTimeInstance().format(date); + } + + /** + * Locale에 해당하는 형식으로 날짜 및 시간을 변환한다. + * + * @param locale 로케일 + * @param date 날짜 및 시간 + * @return 날짜 및 시간 문자열 + */ + public static String formatDateTime(Locale locale, Date date) { + return DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, locale).format(date); + } + + /** + * 주어진 스타일에 따라, 기본 Locale에 해당하는 형식으로 날짜 및 시간을 변환한다. + * + * @param dateStyle 날짜 스타일 (사용 가능한 값 : {@link DateFormat#FULL}, {@link DateFormat#LONG}, {@link DateFormat#MEDIUM}, {@link DateFormat#SHORT}, {@link DateFormat#DEFAULT}) + * @param timeStyle 시간 스타일 (사용 가능한 값 : {@link DateFormat#FULL}, {@link DateFormat#LONG}, {@link DateFormat#MEDIUM}, {@link DateFormat#SHORT}, {@link DateFormat#DEFAULT}) + * @param date 날짜 및 시간 + * @return 날짜 및 시간 문자열 + */ + public static String formatDateTime(int dateStyle, int timeStyle, Date date) { + return DateFormat.getDateTimeInstance(dateStyle, timeStyle).format(date); + } + + /** + * 주어진 스타일에 따라, Locale에 해당하는 형식으로 날짜 및 시간을 변환한다. + * + * @param dateStyle 날짜 스타일 (사용 가능한 값 : {@link DateFormat#FULL}, {@link DateFormat#LONG}, {@link DateFormat#MEDIUM}, {@link DateFormat#SHORT}, {@link DateFormat#DEFAULT}) + * @param timeStyle 시간 스타일 (사용 가능한 값 : {@link DateFormat#FULL}, {@link DateFormat#LONG}, {@link DateFormat#MEDIUM}, {@link DateFormat#SHORT}, {@link DateFormat#DEFAULT}) + * @param locale 로케일 + * @param date 날짜 및 시간 + * @return 날짜 및 시간 문자열 + */ + public static String formatDateTime(int dateStyle, int timeStyle, Locale locale, Date date) { + return DateFormat.getDateTimeInstance(dateStyle, timeStyle, locale).format(date); + } + + /** + * 기본 Locale에 해당하는 형식으로 시간을 변환한다. + * + * @param date 시간 + * @return 시간 문자열 + */ + public static String formatTime(Date date) { + return DateFormat.getTimeInstance().format(date); + } + + /** + * Locale에 해당하는 형식으로 시간을 변환한다. + * + * @param locale 로케일 + * @param date 시간 + * @return 시간 문자열 + */ + public static String formatTime(Locale locale, Date date) { + return DateFormat.getTimeInstance(DateFormat.DEFAULT, locale).format(date); + } + + /** + * 주어진 스타일에 따라, 기본 Locale에 해당하는 형식으로 시간을 변환한다. + * + * @param style 시간 스타일 (사용 가능한 값 : {@link DateFormat#FULL}, {@link DateFormat#LONG}, {@link DateFormat#MEDIUM}, {@link DateFormat#SHORT}, {@link DateFormat#DEFAULT}) + * @param date 시간 + * @return 시간 문자열 + */ + public static String formatTime(int style, Date date) { + return DateFormat.getTimeInstance(style).format(date); + } + + /** + * 주어진 스타일에 따라, Locale에 해당하는 형식으로 시간을 변환한다. + * + * @param style 시간 스타일 (사용 가능한 값 : {@link DateFormat#FULL}, {@link DateFormat#LONG}, {@link DateFormat#MEDIUM}, {@link DateFormat#SHORT}, {@link DateFormat#DEFAULT}) + * @param locale 로케일 + * @param date 시간 + * @return 시간 문자열 + */ + public static String formatTime(int style, Locale locale, Date date) { + return DateFormat.getTimeInstance(style, locale).format(date); + } + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovDateUtil.java b/src/main/java/egovframework/com/utl/fcc/service/EgovDateUtil.java new file mode 100644 index 00000000..91c5857d --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovDateUtil.java @@ -0,0 +1,865 @@ +package egovframework.com.utl.fcc.service; + +import java.security.SecureRandom; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.TimeZone; + +import com.ibm.icu.util.ChineseCalendar; + +/** + * + * Date 에 대한 Util 클래스 + * @author 공통서비스 개발팀 이중호 + * @since 2009.02.01 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.02.01  이중호          최초 생성
    + *
    + * 
    + */ +public class EgovDateUtil { + + /** + *

    yyyyMMdd 혹은 yyyy-MM-dd 형식의 날짜 문자열을 입력 받아 년, 월, 일을 + * 증감한다. 년, 월, 일은 가감할 수를 의미하며, 음수를 입력할 경우 감한다.

    + * + *
    +	 * DateUtil.addYearMonthDay("19810828", 0, 0, 19)  = "19810916"
    +	 * DateUtil.addYearMonthDay("20060228", 0, 0, -10) = "20060218"
    +	 * DateUtil.addYearMonthDay("20060228", 0, 0, 10)  = "20060310"
    +	 * DateUtil.addYearMonthDay("20060228", 0, 0, 32)  = "20060401"
    +	 * DateUtil.addYearMonthDay("20050331", 0, -1, 0)  = "20050228"
    +	 * DateUtil.addYearMonthDay("20050301", 0, 2, 30)  = "20050531"
    +	 * DateUtil.addYearMonthDay("20050301", 1, 2, 30)  = "20060531"
    +	 * DateUtil.addYearMonthDay("20040301", 2, 0, 0)   = "20060301"
    +	 * DateUtil.addYearMonthDay("20040229", 2, 0, 0)   = "20060228"
    +	 * DateUtil.addYearMonthDay("20040229", 2, 0, 1)   = "20060301"
    +	 * 
    + * + * @param dateStr 날짜 문자열(yyyyMMdd, yyyy-MM-dd의 형식) + * @param year 가감할 년. 0이 입력될 경우 가감이 없다 + * @param month 가감할 월. 0이 입력될 경우 가감이 없다 + * @param day 가감할 일. 0이 입력될 경우 가감이 없다 + * @return yyyyMMdd 형식의 날짜 문자열 + * @throws IllegalArgumentException 날짜 포맷이 정해진 바와 다를 경우. + * 입력 값이 null인 경우. + */ + public static String addYearMonthDay(String sDate, int year, int month, int day) { + + String dateStr = validChkDate(sDate); + + Calendar cal = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd", Locale.getDefault()); + try { + cal.setTime(sdf.parse(dateStr)); + } catch (ParseException e) { + throw new IllegalArgumentException("Invalid date format: " + dateStr); + } + + if (year != 0) { + cal.add(Calendar.YEAR, year); + } + if (month != 0) { + cal.add(Calendar.MONTH, month); + } + if (day != 0) { + cal.add(Calendar.DATE, day); + } + + return sdf.format(cal.getTime()); + } + + /** + *

    yyyyMMdd 혹은 yyyy-MM-dd 형식의 날짜 문자열을 입력 받아 년을 + * 증감한다. year는 가감할 수를 의미하며, 음수를 입력할 경우 감한다.

    + * + *
    +	 * DateUtil.addYear("20000201", 62)  = "20620201"
    +	 * DateUtil.addYear("20620201", -62) = "20000201"
    +	 * DateUtil.addYear("20040229", 2)   = "20060228"
    +	 * DateUtil.addYear("20060228", -2)  = "20040228"
    +	 * DateUtil.addYear("19000101", 200) = "21000101"
    +	 * 
    + * + * @param dateStr 날짜 문자열(yyyyMMdd, yyyy-MM-dd의 형식) + * @param year 가감할 년. 0이 입력될 경우 가감이 없다 + * @return yyyyMMdd 형식의 날짜 문자열 + * @throws IllegalArgumentException 날짜 포맷이 정해진 바와 다를 경우. + * 입력 값이 null인 경우. + */ + public static String addYear(String dateStr, int year) { + return addYearMonthDay(dateStr, year, 0, 0); + } + + /** + *

    yyyyMMdd 혹은 yyyy-MM-dd 형식의 날짜 문자열을 입력 받아 월을 + * 증감한다. month는 가감할 수를 의미하며, 음수를 입력할 경우 감한다.

    + * + *
    +	 * DateUtil.addMonth("20010201", 12)  = "20020201"
    +	 * DateUtil.addMonth("19800229", 12)  = "19810228"
    +	 * DateUtil.addMonth("20040229", 12)  = "20050228"
    +	 * DateUtil.addMonth("20050228", -12) = "20040228"
    +	 * DateUtil.addMonth("20060131", 1)   = "20060228"
    +	 * DateUtil.addMonth("20060228", -1)  = "20060128"
    +	 * 
    + * + * @param dateStr 날짜 문자열(yyyyMMdd, yyyy-MM-dd의 형식) + * @param month 가감할 월. 0이 입력될 경우 가감이 없다 + * @return yyyyMMdd 형식의 날짜 문자열 + * @throws IllegalArgumentException 날짜 포맷이 정해진 바와 다를 경우. + * 입력 값이 null인 경우. + */ + public static String addMonth(String dateStr, int month) { + return addYearMonthDay(dateStr, 0, month, 0); + } + + /** + *

    yyyyMMdd 혹은 yyyy-MM-dd 형식의 날짜 문자열을 입력 받아 일(day)를 + * 증감한다. day는 가감할 수를 의미하며, 음수를 입력할 경우 감한다. + *

    + * 위에 정의된 addDays 메서드는 사용자가 ParseException을 반드시 처리해야 하는 불편함이 + * 있기 때문에 추가된 메서드이다.

    + * + *
    +	 * DateUtil.addDay("19991201", 62) = "20000201"
    +	 * DateUtil.addDay("20000201", -62) = "19991201"
    +	 * DateUtil.addDay("20050831", 3) = "20050903"
    +	 * DateUtil.addDay("20050831", 3) = "20050903"
    +	 * // 2006년 6월 31일은 실제로 존재하지 않는 날짜이다 -> 20060701로 간주된다
    +	 * DateUtil.addDay("20060631", 1) = "20060702"
    +	 * 
    + * + * @param dateStr 날짜 문자열(yyyyMMdd, yyyy-MM-dd의 형식) + * @param day 가감할 일. 0이 입력될 경우 가감이 없다 + * @return yyyyMMdd 형식의 날짜 문자열 + * @throws IllegalArgumentException 날짜 포맷이 정해진 바와 다를 경우. + * 입력 값이 null인 경우. + */ + public static String addDay(String dateStr, int day) { + return addYearMonthDay(dateStr, 0, 0, day); + } + + /** + *

    yyyyMMdd 혹은 yyyy-MM-dd 형식의 날짜 문자열 dateStr1 + * dateStr2 사이의 일 수를 구한다.
    + * dateStr2dateStr1 보다 과거 날짜일 경우에는 + * 음수를 반환한다. 동일한 경우에는 0을 반환한다.

    + * + *
    +	 * DateUtil.getDaysDiff("20060228","20060310") = 10
    +	 * DateUtil.getDaysDiff("20060101","20070101") = 365
    +	 * DateUtil.getDaysDiff("19990228","19990131") = -28
    +	 * DateUtil.getDaysDiff("20060801","20060802") = 1
    +	 * DateUtil.getDaysDiff("20060801","20060801") = 0
    +	 * 
    + * + * @param dateStr1 날짜 문자열(yyyyMMdd, yyyy-MM-dd의 형식) + * @param dateStr2 날짜 문자열(yyyyMMdd, yyyy-MM-dd의 형식) + * @return 일 수 차이. + * @throws IllegalArgumentException 날짜 포맷이 정해진 바와 다를 경우. + * 입력 값이 null인 경우. + */ + public static int getDaysDiff(String sDate1, String sDate2) { + String dateStr1 = validChkDate(sDate1); + String dateStr2 = validChkDate(sDate2); + + if (!checkDate(sDate1) || !checkDate(sDate2)) { + throw new IllegalArgumentException("Invalid date format: args[0]=" + sDate1 + " args[1]=" + sDate2); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd", Locale.getDefault()); + + Date date1 = null; + Date date2 = null; + try { + date1 = sdf.parse(dateStr1); + date2 = sdf.parse(dateStr2); + } catch (ParseException e) { + throw new IllegalArgumentException("Invalid date format: args[0]=" + dateStr1 + " args[1]=" + dateStr2); + } + + if (date1 != null && date2 != null) { + int days1 = (int) ((date1.getTime() / 3600000) / 24); + int days2 = (int) ((date2.getTime() / 3600000) / 24); + return days2 - days1; + } else { + return 0; + } + + } + + /** + *

    yyyyMMdd 혹은 yyyy-MM-dd 형식의 날짜 문자열을 입력 받아 유효한 날짜인지 검사.

    + * + *
    +	 * DateUtil.checkDate("1999-02-35") = false
    +	 * DateUtil.checkDate("2000-13-31") = false
    +	 * DateUtil.checkDate("2006-11-31") = false
    +	 * DateUtil.checkDate("2006-2-28")  = false
    +	 * DateUtil.checkDate("2006-2-8")   = false
    +	 * DateUtil.checkDate("20060228")   = true
    +	 * DateUtil.checkDate("2006-02-28") = true
    +	 * 
    + * + * @param dateStr 날짜 문자열(yyyyMMdd, yyyy-MM-dd의 형식) + * @return 유효한 날짜인지 여부 + */ + public static boolean checkDate(String sDate) { + String dateStr = validChkDate(sDate); + + String year = dateStr.substring(0, 4); + String month = dateStr.substring(4, 6); + String day = dateStr.substring(6); + + return checkDate(year, month, day); + } + + /** + *

    입력한 년, 월, 일이 유효한지 검사.

    + * + * @param year 연도 + * @param month 월 + * @param day 일 + * @return 유효한 날짜인지 여부 + */ + public static boolean checkDate(String year, String month, String day) { + try { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd", Locale.getDefault()); + + Date result = formatter.parse(year + "." + month + "." + day); + String resultStr = formatter.format(result); + if (resultStr.equalsIgnoreCase(year + "." + month + "." + day)) + return true; + else + return false; + } catch (ParseException e) { + return false; + } + } + + /** + * 날짜형태의 String의 날짜 포맷 및 TimeZone을 변경해 주는 메서드 + * + * @param strSource 바꿀 날짜 String + * @param fromDateFormat 기존의 날짜 형태 + * @param toDateFormat 원하는 날짜 형태 + * @param strTimeZone 변경할 TimeZone(""이면 변경 안함) + * @return 소스 String의 날짜 포맷을 변경한 String + */ + public static String convertDate(String strSource, String fromDateFormat, String toDateFormat, String strTimeZone) { + SimpleDateFormat simpledateformat = null; + Date date = null; + String fromFormat = ""; + String toFormat = ""; + + if (EgovStringUtil.isNullToString(strSource).trim().equals("")) { + return ""; + } + if (EgovStringUtil.isNullToString(fromDateFormat).trim().equals("")) + fromFormat = "yyyyMMddHHmmss"; // default값 + if (EgovStringUtil.isNullToString(toDateFormat).trim().equals("")) + toFormat = "yyyy-MM-dd HH:mm:ss"; // default값 + + try { + simpledateformat = new SimpleDateFormat(fromFormat, Locale.getDefault()); + date = simpledateformat.parse(strSource); + if (!EgovStringUtil.isNullToString(strTimeZone).trim().equals("")) { + simpledateformat.setTimeZone(TimeZone.getTimeZone(strTimeZone)); + } + simpledateformat = new SimpleDateFormat(toFormat, Locale.getDefault()); + } catch (ParseException exception) { + throw new RuntimeException(exception); + } + + return simpledateformat.format(date); + + } + + /** + * yyyyMMdd 형식의 날짜문자열을 원하는 캐릭터(ch)로 쪼개 돌려준다
    + *
    +	* ex) 20030405, ch(.) -> 2003.04.05
    +	* ex) 200304, ch(.) -> 2003.04
    +	* ex) 20040101,ch(/) --> 2004/01/01 로 리턴
    +	* 
    + * + * @param date yyyyMMdd 형식의 날짜문자열 + * @param ch 구분자 + * @return 변환된 문자열 + */ + public static String formatDate(String sDate, String ch) { + String dateStr = validChkDate(sDate); + + String str = dateStr.trim(); + String yyyy = ""; + String mm = ""; + String dd = ""; + + if (str.length() == 8) { + yyyy = str.substring(0, 4); + if (yyyy.equals("0000")) { + return ""; + } + + mm = str.substring(4, 6); + if (mm.equals("00")) { + return yyyy; + } + + dd = str.substring(6, 8); + if (dd.equals("00")) { + return yyyy + ch + mm; + } + + return yyyy + ch + mm + ch + dd; + + } else if (str.length() == 6) { + yyyy = str.substring(0, 4); + if (yyyy.equals("0000")) { + return ""; + } + + mm = str.substring(4, 6); + if (mm.equals("00")) { + return yyyy; + } + + return yyyy + ch + mm; + + } else if (str.length() == 4) { + yyyy = str.substring(0, 4); + if (yyyy.equals("0000")) { + return ""; + } else { + return yyyy; + } + } else { + return ""; + } + } + + /** + * HH24MISS 형식의 시간문자열을 원하는 캐릭터(ch)로 쪼개 돌려준다
    + *
    +	 *     ex) 151241, ch(/) -> 15/12/31
    +	 * 
    + * + * @param str HH24MISS 형식의 시간문자열 + * @param ch 구분자 + * @return 변환된 문자열 + */ + public static String formatTime(String sTime, String ch) { + String timeStr = validChkTime(sTime); + return timeStr.substring(0, 2) + ch + timeStr.substring(2, 4) + ch + timeStr.substring(4, 6); + } + + /** + * 연도를 입력 받아 해당 연도 2월의 말일(일수)를 문자열로 반환한다. + * + * @param year + * @return 해당 연도 2월의 말일(일수) + */ + public String leapYear(int year) { + if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { + return "29"; + } + + return "28"; + } + + /** + *

    입력받은 연도가 윤년인지 아닌지 검사한다.

    + * + *
    +	 * DateUtil.isLeapYear(2004) = false
    +	 * DateUtil.isLeapYear(2005) = true
    +	 * DateUtil.isLeapYear(2006) = true
    +	 * 
    + * + * @param year 연도 + * @return 윤년 여부 + */ + public static boolean isLeapYear(int year) { + if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { + return false; + } + return true; + } + + /** + * 현재(한국기준) 날짜정보를 얻는다.
    + * 표기법은 yyyy-mm-dd
    + * @return String yyyymmdd형태의 현재 한국시간.
    + */ + public static String getToday() { + return getCurrentDate(""); + } + + /** + * 현재(한국기준) 날짜정보를 얻는다.
    + * 표기법은 yyyy-mm-dd
    + * @return String yyyymmdd형태의 현재 한국시간.
    + */ + public static String getCurrentDate(String dateType) { + Calendar aCalendar = Calendar.getInstance(); + + int year = aCalendar.get(Calendar.YEAR); + int month = aCalendar.get(Calendar.MONTH) + 1; + int date = aCalendar.get(Calendar.DATE); + String strDate = Integer.toString(year) + + ((month < 10) ? "0" + Integer.toString(month) : Integer.toString(month)) + + ((date < 10) ? "0" + Integer.toString(date) : Integer.toString(date)); + + if (!"".equals(dateType)) { + strDate = convertDate(strDate, "yyyyMMdd", dateType); + } + + return strDate; + } + + /** + * 날짜형태의 String의 날짜 포맷만을 변경해 주는 메서드 + * @param sDate 날짜 + * @param sTime 시간 + * @param sFormatStr 포멧 스트링 문자열 + * @return 지정한 날짜/시간을 지정한 포맷으로 출력 + * @See Letter Date or Time Component Presentation Examples + G Era designator Text AD + y Year Year 1996; 96 + M Month in year Month July; Jul; 07 + w Week in year Number 27 + W Week in month Number 2 + D Day in year Number 189 + d Day in month Number 10 + F Day of week in month Number 2 + E Day in week Text Tuesday; Tue + a Am/pm marker Text PM + H Hour in day (0-23) Number 0 + k Hour in day (1-24) Number 24 + K Hour in am/pm (0-11) Number 0 + h Hour in am/pm (1-12) Number 12 + m Minute in hour Number 30 + s Second in minute Number 55 + S Millisecond Number 978 + z Time zone General time zone Pacific Standard Time; PST; GMT-08:00 + Z Time zone RFC 822 time zone -0800 + + Date and Time Pattern Result + "yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT + "EEE, MMM d, ''yy" Wed, Jul 4, '01 + "h:mm a" 12:08 PM + "hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time + "K:mm a, z" 0:08 PM, PDT + "yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM + "EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700 + "yyMMddHHmmssZ" 010704120856-0700 + + */ + public static String convertDate(String sDate, String sTime, String sFormatStr) { + String dateStr = validChkDate(sDate); + String timeStr = validChkTime(sTime); + + Calendar cal = null; + cal = Calendar.getInstance(); + + cal.set(Calendar.YEAR, Integer.parseInt(dateStr.substring(0, 4))); + cal.set(Calendar.MONTH, Integer.parseInt(dateStr.substring(4, 6)) - 1); + cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dateStr.substring(6, 8))); + cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(timeStr.substring(0, 2))); + cal.set(Calendar.MINUTE, Integer.parseInt(timeStr.substring(2, 4))); + + SimpleDateFormat sdf = new SimpleDateFormat(sFormatStr, Locale.ENGLISH); + + return sdf.format(cal.getTime()); + } + + /** + * 입력받은 일자 사이의 임의의 일자를 반환 + * @param sDate1 시작일자 + * @param sDate2 종료일자 + * @return 임의일자 + */ + public static String getRandomDate(String sDate1, String sDate2) { + String dateStr1 = validChkDate(sDate1); + String dateStr2 = validChkDate(sDate2); + + String randomDate = null; + + int sYear, sMonth, sDay; + int eYear, eMonth, eDay; + + sYear = Integer.parseInt(dateStr1.substring(0, 4)); + sMonth = Integer.parseInt(dateStr1.substring(4, 6)); + sDay = Integer.parseInt(dateStr1.substring(6, 8)); + + eYear = Integer.parseInt(dateStr2.substring(0, 4)); + eMonth = Integer.parseInt(dateStr2.substring(4, 6)); + eDay = Integer.parseInt(dateStr2.substring(6, 8)); + + GregorianCalendar beginDate = new GregorianCalendar(sYear, sMonth - 1, sDay, 0, 0); + GregorianCalendar endDate = new GregorianCalendar(eYear, eMonth - 1, eDay, 23, 59); + + if (endDate.getTimeInMillis() < beginDate.getTimeInMillis()) { + throw new IllegalArgumentException("Invalid input date : " + sDate1 + "~" + sDate2); + } + + SecureRandom r = new SecureRandom(); + + r.setSeed(new Date().getTime()); + + long rand = ((r.nextLong() >>> 1) % (endDate.getTimeInMillis() - beginDate.getTimeInMillis() + 1)) + beginDate.getTimeInMillis(); + + GregorianCalendar cal = new GregorianCalendar(); + //SimpleDateFormat calformat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat calformat = new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH); + cal.setTimeInMillis(rand); + randomDate = calformat.format(cal.getTime()); + + // 랜덤문자열를 리턴 + return randomDate; + } + + /** + * 입력받은 양력일자를 변환하여 음력일자로 반환 + * @param sDate 양력일자 + * @return 음력일자 + */ + public static Map toLunar(String sDate) { + String dateStr = validChkDate(sDate); + + Map hm = new HashMap(); + hm.put("day", ""); + hm.put("leap", "0"); + + if (dateStr.length() != 8) { + return hm; + } + + Calendar cal; + ChineseCalendar lcal; + + cal = Calendar.getInstance(); + lcal = new ChineseCalendar(); + + cal.set(Calendar.YEAR, Integer.parseInt(dateStr.substring(0, 4))); + cal.set(Calendar.MONTH, Integer.parseInt(dateStr.substring(4, 6)) - 1); + cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dateStr.substring(6, 8))); + + lcal.setTimeInMillis(cal.getTimeInMillis()); + + String year = String.valueOf(lcal.get(ChineseCalendar.EXTENDED_YEAR) - 2637); + String month = String.valueOf(lcal.get(ChineseCalendar.MONTH) + 1); + String day = String.valueOf(lcal.get(ChineseCalendar.DAY_OF_MONTH)); + String leap = String.valueOf(lcal.get(ChineseCalendar.IS_LEAP_MONTH)); + + String pad4Str = "0000"; + String pad2Str = "00"; + + String retYear = (pad4Str + year).substring(year.length()); + String retMonth = (pad2Str + month).substring(month.length()); + String retDay = (pad2Str + day).substring(day.length()); + + String SDay = retYear + retMonth + retDay; + + hm.put("day", SDay); + hm.put("leap", leap); + + return hm; + } + + /** + * 입력받은 음력일자를 변환하여 양력일자로 반환 + * @param sDate 음력일자 + * @param iLeapMonth 음력윤달여부(IS_LEAP_MONTH) + * @return 양력일자 + */ + public static String toSolar(String sDate, int iLeapMonth) { + String dateStr = validChkDate(sDate); + + Calendar cal; + ChineseCalendar lcal; + + cal = Calendar.getInstance(); + lcal = new ChineseCalendar(); + + lcal.set(ChineseCalendar.EXTENDED_YEAR, Integer.parseInt(dateStr.substring(0, 4)) + 2637); + lcal.set(ChineseCalendar.MONTH, Integer.parseInt(dateStr.substring(4, 6)) - 1); + lcal.set(ChineseCalendar.DAY_OF_MONTH, Integer.parseInt(dateStr.substring(6, 8))); + lcal.set(ChineseCalendar.IS_LEAP_MONTH, iLeapMonth); + + cal.setTimeInMillis(lcal.getTimeInMillis()); + + String year = String.valueOf(cal.get(Calendar.YEAR)); + String month = String.valueOf(cal.get(Calendar.MONTH) + 1); + String day = String.valueOf(cal.get(Calendar.DAY_OF_MONTH)); + + String pad4Str = "0000"; + String pad2Str = "00"; + + String retYear = (pad4Str + year).substring(year.length()); + String retMonth = (pad2Str + month).substring(month.length()); + String retDay = (pad2Str + day).substring(day.length()); + + return retYear + retMonth + retDay; + } + + /** + * 입력받은 요일의 영문명을 국문명의 요일로 반환 + * @param sWeek 영문 요일명 + * @return 국문 요일명 + */ + public static String convertWeek(String sWeek) { + String retStr = null; + + if (sWeek.equals("SUN")) { + retStr = "일요일"; + } else if (sWeek.equals("MON")) { + retStr = "월요일"; + } else if (sWeek.equals("TUE")) { + retStr = "화요일"; + } else if (sWeek.equals("WED")) { + retStr = "수요일"; + } else if (sWeek.equals("THR")) { + retStr = "목요일"; + } else if (sWeek.equals("FRI")) { + retStr = "금요일"; + } else if (sWeek.equals("SAT")) { + retStr = "토요일"; + } + + return retStr; + } + + /** + * 입력일자의 유효 여부를 확인 + * @param sDate 일자 + * @return 유효 여부 + */ + public static boolean validDate(String sDate) { + String dateStr = validChkDate(sDate); + + Calendar cal; + boolean ret = false; + + cal = Calendar.getInstance(); + + cal.set(Calendar.YEAR, Integer.parseInt(dateStr.substring(0, 4))); + cal.set(Calendar.MONTH, Integer.parseInt(dateStr.substring(4, 6)) - 1); + cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dateStr.substring(6, 8))); + + String year = String.valueOf(cal.get(Calendar.YEAR)); + String month = String.valueOf(cal.get(Calendar.MONTH) + 1); + String day = String.valueOf(cal.get(Calendar.DAY_OF_MONTH)); + + String pad4Str = "0000"; + String pad2Str = "00"; + + String retYear = (pad4Str + year).substring(year.length()); + String retMonth = (pad2Str + month).substring(month.length()); + String retDay = (pad2Str + day).substring(day.length()); + + String retYMD = retYear + retMonth + retDay; + + if (sDate.equals(retYMD)) { + ret = true; + } + + return ret; + } + + /** + * 입력일자, 요일의 유효 여부를 확인 + * @param sDate 일자 + * @param sWeek 요일 (DAY_OF_WEEK) + * @return 유효 여부 + */ + public static boolean validDate(String sDate, int sWeek) { + String dateStr = validChkDate(sDate); + + Calendar cal; + boolean ret = false; + + cal = Calendar.getInstance(); + + cal.set(Calendar.YEAR, Integer.parseInt(dateStr.substring(0, 4))); + cal.set(Calendar.MONTH, Integer.parseInt(dateStr.substring(4, 6)) - 1); + cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dateStr.substring(6, 8))); + + int Week = cal.get(Calendar.DAY_OF_WEEK); + + if (validDate(sDate)) { + if (sWeek == Week) { + ret = true; + } + } + + return ret; + } + + /** + * 입력시간의 유효 여부를 확인 + * @param sTime 입력시간 + * @return 유효 여부 + */ + public static boolean validTime(String sTime) { + String timeStr = validChkTime(sTime); + + Calendar cal; + boolean ret = false; + + cal = Calendar.getInstance(); + + cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(timeStr.substring(0, 2))); + cal.set(Calendar.MINUTE, Integer.parseInt(timeStr.substring(2, 4))); + + String HH = String.valueOf(cal.get(Calendar.HOUR_OF_DAY)); + String MM = String.valueOf(cal.get(Calendar.MINUTE)); + + String pad2Str = "00"; + + String retHH = (pad2Str + HH).substring(HH.length()); + String retMM = (pad2Str + MM).substring(MM.length()); + + String retTime = retHH + retMM; + + if (sTime.equals(retTime)) { + ret = true; + } + + return ret; + } + + /** + * 입력된 일자에 연, 월, 일을 가감한 날짜의 요일을 반환 + * @param sDate 날짜 + * @param year 연 + * @param month 월 + * @param day 일 + * @return 계산된 일자의 요일(DAY_OF_WEEK) + */ + public static String addYMDtoWeek(String sDate, int year, int month, int day) { + String dateStr = validChkDate(sDate); + + dateStr = addYearMonthDay(dateStr, year, month, day); + + Calendar cal = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH); + try { + cal.setTime(sdf.parse(dateStr)); + } catch (ParseException e) { + throw new IllegalArgumentException("Invalid date format: " + dateStr); + } + + SimpleDateFormat rsdf = new SimpleDateFormat("E", Locale.ENGLISH); + + return rsdf.format(cal.getTime()); + } + + /** + * 입력된 일자에 연, 월, 일, 시간, 분을 가감한 날짜, 시간을 포멧스트링 형식으로 반환 + * @param sDate 날짜 + * @param sTime 시간 + * @param year 연 + * @param month 월 + * @param day 일 + * @param hour 시간 + * @param minute 분 + * @param formatStr 포멧스트링 + * @return + */ + public static String addYMDtoDayTime(String sDate, String sTime, int year, int month, int day, int hour, int minute, String formatStr) { + String dateStr = validChkDate(sDate); + String timeStr = validChkTime(sTime); + + dateStr = addYearMonthDay(dateStr, year, month, day); + + dateStr = convertDate(dateStr, timeStr, "yyyyMMddHHmm"); + + Calendar cal = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH); + + try { + cal.setTime(sdf.parse(dateStr)); + } catch (ParseException e) { + throw new IllegalArgumentException("Invalid date format: " + dateStr); + } + + if (hour != 0) { + cal.add(Calendar.HOUR, hour); + } + + if (minute != 0) { + cal.add(Calendar.MINUTE, minute); + } + + SimpleDateFormat rsdf = new SimpleDateFormat(formatStr, Locale.ENGLISH); + + return rsdf.format(cal.getTime()); + } + + /** + * 입력된 일자를 int 형으로 반환 + * @param sDate 일자 + * @return int(일자) + */ + public static int datetoInt(String sDate) { + return Integer.parseInt(convertDate(sDate, "0000", "yyyyMMdd")); + } + + /** + * 입력된 시간을 int 형으로 반환 + * @param sTime 시간 + * @return int(시간) + */ + public static int timetoInt(String sTime) { + return Integer.parseInt(convertDate("00000101", sTime, "HHmm")); + } + + /** + * 입력된 일자 문자열을 확인하고 8자리로 리턴 + * @param sDate + * @return + */ + public static String validChkDate(String dateStr) { + if (dateStr == null || !(dateStr.trim().length() == 8 || dateStr.trim().length() == 10)) { + throw new IllegalArgumentException("Invalid date format: " + dateStr); + } + + if (dateStr.length() == 10) { + return EgovStringUtil.removeMinusChar(dateStr); + } + + return dateStr; + } + + /** + * 입력된 일자 문자열을 확인하고 8자리로 리턴 + * @param sDate + * @return + */ + public static String validChkTime(String timeStr) { + if (timeStr == null || !(timeStr.trim().length() == 4)) { + throw new IllegalArgumentException("Invalid time format: " + timeStr); + } + + if (timeStr.length() == 5) { + timeStr = EgovStringUtil.remove(timeStr, ':'); + } + + return timeStr; + } + +} diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovEhgtCalcUtil.java b/src/main/java/egovframework/com/utl/fcc/service/EgovEhgtCalcUtil.java new file mode 100644 index 00000000..7a8aed36 --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovEhgtCalcUtil.java @@ -0,0 +1,294 @@ +/** + * @Class Name : EgovEhgtCalcUtil.java + * @Description : 대한민국, 미국,유럽연합, 일본, 중국연합 사이의 환율계산기능을 + * 제공하는 Business Interface class + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.01.13 박정규 최초 생성 + * + * @author 공통 서비스 개발팀 박정규 + * @since 2009. 01. 13 + * @version 1.0 + * @see + * + */ + +package egovframework.com.utl.fcc.service; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.math.BigDecimal; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; + +import egovframework.com.cmm.util.EgovResourceCloseHelper; + +import javax.swing.text.html.HTMLEditorKit; +import javax.swing.text.html.parser.ParserDelegator; + +public class EgovEhgtCalcUtil { + + // 환율.... + static final char EGHT_USD = 'U'; // 미국 + static final char EGHT_JPY = 'J'; // 일본 + static final char EGHT_EUR = 'E'; // 유럽연합 + static final char EGHT_CNY = 'C'; // 중국연합 + + static final char EGHT_KWR = 'K'; // 대한민국 + + static StringBuffer sb = new StringBuffer(); + + /** + * 대한민국(KRW), 미국(USD), 유럽연합(EUR), 일본(JPY), 중국원화(CNY) 사이의 환율을 계산하는 기능이다 + * 환율표 - 매매기준율 => 미국(USD) - 1485.00(USD), 일본-100(JPY) - 1596.26(JPY) + * 계산법: 대한민원(KRW) - 1,000원 -> 미국(USD)로 변환 시 => 1,000(원)/1485(매매기준율) = 0.67(URS) + * 계산법: 일본(JPY) - 100,000원 -> 대한민국(KRW) 변환 시 => (100,000(원) * 1596.26(매매기준율)) / 100(100엔당 기준표이므로) = 1,596,260.00 (KRW) + * 계산법: 일본(JPY) - 100,000원 -> 미국(USD) 변환 시 => ( + * (100,000(원) * 1596.26(매매기준율)) / 100(100엔당 기준표이므로) = 1,596,260.00 (KRW)) / 1,485.00 = 1,074.92 (USD) + * @param srcType - 환율기준 + * @param srcAmount - 금액 + * @param cnvrType - 변환환율 + * @return 환율금액 + * @exception MyException + * @see + */ + public void readHtmlParsing(String str) { + HttpURLConnection con = null; + InputStream is = null; + InputStreamReader reader = null; + try { + //입력받은 URL에 연결하여 InputStream을 통해 읽은 후 파싱 한다. + URL url = new URL(str); + + con = (HttpURLConnection) url.openConnection(); + + is = con.getInputStream(); + reader = new InputStreamReader(is, "euc-kr"); + //InputStreamReader reader = new InputStreamReader(con.getInputStream(), "utf-8"); + + new ParserDelegator().parse(reader, new CallbackHandler(), true); + + con.disconnect(); + + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + EgovResourceCloseHelper.close(reader, is); + + if (con != null) { + con.disconnect(); + } + } + } + + //파서는 콜백 형식으로 되어 있다. 각 태그가 들어 올때 적절한 메소드가 호출됨 + private class CallbackHandler extends HTMLEditorKit.ParserCallback { + + public void handleText(char[] data, int pos) { + + String srcStr = new String(data); + + srcStr = EgovStringUtil.strip(srcStr, " "); + + sb.append(srcStr).append("/"); + } + } + + public static String getEhgtCalc(String srcType, long srcAmount, String cnvrType) throws Exception { + + String rtnStr = null; + + String[] eghtStdrRt = null; // Html에서 파싱한 환율매매기준율을 저장하기 위한 문자열배열 + + double srcStdrRt = 0.00; // 원래 매매기준율 + double cnvrStdrRt = 0.00; // 변환 매매기준율 + + //double cnvrAmount = 0.00; // 변환금액 + String sCnvrAmount = null; // 변환금액 + + String srcStr = null; + String cnvrStr = null; + + String srcTypeCnvr = srcType.toUpperCase(); + String cnvrTypeCnvr = cnvrType.toUpperCase(); + + EgovEhgtCalcUtil parser = new EgovEhgtCalcUtil(); + + parser.readHtmlParsing("http://community.fxkeb.com/fxportal/jsp/RS/DEPLOY_EXRATE/4176_0.html"); + + if (sb == null) { + throw new RuntimeException("StringBuffer is null!!"); + } + + eghtStdrRt = EgovStringUtil.split(sb.toString(), "/"); + + if (eghtStdrRt == null || (eghtStdrRt.length == 0)) + throw new RuntimeException("String Split Error!"); + + char srcChr = srcTypeCnvr.charAt(0); + char cnvrChr = cnvrTypeCnvr.charAt(0); + + // 원래 환율기준 정의 + switch (srcChr) { + + case EGHT_USD: // 미국 + srcStr = "USD"; + break; + + case EGHT_JPY: // 일본 + srcStr = "JPY"; + break; + + case EGHT_EUR: // 유럽연합 + srcStr = "EUR"; + break; + + case EGHT_CNY: // 중국연합 + srcStr = "CNY"; + break; + + default: + srcStr = "USD"; + break; + } + + // 변환하고자 하는 환율기준 정의 + switch (cnvrChr) { + + case EGHT_USD: // 미국 + cnvrStr = "USD"; + break; + + case EGHT_JPY: // 일본 + cnvrStr = "JPY"; + break; + + case EGHT_EUR: // 유럽연합 + cnvrStr = "EUR"; + break; + + case EGHT_CNY: // 중국연합 + cnvrStr = "CNY"; + break; + + default: + cnvrStr = "KRW"; + break; + } + + // 변환하고자 하는 국가의 환율매매기준율 추출... + for (int i = 0; i < eghtStdrRt.length; i++) { + + // 원래 매매기준율 추출 + if (eghtStdrRt[i].equals(srcStr)) { + srcStdrRt = Double.parseDouble(eghtStdrRt[i + 1]); + + if (i == (eghtStdrRt.length - 1)) + break; + } + + // 변환 매매기준율 추출 + if (eghtStdrRt[i].equals(cnvrStr)) { + cnvrStdrRt = Double.parseDouble(eghtStdrRt[i + 1]); + + if (i == (eghtStdrRt.length - 1)) + break; + } + } + + // 정확한 계산을 위한 BigDecimal 형태로 구현. + BigDecimal bSrcAmount = new BigDecimal(String.valueOf(srcAmount)); // 변환하고자 하는 금액 + BigDecimal bSrcStdrRt = new BigDecimal(String.valueOf(srcStdrRt)); // 원래 매매 비율 + BigDecimal bCnvrStdrRt = new BigDecimal(String.valueOf(cnvrStdrRt)); // 변환 매매 비율 + BigDecimal bStdr = new BigDecimal("100"); // 변환 매매 비율 + + // 원래 매매기준율 및 변환매매기준율 기준으로 환율금액 계산 + switch (srcChr) { + + case EGHT_KWR: // 대한민국 + if (cnvrChr == 'K') + //변환금액 = 변환대상금액; + sCnvrAmount = bSrcAmount.toString(); + else if (cnvrChr == 'J') + //변환금액 = (변환대상금액 / 변환매매비율) * 100; + sCnvrAmount = (bSrcAmount.divide(bCnvrStdrRt, 4, 4)).multiply(bStdr).setScale(2, 4).toString(); + else + //변환금액 = (변환대상금액 / 변환매매비율); + sCnvrAmount = bSrcAmount.divide(bCnvrStdrRt, 2, 4).toString(); + break; + + case EGHT_USD: // 미국 + if (cnvrChr == 'U') + //변환금액 = 변환대상금액; + sCnvrAmount = bSrcAmount.toString(); + else if (cnvrChr == 'K') + //변환금액 = 변환대상금액 * 원래 매매 비율; + sCnvrAmount = bSrcAmount.multiply(bSrcStdrRt).setScale(2, 4).toString(); + else if (cnvrChr == 'J') + //cnvrAmount = ((변환대상금액 * 원래 매매 비율) / 변환 매매 비율) * 100; + sCnvrAmount = ((bSrcAmount.multiply(bSrcStdrRt).setScale(4, 4)).divide(bCnvrStdrRt, 2, 4)).multiply(bStdr).setScale(2, 4).toString(); + else + //cnvrAmount = (변환대상금액 * 원래 매매 비율) / 변환 매매 비율; + sCnvrAmount = (bSrcAmount.multiply(bSrcStdrRt).setScale(4, 4)).divide(bCnvrStdrRt, 2, 4).toString(); + break; + + case EGHT_EUR: // 유럽연합 + if (cnvrChr == 'E') + //변환금액 = 변환대상금액; + sCnvrAmount = bSrcAmount.toString(); + else if (cnvrChr == 'K') + //cnvrAmount = 변환대상금액 * 원래 매매 비율; + sCnvrAmount = bSrcAmount.multiply(bSrcStdrRt).setScale(2, 4).toString(); + else if (cnvrChr == 'J') + //cnvrAmount = ((변환대상금액 * 원래 매매 비율) / 변환 매매 비율) * 100; + sCnvrAmount = ((bSrcAmount.multiply(bSrcStdrRt).setScale(4, 4)).divide(bCnvrStdrRt, 2, 4)).multiply(bStdr).setScale(2, 4).toString(); + else + //cnvrAmount = (변환대상금액 * 원래 매매 비율) / 변환 매매 비율; + sCnvrAmount = (bSrcAmount.multiply(bSrcStdrRt).setScale(4, 4)).divide(bCnvrStdrRt, 2, 4).toString(); + break; + + case EGHT_JPY: // 일본 + if (cnvrChr == 'J') + //변환금액 = 변환대상금액; + sCnvrAmount = bSrcAmount.toString(); + else if (cnvrChr == 'K') + //cnvrAmount = (변환대상금액 * 원래 매매 비율) / 100; + sCnvrAmount = (bSrcAmount.multiply(bSrcStdrRt).setScale(4, 4)).divide(bStdr, 2, 4).toString(); + else + //cnvrAmount = ((변환대상금액 * 원래 매매 비율) / 100) / 변환 매매 비율; + sCnvrAmount = ((bSrcAmount.multiply(bSrcStdrRt).setScale(4, 4)).divide(bStdr, 2, 4)).divide(bCnvrStdrRt, 2, 4).toString(); + break; + + case EGHT_CNY: // 중국연합 + if (cnvrChr == 'C') + //변환금액 = 변환대상금액; + sCnvrAmount = bSrcAmount.toString(); + else if (cnvrChr == 'K') + //cnvrAmount = 변환대상금액 * 원래 매매 비율; + sCnvrAmount = bSrcAmount.multiply(bSrcStdrRt).setScale(2, 4).toString(); + else if (cnvrChr == 'J') + //cnvrAmount = ((변환대상금액 * 원래 매매 비율) / 변환 매매 비율) * 100; + sCnvrAmount = ((bSrcAmount.multiply(bSrcStdrRt).setScale(4, 4)).divide(bCnvrStdrRt, 2, 4)).multiply(bStdr).setScale(2, 4).toString(); + else + //cnvrAmount = (변환대상금액 * 원래 매매 비율) / 변환 매매 비율; + sCnvrAmount = (bSrcAmount.multiply(bSrcStdrRt).setScale(4, 4)).divide(bCnvrStdrRt, 2, 4).toString(); + break; + + default: + //변환금액 = (변환대상금액 / 변환매매비율); + sCnvrAmount = bSrcAmount.divide(bCnvrStdrRt, 2, 4).toString(); + break; + } + + rtnStr = sCnvrAmount + " " + cnvrStr; + + return rtnStr; + } + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovFileUploadUtil.java b/src/main/java/egovframework/com/utl/fcc/service/EgovFileUploadUtil.java new file mode 100644 index 00000000..bd943a5c --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovFileUploadUtil.java @@ -0,0 +1,159 @@ +package egovframework.com.utl.fcc.service; + +import java.io.File; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import egovframework.com.cmm.EgovWebUtil; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +/** + * @Class Name : EgovFileUploadUtil.java + * @Description : Spring 기반 File Upload 유틸리티 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ---------- -------- --------------------------- + * 2009.08.26 한성곤 최초 생성 + * 2018.08.17 신용호 uploadFilesExt(확장자 기록) 추가 + * + * @author 공통컴포넌트 개발팀 한성곤 + * @since 2009.08.26 + * @version 1.0 + * @see + */ +public class EgovFileUploadUtil extends EgovFormBasedFileUtil { + /** + * 파일을 Upload 처리한다. + * + * @param request + * @param where + * @param maxFileSize + * @return + * @throws Exception + */ + public static List uploadFiles(HttpServletRequest request, String where, long maxFileSize) throws Exception { + List list = new ArrayList(); + + MultipartHttpServletRequest mptRequest = (MultipartHttpServletRequest) request; + Iterator fileIter = mptRequest.getFileNames(); + + while (fileIter.hasNext()) { + MultipartFile mFile = mptRequest.getFile((String) fileIter.next()); + + EgovFormBasedFileVo vo = new EgovFormBasedFileVo(); + + String tmp = mFile.getOriginalFilename(); + + if (tmp.lastIndexOf("\\") >= 0) { + tmp = tmp.substring(tmp.lastIndexOf("\\") + 1); + } + + vo.setFileName(tmp); + vo.setContentType(mFile.getContentType()); + vo.setServerSubPath(getTodayString()); + vo.setPhysicalName(getPhysicalFileName()); + vo.setSize(mFile.getSize()); + + if (tmp.lastIndexOf(".") >= 0) { + vo.setPhysicalName(vo.getPhysicalName()); // 2012.11 KISA 보안조치 + } + + if (mFile.getSize() > 0) { + InputStream is = null; + + try { + is = mFile.getInputStream(); + saveFile(is, new File(EgovWebUtil.filePathBlackList(where + SEPERATOR + vo.getServerSubPath() + SEPERATOR + vo.getPhysicalName()))); + } finally { + if (is != null) { + is.close(); + } + } + list.add(vo); + } + } + + return list; + } + + /** + * 파일을 Upload(확장명 저장 및 확장자 제한) 처리한다. + * + * @param request + * @param where + * @param maxFileSize + * @return + * @throws Exception + */ + public static List uploadFilesExt(HttpServletRequest request, String where, long maxFileSize, String extensionWhiteList) throws Exception { + List list = new ArrayList(); + + MultipartHttpServletRequest mptRequest = (MultipartHttpServletRequest) request; + Iterator fileIter = mptRequest.getFileNames(); + + while (fileIter.hasNext()) { + MultipartFile mFile = mptRequest.getFile((String) fileIter.next()); + + EgovFormBasedFileVo vo = new EgovFormBasedFileVo(); + + String tmp = mFile.getOriginalFilename(); + + if (tmp.lastIndexOf("\\") >= 0) { + tmp = tmp.substring(tmp.lastIndexOf("\\") + 1); + } + String ext = ""; + if ( tmp.lastIndexOf(".") > 0 ) + ext = getFileExtension(tmp).toLowerCase(); + else + throw new SecurityException("Unacceptable file extension."); // 허용되지 않는 확장자 처리 + if ( extensionWhiteList.indexOf(ext) < 0 ) + throw new SecurityException("Unacceptable file extension."); // 허용되지 않는 확장자 처리 + + vo.setFileName(tmp); + vo.setContentType(mFile.getContentType()); + vo.setServerSubPath(getTodayString()); + vo.setPhysicalName(getPhysicalFileName()+"."+ext); + vo.setSize(mFile.getSize()); + + if (tmp.lastIndexOf(".") >= 0) { + vo.setPhysicalName(vo.getPhysicalName()); // 2012.11 KISA 보안조치 + } + + if (mFile.getSize() > 0) { + InputStream is = null; + + try { + is = mFile.getInputStream(); + saveFile(is, new File(EgovWebUtil.filePathBlackList(where + SEPERATOR + vo.getServerSubPath() + SEPERATOR + vo.getPhysicalName()))); + } finally { + if (is != null) { + is.close(); + } + } + list.add(vo); + } + } + + return list; + } + + /** + * 파일 확장자를 추출한다. + * + * @param fileNamePath + * @return + */ + public static String getFileExtension(String fileNamePath) { + + String ext = fileNamePath.substring(fileNamePath.lastIndexOf(".") + 1,fileNamePath.length()); + + return (ext == null) ? "" : ext; + } +} diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedFileUtil.java b/src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedFileUtil.java new file mode 100644 index 00000000..4e0db437 --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedFileUtil.java @@ -0,0 +1,295 @@ +package egovframework.com.utl.fcc.service; + +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.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +import egovframework.com.cmm.EgovWebUtil; +import egovframework.com.cmm.util.EgovResourceCloseHelper; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.fileupload.FileItemIterator; +import org.apache.commons.fileupload.FileItemStream; +import org.apache.commons.fileupload.servlet.ServletFileUpload; +import org.apache.commons.fileupload.util.Streams; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @Class Name : EgovFormBasedFileUtil.java + * @Description : Form-based File Upload 유틸리티 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.08.26 한성곤 최초 생성 + * 2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + * + * @author 공통컴포넌트 개발팀 한성곤 + * @since 2009.08.26 + * @version 1.0 + * @see + */ +public class EgovFormBasedFileUtil { + /** Buffer size */ + public static final int BUFFER_SIZE = 8192; + + public static final String SEPERATOR = File.separator; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovFormBasedFileUtil.class); + + /** + * 오늘 날짜 문자열 취득. + * ex) 20090101 + * @return + */ + public static String getTodayString() { + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd", Locale.getDefault()); + + return format.format(new Date()); + } + + /** + * 물리적 파일명 생성. + * @return + */ + public static String getPhysicalFileName() { + return EgovFormBasedUUID.randomUUID().toString().replaceAll("-", "").toUpperCase(); + } + + /** + * 파일명 변환. + * @param filename String + * @return + * @throws Exception + */ + protected static String convert(String filename) throws Exception { + //return java.net.URLEncoder.encode(filename, "utf-8"); + return filename; + } + + /** + * Stream으로부터 파일을 저장함. + * @param is InputStream + * @param file File + * @throws IOException + */ + public static long saveFile(InputStream is, File file) throws IOException { + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (file.getParentFile() == null) { + LOGGER.debug("file.getParentFile() is null"); + throw new RuntimeException("file.getParentFile() is null"); + } + + // 디렉토리 생성 + if (!file.getParentFile().exists()) { + //2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + if(file.getParentFile().mkdirs()){ + LOGGER.debug("[file.mkdirs] file : Directory Creation Success"); + }else{ + LOGGER.error("[file.mkdirs] file : Directory Creation Fail"); + } + } + + OutputStream os = null; + long size = 0L; + + try { + os = new FileOutputStream(file); + + int bytesRead = 0; + byte[] buffer = new byte[BUFFER_SIZE]; + + while ((bytesRead = is.read(buffer, 0, BUFFER_SIZE)) != -1) { + size += bytesRead; + os.write(buffer, 0, bytesRead); + } + } finally { + EgovResourceCloseHelper.close(os); + } + + return size; + } + + /** + * 파일을 Upload 처리한다. + * + * @param request + * @param where + * @param maxFileSize + * @return + * @throws Exception + */ + public static List uploadFiles(HttpServletRequest request, String where, long maxFileSize) throws Exception { + List list = new ArrayList(); + + // Check that we have a file upload request + boolean isMultipart = ServletFileUpload.isMultipartContent(request); + + if (isMultipart) { + // Create a new file upload handler + ServletFileUpload upload = new ServletFileUpload(); + upload.setFileSizeMax(maxFileSize); // SizeLimitExceededException + + // Parse the request + FileItemIterator iter = upload.getItemIterator(request); + while (iter.hasNext()) { + FileItemStream item = iter.next(); + String name = item.getFieldName(); + InputStream stream = item.openStream(); + if (item.isFormField()) { + LOGGER.info("Form field '{}' with value '{}' detected.", name, Streams.asString(stream)); + } else { + LOGGER.info("File field '{}' with file name '{}' detected.", name, item.getName()); + + if ("".equals(item.getName())) { + continue; + } + + // Process the input stream + EgovFormBasedFileVo vo = new EgovFormBasedFileVo(); + + String tmp = item.getName(); + + if (tmp.lastIndexOf("\\") >= 0) { + tmp = tmp.substring(tmp.lastIndexOf("\\") + 1); + } + + vo.setFileName(tmp); + vo.setContentType(item.getContentType()); + vo.setServerSubPath(getTodayString()); + vo.setPhysicalName(getPhysicalFileName()); + + if (tmp.lastIndexOf(".") >= 0) { + vo.setPhysicalName(vo.getPhysicalName() + tmp.substring(tmp.lastIndexOf("."))); + } + + long size = saveFile(stream, new File(EgovWebUtil.filePathBlackList(where) + SEPERATOR + vo.getServerSubPath() + SEPERATOR + vo.getPhysicalName())); + + vo.setSize(size); + + list.add(vo); + } + } + } else { + throw new IOException("form's 'enctype' attribute have to be 'multipart/form-data'"); + } + + return list; + } + + /** + * 파일을 Download 처리한다. + * + * @param response + * @param where + * @param serverSubPath + * @param physicalName + * @param original + * @throws Exception + */ + public static void downloadFile(HttpServletResponse response, String where, String serverSubPath, String physicalName, String original) throws Exception { + String downFileName = where + SEPERATOR + serverSubPath + SEPERATOR + physicalName; + + File file = new File(EgovWebUtil.filePathBlackList(downFileName)); + + if (!file.exists()) { + throw new FileNotFoundException(downFileName); + } + + if (!file.isFile()) { + throw new FileNotFoundException(downFileName); + } + + byte[] b = new byte[BUFFER_SIZE]; + + original = original.replaceAll("\r", "").replaceAll("\n", ""); + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + convert(original) + "\";"); + 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 { + EgovResourceCloseHelper.close(outs, fin); + } + } + + /** + * 이미지에 대한 미리보기 기능을 제공한다. + * + * mimeType의 경우는 JSP 상에서 다음과 같이 얻을 수 있다. + * getServletConfig().getServletContext().getMimeType(name); + * + * @param response + * @param where + * @param serverSubPath + * @param physicalName + * @param mimeType + * @throws Exception + */ + public static void viewFile(HttpServletResponse response, String where, String serverSubPath, String physicalName, String mimeTypeParam) throws Exception { + String mimeType = mimeTypeParam; + String downFileName = where + SEPERATOR + serverSubPath + SEPERATOR + physicalName; + + File file = new File(EgovWebUtil.filePathBlackList(downFileName)); + + if (!file.exists()) { + throw new FileNotFoundException(downFileName); + } + + if (!file.isFile()) { + throw new FileNotFoundException(downFileName); + } + + byte[] b = new byte[BUFFER_SIZE]; + + if (mimeType == null) { + mimeType = "application/octet-stream;"; + } + + response.setContentType(EgovWebUtil.removeCRLF(mimeType)); + response.setHeader("Content-Disposition", "filename=image;"); + + 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 { + EgovResourceCloseHelper.close(outs, fin); + } + } +} diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedFileVo.java b/src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedFileVo.java new file mode 100644 index 00000000..48512db3 --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedFileVo.java @@ -0,0 +1,104 @@ +package egovframework.com.utl.fcc.service; + +import java.io.Serializable; + +/** + * @Class Name : EgovFormBasedFileVo.java + * @Description : Form-based File Upload VO + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.08.26 한성곤 최초 생성 + * + * @author 공통컴포넌트 개발팀 한성곤 + * @since 2009.08.26 + * @version 1.0 + * @see + * + * Copyright (C) 2008 by MOPAS All right reserved. + */ +@SuppressWarnings("serial") +public class EgovFormBasedFileVo implements Serializable { + /** 파일명 */ + private String fileName = ""; + /** ContextType */ + private String contentType = ""; + /** 하위 디렉토리 지정 */ + private String serverSubPath = ""; + /** 물리적 파일명 */ + private String physicalName = ""; + /** 파일 사이즈 */ + private long size = 0L; + + /** + * fileName attribute를 리턴한다. + * @return the fileName + */ + public String getFileName() { + return fileName; + } + /** + * fileName attribute 값을 설정한다. + * @param fileName the fileName to set + */ + public void setFileName(String fileName) { + this.fileName = fileName; + } + /** + * contentType attribute를 리턴한다. + * @return the contentType + */ + public String getContentType() { + return contentType; + } + /** + * contentType attribute 값을 설정한다. + * @param contentType the contentType to set + */ + public void setContentType(String contentType) { + this.contentType = contentType; + } + /** + * serverSubPath attribute를 리턴한다. + * @return the serverSubPath + */ + public String getServerSubPath() { + return serverSubPath; + } + /** + * serverSubPath attribute 값을 설정한다. + * @param serverSubPath the serverSubPath to set + */ + public void setServerSubPath(String serverSubPath) { + this.serverSubPath = serverSubPath; + } + /** + * physicalName attribute를 리턴한다. + * @return the physicalName + */ + public String getPhysicalName() { + return physicalName; + } + /** + * physicalName attribute 값을 설정한다. + * @param physicalName the physicalName to set + */ + public void setPhysicalName(String physicalName) { + this.physicalName = physicalName; + } + /** + * size attribute를 리턴한다. + * @return the size + */ + public long getSize() { + return size; + } + /** + * size attribute 값을 설정한다. + * @param size the size to set + */ + public void setSize(long size) { + this.size = size; + } +} diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedUUID.java b/src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedUUID.java new file mode 100644 index 00000000..6df377b5 --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovFormBasedUUID.java @@ -0,0 +1,521 @@ +package egovframework.com.utl.fcc.service; + +import java.io.Serializable; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; + +/** + * + * A class that represents an immutable universally unique identifier (UUID). A + * UUID represents a 128-bit value. + * + *

    + * There exist different variants of these global identifiers. The methods of + * this class are for manipulating the Leach-Salz variant, although the + * constructors allow the creation of any variant of UUID (described below). + * + *

    + * The layout of a variant 2 (Leach-Salz) UUID is as follows: + * + * The most significant long consists of the following unsigned fields: + * + *

    + *   0xFFFFFFFF00000000 time_low
    + *   0x00000000FFFF0000 time_mid
    + *   0x000000000000F000 version
    + *   0x0000000000000FFF time_hi
    + * 
    + * + * The least significant long consists of the following unsigned fields: + * + *
    + *   0xC000000000000000 variant
    + *   0x3FFF000000000000 clock_seq
    + *   0x0000FFFFFFFFFFFF node
    + * 
    + * + *

    + * The variant field contains a value which identifies the layout of the + * UUID. The bit layout described above is valid only for a + * UUID with a variant value of 2, which indicates the Leach-Salz + * variant. + * + *

    + * The version field holds a value that describes the type of this UUID. + * There are four different basic types of UUIDs: time-based, DCE security, + * name-based, and randomly generated UUIDs. These types have a version value of + * 1, 2, 3 and 4, respectively. + * + *

    + * For more information including algorithms used to create UUIDs, + * see the Internet-Draft UUIDs + * and GUIDs or the standards body definition at ISO/IEC 11578:1996. + * + * @version 1.14, 07/12/04 + * @since 1.5 + */ +@SuppressWarnings("serial") +public class EgovFormBasedUUID implements Serializable { + /* + * The most significant 64 bits of this UUID. + * + * @serial + */ + private final long mostSigBits; + + /* + * The least significant 64 bits of this UUID. + * + * @serial + */ + private final long leastSigBits; + + /* + * The version number associated with this UUID. Computed on demand. + */ + private transient int version = -1; + + /* + * The variant number associated with this UUID. Computed on demand. + */ + private transient int variant = -1; + + /* + * The timestamp associated with this UUID. Computed on demand. + */ + private transient volatile long timestamp = -1; + + /* + * The clock sequence associated with this UUID. Computed on demand. + */ + private transient int sequence = -1; + + /* + * The node number associated with this UUID. Computed on demand. + */ + private transient long node = -1; + + /* + * The hashcode of this UUID. Computed on demand. + */ + private transient int hashCode = -1; + + /* + * The random number generator used by this class to create random based + * UUIDs. + */ + private static volatile SecureRandom numberGenerator = null; + + // Constructors and Factories + + /* + * Private constructor which uses a byte array to construct the new UUID. + */ + private EgovFormBasedUUID(byte[] data) { + long msb = 0; + long lsb = 0; + for (int i = 0; i < 8; i++) + msb = (msb << 8) | (data[i] & 0xff); + for (int i = 8; i < 16; i++) + lsb = (lsb << 8) | (data[i] & 0xff); + this.mostSigBits = msb; + this.leastSigBits = lsb; + } + + /** + * Constructs a new UUID using the specified data. + * mostSigBits is used for the most significant 64 bits of the + * UUID and leastSigBits becomes the least significant + * 64 bits of the UUID. + * + * @param mostSigBits + * @param leastSigBits + */ + public EgovFormBasedUUID(long mostSigBits, long leastSigBits) { + this.mostSigBits = mostSigBits; + this.leastSigBits = leastSigBits; + } + + /** + * Static factory to retrieve a type 4 (pseudo randomly generated) UUID. + * + * The UUID is generated using a cryptographically strong + * pseudo random number generator. + * + * @return a randomly generated UUID. + */ + public static EgovFormBasedUUID randomUUID() { + SecureRandom ng = numberGenerator; + if (ng == null) { + numberGenerator = ng = new SecureRandom(); + } + + byte[] randomBytes = new byte[16]; + ng.nextBytes(randomBytes); + randomBytes[6] &= 0x0f; /* clear version */ + randomBytes[6] |= 0x40; /* set to version 4 */ + randomBytes[8] &= 0x3f; /* clear variant */ + randomBytes[8] |= 0x80; /* set to IETF variant */ + + return new EgovFormBasedUUID(randomBytes); + } + + /** + * Static factory to retrieve a type 3 (name based) UUID based on + * the specified byte array. + * + * @param name + * a byte array to be used to construct a UUID. + * @return a UUID generated from the specified array. + */ + public static EgovFormBasedUUID nameUUIDFromBytes(byte[] name) { + MessageDigest md; + try { + // 2011.10.10 보안점검 후속조치 암호화 알고리즘 변경(MD5 -> SHA-256) + //md = MessageDigest.getInstance("MD5"); + md = MessageDigest.getInstance("SHA-256"); + } catch (NoSuchAlgorithmException nsae) { + //throw new InternalError("MD5 not supported"); + throw new InternalError("SHA-256 not supported"); + } + // 2011.10.10 보안점검 후속조치 + if (md == null) { + throw new RuntimeException("MessageDigest is null!!"); + } + // 2014.09.20 보안점검 후속 조치 + // Random 방식의 salt 추가 + SecureRandom ng = new SecureRandom(); + byte[] randomBytes = new byte[16]; + ng.nextBytes(randomBytes); + + md.reset(); + md.update(randomBytes); + byte[] sha = md.digest(name); + + + byte[] md5Bytes = new byte[8]; + System.arraycopy(sha, 0, md5Bytes, 0, 8); + //2011.10.10 보안점검 후속조치 끝 + + md5Bytes[6] &= 0x0f; /* clear version */ + md5Bytes[6] |= 0x30; /* set to version 3 */ + md5Bytes[8] &= 0x3f; /* clear variant */ + md5Bytes[8] |= 0x80; /* set to IETF variant */ + + return new EgovFormBasedUUID(md5Bytes); + } + + /** + * Creates a UUID from the string standard representation as + * described in the {@link #toString} method. + * + * @param name + * a string that specifies a UUID. + * @return a UUID with the specified value. + * @throws IllegalArgumentException + * if name does not conform to the string representation as + * described in {@link #toString}. + */ + public static EgovFormBasedUUID fromString(String name) { + String[] components = name.split("-"); + if (components.length != 5) + throw new IllegalArgumentException("Invalid UUID string: " + name); + for (int i = 0; i < 5; i++) + components[i] = "0x" + components[i]; + + long mostSigBits = Long.decode(components[0]).longValue(); + mostSigBits <<= 16; + mostSigBits |= Long.decode(components[1]).longValue(); + mostSigBits <<= 16; + mostSigBits |= Long.decode(components[2]).longValue(); + + long leastSigBits = Long.decode(components[3]).longValue(); + leastSigBits <<= 48; + leastSigBits |= Long.decode(components[4]).longValue(); + + return new EgovFormBasedUUID(mostSigBits, leastSigBits); + } + + // Field Accessor Methods + + /** + * Returns the least significant 64 bits of this UUID's 128 bit value. + * + * @return the least significant 64 bits of this UUID's 128 bit value. + */ + public long getLeastSignificantBits() { + return leastSigBits; + } + + /** + * Returns the most significant 64 bits of this UUID's 128 bit value. + * + * @return the most significant 64 bits of this UUID's 128 bit value. + */ + public long getMostSignificantBits() { + return mostSigBits; + } + + /** + * The version number associated with this UUID. The version + * number describes how this UUID was generated. + * + * The version number has the following meaning: + *

    + *

      + *
    • 1 Time-based UUID + *
    • 2 DCE security UUID + *
    • 3 Name-based UUID + *
    • 4 Randomly generated UUID + *
    + * + * @return the version number of this UUID. + */ + public int version() { + if (version < 0) { + // Version is bits masked by 0x000000000000F000 in MS long + version = (int) ((mostSigBits >> 12) & 0x0f); + } + return version; + } + + /** + * The variant number associated with this UUID. The variant + * number describes the layout of the UUID. + * + * The variant number has the following meaning: + *

    + *

      + *
    • 0 Reserved for NCS backward compatibility + *
    • 2 The Leach-Salz variant (used by this class) + *
    • 6 Reserved, Microsoft Corporation backward compatibility + *
    • 7 Reserved for future definition + *
    + * + * @return the variant number of this UUID. + */ + public int variant() { + if (variant < 0) { + // This field is composed of a varying number of bits + if ((leastSigBits >>> 63) == 0) { + variant = 0; + } else if ((leastSigBits >>> 62) == 2) { + variant = 2; + } else { + variant = (int) (leastSigBits >>> 61); + } + } + return variant; + } + + /** + * The timestamp value associated with this UUID. + * + *

    + * The 60 bit timestamp value is constructed from the time_low, time_mid, + * and time_hi fields of this UUID. The resulting timestamp is + * measured in 100-nanosecond units since midnight, October 15, 1582 UTC. + *

    + * + * The timestamp value is only meaningful in a time-based UUID, which has + * version type 1. If this UUID is not a time-based UUID then + * this method throws UnsupportedOperationException. + * + * @throws UnsupportedOperationException + * if this UUID is not a version 1 UUID. + */ + public long timestamp() { + if (version() != 1) { + throw new UnsupportedOperationException("Not a time-based UUID"); + } + long result = timestamp; + if (result < 0) { + result = (mostSigBits & 0x0000000000000FFFL) << 48; + result |= ((mostSigBits >> 16) & 0xFFFFL) << 32; + result |= mostSigBits >>> 32; + timestamp = result; + } + return result; + } + + /** + * The clock sequence value associated with this UUID. + * + *

    + * The 14 bit clock sequence value is constructed from the clock sequence + * field of this UUID. The clock sequence field is used to guarantee + * temporal uniqueness in a time-based UUID. + *

    + * + * The clockSequence value is only meaningful in a time-based UUID, which + * has version type 1. If this UUID is not a time-based UUID then this + * method throws UnsupportedOperationException. + * + * @return the clock sequence of this UUID. + * @throws UnsupportedOperationException + * if this UUID is not a version 1 UUID. + */ + public int clockSequence() { + if (version() != 1) { + throw new UnsupportedOperationException("Not a time-based UUID"); + } + if (sequence < 0) { + sequence = (int) ((leastSigBits & 0x3FFF000000000000L) >>> 48); + } + return sequence; + } + + /** + * The node value associated with this UUID. + * + *

    + * The 48 bit node value is constructed from the node field of this UUID. + * This field is intended to hold the IEEE 802 address of the machine that + * generated this UUID to guarantee spatial uniqueness. + *

    + * + * The node value is only meaningful in a time-based UUID, which has version + * type 1. If this UUID is not a time-based UUID then this method throws + * UnsupportedOperationException. + * + * @return the node value of this UUID. + * @throws UnsupportedOperationException + * if this UUID is not a version 1 UUID. + */ + public long node() { + if (version() != 1) { + throw new UnsupportedOperationException("Not a time-based UUID"); + } + if (node < 0) { + node = leastSigBits & 0x0000FFFFFFFFFFFFL; + } + return node; + } + + // Object Inherited Methods + + /** + * Returns a String object representing this + * UUID. + * + *

    + * The UUID string representation is as described by this BNF : + * + *

    +     *    UUID                   = <time_low> "-" <time_mid> "-"
    +     *                             <time_high_and_version> "-"
    +     *                             <variant_and_sequence> "-"
    +     *                             <node>
    +     *    time_low               = 4*<hexOctet>
    +     *    time_mid               = 2*<hexOctet>
    +     *    time_high_and_version  = 2*<hexOctet>
    +     *    variant_and_sequence   = 2*<hexOctet>
    +     *    node                   = 6*<hexOctet>
    +     *    hexOctet               = <hexDigit><hexDigit>
    +     *    hexDigit               =
    +     *          "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
    +     *          | "a" | "b" | "c" | "d" | "e" | "f"
    +     *          | "A" | "B" | "C" | "D" | "E" | "F"
    +     * 
    + * + * @return a string representation of this UUID. + */ + @Override + public String toString() { + return (digits(mostSigBits >> 32, 8) + "-" + + digits(mostSigBits >> 16, 4) + "-" + digits(mostSigBits, 4) + + "-" + digits(leastSigBits >> 48, 4) + "-" + digits( + leastSigBits, 12)); + } + + /** Returns val represented by the specified number of hex digits. */ + private static String digits(long val, int digits) { + long hi = 1L << (digits * 4); + return Long.toHexString(hi | (val & (hi - 1))).substring(1); + } + + /** + * Returns a hash code for this UUID. + * + * @return a hash code value for this UUID. + */ + @Override + public int hashCode() { + if (hashCode == -1) { + hashCode = (int) ((mostSigBits >> 32) ^ mostSigBits + ^ (leastSigBits >> 32) ^ leastSigBits); + } + return hashCode; + } + + /** + * Compares this object to the specified object. The result is true + * if and only if the argument is not null, is a UUID + * object, has the same variant, and contains the same value, bit for bit, + * as this UUID. + * + * @param obj + * the object to compare with. + * @return true if the objects are the same; + * false otherwise. + */ + @Override + public boolean equals(Object obj) { + // 보안 취약점 점검 지적사항 반영 시작 + if (obj == null) + return false; + // 보안 취약점 점검 지적사항 반영 시작 끝 + if (!(obj instanceof EgovFormBasedUUID)) + return false; + if (((EgovFormBasedUUID) obj).variant() != this.variant()) + return false; + EgovFormBasedUUID id = (EgovFormBasedUUID) obj; + return (mostSigBits == id.mostSigBits && leastSigBits == id.leastSigBits); + } + + // Comparison Operations + + /** + * Compares this UUID with the specified UUID. + * + *

    + * The first of two UUIDs follows the second if the most significant field + * in which the UUIDs differ is greater for the first UUID. + * + * @param val + * UUID to which this UUID is to be + * compared. + * @return -1, 0 or 1 as this UUID is less than, equal to, or + * greater than val. + */ + public int compareTo(EgovFormBasedUUID val) { + // The ordering is intentionally set up so that the UUIDs + // can simply be numerically compared as two numbers + return (this.mostSigBits < val.mostSigBits ? -1 + : (this.mostSigBits > val.mostSigBits ? 1 + : (this.leastSigBits < val.leastSigBits ? -1 + : (this.leastSigBits > val.leastSigBits ? 1 : 0)))); + } + + /** + * Reconstitute the UUID instance from a stream (that is, + * deserialize it). This is necessary to set the transient fields to their + * correct uninitialized value so they will be recomputed on demand. + */ + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + + in.defaultReadObject(); + + // Set "cached computation" fields to their initial values + version = -1; + variant = -1; + timestamp = -1; + sequence = -1; + node = -1; + hashCode = -1; + } +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovFormatCheckUtil.java b/src/main/java/egovframework/com/utl/fcc/service/EgovFormatCheckUtil.java new file mode 100644 index 00000000..87d999ef --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovFormatCheckUtil.java @@ -0,0 +1,207 @@ +package egovframework.com.utl.fcc.service; + +/** + * + * 포맷유효성체크 에 대한 Util 클래스 + * @author 공통컴포넌트 개발팀 윤성록 + * @since 2009.06.23 + * @version 1.0 + * @see + * + *

    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.06.23  윤성록          최초 생성
    + *
    + * 
    + */ +public class EgovFormatCheckUtil { + + /** + * + * + * + * @param 전화번호 문자열( 3개 ) + * @return 유효한 전화번호 형식인지 여부 (True/False) + */ + public static boolean checkFormatTell(String tell1, String tell2, String tell3) { + + String[] check = {"02", "031", "032", "033", "041", "042", "043", "051", "052", "053", "054", "055", "061", + "062", "063", "070", "080", "0505"}; //존재하는 국번 데이터 + String temp = tell1 + tell2 + tell3; + + for(int i=0; i < temp.length(); i++){ + if (temp.charAt(i) < '0' || temp.charAt(i) > '9') + return false; + } //숫자가 아닌 값이 들어왔는지를 확인 + + for(int i = 0; i < check.length; i++){ + if(tell1.equals(check[i])) break; + if(i == check.length - 1) return false; + } //국번입력이 제대로 되었는지를 확인 + + if(tell2.charAt(0) == '0') return false; + + if(tell1.equals("02")){ + if(tell2.length() != 3 && tell2.length() !=4) return false; + if(tell3.length() != 4) return false; //서울지역(02)국번 입력때의 전화 번호 형식유효성 체크 + }else{ + if(tell2.length() != 3) return false; + if(tell3.length() != 4) return false; + } //서울을 제외한 지역(국번 입력때의 전화 번호 형식유효성 체크 + + return true; + } + + /** + *

    xxx - xxx- xxxx 형식의 전화번호 하나를 입력 받아 유요한 전화번호형식인지 검사.

    + * + * + * @param 전화번호 문자열 (1개) + * @return 유효한 전화번호 형식인지 여부 (True/False) + */ + public static boolean checkFormatTell(String tellNumber) { + + String temp1; + String temp2; + String temp3; + String tell = tellNumber; + + tell = tell.replace("-", ""); + + if(tell.length() < 9 || tell.length() > 11 || tell.charAt(0) != '0') return false; //전화번호 길이에 대한 체크 + + if(tell.charAt(1) =='2'){ //서울지역 (02)국번의 경우일때 + temp1 = tell.substring(0,2); + if(tell.length() == 9){ + temp2 = tell.substring(2,5); + temp3 = tell.substring(5,9); + }else if(tell.length() == 10){ + temp2 = tell.substring(2,6); + temp3 = tell.substring(6,10); + }else + return false; + } else if(tell.substring(0,4).equals("0505")){ //평생번호(0505)국번의 경우일때 + if(tell.length() != 11) return false; + temp1 = tell.substring(0,4); + temp2 = tell.substring(4,7); + temp3 = tell.substring(7,11); + } else { // 서울지역 및 "0505" 를 제외한 일반적인 경우일때 + if(tell.length() != 10) return false; + temp1 = tell.substring(0,3); + temp2 = tell.substring(3,6); + temp3 = tell.substring(6,10); + } + + return checkFormatTell(temp1, temp2, temp3); + } + + /** + *

    xxx - xxx- xxxx 형식의 휴대폰번호 앞, 중간, 뒤 문자열 3개 입력 받아 유요한 휴대폰번호형식인지 검사.

    + * + * + * @param 휴대폰번호 문자열,(3개) + * @return 유효한 휴대폰번호 형식인지 여부 (True/False) + */ + public static boolean checkFormatCell(String cell1, String cell2, String cell3) { + String[] check = {"010", "011", "016", "017", "018", "019"}; //유효한 휴대폰 첫자리 번호 데이터 + String temp = cell1 + cell2 + cell3; + + for(int i=0; i < temp.length(); i++){ + if (temp.charAt(i) < '0' || temp.charAt(i) > '9') + return false; + } //숫자가 아닌 값이 들어왔는지를 확인 + + for(int i = 0; i < check.length; i++){ + if(cell1.equals(check[i])) break; + if(i == check.length - 1) return false; + } // 휴대폰 첫자리 번호입력의 유효성 체크 + + if(cell2.charAt(0) == '0') return false; + + if(cell2.length() != 3 && cell2.length() !=4) return false; + if(cell3.length() != 4) return false; + + return true; + } + + /** + *

    XXXXXXXXXX 형식의 휴대폰번호 문자열 3개 입력 받아 유요한 휴대폰번호형식인지 검사.

    + * + * + * @param 휴대폰번호 문자열(1개) + * @return 유효한 휴대폰번호 형식인지 여부 (True/False) + */ + public static boolean checkFormatCell(String cellNumber) { + + String temp1; + String temp2; + String temp3; + + String cell = cellNumber; + cell = cell.replace("-", ""); + + if(cell.length() < 10 || cell.length() > 11 || cell.charAt(0) != '0') return false; + + if(cell.length() == 10){ //전체 10자리 휴대폰 번호일 경우 + temp1 = cell.substring(0,3); + temp2 = cell.substring(3,6); + temp3 = cell.substring(6,10); + }else{ //전체 11자리 휴대폰 번호일 경우 + temp1 = cell.substring(0,3); + temp2 = cell.substring(3,7); + temp3 = cell.substring(7,11); + } + + return checkFormatCell(temp1, temp2, temp3); + } + + /** + *

    이메일의 앞, 뒤 문자열 2개 입력 받아 유요한 이메일형식인지 검사.

    + * + * + * @param 이메일 문자열 (2개) + * @return 유효한 이메일 형식인지 여부 (True/False) + */ + public static boolean checkFormatMail(String mail1, String mail2) { + + int count = 0; + + for(int i = 0; i < mail1.length(); i++){ + if(mail1.charAt(i) <= 'z' && mail1.charAt(i) >= 'a') continue; + else if(mail1.charAt(i) <= 'Z' && mail1.charAt(i) >= 'A') continue; + else if(mail1.charAt(i) <= '9' && mail1.charAt(i) >= '0') continue; + else if(mail1.charAt(i) == '-' && mail1.charAt(i) == '_') continue; + else return false; + } // 유효한 문자, 숫자인지 체크 + + for(int i = 0; i < mail2.length(); i++){ + if(mail2.charAt(i) <= 'z' && mail2.charAt(i) >= 'a') continue; + else if(mail2.charAt(i) == '.'){ count++; continue;} + else return false; + } // 메일 주소의 형식 체크(xxx.xxx 형태) + + if(count == 1) return true; + else return false; + + } + + /** + *

    이메일의 전체문자열 1개 입력 받아 유요한 이메일형식인지 검사.

    + * + * + * @param 이메일 문자열 (1개) + * @return 유효한 이메일 형식인지 여부 (True/False) + */ + public static boolean checkFormatMail(String mail) { + + String[] temp = mail.split("@"); // '@' 를 기점으로 앞, 뒤 문자열 구분 + + if(temp.length == 2) return checkFormatMail(temp[0], temp[1]); + else return false; + } + +} + diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovNumberCheckUtil.java b/src/main/java/egovframework/com/utl/fcc/service/EgovNumberCheckUtil.java new file mode 100644 index 00000000..485f3c0e --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovNumberCheckUtil.java @@ -0,0 +1,246 @@ +package egovframework.com.utl.fcc.service; + +/** + * + * 번호유효성체크 에 대한 Util 클래스 + * @author 공통컴포넌트 개발팀 윤성록 + * @since 2009.06.10 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.06.10  윤성록          최초 생성
    + *   2012.02.27  이기하          법인번호 체크로직 수정
    + *
    + * 
    + */ +public class EgovNumberCheckUtil { + + /** + *

    XXXXXX - XXXXXXX 형식의 주민번호 앞, 뒤 문자열 2개 입력 받아 유효한 주민번호인지 검사.

    + * + * + * @param 6자리 주민앞번호 문자열 , 7자리 주민뒷번호 문자열 + * @return 유효한 주민번호인지 여부 (True/False) + */ + @SuppressWarnings("static-access") + public static boolean checkJuminNumber(String jumin1, String jumin2) { + + EgovDateUtil egovDateUtil = new EgovDateUtil(); + String juminNumber = jumin1 + jumin2; + String IDAdd = "234567892345"; // 주민등록번호에 가산할 값 + + int count_num = 0; + int add_num = 0; + int total_id = 0; //검증을 위한 변수선언 + + if (juminNumber.length() != 13) return false; // 주민등록번호 자리수가 맞는가를 확인 + + for (int i = 0; i <12 ; i++){ + if(juminNumber.charAt(i)< '0' || juminNumber.charAt(i) > '9') return false; //숫자가 아닌 값이 들어왔는지를 확인 + count_num = Character.getNumericValue(juminNumber.charAt(i)); + add_num = Character.getNumericValue(IDAdd.charAt(i)); + total_id += count_num * add_num; //유효자리 검증식을 적용 + } + + if(Character.getNumericValue(juminNumber.charAt(0)) == 0 || Character.getNumericValue(juminNumber.charAt(0)) == 1){ + if(Character.getNumericValue(juminNumber.charAt(6)) > 4) return false; + String temp = "20" + juminNumber.substring(0,6); + if(!egovDateUtil.checkDate(temp)) return false; + }else{ + if(Character.getNumericValue(juminNumber.charAt(6)) > 2) return false; + String temp = "19" + juminNumber.substring(0,6); + if(!egovDateUtil.checkDate(temp)) return false; + } //주민번호 앞자리 날짜유효성체크 & 성별구분 숫자 체크 + + if(Character.getNumericValue(juminNumber.charAt(12)) == (11 - (total_id % 11)) % 10) //마지막 유효숫자와 검증식을 통한 값의 비교 + return true; + else + return false; + } + + /** + *

    XXXXXXXXXXXXX 형식의 13자리 주민번호 1개를 입력 받아 유효한 주민번호인지 검사.

    + * + * + * @param 13자리 주민번호 문자열 + * @return 유효한 주민번호인지 여부 (True/False) + */ + public static boolean checkJuminNumber(String jumin) { + + if(jumin.length() != 13) return false; + + return checkJuminNumber(jumin.substring(0,6), jumin.substring(6,13)); //주민번호 + } + + /** + *

    XXXXXX - XXXXXXX 형식의 법인번호 앞, 뒤 문자열 2개 입력 받아 유효한 법인번호인지 검사.

    + * + * + * @param 6자리 법인앞번호 문자열 , 7자리 법인뒷번호 문자열 + * @return 유효한 법인번호인지 여부 (True/False) + */ + public static boolean checkBubinNumber(String bubin1, String bubin2) { + + String bubinNumber = bubin1 + bubin2; + + int hap = 0; + int temp = 1; //유효검증식에 사용하기 위한 변수 + + if(bubinNumber.length() != 13) return false; //법인번호의 자리수가 맞는 지를 확인 + + for(int i=0; i < 13; i++){ + if (bubinNumber.charAt(i) < '0' || bubinNumber.charAt(i) > '9') //숫자가 아닌 값이 들어왔는지를 확인 + return false; + } + + + // 2012.02.27 법인번호 체크로직 수정( i<13 -> i<12 ) + // 맨끝 자리 수는 전산시스템으로 오류를 검증하기 위해 부여되는 검증번호임 + for ( int i=0; i<12; i++){ + if(temp ==3) temp = 1; + hap = hap + (Character.getNumericValue(bubinNumber.charAt(i)) * temp); + temp++; + } //검증을 위한 식의 계산 + + if ((10 - (hap%10))%10 == Character.getNumericValue(bubinNumber.charAt(12))) //마지막 유효숫자와 검증식을 통한 값의 비교 + return true; + else + return false; + } + + /** + *

    XXXXXXXXXXXXX 형식의 13자리 법인번호 1개를 입력 받아 유효한 법인번호인지 검사.

    + * + * + * @param 13자리 법인번호 문자열 + * @return 유효한 법인번호인지 여부 (True/False) + */ + public static boolean checkBubinNumber(String bubin) { + + if(bubin.length() != 13) return false; + + return checkBubinNumber(bubin.substring(0,6), bubin.substring(6,13)); + } + + + /** + *

    xxx - xx - xxxx 형식의 사업자번호 앞,중간, 뒤 문자열 3개 입력 받아 유효한 사업자번호인지 검사.

    + * + * + * @param 3자리 사업자앞번호 문자열 , 2자리 사업자중간번호 문자열, 5자리 사업자뒷번호 문자열 + * @return 유효한 사업자번호인지 여부 (True/False) + */ + public static boolean checkCompNumber(String comp1, String comp2, String comp3) { + + String compNumber = comp1 + comp2 + comp3; + + int hap = 0; + int temp = 0; + int check[] = {1,3,7,1,3,7,1,3,5}; //사업자번호 유효성 체크 필요한 수 + + if(compNumber.length() != 10) //사업자번호의 길이가 맞는지를 확인한다. + return false; + + for(int i=0; i < 9; i++){ + if(compNumber.charAt(i) < '0' || compNumber.charAt(i) > '9') //숫자가 아닌 값이 들어왔는지를 확인한다. + return false; + + hap = hap + (Character.getNumericValue(compNumber.charAt(i)) * check[temp]); //검증식 적용 + temp++; + } + + hap += (Character.getNumericValue(compNumber.charAt(8))*5)/10; + + if ((10 - (hap%10))%10 == Character.getNumericValue(compNumber.charAt(9))) //마지막 유효숫자와 검증식을 통한 값의 비교 + return true; + else + return false; + } + + /** + *

    XXXXXXXXXX 형식의 10자리 사업자번호 3개를 입력 받아 유효한 사업자번호인지 검사.

    + * + * + * @param 10자리 사업자번호 문자열 + * @return 유효한 사업자번호인지 여부 (True/False) + */ + public static boolean checkCompNumber(String comp) { + + if(comp.length() != 10) return false; + return checkCompNumber(comp.substring(0,3), comp.substring(3,5), comp.substring(5,10)); + } + + /** + *

    XXXXXX - XXXXXXX 형식의 외국인등록번호 앞, 뒤 문자열 2개 입력 받아 유효한 외국인등록번호인지 검사.

    + * + * + * @param 6자리 외국인등록앞번호 문자열 , 7자리 외국인등록뒷번호 문자열 + * @return 유효한 외국인등록번호인지 여부 (True/False) + */ + @SuppressWarnings("static-access") + public static boolean checkforeignNumber( String foreign1, String foreign2 ) { + + EgovDateUtil egovDateUtil = new EgovDateUtil(); + String foreignNumber = foreign1 + foreign2; + int check = 0; + + if( foreignNumber.length() != 13 ) //외국인등록번호의 길이가 맞는지 확인한다. + return false; + + for(int i=0; i < 13; i++){ + if (foreignNumber.charAt(i) < '0' || foreignNumber.charAt(i) > '9') //숫자가 아닌 값이 들어왔는지를 확인한다. + return false; + } + + if(Character.getNumericValue(foreignNumber.charAt(0)) == 0 || Character.getNumericValue(foreignNumber.charAt(0)) == 1){ + if(Character.getNumericValue(foreignNumber.charAt(6)) == 5 && Character.getNumericValue(foreignNumber.charAt(6)) == 6) return false; + String temp = "20" + foreignNumber.substring(0,6); + if(!egovDateUtil.checkDate(temp)) return false; + }else{ + if(Character.getNumericValue(foreignNumber.charAt(6)) == 5 && Character.getNumericValue(foreignNumber.charAt(6)) == 6) return false; + String temp = "19" + foreignNumber.substring(0,6); + if(!egovDateUtil.checkDate(temp)) return false; + } //외국인등록번호 앞자리 날짜유효성체크 & 성별구분 숫자 체크 + + for( int i = 0 ; i < 12 ; i++ ) { + check += ( ( 9 - i % 8 ) * Character.getNumericValue( foreignNumber.charAt( i ) ) ); + } + + if ( check % 11 == 0 ){ + check = 1; + }else if ( check % 11==10 ){ + check = 0; + }else + check = check % 11; + + if ( check + 2 > 9 ){ + check = check + 2- 10; + }else check = check+2; //검증식을 통합 값의 도출 + + if( check == Character.getNumericValue( foreignNumber.charAt( 12 ) ) ) //마지막 유효숫자와 검증식을 통한 값의 비교 + return true; + else + return false; + } + + + /** + *

    XXXXXXXXXXXXX 형식의 13자리 외국인등록번호 1개를 입력 받아 유효한 외국인등록번호인지 검사.

    + * + * + * @param 13자리 외국인등록번호 문자열 + * @return 유효한 외국인등록번호인지 여부 (True/False) + */ + public static boolean checkforeignNumber( String foreign ) { + + if(foreign.length() != 13) return false; + return checkforeignNumber(foreign.substring(0,6), foreign.substring(6,13)); + } +} + + diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovNumberFormat.java b/src/main/java/egovframework/com/utl/fcc/service/EgovNumberFormat.java new file mode 100644 index 00000000..701eda4e --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovNumberFormat.java @@ -0,0 +1,258 @@ +package egovframework.com.utl.fcc.service; + +import java.text.NumberFormat; +import java.util.Locale; + +/** + * 숫자, 통화, 퍼센트에 대한 형식 변환을 수행하는 클래스 + */ +public class EgovNumberFormat { + + private static final int MAX_FRACTION_DIGIT = 3; + private static final boolean GROUPING_USED = true; + + /** + * 기본 Locale에 해당하는 형식으로 숫자를 변환한다. + * + * @param number 숫자 + * @return 숫자 문자열 + */ + public static String formatNumber(Number number) { + return formatNumber(number, GROUPING_USED, MAX_FRACTION_DIGIT); + } + + /** + * Locale에 해당하는 형식으로 숫자를 변환한다. + * + * @param locale 로케일 + * @param number 숫자 + * @return 숫자 문자열 + */ + public static String formatNumber(Locale locale, Number number) { + return formatNumber(locale, number, GROUPING_USED, MAX_FRACTION_DIGIT); + } + + /** + * 기본 Locale에 해당하는 형식으로 숫자를 변환한다. + * + * @param number 숫자 + * @param groupingUsed 그룹 분리기호 포함 여부 + * @return 숫자 문자열 + */ + public static String formatNumber(Number number, boolean groupingUsed) { + return formatNumber(number, groupingUsed, MAX_FRACTION_DIGIT); + } + + /** + * Locale에 해당하는 형식으로 숫자를 변환한다. + * + * @param locale 로케일 + * @param number 숫자 + * @param groupingUsed 그룹 분리기호 포함 여부 + * @return 숫자 문자열 + */ + public static String formatNumber(Locale locale, Number number, boolean groupingUsed) { + return formatNumber(locale, number, groupingUsed, MAX_FRACTION_DIGIT); + } + + /** + * 기본 Locale에 해당하는 형식으로 숫자를 변환한다. + * + * @param number 숫자 + * @param maxFactionDigits 변환된 문자열에서 출력할 소수점 이하 최대 자리수 + * @return 숫자 문자열 + */ + public static String formatNumber(Number number, int maxFactionDigits) { + return formatNumber(number, GROUPING_USED, maxFactionDigits); + } + + /** + * Locale에 해당하는 형식으로 숫자를 변환한다. + * + * @param locale 로케일 + * @param number 숫자 + * @param maxFactionDigits 변환된 문자열에서 출력할 소수점 이하 최대 자리수 + * @return 숫자 문자열 + */ + public static String formatNumber(Locale locale, Number number, int maxFactionDigits) { + return formatNumber(locale, number, GROUPING_USED, maxFactionDigits); + } + + /** + * 기본 Locale에 해당하는 형식으로 숫자를 변환한다. + * + * @param number 숫자 + * @param groupingUsed 그룹 분리기호 포함 여부 + * @param maxFactionDigits 변환된 문자열에서 출력할 소수점 이하 최대 자리수 + * @return 숫자 문자열 + */ + public static String formatNumber(Number number, boolean groupingUsed, int maxFactionDigits) { + NumberFormat numberberFormat = NumberFormat.getNumberInstance(); + numberberFormat.setGroupingUsed(groupingUsed); + numberberFormat.setMaximumFractionDigits(maxFactionDigits); + return numberberFormat.format(number); + } + + /** + * Locale에 해당하는 형식으로 숫자를 변환한다. + * + * @param locale 로케일 + * @param number 숫자 + * @param groupingUsed 그룹 분리기호 포함 여부 + * @param maxFactionDigits 변환된 문자열에서 출력할 소수점 이하 최대 자리수 + * @return 숫자 문자열 + */ + public static String formatNumber(Locale locale, Number number, boolean groupingUsed, int maxFactionDigits) { + NumberFormat numberberFormat = NumberFormat.getNumberInstance(locale); + numberberFormat.setGroupingUsed(groupingUsed); + numberberFormat.setMaximumFractionDigits(maxFactionDigits); + return numberberFormat.format(number); + } + + /** + * 기본 Locale에 해당하는 형식으로 통화를 변환한다. + * + * @param number 숫자 + * @return 통화 문자열 + */ + public static String formatCurrency(Number number) { + return formatCurrency(number, GROUPING_USED); + } + + /** + * Locale에 해당하는 형식으로 통화를 변환한다. + * + * @param locale 로케일 + * @param number 숫자 + * @return 통화 문자열 + */ + public static String formatCurrency(Locale locale, Number number) { + return formatCurrency(locale, number, GROUPING_USED); + } + + /** + * 기본 Locale에 해당하는 형식으로 통화를 변환한다. + * + * @param number 숫자 + * @param groupingUsed 그룹 분리기호 포함 여부 + * @return 통화 문자열 + */ + public static String formatCurrency(Number number, boolean groupingUsed) { + NumberFormat numberberFormat = NumberFormat.getCurrencyInstance(); + numberberFormat.setGroupingUsed(groupingUsed); + return numberberFormat.format(number); + } + + /** + * Locale에 해당하는 형식으로 통화를 변환한다. + * + * @param locale 로케일 + * @param number 숫자 + * @param groupingUsed 그룹 분리기호 포함 여부 + * @return 통화 문자열 + */ + public static String formatCurrency(Locale locale, Number number, boolean groupingUsed) { + NumberFormat numberberFormat = NumberFormat.getCurrencyInstance(locale); + numberberFormat.setGroupingUsed(groupingUsed); + return numberberFormat.format(number); + } + + /** + * 기본 Locale에 해당하는 형식으로 퍼센트를 변환한다. + * + * @param number 숫자 + * @return 퍼센트 문자열 + */ + public static String formatPercent(Number number) { + return formatPercent(number, GROUPING_USED, MAX_FRACTION_DIGIT); + } + + /** + * Locale에 해당하는 형식으로 퍼센트를 변환한다. + * + * @param locale 로케일 + * @param number 숫자 + * @return 퍼센트 문자열 + */ + public static String formatPercent(Locale locale, Number number) { + return formatPercent(locale, number, GROUPING_USED, MAX_FRACTION_DIGIT); + } + + /** + * 기본 Locale에 해당하는 형식으로 퍼센트를 변환한다. + * + * @param number 숫자 + * @param groupingUsed 그룹 분리기호 포함 여부 + * @return 퍼센트 문자열 + */ + public static String formatPercent(Number number, boolean groupingUsed) { + return formatPercent(number, groupingUsed, MAX_FRACTION_DIGIT); + } + + /** + * Locale에 해당하는 형식으로 퍼센트를 변환한다. + * + * @param locale 로케일 + * @param number 숫자 + * @param groupingUsed 그룹 분리기호 포함 여부 + * @return 퍼센트 문자열 + */ + public static String formatPercent(Locale locale, Number number, boolean groupingUsed) { + return formatPercent(locale, number, groupingUsed, MAX_FRACTION_DIGIT); + } + + /** + * 기본 Locale에 해당하는 형식으로 퍼센트를 변환한다. + * + * @param number 숫자 + * @param maxFactionDigits 변환된 문자열에서 출력할 소수점 이하 최대 자리수 + * @return 퍼센트 문자열 + */ + public static String formatPercent(Number number, int maxFactionDigits) { + return formatPercent(number, GROUPING_USED, maxFactionDigits); + } + + /** + * Locale에 해당하는 형식으로 퍼센트를 변환한다. + * + * @param locale 로케일 + * @param number 숫자 + * @param maxFactionDigits 변환된 문자열에서 출력할 소수점 이하 최대 자리수 + * @return 퍼센트 문자열 + */ + public static String formatPercent(Locale locale, Number number, int maxFactionDigits) { + return formatPercent(locale, number, GROUPING_USED, maxFactionDigits); + } + + /** + * 기본 Locale에 해당하는 형식으로 퍼센트를 변환한다. + * + * @param number 숫자 + * @param groupingUsed 그룹 분리기호 포함 여부 + * @param maxFactionDigits 변환된 문자열에서 출력할 소수점 이하 최대 자리수 + * @return 퍼센트 문자열 + */ + public static String formatPercent(Number number, boolean groupingUsed, int maxFactionDigits) { + NumberFormat numberberFormat = NumberFormat.getPercentInstance(); + numberberFormat.setGroupingUsed(groupingUsed); + numberberFormat.setMaximumFractionDigits(maxFactionDigits); + return numberberFormat.format(number); + } + + /** + * Locale에 해당하는 형식으로 퍼센트를 변환한다. + * + * @param locale 로케일 + * @param number 숫자 + * @param groupingUsed 그룹 분리기호 포함 여부 + * @param maxFactionDigits 변환된 문자열에서 출력할 소수점 이하 최대 자리수 + * @return 퍼센트 문자열 + */ + public static String formatPercent(Locale locale, Number number, boolean groupingUsed, int maxFactionDigits) { + NumberFormat numberberFormat = NumberFormat.getPercentInstance(locale); + numberberFormat.setGroupingUsed(groupingUsed); + numberberFormat.setMaximumFractionDigits(maxFactionDigits); + return numberberFormat.format(number); + } + +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovNumberUtil.java b/src/main/java/egovframework/com/utl/fcc/service/EgovNumberUtil.java new file mode 100644 index 00000000..2735e8bc --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovNumberUtil.java @@ -0,0 +1,216 @@ +/** + * @Class Name : EgovNumberUtil.java + * @Description : 숫자 데이터 처리 관련 유틸리티 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.02.13 이삼섭 최초 생성 + * + * @author 공통 서비스 개발팀 이삼섭 + * @since 2009. 02. 13 + * @version 1.0 + * @see + * + */ + +package egovframework.com.utl.fcc.service; + +import java.security.SecureRandom; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +public class EgovNumberUtil { + + /** + * 특정숫자 집합에서 랜덤 숫자를 구하는 기능 시작숫자와 종료숫자 사이에서 구한 랜덤 숫자를 반환한다 + * + * @param startNum - 시작숫자 + * @param endNum - 종료숫자 + * @return 랜덤숫자 + * @see + */ + public static int getRandomNum(int startNum, int endNum) { + int randomNum = 0; + + // 랜덤 객체 생성 + SecureRandom rnd = new SecureRandom(); + + do { + // 종료숫자내에서 랜덤 숫자를 발생시킨다. + randomNum = rnd.nextInt(endNum + 1); + } while (randomNum < startNum); // 랜덤 숫자가 시작숫자보다 작을경우 다시 랜덤숫자를 발생시킨다. + + return randomNum; + } + + /** + * 특정 숫자 집합에서 특정 숫자가 있는지 체크하는 기능 12345678에서 7이 있는지 없는지 체크하는 기능을 제공함 + * + * @param sourceInt - 특정숫자집합 + * @param searchInt - 검색숫자 + * @return 존재여부 + * @see + */ + public static Boolean getNumSearchCheck(int sourceInt, int searchInt) { + String sourceStr = String.valueOf(sourceInt); + String searchStr = String.valueOf(searchInt); + + // 특정숫자가 존재하는지 하여 위치값을 리턴한다. 없을 시 -1 + if (sourceStr.indexOf(searchStr) == -1) { + return false; + } else { + return true; + } + } + + /** + * 숫자타입을 문자열로 변환하는 기능 숫자 20081212를 문자열 '20081212'로 변환하는 기능 + * + * @param srcNumber - 숫자 + * @return 문자열 + * @see + */ + public static String getNumToStrCnvr(int srcNumber) { + String rtnStr = null; + + rtnStr = String.valueOf(srcNumber); + + return rtnStr; + } + + /** + * 숫자타입을 데이트 타입으로 변환하는 기능 + * 숫자 20081212를 데이트타입 '2008-12-12'로 변환하는 기능 + * @param srcNumber - 숫자 + * @return String + * @see + */ + public static String getNumToDateCnvr(int srcNumber) { + + String pattern = null; + String cnvrStr = null; + + String srcStr = String.valueOf(srcNumber); + + // Date 형태인 8자리 및 14자리만 정상처리 + if (srcStr.length() != 8 && srcStr.length() != 14) { + throw new IllegalArgumentException("Invalid Number: " + srcStr + " Length=" + srcStr.trim().length()); + } + + if (srcStr.length() == 8) { + pattern = "yyyyMMdd"; + } else if (srcStr.length() == 14) { + pattern = "yyyyMMddhhmmss"; + } + + SimpleDateFormat dateFormatter = new SimpleDateFormat(pattern, Locale.KOREA); + + Date cnvrDate = null; + + try { + cnvrDate = dateFormatter.parse(srcStr); + } catch (ParseException e) { + throw new RuntimeException(e); + } + + cnvrStr = String.format("%1$tY-%1$tm-%1$td", cnvrDate); + + return cnvrStr; + + } + + /** + * 체크할 숫자 중에서 숫자인지 아닌지 체크하는 기능 + * 숫자이면 True, 아니면 False를 반환한다 + * @param checkStr - 체크문자열 + * @return 숫자여부 + * @see + */ + public static Boolean getNumberValidCheck(String checkStr) { + + int i; + //String sourceStr = String.valueOf(sourceInt); + + int checkStrLt = checkStr.length(); + + for (i = 0; i < checkStrLt; i++) { + + // 아스키코드값( '0'-> 48, '9' -> 57) + if (checkStr.charAt(i) > 47 && checkStr.charAt(i) < 58) { + continue; + } else { + return false; + } + } + + return true; + } + + /** + * 특정숫자를 다른 숫자로 치환하는 기능 숫자 12345678에서 123를 999로 변환하는 기능을 제공(99945678) + * + * @param srcNumber - 숫자집합 + * @param cnvrSrcNumber - 원래숫자 + * @param cnvrTrgtNumber - 치환숫자 + * @return 치환숫자 + * @see + */ + public static int getNumberCnvr(int srcNumber, int cnvrSrcNumber, int cnvrTrgtNumber) { + + // 입력받은 숫자를 문자열로 변환 + String source = String.valueOf(srcNumber); + String subject = String.valueOf(cnvrSrcNumber); + String object = String.valueOf(cnvrTrgtNumber); + + StringBuffer rtnStr = new StringBuffer(); + String preStr = ""; + String nextStr = source; + + // 원본숫자에서 변환대상숫자의 위치를 찾는다. + while (source.indexOf(subject) >= 0) { + preStr = source.substring(0, source.indexOf(subject)); // 변환대상숫자 위치까지 숫자를 잘라낸다 + nextStr = source.substring(source.indexOf(subject) + subject.length(), source.length()); + source = nextStr; + rtnStr.append(preStr).append(object); // 변환대상위치 숫자에 변환할 숫자를 붙여준다. + } + rtnStr.append(nextStr); // 변환대상 숫자 이후 숫자를 붙여준다. + + return Integer.parseInt(rtnStr.toString()); + } + + /** + * 특정숫자가 실수인지, 정수인지, 음수인지 체크하는 기능 123이 실수인지, 정수인지, 음수인지 체크하는 기능을 제공함 + * + * @param srcNumber - 숫자집합 + * @return -1(음수), 0(정수), 1(실수) + * @see + */ + public static int checkRlnoInteger(double srcNumber) { + + // byte 1바이트 ▶소수점이 없는 숫자로, 범위 -2^7 ~ 2^7 -1 + // short 2바이트 ▶소수점이 없는 숫자로, 범위 -2^15 ~ 2^15 -1 + // int 4바이트 ▶소수점이 없는 숫자로, 범위 -2^31 ~ 2^31 - 1 + // long 8바이트 ▶소수점이 없는 숫자로, 범위 -2^63 ~ 2^63-1 + + // float 4바이트 ▶소수점이 있는 숫자로, 끝에 F 또는 f 가 붙는 숫자 (예:3.14f) + // double 8바이트 ▶소수점이 있는 숫자로, 끝에 아무것도 붙지 않는 숫자 (예:3.14) + // ▶소수점이 있는 숫자로, 끝에 D 또는 d 가 붙는 숫자(예:3.14d) + + String cnvrString = null; + + if (srcNumber < 0) { + return -1; + } else { + cnvrString = String.valueOf(srcNumber); + + if (cnvrString.indexOf(".") == -1) { + return 0; + } else { + return 1; + } + } + } +} diff --git a/src/main/java/egovframework/com/utl/fcc/service/EgovStringUtil.java b/src/main/java/egovframework/com/utl/fcc/service/EgovStringUtil.java new file mode 100644 index 00000000..96f1324d --- /dev/null +++ b/src/main/java/egovframework/com/utl/fcc/service/EgovStringUtil.java @@ -0,0 +1,904 @@ +/** + * @Class Name : EgovStringUtil.java + * @Description : 문자열 데이터 처리 관련 유틸리티 + * @Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.01.13 박정규 최초 생성 + * 2009.02.13 이삼섭 내용 추가 + * + * @author 공통 서비스 개발팀 박정규 + * @since 2009. 01. 13 + * @version 1.0 + * @see + * + */ + +package egovframework.com.utl.fcc.service; + +/* + * Copyright 2001-2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the ";License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS"; BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import java.security.SecureRandom; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.Locale; + +public class EgovStringUtil { + /** + * 빈 문자열 "". + */ + public static final String EMPTY = ""; + + /** + *

    Padding을 할 수 있는 최대 수치

    + */ + // private static final int PAD_LIMIT = 8192; + + /** + *

    An array of Strings used for padding.

    + *

    Used for efficient space padding. The length of each String expands as needed.

    + */ + /* + private static final String[] PADDING = new String[Character.MAX_VALUE]; + + static { + // space padding is most common, start with 64 chars + PADDING[32] = " "; + } + */ + + /** + * 문자열이 지정한 길이를 초과했을때 지정한길이에다가 해당 문자열을 붙여주는 메서드. + * @param source 원본 문자열 배열 + * @param output 더할문자열 + * @param slength 지정길이 + * @return 지정길이로 잘라서 더할분자열 합친 문자열 + */ + public static String cutString(String source, String output, int slength) { + String returnVal = null; + if (source != null) { + if (source.length() > slength) { + returnVal = source.substring(0, slength) + output; + } else + returnVal = source; + } + return returnVal; + } + + /** + * 문자열이 지정한 길이를 초과했을때 해당 문자열을 삭제하는 메서드 + * @param source 원본 문자열 배열 + * @param slength 지정길이 + * @return 지정길이로 잘라서 더할분자열 합친 문자열 + */ + public static String cutString(String source, int slength) { + String result = null; + if (source != null) { + if (source.length() > slength) { + result = source.substring(0, slength); + } else + result = source; + } + return result; + } + + /** + *

    + * String이 비었거나("") 혹은 null 인지 검증한다. + *

    + * + *
    +	 *  StringUtil.isEmpty(null)      = true
    +	 *  StringUtil.isEmpty("")        = true
    +	 *  StringUtil.isEmpty(" ")       = false
    +	 *  StringUtil.isEmpty("bob")     = false
    +	 *  StringUtil.isEmpty("  bob  ") = false
    +	 * 
    + * + * @param str - 체크 대상 스트링오브젝트이며 null을 허용함 + * @return true - 입력받은 String 이 빈 문자열 또는 null인 경우 + */ + public static boolean isEmpty(String str) { + return str == null || str.length() == 0; + } + + /** + *

    기준 문자열에 포함된 모든 대상 문자(char)를 제거한다.

    + * + *
    +	 * StringUtil.remove(null, *)       = null
    +	 * StringUtil.remove("", *)         = ""
    +	 * StringUtil.remove("queued", 'u') = "qeed"
    +	 * StringUtil.remove("queued", 'z') = "queued"
    +	 * 
    + * + * @param str 입력받는 기준 문자열 + * @param remove 입력받는 문자열에서 제거할 대상 문자열 + * @return 제거대상 문자열이 제거된 입력문자열. 입력문자열이 null인 경우 출력문자열은 null + */ + public static String remove(String str, char remove) { + if (isEmpty(str) || str.indexOf(remove) == -1) { + return str; + } + char[] chars = str.toCharArray(); + int pos = 0; + for (int i = 0; i < chars.length; i++) { + if (chars[i] != remove) { + chars[pos++] = chars[i]; + } + } + return new String(chars, 0, pos); + } + + /** + *

    문자열 내부의 콤마 character(,)를 모두 제거한다.

    + * + *
    +	 * StringUtil.removeCommaChar(null)       = null
    +	 * StringUtil.removeCommaChar("")         = ""
    +	 * StringUtil.removeCommaChar("asdfg,qweqe") = "asdfgqweqe"
    +	 * 
    + * + * @param str 입력받는 기준 문자열 + * @return " , "가 제거된 입력문자열 + * 입력문자열이 null인 경우 출력문자열은 null + */ + public static String removeCommaChar(String str) { + return remove(str, ','); + } + + /** + *

    문자열 내부의 마이너스 character(-)를 모두 제거한다.

    + * + *
    +	 * StringUtil.removeMinusChar(null)       = null
    +	 * StringUtil.removeMinusChar("")         = ""
    +	 * StringUtil.removeMinusChar("a-sdfg-qweqe") = "asdfgqweqe"
    +	 * 
    + * + * @param str 입력받는 기준 문자열 + * @return " - "가 제거된 입력문자열 + * 입력문자열이 null인 경우 출력문자열은 null + */ + public static String removeMinusChar(String str) { + return remove(str, '-'); + } + + /** + * 원본 문자열의 포함된 특정 문자열을 새로운 문자열로 변환하는 메서드 + * @param source 원본 문자열 + * @param subject 원본 문자열에 포함된 특정 문자열 + * @param object 변환할 문자열 + * @return sb.toString() 새로운 문자열로 변환된 문자열 + */ + public static String replace(String source, String subject, String object) { + StringBuffer rtnStr = new StringBuffer(); + String preStr = ""; + String nextStr = source; + String srcStr = source; + + while (srcStr.indexOf(subject) >= 0) { + preStr = srcStr.substring(0, srcStr.indexOf(subject)); + nextStr = srcStr.substring(srcStr.indexOf(subject) + subject.length(), srcStr.length()); + srcStr = nextStr; + rtnStr.append(preStr).append(object); + } + rtnStr.append(nextStr); + + return rtnStr.toString(); + } + + /** + * 원본 문자열의 포함된 특정 문자열 첫번째 한개만 새로운 문자열로 변환하는 메서드 + * @param source 원본 문자열 + * @param subject 원본 문자열에 포함된 특정 문자열 + * @param object 변환할 문자열 + * @return sb.toString() 새로운 문자열로 변환된 문자열 / source 특정문자열이 없는 경우 원본 문자열 + */ + public static String replaceOnce(String source, String subject, String object) { + StringBuffer rtnStr = new StringBuffer(); + String preStr = ""; + String nextStr = source; + if (source.indexOf(subject) >= 0) { + preStr = source.substring(0, source.indexOf(subject)); + nextStr = source.substring(source.indexOf(subject) + subject.length(), source.length()); + rtnStr.append(preStr).append(object).append(nextStr); + + return rtnStr.toString(); + } else { + return source; + } + } + + /** + * subject에 포함된 각각의 문자를 object로 변환한다. + * + * @param source 원본 문자열 + * @param subject 원본 문자열에 포함된 특정 문자열 + * @param object 변환할 문자열 + * @return sb.toString() 새로운 문자열로 변환된 문자열 + */ + public static String replaceChar(String source, String subject, String object) { + StringBuffer rtnStr = new StringBuffer(); + String preStr = ""; + String nextStr = source; + String srcStr = source; + + char chA; + + for (int i = 0; i < subject.length(); i++) { + chA = subject.charAt(i); + + if (srcStr.indexOf(chA) >= 0) { + preStr = srcStr.substring(0, srcStr.indexOf(chA)); + nextStr = srcStr.substring(srcStr.indexOf(chA) + 1, srcStr.length()); + srcStr = rtnStr.append(preStr).append(object).append(nextStr).toString(); + } + } + + return srcStr; + } + + /** + *

    strsearchStr의 시작(index) 위치를 반환.

    + * + *

    입력값 중 null이 있을 경우 -1을 반환.

    + * + *
    +	 * StringUtil.indexOf(null, *)          = -1
    +	 * StringUtil.indexOf(*, null)          = -1
    +	 * StringUtil.indexOf("", "")           = 0
    +	 * StringUtil.indexOf("aabaabaa", "a")  = 0
    +	 * StringUtil.indexOf("aabaabaa", "b")  = 2
    +	 * StringUtil.indexOf("aabaabaa", "ab") = 1
    +	 * StringUtil.indexOf("aabaabaa", "")   = 0
    +	 * 
    + * + * @param str 검색 문자열 + * @param searchStr 검색 대상문자열 + * @return 검색 문자열 중 검색 대상문자열이 있는 시작 위치 검색대상 문자열이 없거나 null인 경우 -1 + */ + public static int indexOf(String str, String searchStr) { + if (str == null || searchStr == null) { + return -1; + } + + return str.indexOf(searchStr); + } + + /** + *

    오라클의 decode 함수와 동일한 기능을 가진 메서드이다. + * sourStrcompareStr의 값이 같으면 + * returStr을 반환하며, 다르면 defaultStr을 반환한다. + *

    + * + *
    +	 * StringUtil.decode(null, null, "foo", "bar")= "foo"
    +	 * StringUtil.decode("", null, "foo", "bar") = "bar"
    +	 * StringUtil.decode(null, "", "foo", "bar") = "bar"
    +	 * StringUtil.decode("하이", "하이", null, "bar") = null
    +	 * StringUtil.decode("하이", "하이  ", "foo", null) = null
    +	 * StringUtil.decode("하이", "하이", "foo", "bar") = "foo"
    +	 * StringUtil.decode("하이", "하이  ", "foo", "bar") = "bar"
    +	 * 
    + * + * @param sourceStr 비교할 문자열 + * @param compareStr 비교 대상 문자열 + * @param returnStr sourceStr와 compareStr의 값이 같을 때 반환할 문자열 + * @param defaultStr sourceStr와 compareStr의 값이 다를 때 반환할 문자열 + * @return sourceStr과 compareStr의 값이 동일(equal)할 때 returnStr을 반환하며, + *
    다르면 defaultStr을 반환한다. + */ + public static String decode(String sourceStr, String compareStr, String returnStr, String defaultStr) { + if (sourceStr == null && compareStr == null) { + return returnStr; + } + + if (sourceStr == null && compareStr != null) { + return defaultStr; + } + + if (sourceStr.trim().equals(compareStr)) { + return returnStr; + } + + return defaultStr; + } + + /** + *

    오라클의 decode 함수와 동일한 기능을 가진 메서드이다. + * sourStrcompareStr의 값이 같으면 + * returStr을 반환하며, 다르면 sourceStr을 반환한다. + *

    + * + *
    +	 * StringUtil.decode(null, null, "foo") = "foo"
    +	 * StringUtil.decode("", null, "foo") = ""
    +	 * StringUtil.decode(null, "", "foo") = null
    +	 * StringUtil.decode("하이", "하이", "foo") = "foo"
    +	 * StringUtil.decode("하이", "하이 ", "foo") = "하이"
    +	 * StringUtil.decode("하이", "바이", "foo") = "하이"
    +	 * 
    + * + * @param sourceStr 비교할 문자열 + * @param compareStr 비교 대상 문자열 + * @param returnStr sourceStr와 compareStr의 값이 같을 때 반환할 문자열 + * @return sourceStr과 compareStr의 값이 동일(equal)할 때 returnStr을 반환하며, + *
    다르면 sourceStr을 반환한다. + */ + public static String decode(String sourceStr, String compareStr, String returnStr) { + return decode(sourceStr, compareStr, returnStr, sourceStr); + } + + /** + * 객체가 null인지 확인하고 null인 경우 "" 로 바꾸는 메서드 + * @param object 원본 객체 + * @return resultVal 문자열 + */ + public static String isNullToString(Object object) { + String string = ""; + + if (object != null) { + string = object.toString().trim(); + } + + return string; + } + + /** + *
    +	 * 인자로 받은 String이 null일 경우 ""로 리턴한다.
    +	 * @param src null값일 가능성이 있는 String 값.
    +	 * @return 만약 String이 null 값일 경우 ""로 바꾼 String 값.
    +	 *
    + */ + public static String nullConvert(Object src) { + //if (src != null && src.getClass().getName().equals("java.math.BigDecimal")) { + if (src != null && src instanceof java.math.BigDecimal) { + return ((BigDecimal) src).toString(); + } + + if (src == null || src.equals("null")) { + return ""; + } else { + return ((String) src).trim(); + } + } + + /** + *
    +	 * 인자로 받은 String이 null일 경우 ""로 리턴한다.
    +	 * @param src null값일 가능성이 있는 String 값.
    +	 * @return 만약 String이 null 값일 경우 ""로 바꾼 String 값.
    +	 *
    + */ + public static String nullConvertInt(Object src) { + //if (src != null && src.getClass().getName().equals("java.math.BigDecimal")) { + if (src != null && src instanceof java.math.BigDecimal) { + return ((BigDecimal) src).toString(); + } + + if (src == null || src.equals("null")) { + return "0"; + } else { + return ((String) src).trim(); + } + } + + /** + *
    +	 * 인자로 받은 String이 null일 경우 ""로 리턴한다.
    +	 * @param src null값일 가능성이 있는 String 값.
    +	 * @return 만약 String이 null 값일 경우 ""로 바꾼 String 값.
    +	 *
    + */ + public static String nullConvert(String src) { + + if (src == null || src.equals("null") || "".equals(src) || " ".equals(src)) { + return ""; + } else { + return src.trim(); + } + } + + /** + *
    +	 * 인자로 받은 String이 null일 경우 "0"로 리턴한다.
    +	 * @param src null값일 가능성이 있는 String 값.
    +	 * @return 만약 String이 null 값일 경우 "0"로 바꾼 String 값.
    +	 *
    + */ + public static int zeroConvert(Object src) { + + if (src == null || src.equals("null")) { + return 0; + } else { + return Integer.parseInt(((String) src).trim()); + } + } + + /** + *
    +	 * 인자로 받은 String이 null일 경우 ""로 리턴한다.
    +	 * @param src null값일 가능성이 있는 String 값.
    +	 * @return 만약 String이 null 값일 경우 ""로 바꾼 String 값.
    +	 *
    + */ + public static int zeroConvert(String src) { + + if (src == null || src.equals("null") || "".equals(src) || " ".equals(src)) { + return 0; + } else { + return Integer.parseInt(src.trim()); + } + } + + /** + *

    문자열에서 {@link Character#isWhitespace(char)}에 정의된 + * 모든 공백문자를 제거한다.

    + * + *
    +	 * StringUtil.removeWhitespace(null)         = null
    +	 * StringUtil.removeWhitespace("")           = ""
    +	 * StringUtil.removeWhitespace("abc")        = "abc"
    +	 * StringUtil.removeWhitespace("   ab  c  ") = "abc"
    +	 * 
    + * + * @param str 공백문자가 제거도어야 할 문자열 + * @return the 공백문자가 제거된 문자열, null이 입력되면 null이 리턴 + */ + public static String removeWhitespace(String str) { + if (isEmpty(str)) { + return str; + } + int sz = str.length(); + char[] chs = new char[sz]; + int count = 0; + for (int i = 0; i < sz; i++) { + if (!Character.isWhitespace(str.charAt(i))) { + chs[count++] = str.charAt(i); + } + } + if (count == sz) { + return str; + } + + return new String(chs, 0, count); + } + + /** + * Html 코드가 들어간 문서를 표시할때 태그에 손상없이 보이기 위한 메서드 + * + * @param strString + * @return HTML 태그를 치환한 문자열 + */ + public static String checkHtmlView(String strString) { + String strNew = ""; + + StringBuffer strTxt = new StringBuffer(""); + + char chrBuff; + int len = strString.length(); + + for (int i = 0; i < len; i++) { + chrBuff = (char) strString.charAt(i); + + switch (chrBuff) { + case '<': + strTxt.append("<"); + break; + case '>': + strTxt.append(">"); + break; + case '"': + strTxt.append("""); + break; + case 10: + strTxt.append("
    "); + break; + case ' ': + strTxt.append(" "); + break; + //case '&' : + //strTxt.append("&"); + //break; + default: + strTxt.append(chrBuff); + } + } + + strNew = strTxt.toString(); + + return strNew; + } + + /** + * 문자열을 지정한 분리자에 의해 배열로 리턴하는 메서드. + * @param source 원본 문자열 + * @param separator 분리자 + * @return result 분리자로 나뉘어진 문자열 배열 + */ + public static String[] split(String source, String separator) throws NullPointerException { + String[] returnVal = null; + int cnt = 1; + + int index = source.indexOf(separator); + int index0 = 0; + while (index >= 0) { + cnt++; + index = source.indexOf(separator, index + 1); + } + returnVal = new String[cnt]; + cnt = 0; + index = source.indexOf(separator); + while (index >= 0) { + returnVal[cnt] = source.substring(index0, index); + index0 = index + 1; + index = source.indexOf(separator, index + 1); + cnt++; + } + returnVal[cnt] = source.substring(index0); + + return returnVal; + } + + /** + *

    {@link String#toLowerCase()}를 이용하여 소문자로 변환한다.

    + * + *
    +	 * StringUtil.lowerCase(null)  = null
    +	 * StringUtil.lowerCase("")    = ""
    +	 * StringUtil.lowerCase("aBc") = "abc"
    +	 * 
    + * + * @param str 소문자로 변환되어야 할 문자열 + * @return 소문자로 변환된 문자열, null이 입력되면 null 리턴 + */ + public static String lowerCase(String str) { + if (str == null) { + return null; + } + + return str.toLowerCase(); + } + + /** + *

    {@link String#toUpperCase()}를 이용하여 대문자로 변환한다.

    + * + *
    +	 * StringUtil.upperCase(null)  = null
    +	 * StringUtil.upperCase("")    = ""
    +	 * StringUtil.upperCase("aBc") = "ABC"
    +	 * 
    + * + * @param str 대문자로 변환되어야 할 문자열 + * @return 대문자로 변환된 문자열, null이 입력되면 null 리턴 + */ + public static String upperCase(String str) { + if (str == null) { + return null; + } + + return str.toUpperCase(); + } + + /** + *

    입력된 String의 앞쪽에서 두번째 인자로 전달된 문자(stripChars)를 모두 제거한다.

    + * + *
    +	 * StringUtil.stripStart(null, *)          = null
    +	 * StringUtil.stripStart("", *)            = ""
    +	 * StringUtil.stripStart("abc", "")        = "abc"
    +	 * StringUtil.stripStart("abc", null)      = "abc"
    +	 * StringUtil.stripStart("  abc", null)    = "abc"
    +	 * StringUtil.stripStart("abc  ", null)    = "abc  "
    +	 * StringUtil.stripStart(" abc ", null)    = "abc "
    +	 * StringUtil.stripStart("yxabc  ", "xyz") = "abc  "
    +	 * 
    + * + * @param str 지정된 문자가 제거되어야 할 문자열 + * @param stripChars 제거대상 문자열 + * @return 지정된 문자가 제거된 문자열, null이 입력되면 null 리턴 + */ + public static String stripStart(String str, String stripChars) { + int strLen; + if (str == null || (strLen = str.length()) == 0) { + return str; + } + int start = 0; + if (stripChars == null) { + while ((start != strLen) && Character.isWhitespace(str.charAt(start))) { + start++; + } + } else if (stripChars.length() == 0) { + return str; + } else { + while ((start != strLen) && (stripChars.indexOf(str.charAt(start)) != -1)) { + start++; + } + } + + return str.substring(start); + } + + /** + *

    입력된 String의 뒤쪽에서 두번째 인자로 전달된 문자(stripChars)를 모두 제거한다.

    + * + *
    +	 * StringUtil.stripEnd(null, *)          = null
    +	 * StringUtil.stripEnd("", *)            = ""
    +	 * StringUtil.stripEnd("abc", "")        = "abc"
    +	 * StringUtil.stripEnd("abc", null)      = "abc"
    +	 * StringUtil.stripEnd("  abc", null)    = "  abc"
    +	 * StringUtil.stripEnd("abc  ", null)    = "abc"
    +	 * StringUtil.stripEnd(" abc ", null)    = " abc"
    +	 * StringUtil.stripEnd("  abcyx", "xyz") = "  abc"
    +	 * 
    + * + * @param str 지정된 문자가 제거되어야 할 문자열 + * @param stripChars 제거대상 문자열 + * @return 지정된 문자가 제거된 문자열, null이 입력되면 null 리턴 + */ + public static String stripEnd(String str, String stripChars) { + int end; + if (str == null || (end = str.length()) == 0) { + return str; + } + + if (stripChars == null) { + while ((end != 0) && Character.isWhitespace(str.charAt(end - 1))) { + end--; + } + } else if (stripChars.length() == 0) { + return str; + } else { + while ((end != 0) && (stripChars.indexOf(str.charAt(end - 1)) != -1)) { + end--; + } + } + + return str.substring(0, end); + } + + /** + *

    입력된 String의 앞, 뒤에서 두번째 인자로 전달된 문자(stripChars)를 모두 제거한다.

    + * + *
    +	 * StringUtil.strip(null, *)          = null
    +	 * StringUtil.strip("", *)            = ""
    +	 * StringUtil.strip("abc", null)      = "abc"
    +	 * StringUtil.strip("  abc", null)    = "abc"
    +	 * StringUtil.strip("abc  ", null)    = "abc"
    +	 * StringUtil.strip(" abc ", null)    = "abc"
    +	 * StringUtil.strip("  abcyx", "xyz") = "  abc"
    +	 * 
    + * + * @param str 지정된 문자가 제거되어야 할 문자열 + * @param stripChars 제거대상 문자열 + * @return 지정된 문자가 제거된 문자열, null이 입력되면 null 리턴 + */ + public static String strip(String str, String stripChars) { + if (isEmpty(str)) { + return str; + } + + String srcStr = str; + srcStr = stripStart(srcStr, stripChars); + + return stripEnd(srcStr, stripChars); + } + + /** + * 문자열을 지정한 분리자에 의해 지정된 길이의 배열로 리턴하는 메서드. + * @param source 원본 문자열 + * @param separator 분리자 + * @param arraylength 배열 길이 + * @return 분리자로 나뉘어진 문자열 배열 + */ + public static String[] split(String source, String separator, int arraylength) throws NullPointerException { + String[] returnVal = new String[arraylength]; + int cnt = 0; + int index0 = 0; + int index = source.indexOf(separator); + while (index >= 0 && cnt < (arraylength - 1)) { + returnVal[cnt] = source.substring(index0, index); + index0 = index + 1; + index = source.indexOf(separator, index + 1); + cnt++; + } + returnVal[cnt] = source.substring(index0); + if (cnt < (arraylength - 1)) { + for (int i = cnt + 1; i < arraylength; i++) { + returnVal[i] = ""; + } + } + + return returnVal; + } + + /** + * 문자열 A에서 Z사이의 랜덤 문자열을 구하는 기능을 제공 시작문자열과 종료문자열 사이의 랜덤 문자열을 구하는 기능 + * + * @param startChr - 첫 문자 + * @param endChr - 마지막문자 + * @return 랜덤문자 + * @exception MyException + * @see + */ + public static String getRandomStr(char startChr, char endChr) { + + int randomInt; + String randomStr = null; + + // 시작문자 및 종료문자를 아스키숫자로 변환한다. + int startInt = Integer.valueOf(startChr); + int endInt = Integer.valueOf(endChr); + + // 시작문자열이 종료문자열보가 클경우 + if (startInt > endInt) { + throw new IllegalArgumentException("Start String: " + startChr + " End String: " + endChr); + } + + // 랜덤 객체 생성 + SecureRandom rnd = new SecureRandom(); + + do { + // 시작문자 및 종료문자 중에서 랜덤 숫자를 발생시킨다. + randomInt = rnd.nextInt(endInt + 1); + } while (randomInt < startInt); // 입력받은 문자 'A'(65)보다 작으면 다시 랜덤 숫자 발생. + + // 랜덤 숫자를 문자로 변환 후 스트링으로 다시 변환 + randomStr = (char) randomInt + ""; + + // 랜덤문자열를 리턴 + return randomStr; + } + + /** + * 문자열을 다양한 문자셋(EUC-KR[KSC5601],UTF-8..)을 사용하여 인코딩하는 기능 역으로 디코딩하여 원래의 문자열을 + * 복원하는 기능을 제공함 String temp = new String(문자열.getBytes("바꾸기전 인코딩"),"바꿀 인코딩"); + * String temp = new String(문자열.getBytes("8859_1"),"KSC5601"); => UTF-8 에서 + * EUC-KR + * + * @param srcString - 문자열 + * @param srcCharsetNm - 원래 CharsetNm + * @param charsetNm - CharsetNm + * @return 인(디)코딩 문자열 + * @exception MyException + * @see + */ + public static String getEncdDcd(String srcString, String srcCharsetNm, String cnvrCharsetNm) { + + String rtnStr = null; + + if (srcString == null) + return null; + + try { + rtnStr = new String(srcString.getBytes(srcCharsetNm), cnvrCharsetNm); + } catch (UnsupportedEncodingException e) { + rtnStr = null; + } + + return rtnStr; + } + + /** + * 특수문자를 웹 브라우저에서 정상적으로 보이기 위해 특수문자를 처리('<' -> & lT)하는 기능이다 + * @param srcString - '<' + * @return 변환문자열('<' -> "<" + * @exception MyException + * @see + */ + public static String getSpclStrCnvr(String srcString) { + + String rtnStr = null; + + StringBuffer strTxt = new StringBuffer(""); + + char chrBuff; + int len = srcString.length(); + + for (int i = 0; i < len; i++) { + chrBuff = (char) srcString.charAt(i); + + switch (chrBuff) { + case '<': + strTxt.append("<"); + break; + case '>': + strTxt.append(">"); + break; + case '&': + strTxt.append("&"); + break; + default: + strTxt.append(chrBuff); + } + } + + rtnStr = strTxt.toString(); + + return rtnStr; + } + + /** + * 응용어플리케이션에서 고유값을 사용하기 위해 시스템에서17자리의TIMESTAMP값을 구하는 기능 + * + * @param + * @return Timestamp 값 + * @exception MyException + * @see + */ + public static String getTimeStamp() { + + String rtnStr = null; + + // 문자열로 변환하기 위한 패턴 설정(년도-월-일 시:분:초:초(자정이후 초)) + String pattern = "yyyyMMddhhmmssSSS"; + + SimpleDateFormat sdfCurrent = new SimpleDateFormat(pattern, Locale.KOREA); + Timestamp ts = new Timestamp(System.currentTimeMillis()); + + rtnStr = sdfCurrent.format(ts.getTime()); + + return rtnStr; + } + + /** + * html의 특수문자를 표현하기 위해 + * + * @param srcString + * @return String + * @exception Exception + * @see + */ + public static String getHtmlStrCnvr(String srcString) { + + String tmpString = srcString; + + tmpString = tmpString.replaceAll("<", "<"); + tmpString = tmpString.replaceAll(">", ">"); + tmpString = tmpString.replaceAll("&", "&"); + tmpString = tmpString.replaceAll(" ", " "); + tmpString = tmpString.replaceAll("'", "\'"); + tmpString = tmpString.replaceAll(""", "\""); + + return tmpString; + + } + + /** + *

    날짜 형식의 문자열 내부에 마이너스 character(-)를 추가한다.

    + * + *
    +	 *   StringUtil.addMinusChar("20100901") = "2010-09-01"
    +	 * 
    + * + * @param date 입력받는 문자열 + * @return " - "가 추가된 입력문자열 + */ + public static String addMinusChar(String date) { + if (date.length() == 8) { + return date.substring(0, 4).concat("-").concat(date.substring(4, 6)).concat("-").concat(date.substring(6, 8)); + } else { + return ""; + } + } +} diff --git a/src/main/java/egovframework/com/utl/sec/filter/CertProcessFilter.java b/src/main/java/egovframework/com/utl/sec/filter/CertProcessFilter.java new file mode 100644 index 00000000..80e67942 --- /dev/null +++ b/src/main/java/egovframework/com/utl/sec/filter/CertProcessFilter.java @@ -0,0 +1,54 @@ +package egovframework.com.utl.sec.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; + +/** + * GPKISecureWeb 인증서 로그인 서비스 filter + * @author 공통컴포넌트개발팀 한성곤 + * @since 2009.08.13 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.08.13  한성곤          최초 생성
    + *
    + * 
    + */ +public class CertProcessFilter implements Filter { + @SuppressWarnings("unused") + private FilterConfig config; + + /** + * Filter init 메소드를 대치한다. + */ + public void init(FilterConfig config) throws ServletException { + this.config = config; + } + + /** + * Filter doFilter 메소드를 대치한다. + * RequestWrapper를 통해 HTML Tag 변환을 처리한다. + */ + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + chain.doFilter(new CertProcessRequestWrapper((HttpServletRequest)request), response); + } + + /** + * Filter destroy 메소드를 대치한다. + */ + public void destroy() { + // Empty Method + } +} diff --git a/src/main/java/egovframework/com/utl/sec/filter/CertProcessRequestWrapper.java b/src/main/java/egovframework/com/utl/sec/filter/CertProcessRequestWrapper.java new file mode 100644 index 00000000..dd2467cb --- /dev/null +++ b/src/main/java/egovframework/com/utl/sec/filter/CertProcessRequestWrapper.java @@ -0,0 +1,84 @@ +package egovframework.com.utl.sec.filter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; + +/** + * GPKISecureWeb 인증서 로그인 서비스 HttpServletRequestWrapper + * @author 공통컴포넌트개발팀 한성곤 + * @since 2009.08.13 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.08.13  한성곤          최초 생성
    + *
    + * 
    + */ +public class CertProcessRequestWrapper extends HttpServletRequestWrapper { + + /** + * 생성자를 호출한다. + * + * @param request + */ + public CertProcessRequestWrapper(HttpServletRequest request) { + super(request); + } + + /** + * 변환된 HTML 태그들을 다시 변환한다. + * + * @param src + * @return + */ + protected String replaceString(String src) { + String srcString = src; + + srcString = srcString.replaceAll("<", "<"); + srcString = srcString.replaceAll(">", ">"); + srcString = srcString.replaceAll(""", "\""); + srcString = srcString.replaceAll("'", "'"); + srcString = srcString.replaceAll("&", "&"); + + return srcString; + } + + /** + * getParameterValues 메소드를 대치한다. + */ + 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) { + values[i] = replaceString(values[i]); + } + } + + return values; + } + + /** + * getParameter 메소드를 대치한다. + */ + public String getParameter(String parameter) { + String value = super.getParameter(parameter); + + if (value == null) { + return null; + } + + value = replaceString(value); + + return value; + } +} diff --git a/src/main/java/egovframework/com/utl/sec/service/CertInfoVO.java b/src/main/java/egovframework/com/utl/sec/service/CertInfoVO.java new file mode 100644 index 00000000..3fb096b9 --- /dev/null +++ b/src/main/java/egovframework/com/utl/sec/service/CertInfoVO.java @@ -0,0 +1,57 @@ +package egovframework.com.utl.sec.service; + +import java.io.Serializable; + +/** + * 인증서 정보 Value Object + * @author 공통컴포넌트개발팀 한성곤 + * @since 2009.08.06 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.08.06  한성곤          최초 생성
    + *
    + * 
    + */ +@SuppressWarnings("serial") +public class CertInfoVO implements Serializable { + /** 인증서 DN */ + private String subjectDn = null; + /** 발급자 DN */ + private String issuerDn = null; + + /** + * subjectDn attribute를 리턴한다. + * @return the subjectDn + */ + public String getSubjectDn() { + return subjectDn; + } + /** + * subjectDn attribute 값을 설정한다. + * @param subjectDn the subjectDn to set + */ + public void setSubjectDn(String subjectDn) { + this.subjectDn = subjectDn; + } + /** + * issuerDn attribute를 리턴한다. + * @return the issuerDn + */ + public String getIssuerDn() { + return issuerDn; + } + /** + * issuerDn attribute 값을 설정한다. + * @param issuerDn the issuerDn to set + */ + public void setIssuerDn(String issuerDn) { + this.issuerDn = issuerDn; + } + +} diff --git a/src/main/java/egovframework/com/utl/sec/service/EgovCertInfoUtil.java b/src/main/java/egovframework/com/utl/sec/service/EgovCertInfoUtil.java new file mode 100644 index 00000000..6e7fae9f --- /dev/null +++ b/src/main/java/egovframework/com/utl/sec/service/EgovCertInfoUtil.java @@ -0,0 +1,83 @@ +package egovframework.com.utl.sec.service; + +import javax.servlet.http.HttpServletRequest; + +import com.dsjdf.jdf.Config; +import com.dsjdf.jdf.Configuration; +import com.dsjdf.jdf.ConfigurationException; +import com.gpki.gpkiapi.cert.X509Certificate; +import com.gpki.gpkiapi.exception.GpkiApiException; +import com.gpki.gpkiapi.storage.Disk; +import com.gpki.gpkiapi.util.Base64; +import com.gpki.servlet.GPKIHttpServletRequest; + +/** + * GPKISecureWeb 인증서 로그인 서비스 유틸 + * @author 공통컴포넌트개발팀 한성곤 + * @since 2009.08.06 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.08.06  한성곤          최초 생성
    + *
    + * 
    + */ +public class EgovCertInfoUtil { + /** + * 서버인증서에 대한 Base64 정보를 얻는다. + * + * @return + * @throws ConfigurationException + * @throws GpkiApiException + */ + public static String getBase64ServerCert() throws ConfigurationException, GpkiApiException { + /* + * Configuration를 사용하기 위해서는 다음과 같은 시스템 변수 지정이 필요함 + * + * -Dcom.dsjdf.config.file="/product/jeus/egovProps/gpkisecureweb/conf/dsjdf.properties" + */ + Config dsjdf = new Configuration(); + + String certPath = dsjdf.get("GPKISecureWeb.CertFilePathName"); + + X509Certificate x509Cert = null; + byte[] cert = null; + String base64cert = null; + + x509Cert = Disk.readCert(certPath); + cert = x509Cert.getCert(); + Base64 base64 = new Base64(); + base64cert = base64.encode(cert); + + return base64cert; + } + + /** + * 인증서에 대한 정보를 제공한다. + * + * @param request + * @return + * @throws Exception + */ + public static CertInfoVO getCertInfo(HttpServletRequest request) throws Exception { + CertInfoVO certInfo = new CertInfoVO(); + + GPKIHttpServletRequest gpkirequest = null; + + //System.out.println(request.getParameter("encryptedData")); + + gpkirequest = new GPKIHttpServletRequest(request); + + X509Certificate cert = gpkirequest.getSignerCert(); + + certInfo.setSubjectDn(cert.getSubjectDN()); + certInfo.setIssuerDn(cert.getIssuerDN()); + + return certInfo; + } +} diff --git a/src/main/java/egovframework/com/utl/sec/web/EgovCertLoginController.java b/src/main/java/egovframework/com/utl/sec/web/EgovCertLoginController.java new file mode 100644 index 00000000..a965b8c5 --- /dev/null +++ b/src/main/java/egovframework/com/utl/sec/web/EgovCertLoginController.java @@ -0,0 +1,176 @@ +package egovframework.com.utl.sec.web; + +import egovframework.com.utl.sec.service.EgovCertInfoUtil; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * GPKISecureWeb 인증서 로그인 Controller + * @author 공통컴포넌트개발팀 한성곤 + * @since 2009.08.06 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일      수정자           수정내용
    + *  -------    --------    ---------------------------
    + *   2009.08.06  한성곤          최초 생성
    + *
    + * 
    + */ +@Controller +public class EgovCertLoginController { + /** + * 인증서 로그인에 관련된 환경변수를 설정한다. + * + * @param type + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/utl/sec/certVar.do") + public String var(@RequestParam(value="type", required=false) String type, Model model) throws Exception { + String typeInfo = type; + + //------------------------------------------------------------ + // 서버 인증서 정보 처리 + //------------------------------------------------------------ + String serverCert = EgovCertInfoUtil.getBase64ServerCert(); + + model.addAttribute("serverCert", serverCert); + + //------------------------------------------------------------ + // install 후 이동될 페이지 지정 (프로젝트에 맞게 수정 필요) + //----------------------------------------------------------- + if (typeInfo == null) { + typeInfo = ""; + } + + String startPage = null; + + if (typeInfo.equalsIgnoreCase("login")) { + startPage = "/utl/sec/certLogin.do"; + } else if (typeInfo.equalsIgnoreCase("regist")) { + startPage = "/utl/sec/certInfoPopup.do"; + } else { + startPage = "/utl/sec/certLogin.do"; + } + + model.addAttribute("startPage", startPage); + + return "egovframework/com/utl/sec/EgovCertVar"; + } + + /** + * 인증서 관련 설치 페이지를 표시한다. + * + * @param type + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/utl/sec/certInstall.do") + public String certInstall(@RequestParam(value="type", required=false) String type, Model model) throws Exception { + String typeInfo = type; + + //------------------------------------------------------------ + // install 후 이동될 페이지 지정 (프로젝트에 맞게 수정 필요) + //----------------------------------------------------------- + if (typeInfo == null || typeInfo.equals("")) { + typeInfo = "login"; + } + + model.addAttribute("type", typeInfo); + + return "egovframework/com/utl/sec/EgovCertInstall"; + } + + /** + * 인증서 로그인 관련 설치 정보를 제공하는 설정 페이지를 표시한다. + * + * @return + * @throws Exception + */ + @RequestMapping("/utl/sec/certSetup.do") + public String certSetup() throws Exception { + return "egovframework/com/utl/sec/EgovCertSetup"; + } + + /** + * 인증서 로그인 관련 오류메시지 페이지를 표시한다. + * + * @param errMsg + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/utl/sec/certGPKIError.do") + public String certGPKIError(@RequestParam("errmsg") String errMsg, Model model) throws Exception { + + model.addAttribute("errmsg", errMsg); + + return "egovframework/com/utl/sec/EgovCertGPKIError"; + } + + /** + * 인증서 DN 등록을 위한 팝업 페이지를 표시한다. + * + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value="/utl/sec/certInfoPopup.do") + public String certInfoPopup(Model model) throws Exception { + + return "egovframework/com/utl/sec/EgovCertInfoPopup"; + } + + /** + * 인증서 로그인 페이지(테스트)를 표시한다. + * + * @return + * @throws Exception + */ + @RequestMapping(value="/utl/sec/certLogin.do", method=RequestMethod.GET) + public String certLogin() throws Exception { + + return "egovframework/com/utl/sec/EgovCertLogin"; + } + + /** + * 인증서 로그인 확인 페이지(테스트)를 표시한다. + * + * @param request + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value="/utl/sec/certLogin.do", method=RequestMethod.POST) + public String certLoginConfirm(HttpServletRequest request, Model model) throws Exception { + + // 인증서 정보 + model.addAttribute("certInfo", EgovCertInfoUtil.getCertInfo(request)); + + return "egovframework/com/utl/sec/EgovCertLoginConfirm"; + } + + /** + * 인증서 등록을 위한 팝업 페이지(테스트)를 표시한다. + * + * @return + * @throws Exception + */ + @RequestMapping("/utl/sec/certLoginInfo.do") + public String certLoginPopup() throws Exception { + + return "egovframework/com/utl/sec/EgovCertLoginInfo"; + } +} diff --git a/src/main/java/egovframework/com/utl/sim/service/EgovClntInfo.java b/src/main/java/egovframework/com/utl/sim/service/EgovClntInfo.java new file mode 100644 index 00000000..36a80790 --- /dev/null +++ b/src/main/java/egovframework/com/utl/sim/service/EgovClntInfo.java @@ -0,0 +1,122 @@ +/** + * Class Name : EgovClntInfo.java + * Description : 클라이언트(Client)의 IP주소, OS정보, 웹브라우저정보를 조회하는 Business Interface class + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.01.19 박지욱 최초 생성 + * + * @author 공통 서비스 개발팀 박지욱 + * @since 2009. 01. 19 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ +package egovframework.com.utl.sim.service; + +import egovframework.com.cmm.service.EgovProperties; +import egovframework.com.cmm.service.Globals; + +import javax.servlet.http.HttpServletRequest; + +public class EgovClntInfo { + + /** + * 클라이언트(Client)의 IP주소를 조회하는 기능 + * @param HttpServletRequest request Request객체 + * @return String ipAddr IP주소 + * @exception Exception + */ + public static String getClntIP(HttpServletRequest request) throws Exception { + + // IP주소 + String ipAddr = request.getRemoteAddr(); + return ipAddr; + } + + /** + * 클라이언트(Client)의 OS 정보를 조회하는 기능 + * @param HttpServletRequest request Request객체 + * @return String osInfo OS 정보 + * @exception Exception + */ + public static String getClntOsInfo(HttpServletRequest request) throws Exception { + + String user_agent = request.getHeader("user-agent"); + String os_info = user_agent.toUpperCase().split(";")[2].split("\\)")[0]; + String os_conf = EgovProperties.getProperty(Globals.CLIENT_CONF_PATH, os_info.replaceAll(" ", "")); + String osInfo = ""; + if (os_conf != null && !"".equals(os_conf)) { + osInfo = os_conf; + } else { + osInfo = os_info; + } + return osInfo; + } + + /** + * 클라이언트(Client)의 웹브라우저 종류를 조회하는 기능 + * @param HttpServletRequest request Request객체 + * @return String webKind 웹브라우저 종류 + * @exception Exception + */ + public static String getClntWebKind(HttpServletRequest request) throws Exception { + + String user_agent = request.getHeader("user-agent"); + + // 웹브라우저 종류 조회 + String webKind = ""; + if (user_agent.toUpperCase().indexOf("GECKO") != -1) { + if (user_agent.toUpperCase().indexOf("NESCAPE") != -1) { + webKind = "Netscape (Gecko/Netscape)"; + } else if (user_agent.toUpperCase().indexOf("FIREFOX") != -1) { + webKind = "Mozilla Firefox (Gecko/Firefox)"; + } else { + webKind = "Mozilla (Gecko/Mozilla)"; + } + } else if (user_agent.toUpperCase().indexOf("MSIE") != -1) { + if (user_agent.toUpperCase().indexOf("OPERA") != -1) { + webKind = "Opera (MSIE/Opera/Compatible)"; + } else { + webKind = "Internet Explorer (MSIE/Compatible)"; + } + } else if (user_agent.toUpperCase().indexOf("SAFARI") != -1) { + if (user_agent.toUpperCase().indexOf("CHROME") != -1) { + webKind = "Google Chrome"; + } else { + webKind = "Safari"; + } + } else if (user_agent.toUpperCase().indexOf("THUNDERBIRD") != -1) { + webKind = "Thunderbird"; + } else { + webKind = "Other Web Browsers"; + } + return webKind; + } + + /** + * 클라이언트(Client)의 웹브라우저 버전을 조회하는 기능 + * @param HttpServletRequest request Request객체 + * @return String webVer 웹브라우저 버전 + * @exception Exception + */ + public static String getClntWebVer(HttpServletRequest request) throws Exception { + + String user_agent = request.getHeader("user-agent"); + + // 웹브라우저 버전 조회 + String webVer = ""; + String [] arr = {"MSIE", "OPERA", "NETSCAPE", "FIREFOX", "SAFARI"}; + for (int i = 0; i < arr.length; i++) { + int s_loc = user_agent.toUpperCase().indexOf(arr[i]); + if (s_loc != -1) { + int f_loc = s_loc + arr[i].length(); + webVer = user_agent.toUpperCase().substring(f_loc, f_loc+5); + webVer = webVer.replaceAll("/", "").replaceAll(";", "").replaceAll("^", "").replaceAll(",", "").replaceAll("//.", ""); + } + } + return webVer; + } +} diff --git a/src/main/java/egovframework/com/utl/sim/service/EgovFileCmprs.java b/src/main/java/egovframework/com/utl/sim/service/EgovFileCmprs.java new file mode 100644 index 00000000..dd2a76e5 --- /dev/null +++ b/src/main/java/egovframework/com/utl/sim/service/EgovFileCmprs.java @@ -0,0 +1,213 @@ +/** + * Class Name : EgovFileCmprs.java + * Description : 파일(디렉토리)의 압축 및 압축해제 하는 Business Interface class + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.02.04 박지욱 최초 생성 + * 2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + * 2017.03.03 조성원 시큐어코딩(ES)-Null Pointer 역참조[CWE-476] + * 2018.03.19 신용호 createDirectories() 호출및 예외처리 수정 + * + * @author 공통 서비스 개발팀 박지욱 + * @since 2009. 02. 04 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ +package egovframework.com.utl.sim.service; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import java.util.zip.ZipOutputStream; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import egovframework.com.cmm.util.EgovResourceCloseHelper; + +public class EgovFileCmprs { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileCmprs.class); + + final static int COMPRESSION_LEVEL = 8; + final static int BUFFER_SIZE = 64 * 1024; + final static char FILE_SEPARATOR = File.separatorChar; + + /** + * 파일(디렉토리)을 압축하는 기능 + * @param String source 원본파일명(디렉토리명) + * @param String target 압축파일명 + * @return boolean result 압축성공여부 True / False + * @exception Exception + */ + public static boolean cmprsFile(String source, String target) throws Exception { + + // 압축성공여부 + boolean result = false; + int cnt = 0; + // 읽어들일 byte 버퍼 + byte[] buffer = new byte[BUFFER_SIZE]; + + FileInputStream finput = null; + FileOutputStream foutput = null; + ZipOutputStream zoutput = null; + + String source1 = source.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + String target1 = target.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(source1); + + if (srcFile.exists()) { + + // 1. 파일인 경우 + if (srcFile.isFile()) { + + String target2 = EgovFileTool.createNewFile(target1); + File tarFile = new File(target2); + + foutput = null; + zoutput = null; + ZipEntry zentry = null; + + try { + foutput = new FileOutputStream(tarFile); + zoutput = new ZipOutputStream((OutputStream) foutput); + finput = new FileInputStream(srcFile); + zentry = new ZipEntry(srcFile.getName()); + zoutput.putNextEntry(zentry); + zoutput.setLevel(COMPRESSION_LEVEL); + cnt = 0; + while ((cnt = finput.read(buffer)) != -1) { + zoutput.write(buffer, 0, cnt); + } + zoutput.closeEntry(); + result = true; + + } catch (IOException e) { + //2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + if(tarFile.delete()){ + LOGGER.debug("[file.delete] tarFile : File Deletion Success"); + }else{ + LOGGER.error("[file.delete] tarFile : File Deletion Fail"); + } + throw e; + } finally { + EgovResourceCloseHelper.close(finput, zoutput, foutput); + } + + // 2. 디렉토리인 경우 + } else if (srcFile.isDirectory()) { + + String target2 = EgovFileTool.createNewFile(target1); + File tarFile = new File(target2); + + ZipEntry zentry = null; + + try { + foutput = new FileOutputStream(tarFile); + zoutput = new ZipOutputStream((OutputStream) foutput); + File[] fileArr = srcFile.listFiles(); + + //2017.03.03 조성원 시큐어코딩(ES)-Null Pointer 역참조[CWE-476] + if(fileArr == null){ + fileArr = new File[0]; + } + + List list = EgovFileTool.getSubFilesByAll(fileArr); + + for (int i = 0; i < list.size(); i++) { + File sfile = new File((String) list.get(i)); + finput = new FileInputStream(sfile); + zentry = new ZipEntry(sfile.getAbsolutePath().replace('\\', '/').replaceAll(srcFile.getAbsolutePath().replace('\\', '/'), "")); + zoutput.putNextEntry(zentry); + zoutput.setLevel(COMPRESSION_LEVEL); + cnt = 0; + while ((cnt = finput.read(buffer)) != -1) { + zoutput.write(buffer, 0, cnt); + } + finput.close(); + result = true; + } + zoutput.closeEntry(); + } catch (IOException e) { + tarFile.delete(); + throw e; + } finally { + EgovResourceCloseHelper.close(finput, zoutput, foutput); + } + } + } + return result; + } + + /** + * 파일(디렉토리)을 압축해제하는 기능 + * @param String source 압축파일명 + * @param String target 압출이 풀릴 디렉토리 + * @return boolean result 압축해제성공여부 True / False + * @exception Exception + */ + public static boolean decmprsFile(String source, String target) throws Exception { + + // 압축해제성공여부 + boolean result = false; + int cnt = 0; + // 읽어들일 byte 버퍼 + byte[] buffer = new byte[BUFFER_SIZE]; + + FileInputStream finput = null; + FileOutputStream foutput = null; + ZipInputStream zinput = null; + + String source1 = source.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + String target1 = target.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(source1); + + if (srcFile.exists() && srcFile.isFile()) { + + String target2 = EgovFileTool.createNewDirectory(target1); + File tarFile = new File(target2); + finput = new FileInputStream(srcFile); + zinput = new ZipInputStream((InputStream) finput); + + ZipEntry entry; + + try { + + File efile; + while ((entry = zinput.getNextEntry()) != null) { + + String filename = entry.getName(); + String entryFilePath = tarFile.getAbsolutePath() + FILE_SEPARATOR + filename; + + efile = new File(entryFilePath); + if (entry.isDirectory()) { + EgovFileTool.createDirectories(efile.getAbsolutePath()); + } else { + foutput = new FileOutputStream(efile); + while ((cnt = zinput.read(buffer)) != -1) { + if (foutput != null) + foutput.write(buffer, 0, cnt); + } + } + + } + + result = true; + + } finally { + EgovResourceCloseHelper.close(finput, zinput, foutput); + } + } + return result; + } +} diff --git a/src/main/java/egovframework/com/utl/sim/service/EgovFileMntrg.java b/src/main/java/egovframework/com/utl/sim/service/EgovFileMntrg.java new file mode 100644 index 00000000..57720b8f --- /dev/null +++ b/src/main/java/egovframework/com/utl/sim/service/EgovFileMntrg.java @@ -0,0 +1,333 @@ +/** + * Class Name : EgovFileMntrg.java + * Description : 시스템 네트워크 정보를 확인하여 제공하는 Business class + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.01.13 조재영 최초 생성 + * 2017.03.06 조성원 시큐어코딩(ES)-Null Pointer 역참조[CWE-476] + * + * @author 공통 서비스 개발팀 조재영 + * @since 2009. 01. 13 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by EGOV All right reserved. + */ +package egovframework.com.utl.sim.service; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.List; + +import egovframework.com.cmm.util.EgovBasicLogger; +import egovframework.com.cmm.util.EgovResourceCloseHelper; + +public class EgovFileMntrg extends Thread { + + /** + *

    + * 해당 파일의 변경 유무를 체크하기 위한 Default 초의 stati final 변수, 기본 적용은 값은 60초 + *

    + */ + //static final public long DEFAULT_DELAY = 60000; // 60초 + static final public long DEFAULT_DELAY = 30000; // 30초 + + /** + * 최대 문자길이 + **/ + static final int MAX_STR_LEN = 1024; + + /** + *

    + * 파일의 변경 유무를 체크하기 위한 해당파일명 변수 + *

    + */ + protected String filename; + + /** + *

    + * 해당 파일의 변경 유무를 체크하기 위한 Default 초의 stati final 변수, 기본 적용은 값은 60초{@link + * #DEFAULT_DELAY}. + *

    + */ + protected long delay = DEFAULT_DELAY; + + File file; // 타겟(감시대상) 디렉토리 + File logFile; // 감시정보보관용 로그파일 + long lastModif = 0; + boolean warnedAlready = false; + boolean interrupted = false; + List realOriginalList = new ArrayList(); // 최초의 원본리스트 + List originalList = new ArrayList(); // 직전리스트는 주기적으로 직전목록정보로 갱신된다. + List currentList = new ArrayList(); // 직전리스트와 비교할 현시점 리스트 + List changedList = new ArrayList(); // 직전리스트와 비교한 시점에 발생된 변경리스트 + List totalChangedList = new ArrayList(); // 최초리스트와 비교한 변경 리스트 + // totalChangedList는 필요시 checkAndConfigure함수 내에서 주석해제후 사용(부하량을 고려하여 사용) + int cnt = 0; + + /** + *

    + * 감시 하고자 하는 파일명을 파라메타로 받는 기본 컨스트럭터(Constructor). + *

    + * + * @param filename + */ + protected EgovFileMntrg(String filename, File logFile) { + //log.debug("EgovFileMntrg start"); + this.logFile = logFile; + this.filename = filename; + file = new File(filename); + // 1. 최초생성시 현재 디렉토리의 하위정보를 ArrayList에 보관한다. 보관정보 ==> 절대경로 + "," + 최종수정일시 + "," + 사이즈 + File[] fList = file.listFiles(); + //2017.03.06 조성원 시큐어코딩(ES)-Null Pointer 역참조[CWE-476] + if(fList == null){ + fList = new File[0]; + } + for (int i = 0; i < fList.length; i++) { + realOriginalList.add(fList[i].getAbsolutePath() + "$" + getLastModifiedTime(fList[i]) + "$" + ((fList[i].length() / 1024) > 0 ? (fList[i].length() / 1024) : 1) + "KB"); + writeLog("ORI_" + fList[i].getAbsolutePath() + "$" + getLastModifiedTime(fList[i]) + "$" + ((fList[i].length() / 1024) > 0 ? (fList[i].length() / 1024) : 1) + "KB"); + } + + originalList = new ArrayList(realOriginalList); + writeLog("START"); + setDaemon(true); + checkAndConfigure(); + //log.debug("EgovFileMntrg end"); + } + + /** + *

    + * 감시 하고자 하는 파일의 변경 유무를 체크 하고자 하는 delay 초를 set. + *

    + * + * @param delay 감시 주기 초 + */ + public void setDelay(long delay) { + this.delay = delay; + } + + /** + *

    + * 해당 파일의 변경시 작업 할 내용을 기술 할 추상(abstract) 메소드 + *

    + */ + //abstract protected void doOnChange(); + protected void doOnChange(List changedList) { + //log.debug("doOnChange() start"); + for (int i = 0; i < changedList.size(); i++) { + writeLog((String) changedList.get(i)); + } + changedList.clear(); //직전리스트와 비교해서 변경된 내역은 로그처리한 후 초기화한다. + originalList = new ArrayList(currentList); //현재리스트가 직전리스트가 된다.(새로 생성해야 함!) + cnt++; + + //log.debug("doOnChange() end"); + } + + /** + *

    + * 파일의 변경 유무를 체크하는 메소드 + *

    + */ + protected void checkAndConfigure() { + //log.debug("checkAndConfigure start"); + try { + currentList.clear(); + file = new File(filename); + // 현재정보를 ArrayList에 담는다. + File[] fList = file.listFiles(); + //2017.03.06 조성원 시큐어코딩(ES)-Null Pointer 역참조[CWE-476] + if(fList == null){ + fList = new File[0]; + } + + for (int i = 0; i < fList.length; i++) { + currentList.add(fList[i].getAbsolutePath() + "$" + getLastModifiedTime(fList[i]) + "$" + ((fList[i].length() / 1024) > 0 ? (fList[i].length() / 1024) : 1) + "KB"); + } + /* + for(int i = 0; i 0) { + //log.debug("change occur , changed file check count:"+cnt+ " , changed file count:"+changedList.size()); + doOnChange(changedList); + } + + if (isEnd()) { + //log.debug("Thread Process END !!! (CNT :"+cnt+")"); + interrupted = true; + } + //log.debug("checkAndConfigure end"+changedList.size()); + } + + /** + *

    + * 파일의 변경 유무의 체크를 주기적 초 단위로 실행 시키는 메소드 + *

    + */ + public void run() { + while (!interrupted) { + try { + Thread.sleep(delay); + } catch (InterruptedException e) { + EgovBasicLogger.ignore("Interrupted Exception", e); + } + checkAndConfigure(); + } + if (interrupted) { + this.interrupt(); + } + } + + /** + *
    +	 * Comment : 디렉토리(파일)의 최종 수정시간를 확인한다.(기본로케일 java.util.Locale.KOREA 기준)
    +	 * 
    + * @param File f 수정일자를 확인할 대상파일 + * @return String result 최종수정일자를 문자열로 리턴한다. + */ + public static String getLastModifiedTime(File f) { + long date = f.lastModified(); + java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyyMMdd:HH:mm:ss", java.util.Locale.KOREA); + return dateFormat.format(new java.util.Date(date)); + } + + /** + *
    +	 * Comment : 디렉토리(파일)의  로그정보를 기록한다.
    +	 * 
    + * @param String logStr 추가할 로그정보(라인단위) + * @return boolean result 로그추가 성공여부 + */ + public boolean writeLog(String logStr) { + boolean result = false; + + FileWriter fWriter = null; + BufferedWriter bWriter = null; + BufferedReader br = null; + try { + fWriter = new FileWriter(logFile, true); + bWriter = new BufferedWriter(fWriter); + br = new BufferedReader(new StringReader(logStr)); + String line = ""; + while ((line = br.readLine()) != null) { + if (line.length() <= MAX_STR_LEN) { + bWriter.write(line + "\n", 0, line.length() + 1); + } + } + result = true; + } catch (IOException e) { + throw new RuntimeException("File IO exception", e); + } finally { + EgovResourceCloseHelper.close(br, bWriter, fWriter); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리감시 종료여부를 확인한다. 해당 디렉토리에 대한 로그파일이 삭제된 경우는 감시를 종료한다.
    +	 * 
    + * @return boolean isEnd 감시종료여부 중단하려면 true 리턴, 계속하려면 false 리턴 + */ + public boolean isEnd() { + //log.debug("isEnd start"); + boolean isEnd = false; + String lastStr = ""; + BufferedReader br = null; + FileReader fr = null; + + try { + if (logFile.exists()) { + //로그파일을 읽어서 마지막 끝에 END가 있으면 종료된것임 + + fr = new FileReader(logFile); + br = new BufferedReader(fr); + //int ch = 0; + String line = ""; + while ((line = br.readLine()) != null) { + if (line.length() <= MAX_STR_LEN) { + lastStr = line; + } + } + if (lastStr.equals("END")) { + isEnd = true; + } + } else { + //로그파일이 없는 경우(삭제된 경우)도 종료한다. + isEnd = true; + } + } catch (IOException e) { + throw new RuntimeException("File IO exception", e); + } finally { + EgovResourceCloseHelper.close(br, fr); + } + return isEnd; + } +} diff --git a/src/main/java/egovframework/com/utl/sim/service/EgovFileScrty.java b/src/main/java/egovframework/com/utl/sim/service/EgovFileScrty.java new file mode 100644 index 00000000..556eed8a --- /dev/null +++ b/src/main/java/egovframework/com/utl/sim/service/EgovFileScrty.java @@ -0,0 +1,303 @@ +/** + * Class Name : EgovFileScrty.java + * Description : Base64인코딩/디코딩 방식을 이용한 데이터를 암호화/복호화하는 Business Interface class + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.02.04 박지욱 최초 생성 + * + * @author 공통 서비스 개발팀 박지욱 + * @since 2009. 02. 04 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ +package egovframework.com.utl.sim.service; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStreamReader; +import java.security.MessageDigest; + +import egovframework.com.cmm.util.EgovResourceCloseHelper; + +import org.apache.commons.codec.binary.Base64; + +public class EgovFileScrty { + + // 파일구분자 + static final char FILE_SEPARATOR = File.separatorChar; + + static final int BUFFER_SIZE = 1024; + + /** + * 파일을 암호화하는 기능 + * + * @param String source 암호화할 파일 + * @param String target 암호화된 파일 + * @return boolean result 암호화여부 True/False + * @exception Exception + */ + public static boolean encryptFile(String source, String target) throws Exception { + + // 암호화 여부 + boolean result = false; + + String sourceFile = source.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + String targetFile = target.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(sourceFile); + + BufferedInputStream input = null; + BufferedOutputStream output = null; + + byte[] buffer = new byte[BUFFER_SIZE]; + + try { + if (srcFile.exists() && srcFile.isFile()) { + + input = new BufferedInputStream(new FileInputStream(srcFile)); + output = new BufferedOutputStream(new FileOutputStream(targetFile)); + + int length = 0; + while ((length = input.read(buffer)) >= 0) { + byte[] data = new byte[length]; + System.arraycopy(buffer, 0, data, 0, length); + output.write(encodeBinary(data).getBytes()); + output.write(System.getProperty("line.separator").getBytes()); + } + result = true; + } + } finally { + EgovResourceCloseHelper.close(input, output); + } + + return result; + } + + /** + * 파일을 복호화하는 기능 + * + * @param String source 복호화할 파일 + * @param String target 복호화된 파일 + * @return boolean result 복호화여부 True/False + * @exception Exception + */ + public static boolean decryptFile(String source, String target) throws Exception { + + // 복호화 여부 + boolean result = false; + + String sourceFile = source.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + String targetFile = target.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(sourceFile); + + BufferedReader input = null; + BufferedOutputStream output = null; + + //byte[] buffer = new byte[BUFFER_SIZE]; + String line = null; + + try { + if (srcFile.exists() && srcFile.isFile()) { + + input = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile))); + output = new BufferedOutputStream(new FileOutputStream(targetFile)); + + while ((line = input.readLine()) != null) { + byte[] data = line.getBytes(); + output.write(decodeBinary(new String(data))); + } + + result = true; + } + } finally { + EgovResourceCloseHelper.close(input, output); + } + + return result; + } + + /** + * 데이터를 암호화하는 기능 + * + * @param byte[] data 암호화할 데이터 + * @return String result 암호화된 데이터 + * @exception Exception + */ + public static String encodeBinary(byte[] data) throws Exception { + if (data == null) { + return ""; + } + + return new String(Base64.encodeBase64(data)); + } + + /** + * 데이터를 암호화하는 기능 + * + * @param String data 암호화할 데이터 + * @return String result 암호화된 데이터 + * @exception Exception + */ + @Deprecated + public static String encode(String data) throws Exception { + return encodeBinary(data.getBytes()); + } + + /** + * 데이터를 복호화하는 기능 + * + * @param String data 복호화할 데이터 + * @return String result 복호화된 데이터 + * @exception Exception + */ + public static byte[] decodeBinary(String data) throws Exception { + return Base64.decodeBase64(data.getBytes()); + } + + /** + * 데이터를 복호화하는 기능 + * + * @param String data 복호화할 데이터 + * @return String result 복호화된 데이터 + * @exception Exception + */ + @Deprecated + public static String decode(String data) throws Exception { + return new String(decodeBinary(data)); + } + + /** + * 비밀번호를 암호화하는 기능(복호화가 되면 안되므로 SHA-256 인코딩 방식 적용). + * + * deprecated : 보안 강화를 위하여 salt로 ID를 지정하는 encryptPassword(password, id) 사용 + * + * @param String data 암호화할 비밀번호 + * @return String result 암호화된 비밀번호 + * @exception Exception + */ + @Deprecated + public static String encryptPassword(String data) throws Exception { + + if (data == null) { + return ""; + } + + byte[] plainText = null; // 평문 + byte[] hashValue = null; // 해쉬값 + plainText = data.getBytes(); + + MessageDigest md = MessageDigest.getInstance("SHA-256"); + + // 변경 시 기존 hash 값에 검증 불가.. => deprecated 시키고 유지 + /* + // Random 방식의 salt 추가 + SecureRandom ng = new SecureRandom(); + byte[] randomBytes = new byte[16]; + ng.nextBytes(randomBytes); + + md.reset(); + md.update(randomBytes); + + */ + hashValue = md.digest(plainText); + + /* + BASE64Encoder encoder = new BASE64Encoder(); + return encoder.encode(hashValue); + */ + return new String(Base64.encodeBase64(hashValue)); + } + + /** + * 비밀번호를 암호화하는 기능(복호화가 되면 안되므로 SHA-256 인코딩 방식 적용) + * + * @param password 암호화될 패스워드 + * @param id salt로 사용될 사용자 ID 지정 + * @return + * @throws Exception + */ + public static String encryptPassword(String password, String id) throws Exception { + + if (password == null) return ""; + if (id == null) return ""; // KISA 보안약점 조치 (2018-12-11, 신용호) + + byte[] hashValue = null; // 해쉬값 + + MessageDigest md = MessageDigest.getInstance("SHA-256"); + + md.reset(); + md.update(id.getBytes()); + + hashValue = md.digest(password.getBytes()); + + return new String(Base64.encodeBase64(hashValue)); + } + + /** + * 비밀번호를 암호화하는 기능(복호화가 되면 안되므로 SHA-256 인코딩 방식 적용) + * @param data 암호화할 비밀번호 + * @param salt Salt + * @return 암호화된 비밀번호 + * @throws Exception + */ + public static String encryptPassword(String data, byte[] salt) throws Exception { + + if (data == null) { + return ""; + } + + byte[] hashValue = null; // 해쉬값 + + MessageDigest md = MessageDigest.getInstance("SHA-256"); + + md.reset(); + md.update(salt); + + hashValue = md.digest(data.getBytes()); + + return new String(Base64.encodeBase64(hashValue)); + } + + /** + * 비밀번호를 암호화된 패스워드 검증(salt가 사용된 경우만 적용). + * + * @param data 원 패스워드 + * @param encoded 해쉬처리된 패스워드(Base64 인코딩) + * @return + * @throws Exception + */ + public static boolean checkPassword(String data, String encoded, byte[] salt) throws Exception { + byte[] hashValue = null; // 해쉬값 + + MessageDigest md = MessageDigest.getInstance("SHA-256"); + + md.reset(); + md.update(salt); + hashValue = md.digest(data.getBytes()); + + return MessageDigest.isEqual(hashValue, Base64.decodeBase64(encoded.getBytes())); + } + + /* + public static void main(String[] args) { + try { + String password = "abc"; + String salt = "def"; + + String first = encryptPassword(password, salt.getBytes()); + String second = encryptPassword(password, salt.getBytes()); + System.out.println(password + " => " + first + " : " + checkPassword(password, first, salt.getBytes())); + System.out.println(password + " => " + second + " : " + checkPassword(password, second, salt.getBytes())); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + */ +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/utl/sim/service/EgovFileTool.java b/src/main/java/egovframework/com/utl/sim/service/EgovFileTool.java new file mode 100644 index 00000000..c9eb9fec --- /dev/null +++ b/src/main/java/egovframework/com/utl/sim/service/EgovFileTool.java @@ -0,0 +1,2925 @@ +/** + * Class Name : EgovFileTool.java + * Description : 시스템 디렉토리 정보를 확인하여 제공하는 Business class + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.01.13 조재영 최초 생성 + * 2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + * 2017.03.03 조성원 시큐어코딩(ES)-Null Pointer 역참조[CWE-476] + * 2018.03.19 신용호 createDirectories() 추가 : 여러 레벨의 디렉토리를 한번에 생성 + * + * + * @author 공통 서비스 개발팀 조재영,박지욱 + * @since 2009. 01. 13 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ +package egovframework.com.utl.sim.service; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.StringReader; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Vector; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import egovframework.com.cmm.EgovWebUtil; +import egovframework.com.cmm.service.EgovProperties; +import egovframework.com.cmm.service.Globals; +import egovframework.com.cmm.util.EgovResourceCloseHelper; +import egovframework.com.utl.fcc.service.EgovStringUtil; + +public class EgovFileTool { + + // 파일사이즈 1K + static final long BUFFER_SIZE = 1024L; + // 파일구분자 + static final char FILE_SEPARATOR = File.separatorChar; + // 윈도우시스템 파일 접근권한 + static final char ACCESS_READ = 'R'; // 읽기전용 + static final char ACCESS_SYS = 'S'; // 시스템 + static final char ACCESS_HIDE = 'H'; // 숨김 + // 최대 문자길이 + static final int MAX_STR_LEN = 1024; + + // LOGGER + private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileTool.class); + + /** + *
    +	 * Comment : 디렉토리 존재여부를 확인한다. (단일디렉토리 확인용)
    +	 * 
    + * + * @param String targetDirPath 존재여부를 확인할 디렉토리의 절대경로 + * @return String result 존재하는 디렉토리 경로를 리턴한다. + */ + public static boolean getExistDirectory(String targetDirPath) throws Exception { + + // 인자값 유효하지 않은 경우 공백 리턴 + if (targetDirPath == null || targetDirPath.equals("")) { + return false; + } + + boolean result = false; + File f = new File(EgovWebUtil.filePathBlackList(targetDirPath)); + if (f.exists() && f.isDirectory()) { + result = true; + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리 존재여부를 확인한다. (하위디렉토리 확인용)
    +	 * 
    + * + * @param String baseDirPath 존재여부를 확인할 디렉토리명의 기준경로 + * @param String targetDirPath 확인할 대상 디렉토리. baseDirPath 하위에서 존재여부를 확인한다. + * @param int cnt 확인할 디렉토리 갯수 (0보다 큰값이 입력되어야 한다. -1 입력시 21474846까지 찾도록 지원함 ) + * @return String result 존재하는 디렉토리 경로를 리턴한다. + */ + public static List getExistDirectory(String baseDirPath, String targetDirPath, int cnt) throws Exception { + + // 인자값 유효하지 않은 경우 빈 ArrayList 리턴 + if (baseDirPath == null || baseDirPath.equals("") || targetDirPath == null || targetDirPath.equals("") || cnt == 0) { + return new ArrayList(); + } + int dirCnt = 0; + if (cnt < 0) { + dirCnt = 21474846; + } else { + dirCnt = cnt; + } + + // 찾은 결과를 전달할 ArrayList + List result = new ArrayList(); + // 하위의 결과를 임시 보관할 ArrayList + List subResult = new ArrayList(); + // 현재경로(baseDirPath)에서 발견된 targetDirPath 갯수 + int dirFindCnt = 0; + boolean isExist = false; + String[] dirList = null; + String subDirPath = ""; + File f = null; + + f = new File(EgovWebUtil.filePathBlackList(baseDirPath)); + isExist = f.exists(); + + if (isExist) { + dirList = f.list(); + } + + for (int i = 0; dirList != null && i < dirList.length; i++) { + //log.debug("dirList["+i+"]:"+dirList[i] +"--->"+baseDirPath+"/"+dirList[i]); + subDirPath = baseDirPath + "/" + dirList[i]; + //log.debug("_"+targetDirPath+"_"); + //log.debug("_"+dirList[i]+"_"); + + f = new File(EgovWebUtil.filePathBlackList(subDirPath)); + + //현재경로(baseDirPath)에서 검색 + if (targetDirPath.equals(dirList[i])) { + // 중간에 발견하면 반복체크는 종료한다.(결과요청 갯수에 도달한 경우에 한해) - 이곳에서 종료되면 이후 하위에서 체크할 필요가 없다. + if (new File(EgovWebUtil.filePathBlackList(baseDirPath) + "/" + dirList[i]).isDirectory()) { + dirFindCnt++; + result.add(baseDirPath + "/" + dirList[i]); + if (dirFindCnt == dirCnt) { + break; + } + } + } + + //현재경로(baseDirPath)에서 발견된 하위 경로에서 반복하여 재귀적으로 검색 + int subCnt = dirCnt - dirFindCnt; + if (f.isDirectory()) { + //log.debug("f.isDirectory():"+f.isDirectory()); + subResult = getExistDirectory(subDirPath, targetDirPath, subCnt); + // 하위에서 발견된 디렉토리 갯수를 현재까지 찾은 디렉토리갯수에 추가한다. + dirFindCnt = dirFindCnt + subResult.size(); + // 하위에서 모두 발견된 경우 반복 체크는 종료한다. + if (dirCnt <= dirFindCnt) { + for (int j = 0; j < subResult.size(); j++) { + result.add((String) subResult.get(j)); + } + + break; + } else { + for (int j = 0; j < subResult.size(); j++) { + result.add((String) subResult.get(j)); + } + } + } + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리 존재여부를 확인한다. (생성일자를 조건으로 조건구간내 포함되는지 확인)
    +	 * 
    + * + * @param String targetDirPath 존재여부를 확인할 디렉토리의 절대경로 + * @param String fromDate 생성일자 조건에 해당하는 시작일자(YYYYMMDD 형태로 입력) + * @param String toDate 생성일자 조건에 해당하는 종료일자(YYYYMMDD 형태로 입력) + * @return String result 존재하는 디렉토리 경로를 리턴한다. + */ + public static boolean getExistDirectory(String targetDirPath, String fromDate, String toDate) throws Exception { + + // 인자값 유효하지 않은 경우 공백 리턴 + if (targetDirPath == null || targetDirPath.equals("") || fromDate == null || fromDate.equals("") || toDate == null || toDate.equals("")) { + return false; + } + + boolean result = false; + String lastModifyedDate = ""; + File f = null; + + f = new File(EgovWebUtil.filePathBlackList(targetDirPath)); + lastModifyedDate = getLastModifiedDateFromFile(f); + //log.debug("getLastModifiedDateFromFile(f):"+lastModifyedDate); + if (Integer.parseInt(lastModifyedDate) >= Integer.parseInt(fromDate) && Integer.parseInt(lastModifyedDate) <= Integer.parseInt(toDate)) { + result = true; + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리 존재여부를 확인한다. (생성자를 조건으로 일치하는지 확인)
    +	 * 
    + * + * @param String targetDirPath 존재여부를 확인할 디렉토리의 절대경로 + * @param String ownerName 생성자명(계정정보) + * @return String result 존재하는 디렉토리 경로를 리턴한다. + */ + public static boolean getExistDirectory(String targetDirPath, String ownerName) throws Exception { + + // 인자값 유효하지 않은 경우 공백 리턴 + if (targetDirPath == null || targetDirPath.equals("") || ownerName == null || ownerName.equals("")) { + return false; + } + + boolean result = false; + //String tmp = ""; + + // 실행할 명령을 프로퍼티 파일에서 확인한다. + //Process p = null; + + String realOwner = getOwner(targetDirPath); + if (ownerName.equals(realOwner)) { + result = true; + } else { + result = false; + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리(파일)의 최종 수정일자를 확인한다. (기본로케일 java.util.Locale.KOREA 기준)
    +	 * 
    + * + * @param File f 수정일자를 확인할 대상파일 + * @return String result 최종수정일자를 문자열로 리턴한다. + */ + public static String getLastModifiedDateFromFile(File f) { + + String result = ""; + + if (f.exists()) { + long date = f.lastModified(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", java.util.Locale.KOREA); + result = dateFormat.format(new java.util.Date(date)); + } else { + result = ""; + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리(파일)의 최종 수정일자를 확인한다. (기본로케일 java.util.Locale.KOREA 기준)
    +	 * 
    + * + * @param String filePath 수정일자를 확인할 대상파일경로 + * @return String result 최종수정일자를 문자열로 리턴한다. + */ + public static String getLastModifiedDateFromFile(String filePath) { + + File f = null; + String result = ""; + f = new File(EgovWebUtil.filePathBlackList(filePath)); + result = getLastModifiedDateFromFile(f); + + return result; + } + + /** + *
    +	 * Comment : 조건구간내에 생성된 디렉토리 목록을 조회한다.
    +	 * 
    + * + * @param String filePath 하위디렉토리를 확인할 경로 + * @param String fromDate 조건시작일 + * @param String toDate 조건 종료일 + * @return ArrayList result 조건구간내에 생성된 디렉토리 목록을 리턴한다. + */ + public static List getLastDirectoryForModifiedDate(String baseDirPath, String fromDate, String toDate) { + + // 인자값 유효하지 않은 경우 빈 ArrayList 리턴 + if (baseDirPath == null || baseDirPath.equals("") || fromDate == null || fromDate.equals("") || toDate == null || toDate.equals("")) { + return new ArrayList(); + } + + File f = null; + File childFile = null; + String[] subDirList; + String subDirPath = ""; + List childResult = null; + List result = new ArrayList(); + + f = new File(EgovWebUtil.filePathBlackList(baseDirPath)); + subDirList = f.list(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (subDirList != null) { + for (int i = 0; i < subDirList.length; i++) { + + subDirPath = baseDirPath + "/" + subDirList[i]; + childFile = new File(EgovWebUtil.filePathBlackList(subDirPath)); + if (childFile.isDirectory()) { + //childResult = getLastDirectoryForModifiedDate(subDirPath , fromDate, toDate); + String lastModifyedDate = getLastModifiedDateFromFile(childFile); + if (Integer.parseInt(lastModifyedDate) >= Integer.parseInt(fromDate) && Integer.parseInt(lastModifyedDate) <= Integer.parseInt(toDate)) { + result.add(baseDirPath + "/" + subDirList[i]); + } + childResult = getLastDirectoryForModifiedDate(baseDirPath + "/" + subDirList[i], fromDate, toDate); + // 하위디렉토리의 결과를 추가한다. + for (int j = 0; j < childResult.size(); j++) { + result.add((String) childResult.get(j)); + } + } + } + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리(파일)의 읽기권한을 확인한다.
    +	 * 
    + * + * @param String filePath 읽기권한을 확인할 대상파일경로 + * @return boolean result 읽기가능하면 true를 리턴한다. 권한이 없어가 파일이 없는 경우는 false를 리턴한다. + */ + public static boolean canRead(String filePath) { + + // 인자값 유효하지 않은 경우 빈 false 리턴 + if (filePath == null || filePath.equals("")) { + return false; + } + + File f = null; + boolean result = false; + f = new File(EgovWebUtil.filePathBlackList(filePath)); + if (f.exists()) { + result = f.canRead(); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리(파일)의 쓰기권한을 확인한다.(대상경로가 파일인 경우만 정보가 유효함)
    +	 * 
    + * + * @param String filePath 쓰기권한을 확인할 대상파일경로 + * @return boolean result 쓰기가능하면 true를 리턴한다. 권한이 없어가 파일이 없는 경우는 false를 리턴한다. + */ + public static boolean canWrite(String filePath) { + + // 인자값 유효하지 않은 경우 빈 false 리턴 + if (filePath == null || filePath.equals("")) { + return false; + } + + File f = null; + boolean result = false; + f = new File(EgovWebUtil.filePathBlackList(filePath)); + if (f.exists()) { + result = f.canWrite(); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리(파일)의 이름을  확인한다.
    +	 * 
    + * + * @param String filePath 이름을 확인할 대상경로 + * @return String result 이름을 리턴한다. 존재하지 않는 경우는 블랭크를 리턴한다. + */ + public static String getName(String filePath) { + + // 인자값 유효하지 않은 경우 빈 false 리턴 + if (filePath == null || filePath.equals("")) { + return ""; + } + + File f = null; + String result = ""; + + f = new File(EgovWebUtil.filePathBlackList(filePath)); + if (f.exists()) { + result = f.getName(); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리(파일)를 삭제한다. (파일,디렉토리 구분없이 존재하는 경우 무조건 삭제한다)
    +	 * 
    + * + * @param filePathToBeDeleted 삭제하고자 하는 파일의 절대경로 + 파일명 + * @return 성공하면 삭제된 절대경로, 아니면블랭크 + */ + + public static String deletePath(String filePath) { + File file = new File(EgovWebUtil.filePathBlackList(filePath)); + String result = ""; + + if (file.exists()) { + result = file.getAbsolutePath(); + if (!file.delete()) { + result = ""; + } + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리를 생성한다.
    +	 * 
    + * + * @param dirPath 생성하고자 하는 절대경로 + * @return 성공하면 생성된 절대경로, 아니면 블랭크 + */ + + public static String createDirectory(String dirPath) { + File file = new File(EgovWebUtil.filePathBlackList(dirPath)); + String result = ""; + try { + if (!file.exists()) { + //2017.02.08 이정은 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + if(file.createNewFile()){ + LOGGER.debug("[file.createNewFile] file : Path Creation Success"); + }else{ + LOGGER.error("[file.createNewFile] file : Path Creation Fail"); + } + file.getAbsolutePath(); + } + + } catch (IOException e) { + throw new RuntimeException(e); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리를 생성한다. (여러 레벨의 경로를 동시에 생성)
    +	 * 
    + * + * @param dirPath 생성하고자 하는 절대경로 + * @return 성공하면 생성된 절대경로, 아니면 블랭크 + */ + public static String createDirectories(String dirPath) { + File file = new File(EgovWebUtil.filePathBlackList(dirPath)); + String result = ""; + + if (!file.exists()) { + if(file.mkdirs()) { + LOGGER.debug("[file.mkdirs] file : Path Creation Success"); + }else{ + LOGGER.error("[file.mkdirs] file : Path Creation Fail"); + } + file.getAbsolutePath(); + } + + return result; + } + + /** + * 디렉토리에 파일이 존재하는지 체크하는 기능 + * + * @param String dir 디렉토리 + * @param String file 파일 + * @return boolean result 존재여부 True / False + * @exception Exception + */ + public static boolean checkFileExstByName(String dir, String file) throws Exception { + + // 파일 존재 여부 + boolean result = false; + + // 디렉토리 오픈 + String drctry = dir.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcDrctry = new File(EgovWebUtil.filePathBlackList(drctry)); + + // 디렉토리이면서, 존재하면 + if (srcDrctry.exists() && srcDrctry.isDirectory()) { + + // 디렉토리 안 목록을 조회한다. (파일명) + File[] fileArray = srcDrctry.listFiles(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileArray != null) { + List list = getSubFilesByName(fileArray, file); + if (list != null && list.size() > 0) { + result = true; + } + } + } + + return result; + } + + /** + * 확장자별로 디렉토리에 파일이 존재하는지 체크하는 기능 + * + * @param String dir 디렉토리 + * @param String eventn 확장자명(.txt 형태 입력) + * @return boolean result 존재여부 True / False + * @exception Exception + */ + public static boolean checkFileExstByExtnt(String dir, String eventn) throws Exception { + + // 파일 존재 여부 + boolean result = false; + + // 디렉토리 오픈 + String drctry = dir.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcDrctry = new File(EgovWebUtil.filePathBlackList(drctry)); + + // 디렉토리이면서, 존재하면 + if (srcDrctry.exists() && srcDrctry.isDirectory()) { + + // 디렉토리 안 목록을 조회한다. (확장자별) + File[] fileArray = srcDrctry.listFiles(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileArray != null) { + List list = getSubFilesByExtnt(fileArray, eventn); + if (list != null && list.size() > 0) { + result = true; + } + } + } + + return result; + } + + /** + * 디렉토리에 생성자별 파일이 존재하는지 체크하는 기능 + * + * @param String dir 디렉토리 + * @param String owner 생성자 + * @return boolean result 존재여부 True / False + * @exception Exception + */ + public static boolean checkFileExstByOwner(String dir, String owner) throws Exception { + + // 파일 존재 여부 + boolean result = false; + + // 디렉토리 오픈 + String drctry = dir.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcDrctry = new File(EgovWebUtil.filePathBlackList(drctry)); + + // 디렉토리이면서, 존재하면 + if (srcDrctry.exists() && srcDrctry.isDirectory()) { + + // 디렉토리 안 목록을 조회한다. (생성자) + File[] fileArray = srcDrctry.listFiles(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileArray != null) { + List list = getSubFilesByOwner(fileArray, owner); + if (list != null && list.size() > 0) { + result = true; + } + } + } + + return result; + } + + /** + * 수정기간별로 디렉토리에 파일이 존재하는지 체크하는 기능 + * + * @param String dir 디렉토리 + * @param String updtFrom 수정일자From(YYYYMMDD 형태로 입력) + * @param String updtTo 수정일자To(YYYYMMDD 형태로 입력) + * @return boolean result 존재여부 True / False + * @exception Exception + */ + public static boolean checkFileExstByUpdtPd(String dir, String updtFrom, String updtTo) throws Exception { + + // 파일 존재 여부 + boolean result = false; + + // 디렉토리 오픈 + String drctry = dir.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcDrctry = new File(EgovWebUtil.filePathBlackList(drctry)); + + // 디렉토리이면서, 존재하면 + if (srcDrctry.exists() && srcDrctry.isDirectory()) { + + // 디렉토리 안 목록을 조회한다. (수정기간별) + File[] fileArray = srcDrctry.listFiles(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileArray != null) { + List list = getSubFilesByUpdtPd(fileArray, updtFrom, updtTo); + if (list != null && list.size() > 0) { + result = true; + } + } + } + + return result; + } + + /** + * 사이즈별로 디렉토리에 파일이 존재하는지 체크하는 기능 + * + * @param String dir 디렉토리 + * @param long sizeFrom 사이즈From (KB) + * @param long sizeTo 사이즈To (KB) + * @return boolean result 존재여부 True / False + * @exception Exception + */ + public static boolean checkFileExstBySize(String dir, long sizeFrom, long sizeTo) throws Exception { + + // 파일 존재 여부 + boolean result = false; + + // 디렉토리 오픈 + String drctry = dir.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcDrctry = new File(EgovWebUtil.filePathBlackList(drctry)); + + // 디렉토리이면서, 존재하면 + if (srcDrctry.exists() && srcDrctry.isDirectory()) { + + // 디렉토리 안 목록을 조회한다. (사이즈별) + File[] fileArray = srcDrctry.listFiles(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileArray != null) { + List list = getSubFilesBySize(fileArray, sizeFrom, sizeTo); + if (list != null && list.size() > 0) { + result = true; + } + } + } + + return result; + } + + /** + * 디렉토리 내부 하위목록들 중에서 파일을 찾는 기능(모든 목록 조회) + * + * @param File[] fileArray 파일목록 + * @return ArrayList list 파일목록(절대경로) + * @exception Exception + */ + public static List getSubFilesByAll(File[] fileArray) throws Exception { + + ArrayList list = new ArrayList(); + + for (int i = 0; i < fileArray.length; i++) { + // 디렉토리 안에 디렉토리면 그 안의 파일목록에서 찾도록 재귀호출한다. + if (fileArray[i].isDirectory()) { + File[] tmpArray = fileArray[i].listFiles(); + list.addAll(getSubFilesByAll(tmpArray)); + // 파일이면 담는다. + } else { + list.add(fileArray[i].getAbsolutePath()); + } + } + + return list; + } + + /** + * 디렉토리 내부 하위목록들 중에서 파일을 찾는 기능(파일명) + * + * @param File[] fileArray 파일목록 + * @param String file 파일명 + * @return ArrayList list 파일목록(절대경로) + * @exception Exception + */ + public static List getSubFilesByName(File[] fileArray, String file) throws Exception { + + List list = new ArrayList(); + + for (int i = 0; i < fileArray.length; i++) { + // 디렉토리 안에 디렉토리면 그 안의 파일목록에서 찾도록 재귀호출한다. + if (fileArray[i].isDirectory()) { + File[] tmpArray = fileArray[i].listFiles(); + list.addAll(getSubFilesByName(tmpArray, file)); + // 파일이면 파일명이 같은지 비교한다. + } else { + if (fileArray[i].getName().equals(file)) { + list.add(fileArray[i].getAbsolutePath()); + } + } + } + + return list; + } + + /** + * 디렉토리 내부 하위목록들 중에서 파일을 찾는 기능(확장자별) + * + * @param File[] fileArray 파일목록 + * @param String extnt 확장자 + * @return ArrayList list 파일목록(절대경로) + * @exception Exception + */ + public static List getSubFilesByExtnt(File[] fileArray, String extnt) throws Exception { + + List list = new ArrayList(); + + for (int i = 0; i < fileArray.length; i++) { + // 디렉토리 안에 디렉토리면 그 안의 파일목록에서 찾도록 재귀호출한다. + if (fileArray[i].isDirectory()) { + File[] tmpArray = fileArray[i].listFiles(); + list.addAll(getSubFilesByExtnt(tmpArray, extnt)); + // 파일이면 확장자명이 들어있는지 비교한다. + } else { + if (fileArray[i].getName().indexOf(extnt) != -1) { + list.add(fileArray[i].getAbsolutePath()); + } + } + } + + return list; + } + + /** + * 디렉토리 내부 하위목록들 중에서 파일을 찾는 기능(최종수정기간별) + * + * @param File[] fileArray 파일목록 + * @param String updtFrom 수정일자From(YYYYMMDD 형태로 입력) + * @param String updtTo 수정일자To(YYYYMMDD 형태로 입력) + * @return ArrayList list 파일목록(절대경로) + * @exception Exception + */ + public static List getSubFilesByUpdtPd(File[] fileArray, String updtFrom, String updtTo) throws Exception { + + List list = new ArrayList(); + + for (int i = 0; i < fileArray.length; i++) { + // 디렉토리 안에 디렉토리면 그 안의 파일목록에서 찾도록 재귀호출한다. + if (fileArray[i].isDirectory()) { + File[] tmpArray = fileArray[i].listFiles(); + list.addAll(getSubFilesByUpdtPd(tmpArray, updtFrom, updtTo)); + // 파일이면 수정기간내에 존재하는지 비교한다. + } else { + // 파일의 최종수정일자 조회 + long date = fileArray[i].lastModified(); + java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyyMMdd", java.util.Locale.KOREA); + String lastUpdtDate = dateFormat.format(new java.util.Date(date)); + // 수정기간 내에 존재하는지 확인 + if (Integer.parseInt(lastUpdtDate) >= Integer.parseInt(updtFrom) && Integer.parseInt(lastUpdtDate) <= Integer.parseInt(updtTo)) { + list.add(fileArray[i].getAbsolutePath()); + } + } + } + + return list; + } + + /** + * 디렉토리 내부 하위목록들 중에서 파일을 찾는 기능(사이즈별) + * + * @param File[] fileArray 파일목록 + * @param long sizeFrom 사이즈From(KB) + * @param long sizeTo 사이즈To(KB) + * @return ArrayList list 파일목록(절대경로) + * @exception Exception + */ + public static List getSubFilesBySize(File[] fileArray, long sizeFrom, long sizeTo) throws Exception { + + List list = new ArrayList(); + + for (int i = 0; i < fileArray.length; i++) { + // 디렉토리 안에 디렉토리면 그 안의 파일목록에서 찾도록 재귀호출한다. + if (fileArray[i].isDirectory()) { + File[] tmpArray = fileArray[i].listFiles(); + list.addAll(getSubFilesBySize(tmpArray, sizeFrom, sizeTo)); + // 파일이면, 사이즈내에 존재하는지 비교한다. + } else { + // 파일의 사이즈 조회 + long size = fileArray[i].length(); + // 사이즈 내에 존재하는지 확인 + if (size >= (sizeFrom * BUFFER_SIZE) && size <= (sizeTo * BUFFER_SIZE)) { + list.add(fileArray[i].getAbsolutePath()); + } + } + } + + return list; + } + + /** + * 디렉토리 내부 하위목록들 중에서 파일을 찾는 기능(생성자별) + * + * @param File[] fileArray 파일목록 + * @param String creator 생성자 + * @return ArrayList list 파일목록(절대경로) + * @exception Exception + */ + public static List getSubFilesByOwner(File[] fileArray, String owner) throws Exception { + + List list = new ArrayList(); + + for (int i = 0; i < fileArray.length; i++) { + // 디렉토리 안에 디렉토리면 그 안의 파일목록에서 찾도록 재귀호출한다. + if (fileArray[i].isDirectory()) { + File[] tmpArray = fileArray[i].listFiles(); + List list1 = getSubFilesByOwner(tmpArray, owner); + if (list1 != null) + list.addAll(list1); + + // 파일이면, 생성자가 같은지 비교한다. + } else { + // 파일 생성자 조회 + String fullpath = EgovWebUtil.filePathBlackList(fileArray[i].getAbsolutePath()); + Process p = null; + if (Globals.OS_TYPE.equals("UNIX")) { + String[] command = { EgovProperties.getProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".getDrctryByOwner"), + fullpath.substring(0, fullpath.lastIndexOf("/")), fullpath.substring(fullpath.lastIndexOf("/"), fullpath.length()), owner }; + p = Runtime.getRuntime().exec(command); + p.waitFor(); + } else if (Globals.OS_TYPE.equals("WINDOWS")) { + String command = EgovProperties.getProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".getDrctryByOwner"); + p = Runtime.getRuntime().exec(command); + p.waitFor(); + } + //프로세스 에러시 종료 + if (p != null && p.exitValue() != 0) { + BufferedReader b_err = new BufferedReader(new InputStreamReader(p.getErrorStream())); + try { + while (b_err.ready()) { + //String line = b_err.readLine(); + //if (line.length() <= MAX_STR_LEN) log.debug("ERR\n" + line); + } + } finally { + EgovResourceCloseHelper.close(b_err); + } + } + //프로세스 실행 성공시 결과 확인 + else { + BufferedReader b_out = null; + try { + //2017.03.03 조성원 시큐어코딩(ES)-Null Pointer 역참조[CWE-476] + if(p != null){ + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + while (b_out.ready()) { + // 결과문자가 있으면 생성자가 일치하는 파일이 존재한다는 의미 + String tmpStr = b_out.readLine(); + if (tmpStr != null && "".equals(tmpStr) && tmpStr.length() <= MAX_STR_LEN) { + list.add(fileArray[i].getAbsolutePath()); + } + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + } + } + } + } + + return list; + } + + /** + *
    +	 * Comment : 디렉토리를 생성한다.
    +	 * 
    + * + * @param dirPath 생성하고자 하는 절대경로 + * @return 성공하면 새성된 절대경로, 아니면 블랭크 + */ + + public static String createNewDirectory(String dirPath) { + + // 인자값 유효하지 않은 경우 블랭크 리턴 + if (dirPath == null || dirPath.equals("")) { + return ""; + } + + File file = new File(EgovWebUtil.filePathBlackList(dirPath)); + String result = ""; + // 없으면 생성 + if (file.exists()) { + // 혹시 존재해도 파일이면 생성 - 생성되지 않는다.(아래는 실질적으로는 진행되지 않음) + if (file.isFile()) { + //new File(file.getParent()).mkdirs(); + if (file.mkdirs()) { + result = file.getAbsolutePath(); + } + } else { + result = file.getAbsolutePath(); + } + } else { + // 존해하지 않으면 생성 + if (file.mkdirs()) { + result = file.getAbsolutePath(); + } + } + + return result; + } + + /** + *
    +	 * Comment : 파일을 생성한다.
    +	 * 
    + * + * @param String fileName 파일의 절대경로 +파일명 + * @param String content 저장할 문자열입니다. c:/test/test1/test44.txt + * + */ + public static String createNewFile(String filePath) { + + // 인자값 유효하지 않은 경우 블랭크 리턴 + if (filePath == null || filePath.equals("")) { + return ""; + } + + File file = new File(EgovWebUtil.filePathBlackList(filePath)); + String result = ""; + try { + if (file.exists()) { + result = filePath; + } else { + // 존재하지 않으면 생성함 + //2017.02.08 이정은 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + if(new File(file.getParent()).mkdirs()){ + LOGGER.debug("[file.mkdirs] file : File Creation Success"); + }else{ + LOGGER.error("[file.mkdirs] file : File Creation Fail"); + } + + if (file.createNewFile()) { + result = file.getAbsolutePath(); + } + } + } catch (IOException e) { + throw new RuntimeException(e); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리를 삭제한다.
    +	 * 
    + * + * @param dirDeletePath 삭제하고자 하는디렉토리의 절대경로(파일의 경로가 들어오는 경우 삭제하지 않음) + * @return 성공하면 삭제된 절대경로, 아니면블랭크 + */ + + public static String deleteDirectory(String dirDeletePath) { + + // 인자값 유효하지 않은 경우 블랭크 리턴 + if (dirDeletePath == null || dirDeletePath.equals("")) { + return ""; + } + String result = ""; + File file = new File(EgovWebUtil.filePathBlackList(dirDeletePath)); + if (file.isDirectory()) { + String[] fileList = file.list(); + //소속된 파일을 모두 삭제 + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileList != null) { + for (int i = 0; i < fileList.length; i++) { + + //log.debug("fileList["+i+"] : "+ dirDeletePath +"/"+fileList[i]); + File f = new File(EgovWebUtil.filePathBlackList(dirDeletePath) + "/" + fileList[i]); + if (f.isFile()) { + //디렉토리에 속한 파일들을 모두 삭제한다. + //2017.02.08 이정은 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + if(f.delete()){ + LOGGER.debug("[file.delete] f : File Deletion Success"); + }else{ + LOGGER.error("[file.delete] f : File Deletion Fail"); + } + } else { + //디렉토리에 속한 하위 디렉토리들에 대한 삭제 명령을 재귀적으로 호출시킨다. + deleteDirectory(dirDeletePath + "/" + fileList[i]); + } + } + } + // 디렉토리에 속한 파일들과 하위 디렉토리가 삭제되었으면 디렉토리 자신을 삭제한다. + result = deletePath(dirDeletePath); + } else { + result = ""; + } + + return result; + } + + /** + *
    +	 * Comment : 파일을 삭제한다.
    +	 * 
    + * + * @param fileDeletePath 삭제하고자 하는파일의 절대경로 + * @return 성공하면 삭제된 파일의 절대경로, 아니면블랭크 + */ + + public static String deleteFile(String fileDeletePath) { + + // 인자값 유효하지 않은 경우 블랭크 리턴 + if (fileDeletePath == null || fileDeletePath.equals("")) { + return ""; + } + String result = ""; + File file = new File(EgovWebUtil.filePathBlackList(fileDeletePath)); + if (file.isFile()) { + result = deletePath(fileDeletePath); + } else { + result = ""; + } + + return result; + } + + /** + * 파일의 읽기권한을 체크한다. + * + * @param String file 파일 + * @return boolean result 읽기권한 True / False + * @exception Exception + */ + public static boolean checkReadAuth(String file) throws Exception { + + // 읽기가능여부 + boolean result = false; + + // 전달받은 경로를 통해 파일 인스턴스를 생성한다. + String file1 = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(EgovWebUtil.filePathBlackList(file1)); + + // 존재하는지 확인한다. + if (srcFile.exists()) { + // 읽기 가능한지 체크한다. + result = srcFile.canRead(); + } + + return result; + } + + /** + * 파일의 쓰기권한을 체크한다. + * + * @param String file 파일 + * @return boolean result 쓰기권한 True / False + * @exception Exception + */ + public static boolean checkWriteAuth(String file) throws Exception { + + // 쓰기가능여부 + boolean result = false; + + // 전달받은 경로를 통해 파일 인스턴스를 생성한다. + String file1 = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(EgovWebUtil.filePathBlackList(file1)); + + // 존재하는지 확인한다. + if (srcFile.exists()) { + // 쓰기 가능한지 체크한다. + result = srcFile.canWrite(); + } + + return result; + } + + /** + * 파일의 최종수정일자별 파일목록 조회하는 기능 + * + * @param String drctry 디렉토리 + * @param String updtDate 최종수정일자(YYYYMMDD 형태로 입력) + * @return ArrayList list 파일목록 + * @exception Exception + */ + public static List getFileListByDate(String drctry, String updtDate) throws Exception { + + // 결과 목록 + List list = null; + + // 디렉토리 오픈 + String drctry1 = drctry.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File file = new File(EgovWebUtil.filePathBlackList(drctry1)); + + // 디렉토리이며, 존재하면 최종수정일자가 같은 파일목록 조회 시작 + if (file.exists() && file.isDirectory()) { + File[] fileArray = file.listFiles(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileArray != null) { + list = getSubFilesByDate(fileArray, updtDate); + } + } + + return list; + } + + /** + * 파일의 최종수정기간내 파일목록 조회하는 기능 + * + * @param String drctry 디렉토리 + * @param String updtFrom 최종수정일자From(YYYYMMDD 형태로 입력) + * @param String updtTo 최종수정일자To(YYYYMMDD 형태로 입력) + * @return ArrayList list 파일목록 + * @exception Exception + */ + public static List getFileListByUpdtPd(String drctry, String updtFrom, String updtTo) throws Exception { + + // 결과 목록 + List list = null; + + // 디렉토리 오픈 + String drctry1 = drctry.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File file = new File(EgovWebUtil.filePathBlackList(drctry1)); + + // 디렉토리이며, 최종수정기간내 존재하는 파일목록 조회 시작 + if (file.exists() && file.isDirectory()) { + File[] fileArray = file.listFiles(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileArray != null) { + list = getSubFilesByUpdtPd(fileArray, updtFrom, updtTo); + } + } + + return list; + } + + /** + * 하위디렉토리 포함 최종수정일자가 같은 파일목록을 찾는 기능 + * + * @param File fileArray 파일목록 + * @param String updtDate 최종수정일자(YYYYMMDD 형태로 입력) + * @return ArrayList list 파일목록 + * @exception Exception + */ + public static List getSubFilesByDate(File[] fileArray, String updtDate) throws Exception { + + List list = new ArrayList(); + + for (int i = 0; i < fileArray.length; i++) { + // 디렉토리 안에 디렉토리면 그 안의 파일목록에서 찾도록 재귀호출한다. + if (fileArray[i].isDirectory()) { + File[] tmpArray = fileArray[i].listFiles(); + list.addAll(getSubFilesByDate(tmpArray, updtDate)); + // 파일이면 파일명이 같은지 비교한다. + } else { + // 파일의 최종수정일자 조회 + long date = fileArray[i].lastModified(); + java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyyMMdd", java.util.Locale.KOREA); + String lastUpdtDate = dateFormat.format(new java.util.Date(date)); + if (Integer.parseInt(lastUpdtDate) == Integer.parseInt(updtDate)) { + list.add(fileArray[i].getAbsolutePath()); + } + } + } + + return list; + } + + /** + * 파일을 특정 구분자(',', '|', 'TAB')로 파싱하는 기능 + * + * @param String parFile 파일 + * @param String parChar 구분자(',', '|', 'TAB') + * @param int parField 필드수 + * @return Vector parResult 파싱결과 구조체 + * @exception Exception + */ + public static Vector> parsFileByChar(String parFile, String parChar, int parField) throws Exception { + + // 파싱결과 구조체 + Vector> parResult = new Vector>(); + + // 파일 오픈 + String parFile1 = parFile.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File file = new File(EgovWebUtil.filePathBlackList(parFile1)); + BufferedReader br = null; + try { + // 파일이며, 존재하면 파싱 시작 + if (file.exists() && file.isFile()) { + + // 1. 파일 텍스트 내용을 읽어서 StringBuffer에 쌓는다. + br = new BufferedReader(new InputStreamReader(new FileInputStream(file))); + StringBuffer strBuff = new StringBuffer(); + String line = ""; + while ((line = br.readLine()) != null) { + if (line.length() < MAX_STR_LEN) + strBuff.append(line); + } + + // 2. 쌓은 내용을 특정 구분자로 파싱하여 String 배열로 얻는다. + String[] strArr = EgovStringUtil.split(strBuff.toString(), parChar); + + // 3. 필드 수 만큼 돌아가며 Vector 형태로 만든다. + int filedCnt = 1; + List arr = new ArrayList(); + for (int i = 0; i < strArr.length; i++) { + + if (parField != 1) { + if ((filedCnt % parField) == 1) { + if (strArr[i] != null) { + arr.add(strArr[i]); + } + if (i == (strArr.length - 1)) { + parResult.add(arr); + } + } else if ((filedCnt % parField) == 0) { + if (strArr[i] != null) { + arr.add(strArr[i]); + parResult.add(arr); + } + } else { + if (strArr[i] != null) { + arr.add(strArr[i]); + if (i == (strArr.length - 1)) { + parResult.add(arr); + } + } + } + } else { + arr = new ArrayList(); + if (strArr[i] != null) { + arr.add(strArr[i]); + } + parResult.add(arr); + } + + filedCnt++; + } + } + } finally { + EgovResourceCloseHelper.close(br); + } + + return parResult; + } + + /** + * 파일을 일정 길이로 파싱하는 기능 + * + * @param String parFile 파일 + * @param int[] parLen 각 필드의 길이 + * @param int parLine 읽어낼 라인수 + * @return Vector parResult 파싱결과 구조체 + * @exception Exception + */ + public static Vector> parsFileBySize(String parFile, int[] parLen, int parLine) throws Exception { + + // 파싱결과 구조체 + Vector> parResult = new Vector>(); + + // 파일 오픈 + String parFile1 = parFile.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File file = new File(EgovWebUtil.filePathBlackList(parFile1)); + BufferedReader br = null; + try { + // 파일이며, 존재하면 파싱 시작 + if (file.exists() && file.isFile()) { + + // 1. 입력된 라인수만큼 파일 텍스트 내용을 읽어서 String[]에 쌓는다. + br = new BufferedReader(new InputStreamReader(new FileInputStream(file))); + if (parLine < 0) { + parLine = 0; + } + String[] strArr = new String[parLine]; + String line = ""; + int readCnt = 0; + while ((line = br.readLine()) != null && readCnt < parLine) { + if (line.length() <= MAX_STR_LEN) + strArr[readCnt++] = line; + } + + // 2. Vector 형태로 만든다. + for (int i = 0; i < strArr.length; i++) { + String text = strArr[i]; + List arr = new ArrayList(); + int idx = 0; + boolean result = false; + for (int j = 0; j < parLen.length; j++) { + if (!result) { //if(result != true){ + String split = ""; + if (text.length() < (idx + parLen[j])) { + split = text.substring(idx, text.length()); + result = true; + } else { + split = text.substring(idx, idx + parLen[j]); + } + arr.add(split); + idx = idx + parLen[j]; + } + } + parResult.add(arr); + } + } + } finally { + EgovResourceCloseHelper.close(br); + } + + return parResult; + } + + /** + * 두 파일의 사이즈를 비교하는 기능 (KB 단위 비교) + * + * @param String cmprFile1 파일1 + * @param String cmprFile2 파일2 + * @return boolean result 동일여부 True / False + * @exception Exception + */ + public static boolean cmprFilesBySize(String cmprFile1, String cmprFile2) throws Exception { + + // 파일 동일 여부 + boolean result = false; + + // 파일 오픈 + String cmprFile11 = cmprFile1.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + String cmprFile22 = cmprFile2.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File file1 = new File(EgovWebUtil.filePathBlackList(cmprFile11)); + File file2 = new File(EgovWebUtil.filePathBlackList(cmprFile22)); + + // 파일이며, 존재하면 파일 사이즈 비교 + if (file1.exists() && file2.exists() && file1.isFile() && file2.isFile()) { + + // 파일1 사이즈 + long size1 = file1.length(); + + // 파일2 사이즈 + long size2 = file2.length(); + + // 사이즈 비교 + if (size1 == size2) { + result = true; + } + + } + + return result; + } + + /** + * 두 파일의 수정일자를 비교하는 기능 + * + * @param String cmprFile1 파일1 + * @param String cmprFile2 파일2 + * @return boolean result 동일여부 True / False + * @exception Exception + */ + public static boolean cmprFilesByUpdtPd(String cmprFile1, String cmprFile2) throws Exception { + + // 파일 동일 여부 + boolean result = false; + + // 파일 오픈 + String cmprFile11 = cmprFile1.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + String cmprFile22 = cmprFile2.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File file1 = new File(EgovWebUtil.filePathBlackList(cmprFile11)); + File file2 = new File(EgovWebUtil.filePathBlackList(cmprFile22)); + + // 파일이며, 존재하면 파일 수정일자 비교 + if (file1.exists() && file2.exists() && file1.isFile() && file2.isFile()) { + + // 파일1 수정일자 + long date1 = file1.lastModified(); + java.text.SimpleDateFormat dateFormat1 = new java.text.SimpleDateFormat("yyyyMMdd", java.util.Locale.KOREA); + String lastUpdtDate1 = dateFormat1.format(new java.util.Date(date1)); + + // 파일2 수정일자 + long date2 = file2.lastModified(); + java.text.SimpleDateFormat dateFormat2 = new java.text.SimpleDateFormat("yyyyMMdd", java.util.Locale.KOREA); + String lastUpdtDate2 = dateFormat2.format(new java.util.Date(date2)); + + // 수정일자 비교 + if (lastUpdtDate1.equals(lastUpdtDate2)) { + result = true; + } + } + + return result; + } + + /** + * 두 파일의 내용을 비교하는 기능 (TEXT파일만 가능) + * + * @param String cmprFile1 파일1 + * @param String cmprFile2 파일2 + * @return boolean result 동일여부 True / False + * @exception Exception + */ + public static boolean cmprFilesByContent(String cmprFile1, String cmprFile2) throws Exception { + + // 파일 동일 여부 + boolean result = false; + + // 파일 오픈 + String cmprFile11 = cmprFile1.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + String cmprFile22 = cmprFile2.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File file1 = new File(EgovWebUtil.filePathBlackList(cmprFile11)); + File file2 = new File(EgovWebUtil.filePathBlackList(cmprFile22)); + + BufferedReader br1 = null; + BufferedReader br2 = null; + + try { + // 파일이며, 존재하면 파일 내용 비교 + if (file1.exists() && file2.exists() && file1.isFile() && file2.isFile()) { + + List cmprText1 = new ArrayList(); + List cmprText2 = new ArrayList(); + + // 파일1 텍스트 내용 + br1 = new BufferedReader(new InputStreamReader(new FileInputStream(file1))); + String line1 = ""; + while ((line1 = br1.readLine()) != null) { + if (line1.length() < MAX_STR_LEN) + cmprText1.add(line1); + } + + // 파일2 텍스트 내용 + br2 = new BufferedReader(new InputStreamReader(new FileInputStream(file2))); + String line2 = ""; + while ((line2 = br2.readLine()) != null) { + if (line2.length() <= MAX_STR_LEN) + cmprText2.add(line2); + } + + // 내용 비교 + boolean isWrong = false; + for (int i = 0; i < cmprText1.size(); i++) { + if (!isWrong) { // if(isWrong != true){ + String text1 = cmprText1.get(i); + String text2 = cmprText2.get(i); + + if (!text1.equals(text2)) { + isWrong = true; + } + } + } + + if (!isWrong) { + result = true; + } + } + } finally { + EgovResourceCloseHelper.close(br1, br2); + } + + return result; + } + + /** + * 두 파일의 생성자를 비교하는 기능 + * + * @param String cmprFile1 파일1 + * @param String cmprFile2 파일2 + * @return boolean result 동일여부 True / False + * @exception Exception + */ + public static boolean cmprFilesByOwner(String cmprFile1, String cmprFile2) throws Exception { + + // 파일 동일 여부 + boolean result = false; + + // 파일1 생성자 + String owner1 = getOwner(cmprFile1); + + // 파일2 생성자 + String owner2 = getOwner(cmprFile2); + + if (owner1 != null && owner2 != null && !"".equals(owner1) && !"".equals(owner2) && owner1.equals(owner2)) { + result = true; + } + + return result; + } + + /** + * 단일 파일을 다른 파일에 복사(Copy)한다. + * + * @param String source 원본파일 + * @param String target 타겟파일 + * @return boolean result 복사여부 True / False + * @exception Exception + */ + public static boolean copyFile(String source, String target) throws Exception { + + // 복사여부 + boolean result = false; + + // 원본 파일 + String src = source.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + + // 타켓 파일 + String tar = target.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + // 원본 파일이 존재하는지 확인한다. + if (srcFile.exists()) { + + // 복사될 target 파일 생성 + tar = createNewFile(tar); + //log.debug("tar:"+tar); + File tarFile = new File(EgovWebUtil.filePathBlackList(tar)); + //log.debug("tarFile:"+tarFile.getAbsolutePath()); + // 복사 + result = execCopyFile(srcFile, tarFile); + } + + return result; + } + + /** + * 여러 파일을 다른 디렉토리에 복사(Copy)한다. + * + * @param String source 원본파일들 + * @param String target 타겟디렉토리 + * @return boolean result 복사여부 True / False + * @exception Exception + */ + public static boolean copyFiles(String[] source, String target) throws Exception { + + // 복사여부 + boolean result = true; + + // 복사 이전에 복사할 파일들의 경로가 올바른지 확인한다. + for (int i = 0; i < source.length; i++) { + String src = source[i].replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File chkFile = new File(EgovWebUtil.filePathBlackList(src)); + if (!chkFile.exists()) { + //log.debug("+++ 원본 파일이 존재하지 않습니다."); + return result; + } + } + + String tar = target.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + // 복사를 시작한다. + for (int j = 0; j < source.length; j++) { + + if (result) { //result != false + + // 타겟파일이름 명명 + File chkFile = new File(EgovWebUtil.filePathBlackList(source[j])); + String tarTemp = tar + FILE_SEPARATOR + chkFile.getName(); + + // 복사될 target 파일 생성 + tarTemp = createNewFile(tarTemp); + File tarFile = new File(EgovWebUtil.filePathBlackList(tarTemp)); + + // 복사 + result = execCopyFile(chkFile, tarFile); + } + } // end for + + return result; + } + + /** + * 확장자별 파일들을 다른 디렉토리에 복사(Copy)한다. + * + * @param String source 원본디렉토리 + * @param String extnt 확장자(.txt 형태 입력) + * @param String target 타겟디렉토리 + * @return boolean result 복사여부 True / False + * @exception Exception + */ + public static boolean copyFilesByExtnt(String source, String extnt, String target) throws Exception { + + // 복사여부 + boolean result = true; + + // 원본 파일 + String src = source.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + + // 원본 디렉토리가 존재하는지 확인한다. + if (srcFile.exists() && srcFile.isDirectory()) { + + String tar = target.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + // 원본 디렉토리 안에서 확장자가 일치하는 파일목록을 가져온다. + File[] fileArray = srcFile.listFiles(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileArray != null) { + List list = getSubFilesByExtnt(fileArray, extnt); + + // 복사를 시작한다. + for (int i = 0; i < list.size(); i++) { + if (result) { //f(result != false){ + // 원본파일 절대경로 + String abspath = (String) list.get(i); + + // 타겟파일이름 명명 + File chkFile = new File(EgovWebUtil.filePathBlackList(abspath)); + String tarTemp = tar + FILE_SEPARATOR + chkFile.getName(); + + // 복사될 target 파일 생성 + tarTemp = createNewFile(tarTemp); + File tarFile = new File(EgovWebUtil.filePathBlackList(tarTemp)); + + // 복사 + result = execCopyFile(chkFile, tarFile); + } + } // end for + } + else { + result = false; + } + + } + + return result; + } + + /** + * 수정기간내 파일들을 다른 디렉토리에 복사(Copy)한다. + * + * @param String source 원본디렉토리 + * @param String updtFrom 수정시작일자(YYYYMMDD 형태로 입력) + * @param String updtTo 수정종료일자(YYYYMMDD 형태로 입력) + * @param String target 타겟디렉토리 + * @return boolean result 복사여부 True / False + * @exception Exception + */ + public static boolean copyFilesByUpdtPd(String source, String updtFrom, String updtTo, String target) throws Exception { + + // 복사여부 + boolean result = true; + + // 원본 파일 + String src = source.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + + // 원본 디렉토리가 존재하는지 확인한다. + if (srcFile.exists() && srcFile.isDirectory()) { + + String tar = target.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + // 원본 디렉토리 안에서 수정기간내 존재하는 파일목록을 가져온다. + File[] fileArray = srcFile.listFiles(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileArray != null) { + List list = getSubFilesByUpdtPd(fileArray, updtFrom, updtTo); + + // 복사를 시작한다. + for (int i = 0; i < list.size(); i++) { + + if (result) { //f(result != false){ + + // 원본파일 절대경로 + String abspath = (String) list.get(i); + + // 타겟파일이름 명명 + File chkFile = new File(EgovWebUtil.filePathBlackList(abspath)); + String tarTemp = tar + FILE_SEPARATOR + chkFile.getName(); + + // 복사될 target 파일 생성 + tarTemp = createNewFile(tarTemp); + File tarFile = new File(tarTemp); + + // 복사 + result = execCopyFile(chkFile, tarFile); + } + } // end for + } + } + + return result; + } + + /** + * 사이즈내 파일들을 다른 디렉토리에 복사(Copy)한다. + * + * @param String source 원본디렉토리 + * @param Long sizeFrom 최소사이즈(KB) + * @param Long sizeTo 최대사이즈(KB) + * @param String target 타겟디렉토리 + * @return boolean result 복사여부 True / False + * @exception Exception + */ + public static boolean copyFilesBySize(String source, long sizeFrom, long sizeTo, String target) throws Exception { + + // 복사여부 + boolean result = true; + + // 원본 파일 + String src = source.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + + // 원본 디렉토리가 존재하는지 확인한다. + if (srcFile.exists() && srcFile.isDirectory()) { + + String tar = target.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + // 원본 디렉토리 안에서 사이즈내 존재하는 파일목록을 가져온다. + File[] fileArray = srcFile.listFiles(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileArray != null) { + List list = getSubFilesBySize(fileArray, sizeFrom, sizeTo); + + // 복사를 시작한다. + for (int i = 0; i < list.size(); i++) { + + if (result) { //result != false + // 원본파일 절대경로 + String abspath = (String) list.get(i); + + // 타겟파일이름 명명 + File chkFile = new File(EgovWebUtil.filePathBlackList(abspath)); + String tarTemp = tar + FILE_SEPARATOR + chkFile.getName(); + + // 복사될 target 파일 생성 + tarTemp = createNewFile(tarTemp); + File tarFile = new File(EgovWebUtil.filePathBlackList(tarTemp)); + + // 복사 + result = execCopyFile(chkFile, tarFile); + if (result) { + break; + } + } + } // end for + } + + } + + return result; + } + + /** + * 생성자별 파일들을 다른 디렉토리에 복사(Copy)한다. + * + * @param String source 원본디렉토리 + * @param String owner 생성자 + * @param String target 타겟디렉토리 + * @return boolean result 복사여부 True / False + * @exception Exception + */ + public static boolean copyFilesByOwner(String source, String owner, String target) throws Exception { + + // 복사여부 + boolean result = true; + + // 원본 파일 + String src = source.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + + // 원본 디렉토리가 존재하는지 확인한다. + if (srcFile.exists() && srcFile.isDirectory()) { + + String tar = target.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + // 원본 디렉토리 안에서 생성자별 일치하는 파일목록을 가져온다. + File[] fileArray = srcFile.listFiles(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (fileArray != null) { + List list = getSubFilesByOwner(fileArray, owner); + + // 복사를 시작한다. + for (int i = 0; i < list.size(); i++) { + + if (result) { //result != false + + // 원본파일 절대경로 + String abspath = (String) list.get(i); + + // 타겟파일이름 명명 + File chkFile = new File(EgovWebUtil.filePathBlackList(abspath)); + String tarTemp = tar + FILE_SEPARATOR + chkFile.getName(); + + // 복사될 target 파일 생성 + tarTemp = createNewFile(tarTemp); + File tarFile = new File(EgovWebUtil.filePathBlackList(tarTemp)); + + // 복사 + result = execCopyFile(chkFile, tarFile); + + if (!result) { + break; + } + } + } // end for + } + + } + + return result; + } + + /** + * 복사를 수행하는 기능 + * + * @param File srcFile 원본파일 + * @param File tarFile 타겟파일 + * @return boolean result 복사여부 True / False + * @exception Exception + */ + public static boolean execCopyFile(File srcFile, File tarFile) throws Exception { + + // 결과 + boolean result = false; + FileInputStream fis = null; + FileOutputStream fos = null; + try { + // 복사 + fis = new FileInputStream(srcFile); + + //예외상황에 따른 처리 추가함. -> 만약 tarFile 이 디렉토리명인 경우 디렉토리 밑으로 새로 파일을 생성해서 복사한다.. like DOS + File tarFile1 = tarFile; + if (tarFile1.isDirectory()) { + tarFile1 = new File(EgovWebUtil.filePathBlackList(tarFile1.getAbsolutePath()) + "/" + srcFile.getName()); + } + fos = new FileOutputStream(tarFile1); + byte[] buffer = new byte[(int) BUFFER_SIZE]; + int i = 0; + if (fis != null && fos != null) { + while ((i = fis.read(buffer)) != -1) { + fos.write(buffer, 0, i); + } + } + + result = true; + } finally { + EgovResourceCloseHelper.close(fis, fos); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리를 삭제한다. (소유자 정보를 통해 삭제)
    +	 * 
    + * + * @param dirDeletePath 삭제하고자 하는디렉토리의 절대경로(파일의 경로가 들어오는 경우 삭제하지 않음) + * @param owner 디렉토리의 삭제조건 생성자 + * @return 성공하면 삭제된 절대경로, 아니면블랭크 + */ + + public static String deleteDirectory(String dirDeletePath, String dirOwner) { + + // 인자값 유효하지 않은 경우 블랭크 리턴 + if (dirDeletePath == null || dirDeletePath.equals("") || dirOwner == null || dirOwner.equals("")) { + return ""; + } + + // 찾은 결과를 전달할 ArrayList + String result = ""; + + try { + File file = new File(EgovWebUtil.filePathBlackList(dirDeletePath));//KISA 보안약점 조치 (2018-10-29, 윤창원) + + // 추가된 삭제조건 옵션에 합당한지 확인 + boolean isInCondition = false; + String realOwner = getOwner(dirDeletePath); + //log.debug("realOwner:"+realOwner); + if (dirOwner.equals(realOwner)) { + isInCondition = true; + } + // 삭제조건에 부합되면 디렉토리 삭제조치함 + if (file.isDirectory() && isInCondition) { + result = deleteDirectory(dirDeletePath); + } else { + result = realOwner; + } + } catch (NullPointerException e) {//KISA 보안약점 조치 (2018-10-29, 윤창원) + throw new RuntimeException(e); + } catch (Exception e) { + throw new RuntimeException(e); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리를 삭제한다. (생성일자 조건으로 삭제)
    +	 * 
    + * + * @param dirDeletePath 삭제하고자 하는디렉토리의 절대경로(파일의 경로가 들어오는 경우 삭제하지 않음) + * @param fromDate 디렉토리의 삭제조건 시작일자 + * @param toDate 디렉토리의 삭제조건 종료일자 + * @return 성공하면 삭제된 절대경로, 아니면블랭크 + */ + public static String deleteDirectory(String dirDeletePath, String fromDate, String toDate) { + + // 인자값 유효하지 않은 경우 블랭크 리턴 + if (dirDeletePath == null || dirDeletePath.equals("") || fromDate == null || fromDate.equals("") || toDate == null || toDate.equals("")) { + return ""; + } + + // 찾은 결과를 전달할 ArrayList + String result = ""; + File file = new File(EgovWebUtil.filePathBlackList(dirDeletePath)); + + // 추가된 삭제조건 옵션에 합당한지 확인 + boolean isInCondition = false; + String lastModifyedDate = getLastModifiedDateFromFile(file); + //log.debug("lastModifyedDate:"+lastModifyedDate); + + if (Integer.parseInt(lastModifyedDate) >= Integer.parseInt(fromDate) && Integer.parseInt(lastModifyedDate) <= Integer.parseInt(toDate)) { + isInCondition = true; + } + + // 삭제조건에 부합되면 디렉토리 삭제조치함 + if (file.isDirectory() && isInCondition) { + result = deleteDirectory(dirDeletePath); + } + + return result; + } + + /** + * 파일(디렉토리)가 존재하는 파일시스템(마운트된 위치)을 조회하는 기능 + * + * @param String file 파일(디렉토리) + * @return String mountLc 마운트위치 + * @exception Exception + */ + public static String getMountLc(String file) throws Exception { + + // 디스크명 + String diskName = ""; + + //String drctryName = ""; + String src = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + if (srcFile.exists()) { + + // 유닉스 파일시스템명 조회 (df -k $1 | grep $2 | awk -F" " '{print $7}') + if (Globals.OS_TYPE.equals("UNIX")) { + Process p = null; + String[] command = { EgovProperties.getProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".getMountLc"), src, "/" }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + BufferedReader b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + try { + while (true) { + String str = b_out.readLine(); + if (str == null || "".equals(str)) { + break; + } + if (str.length() <= MAX_STR_LEN) { + diskName = str; + } else { + diskName = str.substring(0, MAX_STR_LEN); + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + } + + if (p != null) { + p.destroy(); + } + + // 윈도우 파일시스템명 조회 + } else if (Globals.OS_TYPE.equals("WINDOWS")) { + + diskName = src.substring(0, 1).toUpperCase(); + //log.debug(diskName); + } + } + + return diskName; + } + + /** + * 파일(디렉토리)가 존재하는 디렉토리(Parent)를 조회하는 기능 + * + * @param String file 파일(디렉토리) + * @return String drctryName 디렉토리 + * @exception Exception + */ + public static String getDrctryName(String file) throws Exception { + + String drctryName = ""; + String src = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + if (srcFile.exists()) { + drctryName = srcFile.getParent(); + } + + return drctryName; + } + + /** + * 파일(디렉토리)가 존재하는 파일명을 조회하는 기능 + * + * @param String file 파일(디렉토리) + * @return String fileName 파일명 + * @exception Exception + */ + public static String getFileName(String file) throws Exception { + + String fileName = ""; + String src = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + if (srcFile.exists()) { + fileName = srcFile.getName(); + } + + return fileName; + } + + /** + * 파일(디렉토리)의 최종수정일자를 조회하는 기능 + * + * @param String file 파일(디렉토리) + * @return String updtDate 최종수정일자(YYYYMMDD 형태) + * @exception Exception + */ + public static String getUpdtDate(String file) throws Exception { + + String updtDate = ""; + String src = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + if (srcFile.exists()) { + long date = srcFile.lastModified(); + java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyyMMdd", java.util.Locale.KOREA); + updtDate = dateFormat.format(new java.util.Date(date)); + } + + return updtDate; + } + + /** + * 파일(디렉토리)의 생성자를 조회하는 기능 + * + * @param String file 파일(디렉토리) + * @return String owner 생성자 + * @exception Exception + */ + public static String getOwner(String file) throws Exception { + + String owner = ""; + String src = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + BufferedReader b_err = null; + BufferedReader b_out = null; + try { + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + if (srcFile.exists()) { + + // 파일 생성자 조회 + String parentPath = srcFile.getParent(); + String fname = srcFile.getName(); + + Process p = null; + String cmdStr = EgovStringUtil.isNullToString(EgovProperties.getProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".getDrctryOwner")); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), parentPath.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), + fname }; + p = Runtime.getRuntime().exec(command); + p.waitFor(); + //프로세스 에러시 종료 + if (p != null && p.exitValue() != 0) { + b_err = new BufferedReader(new InputStreamReader(p.getErrorStream())); + while (b_err.ready()) { + //String line = b_err.readLine(); + //if (line.length() <= MAX_STR_LEN) log.debug("ERR\n" + line); + } + } else { //프로세스 실행 성공시 결과 확인 + boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + while (b_out.ready()) { + if (!result) { // result != true + // 결과문자가 있으면 생성자가 있다는 의미 + owner = b_out.readLine(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (owner != null) { + if (owner.length() <= MAX_STR_LEN) { + if (!"".equals(owner)) { + result = true; + break; + } + } + } + } + } + } + + } + } finally { + EgovResourceCloseHelper.close(b_err, b_out); + } + + return owner; + } + + /** + * 파일(디렉토리)의 접근권한을 조회하는 기능 + * + * @param String file 파일(디렉토리) + * @return String access 접근권한(유닉스=777, 666, 윈도우=Read, Write, Read Only) + * @exception Exception + */ + public static String getAccess(String file) throws Exception { + + String access = ""; + String src = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + BufferedReader b_err = null; + BufferedReader b_out = null; + try { + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + if (srcFile.exists()) { + + // 접근권한 조회 + String parentPath = EgovWebUtil.filePathBlackList(srcFile.getParent()); + String fname = EgovWebUtil.filePathBlackList(srcFile.getName()); + + Process p = null; + if (Globals.OS_TYPE.equals("UNIX")) { + String[] command = { EgovProperties.getProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".getDrctryAccess"), parentPath, fname }; + p = Runtime.getRuntime().exec(command); + p.waitFor(); + //프로세스 에러시 종료 + if (p != null && p.exitValue() != 0) { + b_err = new BufferedReader(new InputStreamReader(p.getErrorStream())); + while (b_err.ready()) { + //String line = b_err.readLine(); + //if (line.length() <= MAX_STR_LEN) log.debug("ERR\n" + line); + } + b_err.close(); + } + //프로세스 실행 성공시 결과 확인 + else { + boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + while (b_out.ready()) { + if (!result) { //result != true + access = b_out.readLine(); + if (access != null && !"".equals(access) && access.length() <= MAX_STR_LEN) { + result = true; + break; + } + } + } + b_out.close(); + } + } else if (Globals.OS_TYPE.equals("WINDOWS")) { + String[] command = { "cmd", "/c", "attrib", src }; + p = Runtime.getRuntime().exec(command); + p.waitFor(); + //프로세스 에러시 종료 + if (p != null && p.exitValue() != 0) { + b_err = new BufferedReader(new InputStreamReader(p.getErrorStream())); + while (b_err.ready()) { + //String line = b_err.readLine(); + //if (line.length() <= MAX_STR_LEN) log.debug("ERR\n" + line); + } + } else { //프로세스 실행 성공시 결과 확인 + boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + while (b_out.ready()) { + if (!result) { //result != true + access = b_out.readLine(); + if (access != null && !"".equals(access) && access.length() <= MAX_STR_LEN) { + access = access.toUpperCase().replace(src.toUpperCase(), ""); + access = access.replace(" ", ""); + result = true; + if (result) { + break; + } + } + } + } + + if (result) { + String acs = ""; + boolean read = false; + boolean write = true; + boolean system = false; + boolean hidden = false; + + for (int i = 0; i < access.length(); i++) { + char chr = access.charAt(i); + switch (chr) { + case ACCESS_READ: + read = true; + write = false; + break; + case ACCESS_SYS: + system = true; + break; + case ACCESS_HIDE: + hidden = true; + break; + default: + break; + } + } + + if (read) { + acs += "READ-ONLY|"; + } else { + acs += "READ|"; + } + if (write) { + acs += "WRITE|"; + } + if (system) { + acs += "SYSTEM|"; + } + if (hidden) { + acs += "HIDDEN|"; + } + access = acs; + } + } + } + + } + } finally { + EgovResourceCloseHelper.close(b_err, b_out); + } + + return access; + } + + /** + * 파일(디렉토리)의 사이즈를 조회하는 기능 + * + * @param String file 파일(디렉토리) + * @return Long size 사이즈(Byte) + * @exception Exception + */ + public static long getSize(String file) throws Exception { + + long size = 0L; + String src = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + if (srcFile.exists()) { + size = srcFile.length(); + } + + return size; + } + + /** + * 파일(디렉토리)의 포맷을 조회하는 기능 + * + * @param String file 파일(디렉토리) + * @return String format 포맷 + * @exception Exception + */ + public static String getFormat(String file) throws Exception { + + // 포맷, 타입 + String format = ""; + String type = ""; + + String src = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + + File srcFile = new File(EgovWebUtil.filePathBlackList(src)); + if (srcFile.exists()) { + + String[] strArr = src.split("\\."); + if (strArr.length >= 2) { + format = strArr[strArr.length - 1].toLowerCase(); + type = EgovProperties.getProperty(Globals.FILE_FORMAT_PATH, format); + } + } + + return type; + } + + /** + *
    +	 * Comment : 디렉토리를 복사한다.
    +	 * 
    + * + * @param String originalDirPath 원본 디렉토리 의 절대경로 + * @param String targetDirPath 타겟 디렉토리 의 절대경로 + * @return boolean result 복사가 성공하면 true, 실패하면 false를 리턴한다. + */ + public static boolean copyDirectory(String originalDirPath, String targetDirPath) throws Exception { + + // 인자값 유효하지 않은 경우 공백 리턴 + if (originalDirPath == null || originalDirPath.equals("") || targetDirPath == null || targetDirPath.equals("")) { + return false; + } + boolean result = false; + File f = null; + + f = new File(EgovWebUtil.filePathBlackList(originalDirPath)); + // 원본이 유효해야 진행한다. + if (f.exists() && f.isDirectory()) { + + //타겟으로 설정한 경로가 유효한지 확인(중간경로에 파일명 이 포함되어있으면 유효하지 못하므로 진행안함. + String targetDirPath1 = createNewDirectory(targetDirPath); + if (targetDirPath1.equals("")) { + result = false; + } else { + File targetDir = new File(EgovWebUtil.filePathBlackList(targetDirPath1)); + //2017.02.08 이정은 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + if(targetDir.mkdirs()){ + LOGGER.debug("[file.mkdirs] targetDir : Directory Creation Success"); + }else{ + LOGGER.error("[file.mkdirs] targetDir : Directory Creation Fail"); + } + + // 디렉토리에 속한 파일들을 복사한다. + String[] originalFileList = f.list(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (originalFileList != null) { + if (originalFileList.length > 0) { + for (int i = 0; i < originalFileList.length; i++) { + File subF = new File(EgovWebUtil.filePathBlackList(originalDirPath) + FILE_SEPARATOR + originalFileList[i]); + if (subF.isFile()) { + //하위목록이 파일이면 파일복사실행 -> 실패 발생하는 경우 복사를 중단한다. + result = copyFile(originalDirPath + FILE_SEPARATOR + originalFileList[i], targetDir.getAbsolutePath() + FILE_SEPARATOR + originalFileList[i]); + } else { + //하위목록이 디렉토리이면 복사를 재귀적으로 호출한다. + result = copyDirectory(originalDirPath + "/" + originalFileList[i], targetDirPath1 + "/" + originalFileList[i]); + } + } + } else { + result = true; + } + } + } + } else { + // 원본자체가 유효하지 않은 경우는 false 리턴하고 종료 + result = false; + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리를 복사한다. (생성일자 조건으로  복사)
    +	 * 
    + * + * @param String originalDirPath 원본 디렉토리 의 절대경로 + * @param String targetDirPath 타겟 디렉토리 의 절대경로 + * @param fromDate 디렉토리의 복사조건 시작일자 + * @param toDate 디렉토리의 복사조건 종료일자 + * @return boolean result 복사가 성공함변 true, 실패하면 false를 리턴한다. + */ + public static boolean copyDirectory(String originalDirPath, String targetDirPath, String fromDate, String toDate) throws Exception { + + // 인자값 유효하지 않은 경우 공백 리턴 + if (originalDirPath == null || originalDirPath.equals("") || targetDirPath == null || targetDirPath.equals("") || fromDate == null || fromDate.equals("") || toDate == null + || toDate.equals("")) { + return false; + } + boolean result = false; + File f = null; + + f = new File(EgovWebUtil.filePathBlackList(originalDirPath)); + boolean isInCondition = false; + String lastModifyedDate = getLastModifiedDateFromFile(f); + if (Integer.parseInt(lastModifyedDate) >= Integer.parseInt(fromDate) && Integer.parseInt(lastModifyedDate) <= Integer.parseInt(toDate)) { + isInCondition = true; + } + + // 원본이 유효하고 조건에 부합되야 진행한다. + if (f.exists() && f.isDirectory() && isInCondition) { + + //타겟으로 설정한 경로가 유효한지 확인(중간경로에 파일명 이 포함되어있으면 유효하지 못하므로 진행안함. + String targetDirPath1 = createNewDirectory(targetDirPath); + if (targetDirPath1.equals("")) { + result = false; + } else { + File targetDir = new File(EgovWebUtil.filePathBlackList(targetDirPath1)); + //2017.02.08 이정은 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + if(targetDir.mkdirs()){ + LOGGER.debug("[file.mkdirs] targetDir : Directory Creation Success"); + }else{ + LOGGER.error("[file.mkdirs] targetDir : Directory Creation Fail"); + } + + // 디렉토리에 속한 파일들을 복사한다. + String[] originalFileList = f.list(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (originalFileList != null) { + if (originalFileList.length > 0) { + for (int i = 0; i < originalFileList.length; i++) { + File subF = new File(EgovWebUtil.filePathBlackList(originalDirPath) + FILE_SEPARATOR + originalFileList[i]); + if (subF.isFile()) { + //하위목록이 파일이면 파일복사실행 -> 실패 발생하는 경우 복사를 중단한다. + result = copyFile(originalDirPath + FILE_SEPARATOR + originalFileList[i], targetDir.getAbsolutePath() + FILE_SEPARATOR + originalFileList[i]); + } else { + //하위목록이 디렉토리이면 복사를 재귀적으로 호출한다. + //하위목록에 해당하는 폴더에 대해서는 생성일자 검사를 하지 않는다.(현재 폴더가 복사대상이면 현재폴더의 하위는 제외없이 복사함) + result = copyDirectory(originalDirPath + "/" + originalFileList[i], targetDirPath1 + "/" + originalFileList[i]); + } + } + } else { + result = true; + } + } + } + + } else { + // 원본자체가 유효하지 않은 경우는 false 리턴하고 종료 + result = false; + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리를 복사한다. (생성자 조건으로복사)
    +	 * 
    + * + * @param String originalDirPath 원본 디렉토리 의 절대경로 + * @param String targetDirPath 타겟 디렉토리 의 절대경로 + * @param String owner 디렉토리의 복사조건생성자 + * @return boolean result 복사가 성공함변 true, 실패하면 false를 리턴한다. + */ + public static boolean copyDirectory(String originalDirPath, String targetDirPath, String owner) throws Exception { + + // 인자값 유효하지 않은 경우 공백 리턴 + if (originalDirPath == null || originalDirPath.equals("") || targetDirPath == null || targetDirPath.equals("") || owner == null || owner.equals("")) { + return false; + } + boolean result = false; + File f = null; + + f = new File(EgovWebUtil.filePathBlackList(originalDirPath)); + boolean isInCondition = false; + String realOwner = getOwner(originalDirPath); + if (realOwner.equals(owner)) { + isInCondition = true; + } + + // 원본이 유효하고 조건에 부합되야 진행한다. + if (f.exists() && f.isDirectory() && isInCondition) { + + String targetDirPath1 = createNewDirectory(targetDirPath); + if (targetDirPath1.equals("")) { + //타겟으로 설정한 경로가 유효한지 확인(중간경로에 파일명 이 포함되어있으면 유효하지 못하므로 진행안함. + result = false; + } else { + File targetDir = new File(EgovWebUtil.filePathBlackList(targetDirPath1)); + + //2017.02.08 이정은 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + if(targetDir.mkdirs()){ + LOGGER.debug("[file.mkdirs] targetDir : Directory Creation Success"); + }else{ + LOGGER.error("[file.mkdirs] targetDir : Directory Creation Fail"); + } + + // 디렉토리에 속한 파일들을 복사한다. + String[] originalFileList = f.list(); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (originalFileList != null) { + if (originalFileList.length > 0) { + for (int i = 0; i < originalFileList.length; i++) { + File subF = new File(EgovWebUtil.filePathBlackList(originalDirPath) + FILE_SEPARATOR + originalFileList[i]); + if (subF.isFile()) { + //하위목록이 파일이면 파일복사실행 -> 실패 발생하는 경우 복사를 중단한다. + result = copyFile(originalDirPath + FILE_SEPARATOR + originalFileList[i], targetDir.getAbsolutePath() + FILE_SEPARATOR + originalFileList[i]); + } else { + //하위목록이 디렉토리이면 복사를 재귀적으로 호출한다. + //하위목록에 해당하는 폴더에 대해서는 생성일자 검사를 하지 않는다.(현재 폴더가 복사대상이면 현재폴더의 하위는 제외없이 복사함) + result = copyDirectory(originalDirPath + "/" + originalFileList[i], targetDirPath1 + "/" + originalFileList[i]); + } + } + } else { + result = false; + } + } + } + + } else { + // 원본자체가 유효하지 않은 경우는 false 리턴하고 종료 + result = false; + } + + return result; + } + + /** + * 디렉토리의 사이즈를 조회한다. + * + * @param String targetDirPath 디렉토리 + * @return long size 디렉토리사이즈 + * @exception Exception + */ + public static long getDirectorySize(String targetDirPath) throws Exception { + + File f = new File(EgovWebUtil.filePathBlackList(targetDirPath)); + if (!f.exists()) { + return 0; + } + if (f.isFile()) { + return f.length(); + } + + File[] list = f.listFiles(); + long size = 0; + long fileSize = 0; + + //KISA 보안약점 조치 (2018-10-29, 윤창원) + if (list != null) { + for (int i = 0; i < list.length; i++) { + + if (list[i].isDirectory()) { + // 디렉토리 안에 디렉토리면 그 안의 파일목록에서 찾도록 재귀호출한다. + fileSize = getDirectorySize(list[i].getAbsolutePath()); + } else { + // 파일의 사이즈 조회 + fileSize = list[i].length(); + } + size = size + fileSize; + } + } + return size; + } + + /** + *
    +	 * Comment : 디렉토리를 이동한다.
    +	 * 
    + * + * @param String originalDirPath 원본 디렉토리 의 절대경로 + * @param String targetDirPath 타겟 디렉토리 의 절대경로 + * @return boolean result 이동이 성공하면 true, 실패하면 false를 리턴한다. + */ + public static boolean moveFile(String originalDirPath, String targetDirPath) throws Exception { + + // 인자값 유효하지 않은 경우 공백 리턴 + if (originalDirPath == null || originalDirPath.equals("") || targetDirPath == null || targetDirPath.equals("")) { + return false; + } + boolean result = false; + File f = null; + BufferedReader b_err = null; + BufferedReader b_out = null; + try { + f = new File(EgovWebUtil.filePathBlackList(originalDirPath)); + // 원본은 유효하고 대상이 신규로 생성가능한 상태인경우만 진행한다. + //if(f.exists() && f.isDirectory() ){ // 디렉토리만 이동할수 있도록 제한하는 경우 + if (f.exists()) { + // 타겟으로 설정한 경로가 유효한지 확인(중간경로에 파일명 이 포함되어있으면 유효하지 못하므로 진행안함. + File targetDir = new File(EgovWebUtil.filePathBlackList(targetDirPath)); + if (targetDir.exists()) { + // 타겟경로가 이미 있는 경우는 종료 + result = false; + } else { + // 새로 생성되는 경우만 진행한다. (이동쉘을 실행시킨다.) + //KISA 보안약점 조치 (2018-10-29, 윤창원) + String cmdStr = EgovStringUtil.isNullToString(EgovProperties.getProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".moveDrctry")); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), + EgovWebUtil.filePathBlackList(originalDirPath.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR)), + EgovWebUtil.filePathBlackList(targetDirPath.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR)) }; + Process p = Runtime.getRuntime().exec(command); + //String access = ""; + p.waitFor(); + //프로세스 에러시 종료 + if (p != null && p.exitValue() != 0) { + b_err = new BufferedReader(new InputStreamReader(p.getErrorStream())); + while (b_err.ready()) { + //String line = b_err.readLine(); + //if (line.length() <= MAX_STR_LEN) log.debug("ERR\n" + line); + } + b_err.close(); + } + //프로세스 실행 성공시 결과 확인 + else { + result = true; + } + } + + } else { + // 원본자체가 유효하지 않은 경우는 false 리턴하고 종료 + result = false; + } + } finally { + EgovResourceCloseHelper.close(b_err, b_out); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리를 이동한다. (생성일자 조건으로 이동)
    +	 * 
    + * + * @param String originalDirPath 원본 디렉토리 의 절대경로 + * @param String targetDirPath 타겟 디렉토리 의 절대경로 + * @param fromDate 디렉토리의이동조건 시작일자 + * @param toDate 디렉토리의 이동조건 종료일자 + * @return boolean result 이동이 성공하면 true, 실패하면 false를 리턴한다. + */ + public static boolean moveFile(String originalDirPath, String targetDirPath, String fromDate, String toDate) throws Exception { + + // 인자값 유효하지 않은 경우 공백 리턴 + if (originalDirPath == null || originalDirPath.equals("") || targetDirPath == null || targetDirPath.equals("") || fromDate == null || fromDate.equals("") || toDate == null + || toDate.equals("")) { + return false; + } + boolean result = false; + File f = null; + BufferedReader b_err = null; + BufferedReader b_out = null; + try { + f = new File(originalDirPath); + // 원본은 유효하고 대상이 신규로 생성가능한 상태인경우만 진행한다. + //if(f.exists() && f.isDirectory() ){ // 디렉토리만 이동할수 있도록 제한하는 경우 + if (f.exists()) { + // 타겟으로 설정한 경로가 유효한지 확인(중간경로에 파일명 이 포함되어있으면 유효하지 못하므로 진행안함. + File targetDir = new File(EgovWebUtil.filePathBlackList(targetDirPath)); + if (targetDir.exists()) { + // 타겟경로가 이미 있는 경우는 종료 + result = false; + } else { + // 새로 생성되는 경우만 진행한다. (이동쉘을 실행시킨다.) + boolean isInCondition = false; + String lastModifyedDate = getLastModifiedDateFromFile(f); + if (Integer.parseInt(lastModifyedDate) >= Integer.parseInt(fromDate) && Integer.parseInt(lastModifyedDate) <= Integer.parseInt(toDate)) { + isInCondition = true; + } + + if (isInCondition) { + //KISA 보안약점 조치 (2018-10-29, 윤창원) + String cmdStr = EgovStringUtil.isNullToString(EgovProperties.getProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".moveDrctry")); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), + EgovWebUtil.filePathBlackList(originalDirPath.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR)), + EgovWebUtil.filePathBlackList(targetDirPath.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR)) }; + Process p = Runtime.getRuntime().exec(command); + String access = ""; + p.waitFor(); + //프로세스 에러시 종료 + if (p != null && p.exitValue() != 0) { + b_err = new BufferedReader(new InputStreamReader(p.getErrorStream())); + while (b_err.ready()) { + //String line = b_err.readLine(); + //if (line.length() <= MAX_STR_LEN) log.debug("ERR\n" + line); + } + } + //프로세스 실행 성공시 결과 확인 + else { + result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + while (b_out.ready()) { + if (!result) { // result != true + access = b_out.readLine(); + if (access != null && !"".equals(access) && access.length() <= MAX_STR_LEN) { + result = true; + break; + } + } + } + } + } + } + + } else { + // 원본자체가 유효하지 않은 경우는 false 리턴하고 종료 + result = false; + } + } finally { + EgovResourceCloseHelper.close(b_err, b_out);; + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리를 이동한다. (생성자 조건으로 이동)
    +	 * 
    + * + * @param String originalDirPath 원본 디렉토리 의 절대경로 + * @param String targetDirPath 타겟 디렉토리 의 절대경로 + * @param String owner 디렉토리의 이동조건생성자 + * @return boolean result 이동이 성공하면 true, 실패하면 false를 리턴한다. + */ + public static boolean moveFile(String originalDirPath, String targetDirPath, String owner) throws Exception { + + // 인자값 유효하지 않은 경우 공백 리턴 + if (originalDirPath == null || originalDirPath.equals("") || targetDirPath == null || targetDirPath.equals("") || owner == null || owner.equals("")) { + return false; + } + //log.debug("originalDirPath:"+originalDirPath); + //log.debug("targetDirPath:"+targetDirPath); + boolean result = false; + File f = null; + BufferedReader b_err = null; + BufferedReader b_out = null; + try { + f = new File(originalDirPath); + // 원본은 유효하고 대상이 신규로 생성가능한 상태인경우만 진행한다. + //if(f.exists() && f.isDirectory() ){ // 디렉토리만 이동할수 있도록 제한하는 경우 + if (f.exists()) { + // 타겟으로 설정한 경로가 유효한지 확인(중간경로에 파일명 이 포함되어있으면 유효하지 못하므로 진행안함. + File targetDir = new File(EgovWebUtil.filePathBlackList(targetDirPath)); + if (targetDir.exists()) { + // 타겟경로가 이미 있는 경우는 종료 + result = false; + } else { + // 새로 생성되는 경우만 진행한다. (이동쉘을 실행시킨다.) + boolean isInCondition = false; + String realOwner = getOwner(originalDirPath); + if (realOwner.equals(owner)) { + isInCondition = true; + } + + if (isInCondition) { + //KISA 보안약점 조치 (2018-10-29, 윤창원) + String cmdStr = EgovStringUtil.isNullToString(EgovProperties.getProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".moveDrctry")); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), + EgovWebUtil.filePathBlackList(originalDirPath.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR)), + EgovWebUtil.filePathBlackList(targetDirPath.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR)) }; + Process p = Runtime.getRuntime().exec(command); + String access = ""; + p.waitFor(); + //프로세스 에러시 종료 + if (p != null && p.exitValue() != 0) { + b_err = new BufferedReader(new InputStreamReader(p.getErrorStream())); + while (b_err.ready()) { + //String line = b_err.readLine(); + //if (line.length() <= MAX_STR_LEN) log.debug("ERR\n" + line); + } + } + //프로세스 실행 성공시 결과 확인 + else { + result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + while (b_out.ready()) { + + if (!result) { //result != true + access = b_out.readLine(); + if (access != null && !"".equals(access) && access.length() <= MAX_STR_LEN) { + result = true; + if (result) { + break; + } + } + } + } + } + } + } + } else { + // 원본자체가 유효하지 않은 경우는 false 리턴하고 종료 + result = false; + } + } finally { + EgovResourceCloseHelper.close(b_err, b_out); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리감시를 시작한다. 모니터링 시작시 해당 디렉토리의 이름으로 생성된 로그파일에 START기입하고 종료시END기입한다.
    +	 *           (로그파일이 이미 존재하는 경우는 모니터링이 현재 진행중인 상태이므로 새로 감시기능을 시작하지 않는다.)
    +	 * 
    + * + * @param String targetDirPath 타겟 디렉토리 의 절대경로 + * @param String logFile 모니터링정보를 보관할 로그파일경로 + * @param String eventPrg 이벤트 발생시 동작할 프로그램 + * @return boolean result 모니터링 시작 여부를 리턴한다. (모니터링 시작했으면 true, 모니터링이 시작되지 않았으면 false) + */ + public static boolean startDirectoryMonitering(String targetDirPath) throws Exception { + + // 인자값 유효하지 않은 경우 false 리턴 + if (targetDirPath == null || targetDirPath.equals("")) { + return false; + } + + boolean result = false; + FileReader fr = null; + BufferedReader br = null; + try { + // 로그파일을 생성한다. 만약 로그파일이 존재하면 이미 감시 프로세스가 동작중이므로 새로 시작하지 않는다. + + File targetF = new File(EgovWebUtil.filePathBlackList(targetDirPath)); + File logF = new File(EgovWebUtil.filePathBlackList(Globals.CONF_PATH) + "/" + targetF.getName() + ".log"); + + if (targetF.exists() && targetF.isDirectory()) { + + if (logF.exists()) { + // 이미 감시 프로세스 동작중임 + result = true; + //로그파일에서 중단여부 확인하여 중단된 상태이면 재실행함 + String lastStr = ""; + fr = new FileReader(logF); + br = new BufferedReader(fr); + //int ch = 0; + String line = ""; + while ((line = br.readLine()) != null) { + if (line.length() < MAX_STR_LEN) + lastStr = line; + } + //log.debug("lastStr:"+lastStr); + if (lastStr.equals("END")) { + EgovFileMntrg t = new EgovFileMntrg(EgovWebUtil.filePathBlackList(targetDirPath), logF); + t.start(); + } + } else { + result = logF.createNewFile(); + EgovFileMntrg t = new EgovFileMntrg(targetDirPath, logF); + t.start(); + } + } + } finally { + EgovResourceCloseHelper.close(fr, br); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리감시를 종료한다. 모니터링 시작시 해당 디렉토리의 이름으로 생성된 로그파일에 START기입하고 종료시END기입한다.
    +	 *           (로그파일이 존재하지 않는 경우는  모니터링이 아직 시작되지 않은 상태이므로별도로   종료하지 않는다.)
    +	 * 
    + * + * @param String targetDirPath 타겟 디렉토리 의 절대경로 + * @param String logFile 모니터링정보를 보관할 로그파일경로(감시프로세스 확인의 키값으로 사용된다) + * @return boolean result 모니터링 시작 여부를 리턴한다. (모니터링 시작했으면 true, 모니터링이 시작되지 않았으면 false) + */ + public static boolean stopDirectoryMonitering(String targetDirPath) throws Exception { + + // 인자값 유효하지 않은 경우 false 리턴 + if (targetDirPath == null || targetDirPath.equals("")) { + return false; + } + + boolean result = false; + FileReader fr = null; + BufferedReader br = null; + FileWriter fWriter = null; + BufferedWriter bWriter = null; + try { + File targetF = new File(EgovWebUtil.filePathBlackList(targetDirPath)); + File logF = new File(EgovWebUtil.filePathBlackList(Globals.CONF_PATH) + "/" + targetF.getName() + ".log"); + if (logF.exists()) { + + //로그파일 최종라인 확인 : END 여부 확인 + String lastStr = ""; + fr = new FileReader(logF); + br = new BufferedReader(fr); + //int ch = 0; + String line = ""; + while ((line = br.readLine()) != null) { + if (line.length() < MAX_STR_LEN) + lastStr = line; + } + br.close(); + + // if(lastStr.equals("END")){ + // // 로그파일이 존재하고 이미 종료요청이 된 상태이므로 작업없음 + // //log.debug("Already Ending Requested Status"); + // }else{ + if (!lastStr.equals("END")) { + fWriter = new FileWriter(logF, true); + bWriter = new BufferedWriter(fWriter); + br = new BufferedReader(new StringReader("END")); + while ((line = br.readLine()) != null && !lastStr.equals("END")) { + if (line.length() < MAX_STR_LEN) { + bWriter.write(line + "\n", 0, line.length() + 1); + } + } + } + result = true; + } else { + result = false; + } + + } finally { + EgovResourceCloseHelper.close(fr, br, fWriter, bWriter); + } + + return result; + } + + /** + *
    +	 * Comment : 디렉토리감시정보를 로그파일로부터 읽어온다.
    +	 * 
    + * + * @param String targetDirPath 타겟 디렉토리 의 절대경로 + * @param String logFile 모니터링정보를 보관하는 로그파일경로 + * @return ArrayList result 로그파일의 정보를 라인단위로 담아서 리턴한다. + */ + public static StringBuffer getDirectoryMoniteringInfo(String targetDirPath) throws Exception { + + // 인자값 유효하지 않은 경우 빈 ArrayList 리턴 + if (targetDirPath == null || targetDirPath.equals("")) { + return new StringBuffer(); + } + + StringBuffer result = new StringBuffer(); + FileReader fr = null; + try { + File targetF = new File(EgovWebUtil.filePathBlackList(targetDirPath)); + File logF = new File(EgovWebUtil.filePathBlackList(Globals.CONF_PATH) + "/" + targetF.getName() + ".log"); + if (!logF.exists()) { + result = new StringBuffer(); + } + fr = new FileReader(logF); + int ch = 0; + while ((ch = fr.read()) != -1) { + result.append((char) ch); + } + } finally { + EgovResourceCloseHelper.close(fr); + } + + return result; + } + +} diff --git a/src/main/java/egovframework/com/utl/sim/service/EgovMenuGov.java b/src/main/java/egovframework/com/utl/sim/service/EgovMenuGov.java new file mode 100644 index 00000000..5307eac9 --- /dev/null +++ b/src/main/java/egovframework/com/utl/sim/service/EgovMenuGov.java @@ -0,0 +1,92 @@ +/** + * Class Name : EgovMenuGov.java + * Description : 메뉴관리 Business Interface class + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.02.02 이 용 최초 생성 + * + * @author 공통 서비스 개발팀 이 용 + * @since 2009. 02. 02 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by EGOV All right reserved. + */ +package egovframework.com.utl.sim.service; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.util.List; +import java.util.Vector; + +import egovframework.com.cmm.util.EgovResourceCloseHelper; + +public class EgovMenuGov { + + // 파일구분자 + static final char FILE_SEPARATOR = File.separatorChar; + + /** + *
    +	 * Comment : DAT 파일을 파싱하여 메뉴관리화면에 리턴.
    +	 * 
    + * @param String parFile DAT파일명 + * @param String parChar 구분자 + * @param Int parField 필드수 + * @return Vector list + * @version 1.0 (2009.02.04.) + * @see + */ + public static Vector> parsFileByMenuChar(String parFile, String parChar, int parField) throws Exception { + Vector> list = null; + String FileName = null; + + FileName = parFile.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File file = new File(FileName); + + // 파일이며, 존재하면 파싱 시작 + if (file.exists() && file.isFile()) { + list = EgovFileTool.parsFileByChar(parFile, parChar, parField); + } else { + list = new Vector>(); + } + + return list; + } + + /** + *
    +	 * Comment : 메뉴관리 화면의 데이타를 DAT 파일로 생성.
    +	 * 
    + * @param String[] menuIDArray ID Array + * @param String[] menuNameArray Name Array + * @param String[] menuLevelArray Lefel Array + * @param String[] menuURLArray URL Array + * @return boolean true/false + * @version 1.0 (2009.02.04.) + * @see + */ + + public static boolean setDataByDATFile(String parFile, String[] menuIDArray, String[] menuNameArray, String[] menuLevelArray, String[] menuURLArray) throws Exception { + boolean success = false; + String FileName = null; + + FileName = parFile.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File file = new File(FileName); + BufferedWriter out = new BufferedWriter(new FileWriter(file)); + try { + + for (int i = 0; i < menuIDArray.length; i++) { //nodeId | parentNodeId | nodeName | nodeUrl + out.write(menuIDArray[i] + "|" + menuLevelArray[i] + "|" + menuNameArray[i] + "|" + menuURLArray[i] + "|"); + out.newLine(); + } + success = true; + } finally { + EgovResourceCloseHelper.close(out); + } + return success; + } +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/utl/sim/service/EgovNetInfo.java b/src/main/java/egovframework/com/utl/sim/service/EgovNetInfo.java new file mode 100644 index 00000000..321f3b5a --- /dev/null +++ b/src/main/java/egovframework/com/utl/sim/service/EgovNetInfo.java @@ -0,0 +1,83 @@ +/** + * Class Name : ComUtlSimNetInfo.java + * Description : 시스템 네트워크 정보를 확인하여 제공하는 Business class + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.01.13 조재영 최초 생성 + * 2017.03.03 조성원 시큐어코딩(ES)-Null Pointer 역참조[CWE-476] + * + * @author 공통 서비스 개발팀 조재영 + * @since 2009. 01. 13 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by EGOV All right reserved. + */ +package egovframework.com.utl.sim.service; + +import java.io.BufferedReader; +import java.io.InputStreamReader; + +import egovframework.com.cmm.service.EgovProperties; +import egovframework.com.cmm.service.Globals; +import egovframework.com.cmm.util.EgovResourceCloseHelper; + +public class EgovNetInfo { + // 최대 문자길이 + static final int MAX_STR_LEN = 1024; + + /** + *
    +	 * Comment : 호스트 정보를 확인한다.
    +	 * 
    + * @return String hostStr 호스트명을 리턴한다.(테스트용 함수) + * @version 1.0 (2009.01.12.) + * @see + */ + public static String getHostName() throws Exception { + // 실행할 명령을 프로퍼티 파일에서 확인한다. + String command = EgovProperties.getPathProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".getHostName"); + + // 출력할 결과 (파싱대상) + String hostStr = ""; + String tmp = ""; + BufferedReader b_err = null; + BufferedReader b_out = null; + try { + Process p = Runtime.getRuntime().exec(command); + //프로세스가 처리될때까지 대기 + p.waitFor(); + + //프로세스 에러시 종료 + if (p.exitValue() != 0) { + b_err = new BufferedReader(new InputStreamReader(p.getErrorStream())); + while (b_err.ready()) { + } + } + //프로세스 실행 성공시 결과 확인 + else { + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + int i = 0; + while (b_out.ready()) { + //도스명령어 실행시 결과는 3번째 라인부터 출력됨.. + tmp = b_out.readLine(); + //2017.03.03 조성원 시큐어코딩(ES)-Null Pointer 역참조[CWE-476] + if(tmp != null){ + if (tmp.length() <= MAX_STR_LEN) { + if (i > 1) { + hostStr += tmp + "\n"; + } + i++; + } + } + } + // 시스템 로그 출력 + } + } finally { + EgovResourceCloseHelper.close(b_err, b_out); + } + return hostStr; + } +} diff --git a/src/main/java/egovframework/com/utl/sim/service/EgovNetworkState.java b/src/main/java/egovframework/com/utl/sim/service/EgovNetworkState.java new file mode 100644 index 00000000..08b73bdc --- /dev/null +++ b/src/main/java/egovframework/com/utl/sim/service/EgovNetworkState.java @@ -0,0 +1,275 @@ +/** + * Class Name : EgovNetworkState.java + * Description : 네트워크(Network)상태 체크 Business Interface class + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.02.02 이 용 최초 생성 + * + * @author 공통 서비스 개발팀 이 용 + * @since 2009. 02. 02 + * @version 1.0 + * @see + * The type com.sun.star.lang.XeventListener cannot be resolved. It is indirectly referenced from required .class files + * Copyright (C) 2009 by EGOV All right reserved. + */ + +package egovframework.com.utl.sim.service; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.InetAddress; +import java.util.ArrayList; +import java.util.List; + +import egovframework.com.cmm.EgovWebUtil; +import egovframework.com.cmm.service.EgovProperties; +import egovframework.com.cmm.service.Globals; +import egovframework.com.cmm.util.EgovResourceCloseHelper; + +public class EgovNetworkState { + public static String addrIP = ""; + static final char FILE_SEPARATOR = File.separatorChar; + // 최대 문자길이 + static final int MAX_STR_LEN = 1024; + + public static final int BUFF_SIZE = 2048; + // Log + // protected static final Log log = LogFactory.getLog(EgovNetworkState.class); + + /** + *
    +	 * Comment : Local MAC Address를 확인한다.
    +	 * 
    + * @param String localIP 로컬 IP주소 + * @return String mac MAC Address를 리턴한다. + * @version 1.0 (2009.02.03.) + * @see + */ + public static String getMyMACAddress(String localIP) { + //log.debug("getMyMACAddress Start!! : "); + String mac = null; + try { + if ("WINDOWS".equals(Globals.OS_TYPE)) { + Process p = null; + Runtime rt = Runtime.getRuntime(); + String[] execStr = { "nbtstat", "-A", localIP }; + p = rt.exec(execStr); // 여기다 아이피 주소 넣주세여 + + InputStream in = p.getInputStream(); + String out = null; + int c; + while ((c = in.read()) != -1) { + out = out + new String(new Character((char) c).toString()); + } + in.close(); + if (out == null || out.indexOf("MAC Address = ") == -1) { + throw new IllegalArgumentException("String Split Error!"); + } + mac = out.substring(out.indexOf("MAC Address = ") + 14, out.indexOf("MAC Address = ") + 31); + + } else if ("UNIX".equals(Globals.OS_TYPE)) { + //log.debug("getMyMACAddress IP : " + localIP); + mac = getNetWorkInfo("MAC"); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + return mac; + } + + /** + *
    +	 * Comment : Local Port를 확인한다.
    +	 * 
    + + * @return String port port를 리턴한다. + * @version 1.0 (2009.02.03.) + * @see + */ + public static List getMyPortScan() { + + List processes = new ArrayList(); + BufferedReader input = null; + + try { + + Process p = null; + Runtime rt = Runtime.getRuntime(); + if ("WINDOWS".equals(Globals.OS_TYPE)) { + String[] execStr = { "netstat", "-an" }; + p = rt.exec(execStr); + input = new BufferedReader(new InputStreamReader(p.getInputStream())); + + while (true) { + String str = input.readLine(); + if (str == null) + break; + if (str.length() >= MAX_STR_LEN) { + throw new RuntimeException("input too long"); + } + if (!str.trim().equals("")) { + processes.add(str); + } + } + } else if ("UNIX".equals(Globals.OS_TYPE)) { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getNetWorkInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), "SCAN" }; + p = Runtime.getRuntime().exec(command); + p = rt.exec(command); + + input = new BufferedReader(new InputStreamReader(p.getInputStream())); + while (true) { + String str = input.readLine(); + if (str == null) + break; + if (str.length() >= MAX_STR_LEN) { + throw new RuntimeException("input too long"); + } + if (!str.trim().equals("")) { + processes.add(str); + } + } + //log.debug("getMyPortScan 6"); + } + } catch (IOException e) { + throw new RuntimeException("IO Exception", e); + } finally { + EgovResourceCloseHelper.close(input); + } + + return processes; + } + + /** + *
    +	 * Comment : Local IPAddress를 확인한다.
    +	 * 
    + * @return String mac Local IPAddress를 리턴한다. + * @version 1.0 (2009.02.03.) + * @see + */ + public static String getMyIPaddress() { + try { + + if (!EgovWebUtil.isIPAddress(InetAddress.getLocalHost().getHostAddress())) { + throw new RuntimeException("IP is needed. (" + InetAddress.getLocalHost().getHostAddress() + ")"); + } + + InetAddress InetA = InetAddress.getLocalHost(); + addrIP = InetA.getHostAddress(); + + } catch (IOException ex) { + throw new RuntimeException(ex); + } + + return addrIP; + } + + /** + *
    +	 * Comment : 네트워크 상태체크를 확인한다.
    +	 * 
    + * @param String localIP localhost, gateway, host 주소 + * @return boolean status true/false 를 리턴한다. + * @version 1.0 (2009.02.03.) + * @see + */ + public static boolean getPingTest(String requestIP) throws Exception { + + boolean status = false; + + if (!EgovWebUtil.isIPAddress(requestIP)) { + throw new RuntimeException("IP is needed. (" + requestIP + ")"); + } + + status = InetAddress.getByName(requestIP).isReachable(3000); + + return status; + } + + /** + *
    +	 * Comment : 네트워크(MAC,IP,S/M,G/W,DNS) 정보를 확인한다.
    +	 * 
    + * @param String stringOne 확인할 네트웍 정보 표기 ( ex:"MAC","IP","S/M","G/W","DNS") + * @return String (MAC,IP,S/M,G/W,DNS) 정보를 리턴한다. + * @version 1.0 (2009.02.07.) + * @see + */ + public static String getNetWorkInfo(String stringOne) throws IOException { + // 실행할 명령을 프로퍼티 파일에서 확인한다. + Process p = null; + + BufferedReader b_out = null; + + String tmp = ""; + String outValue = ""; + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getNetWorkInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), stringOne }; + p = Runtime.getRuntime().exec(command); + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + while (true) { + tmp = b_out.readLine(); + if (tmp == null) + break; + if (tmp.length() >= MAX_STR_LEN) { + throw new IllegalArgumentException("input too long"); + } + // netstat -v ent0 | grep "하드웨어 주소" -MAC + // prtconf | grep "IP 주소" -IP + // prtconf | grep "서브넷 마스크" -SM + // prtconf | grep "게이트웨이" -GW + if ("MAC".equals(stringOne)) { + outValue = getCharFilter(tmp); + } else if ("IP".equals(stringOne)) { + outValue = getCharFilter(tmp); + } else if ("SM".equals(stringOne)) { + outValue = getCharFilter(tmp); + } else if ("GW".equals(stringOne)) { + outValue = getCharFilter(tmp); + } else if ("DNS".equals(stringOne)) { + //tmp = "was은(는) 192.168.200.21입니다"; + outValue = getCharFilter(tmp); + } else { + outValue = "데이타가 존재하지 않습니다."; + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + return outValue; + } + + /** + *
    +	 * Comment : String 타입의 str값 중 숫자 정보만 필터링, 담아서 리턴.
    +	 * 
    + * @param String str 필터링 대상 정보 + * @return String outValue 숫자 정보를 필터링 리턴한다. + * @version 1.0 (2009.02.07.) + * @see + */ + private static String getCharFilter(String str) { + String outValue = ""; + + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + + if (c > 45 && c < 59) { + Character cr = new Character(c); + outValue += cr.toString(); + } + } + return outValue; + } +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/utl/sim/service/EgovPdfCnvr.java b/src/main/java/egovframework/com/utl/sim/service/EgovPdfCnvr.java new file mode 100644 index 00000000..e9803010 --- /dev/null +++ b/src/main/java/egovframework/com/utl/sim/service/EgovPdfCnvr.java @@ -0,0 +1,162 @@ +/** + * Class Name : EgovPdfCnvr.java + * Description : xls,doc,ppt를 Pdf로 변환하는 화면 Business Interface class + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.02.02 이 용 최초 생성 + * 2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + * + * @author 공통 서비스 개발팀 이 용 + * @since 2009. 02. 02 + * @version 1.0 + * @see + * The type com.sun.star.lang.XeventListener cannot be resolved. It is indirectly referenced from required .class files + * Copyright (C) 2009 by EGOV All right reserved. + */ + +package egovframework.com.utl.sim.service; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Iterator; + +import egovframework.com.cmm.EgovWebUtil; +import egovframework.com.cmm.service.EgovProperties; +import egovframework.com.cmm.util.EgovBasicLogger; +import egovframework.com.cmm.util.EgovResourceCloseHelper; +import egovframework.com.utl.fcc.service.EgovStringUtil; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +import com.artofsolving.jodconverter.DocumentConverter; +import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection; +import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter; + +public class EgovPdfCnvr { + public static String addrIP = ""; + static final char FILE_SEPARATOR = File.separatorChar; + // 최대 문자길이 + static final int MAX_STR_LEN = 1024; + + public static final int BUFF_SIZE = 2048; + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovPdfCnvr.class); + + /** + *
    +	 * Comment : doc, xls 파일등을 PDF변환 변환한다. .
    +	 * 
    + * @param String pdfFileSrc doc, xls 파일 전체경로 + * @param String targetPdf 변환파일명(확장자 제외) + * @return boolean status true/false 를 리턴한다. + * @version 1.0 (2009.02.10) + * @see + */ + public static boolean getPDF(String targetPdf, HttpServletRequest request, HttpServletResponse response) throws Exception { + boolean status = false; + + try { + MultipartHttpServletRequest mptRequest = (MultipartHttpServletRequest) request; + Iterator file_iter = mptRequest.getFileNames(); + + while (file_iter.hasNext()) { + MultipartFile mFile = mptRequest.getFile((String) file_iter.next()); + + if (mFile.getSize() > 0) { + + //Write File 이후 Move File???? + String newName = ""; + String stordFilePath = EgovProperties.getProperty("Globals.fileStorePath"); + + //String orginFileName = mFile.getOriginalFilename(); + //int index = orginFileName.lastIndexOf("."); + //String fileExt = orginFileName.substring(index + 1); + + //newName 은 Naming Convention에 의해서 생성 + newName = EgovStringUtil.getTimeStamp(); + writeFile(mFile, newName, stordFilePath); + + String pdfFileSrcValue = stordFilePath.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File inputFile = new File(EgovWebUtil.filePathBlackList(pdfFileSrcValue + newName)); + + if (inputFile.exists()) { + // connect to an OpenOffice.org instance running on port 8100 + SocketOpenOfficeConnection connection = new SocketOpenOfficeConnection(8100); + connection.connect(); + //원본 디렉토리에 targetPdf 명칭지정 + String valueFile = null; + //KISA 보안약점 조치 (2018-10-29, 윤창원) + valueFile = EgovStringUtil.isNullToString(inputFile.getParent()).replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File outputFile = new File(valueFile + "/" + targetPdf + ".pdf"); + // convert + DocumentConverter converter = new OpenOfficeDocumentConverter(connection); + converter.convert(inputFile, outputFile); + // close the connection + connection.disconnect(); + + if (inputFile.exists()) { + //3. 삭제해줍니다. + status = inputFile.delete(); + } + status = true; + } else { + status = false; + } + } + } + } catch (IOException ex) { + EgovBasicLogger.debug("PDF converting error", ex); + + status = false; + } + // 메소드 종료 Log + return status; + } + + /** + * 파일을 실제 물리적인 경로에 생성한다. + * @param file + * @param newName + * @param stordFilePath + * @throws Exception + */ + protected static void writeFile(MultipartFile file, String newName, String stordFilePath) throws IOException { + InputStream stream = null; + OutputStream bos = null; + + try { + stream = file.getInputStream(); + File cFile = new File(EgovWebUtil.filePathBlackList(stordFilePath)); + + if (!cFile.isDirectory()) + //2017.03.03 조성원 시큐어코딩(ES)-부적절한 예외 처리[CWE-253, CWE-440, CWE-754] + if(cFile.mkdirs()){ + LOGGER.debug("[file.mkdirs] targetDir : Directory Creation Success"); + }else{ + LOGGER.error("[file.mkdirs] targetDir : Directory Creation Fail"); + } + bos = new FileOutputStream(EgovWebUtil.filePathBlackList(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); + } + + } finally { + EgovResourceCloseHelper.close(bos, stream); + } + } +} \ No newline at end of file diff --git a/src/main/java/egovframework/com/utl/sim/service/EgovSysInfo.java b/src/main/java/egovframework/com/utl/sim/service/EgovSysInfo.java new file mode 100644 index 00000000..d593568c --- /dev/null +++ b/src/main/java/egovframework/com/utl/sim/service/EgovSysInfo.java @@ -0,0 +1,1000 @@ +/** + * Class Name : EgovSysInfo.java + * Description : 시스템정보를 조회하는 Business Interface class + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.02.02 박지욱 최초 생성 + * 2017.03.03 조성원 시큐어코딩(ES)-Null Pointer 역참조[CWE-476] + * + * @author 공통 서비스 개발팀 박지욱 + * @since 2009. 02. 11 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ +package egovframework.com.utl.sim.service; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Vector; + +import egovframework.com.cmm.service.EgovProperties; +import egovframework.com.cmm.service.Globals; +import egovframework.com.cmm.util.EgovResourceCloseHelper; +import egovframework.com.utl.fcc.service.EgovStringUtil; + +public class EgovSysInfo { + + // 파일구분자 + static final char FILE_SEPARATOR = File.separatorChar; + + // 최대 문자길이 + static final int MAX_STR_LEN = 1024; + + // Log + //protected static final Log log = LogFactory.getLog(EgovSysInfo.class); + + /** + * 시스템에 존재하는 서버목록을 조회하는 기능 + * @return Vector server_list 서버목록 + * @exception Exception + */ + public static Vector> getPrductList() throws Exception { + + //KISA 보안약점 조치 (2018-10-29, 윤창원) + String strlist = EgovStringUtil.isNullToString(EgovProperties.getProperty(Globals.SERVER_CONF_PATH, "SERVER_LIST")); + String[] list = strlist.split("\\$"); + + Vector> serverList = new Vector>(); + + for (int i = 0; i < list.length; i++) { + Map map = new HashMap(); + + map.put("name", list[i]); + //KISA 보안약점 조치 (2018-10-29, 윤창원) + map.put("version", EgovStringUtil.isNullToString(getPrductVersion(list[i]))); + map.put("port", EgovStringUtil.isNullToString(getPrductPort(list[i]))); + map.put("status", getPrductStatus(EgovStringUtil.isNullToString(getPrductPort(list[i])))); + + serverList.add(map); + } + + return serverList; + } + + /** + * 시스템에 존재하는 서버의 제품명, 버전정보를 조회하는 기능 + * @param String server 서버명 + * @return String version 버전 + * @exception Exception + */ + public static String getPrductVersion(String server) throws Exception { + + String version = EgovProperties.getProperty(Globals.SERVER_CONF_PATH, server.toUpperCase() + ".VERSION"); + + return version; + } + + /** + * 시스템에 존재하는 서버의 포트 정보를 조회하는 기능 + * @param String server 서버명 + * @return String port 포트 + * @exception Exception + */ + public static String getPrductPort(String server) throws Exception { + + String port = EgovProperties.getProperty(Globals.SERVER_CONF_PATH, server.toUpperCase() + ".PORT"); + + return port; + } + + /** + * 시스템에 존재하는 서버의 실행상태 정보를 조회하는 기능 + * @param String port 사용포트 + * @return String status 실행상태 + * @exception Exception + */ + public static String getPrductStatus(String port) throws Exception { + + String status = "CLOSE"; + Process p = null; + + BufferedReader b_out = null; + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getPrductStatus"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), port }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && Integer.parseInt(str) > 0 && str.length() <= MAX_STR_LEN) { + status = "LISTENING"; + } + } + } else if ("WINDOWS".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.indexOf(port) != -1 && str.indexOf("LISTENING") != -1 && str.length() <= MAX_STR_LEN) { + status = "LISTENING"; + } + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return status; + } + + /** + * 시스템의 호스트명을 조회하는 기능 + * @return String hostName 호스트명 + * @exception Exception + */ + public static String getHostName() throws Exception { + + // 호스트명 결과 + String hostName = ""; + Process p = null; + + BufferedReader b_out = null; + try { + String[] command = { "hostname" }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + hostName = str; + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return hostName; + } + + /** + * 시스템의 OS 이름을 조회하는 기능 + * @return String osname OS이름 + * @exception Exception + */ + public static String getOSName() throws Exception { + + // OS 이름 + String osname = ""; + Process p = null; + BufferedReader b_out = null; + + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getOSInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), "NAME" }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + osname = str; + } + } + } else if ("WINDOWS".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.indexOf("OS 이름:") != -1 && str.length() <= MAX_STR_LEN) { + osname = str.replaceAll("OS 이름:", ""); + } + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return osname; + } + + /** + * 시스템의 OS 버전을 조회하는 기능 + * @return String osversion OS버전 + * @exception Exception + */ + public static String getOSVersion() throws Exception { + + // OS 버전 + String osversion = ""; + Process p = null; + BufferedReader b_out = null; + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getOSInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), "VERSION" }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + osversion = str; + } + } + } else if ("WINDOWS".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.indexOf("OS 버전:") != -1 && str.length() <= MAX_STR_LEN) { + osversion = str.replaceAll("OS 버전:", ""); + } + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return osversion; + } + + /** + * 시스템의 OS 제조사를 조회하는 기능 + * @return String osprductor OS제조사 + * @exception Exception + */ + public static String getOSPrductor() throws Exception { + + // OS 제조사 + String osprductor = ""; + Process p = null; + BufferedReader b_out = null; + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getOSInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), "PRDUCTOR" }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + osprductor = str; + } + } + } else if ("WINDOWS".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.indexOf("OS 제조업체:") != -1 && str.length() <= MAX_STR_LEN) { + osprductor = str.replaceAll("OS 제조업체:", ""); + } + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return osprductor; + } + + /** + * 시스템의 Processor ID를 조회하는 기능 + * @return String processor 프로세서ID + * @exception Exception + */ + public static String getProcessorID() throws Exception { + + // 프로세서ID + String processor = ""; + Process p = null; + BufferedReader b_out = null; + + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getOSInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), "PROCESSOR" }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + processor = str; + } + } + } else if ("WINDOWS".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.indexOf("프로세서:") != -1 && str.length() <= MAX_STR_LEN) { + processor = str.replaceAll("\\[01\\]:", ""); + } + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return processor; + } + + /** + * 시스템의 디스크명을 확인 + * @return ArrayList list 디스크명이 담긴 목록 + * @exception Exception + */ + public static List getDiskName() throws Exception { + + // 디스크명 + List list = new ArrayList(); + + Process p = null; + BufferedReader b_out = null; + + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getDiskInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), "NAME" }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + list.add(str); + } + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return list; + } + + /** + * 시스템의 디스크 전체용량을 확인 + * @param String disk 디스크명 + * @return long cpcty 디스크 전체용량(MB) + * @exception Exception + */ + public static float getDiskFullCpcty(String disk) throws Exception { + + // 디스크 전체용량 + float cpcty = 0; + + Process p = null; + BufferedReader b_out = null; + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getDiskInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), "FULL", disk }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + cpcty = Float.parseFloat(str); + } + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return cpcty; + } + + /** + * 시스템의 디스크 사용중 용량을 확인 + * @param String disk 디스크명 + * @return long cpcty 디스크 사용중 용량(MB) + * @exception Exception + */ + public static float getDiskUsedCpcty(String disk) throws Exception { + + // 디스크 사용중 용량 + float cpcty = 0; + + Process p = null; + BufferedReader b_out = null; + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getDiskInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), "USED", disk }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + cpcty = Float.parseFloat(str); + } + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return cpcty; + } + + /** + * 시스템의 디스크 유효 용량을 확인 + * @param String disk 디스크명 + * @return long cpcty 디스크 유효 용량(MB) + * @exception Exception + */ + public static float getDiskFreeCpcty(String disk) throws Exception { + + // 디스크 유효 용량 + float cpcty = 0; + + Process p = null; + BufferedReader b_out = null; + + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getDiskInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), "FREE", disk }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + cpcty = Float.parseFloat(str); + } + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return cpcty; + } + + /** + * 시스템의 메모리 전체용량을 확인 + * @return long cpcty 메모리 전체용량(MB) + * @exception Exception + */ + public static float getMoryFullCpcty() throws Exception { + + // 메모리 전체 용량 + float cpcty = 0; + cpcty = getMoryUsedCpcty() + getMoryFreeCpcty(); + return cpcty; + + /* + // 메모리 전체 용량 + float cpcty = 0; + + Process p = null; + try + { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL."+Globals.OS_TYPE+".getMoryInfo"); + String[] command = {cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), + "FULL"}; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + boolean result = false; + BufferedReader b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true){ + String str = b_out.readLine(); + if (str == null) break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + str = str.replaceAll("mem=", "").replaceAll(" ", "").replaceAll("MB", "").replaceAll(",", ""); + cpcty = Float.parseFloat(str); + result = true; + } + } + } else if ("WINDOWS".equals(Globals.OS_TYPE)) { + // 메모리 전체용량 = 사용중 용량 + 유효 용량 + cpcty = getMoryUsedCpcty() + getMoryFreeCpcty(); + } + + b_out.close(); + + }catch(Exception ex){ + ex.printStackTrace(); + }finally{ + if (p != null) p.destroy(); + } + + return cpcty; + */ + } + + /** + * 시스템의 메모리 사용중 용량을 확인 + * @return long cpcty 메모리 사용중 용량(MB) + * @exception Exception + */ + public static float getMoryUsedCpcty() throws Exception { + + // 메모리 사용중 용량 + float cpcty = 0; + + Process p = null; + BufferedReader b_out = null; + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getMoryInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), "USED" }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + //boolean result = false; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + cpcty = Float.parseFloat(str); + //result = true; + } + } + } else if ("WINDOWS".equals(Globals.OS_TYPE)) { + long fullcpcty = 0; + long usedcpcty = 0; + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.indexOf("총 실제 메모리:") != -1 && str.length() <= MAX_STR_LEN) { + str = str.replaceAll("총 실제 메모리:", "").replaceAll(" ", "").replaceAll("MB", "").replaceAll(",", ""); + fullcpcty = Long.parseLong(str); + } + if (str != null && !"".equals(str) && str.indexOf("사용 가능한 실제 메모리:") != -1) { + str = str.replaceAll("사용 가능한 실제 메모리:", "").replaceAll(" ", "").replaceAll("MB", "").replaceAll(",", ""); + usedcpcty = Long.parseLong(str); + } + } + cpcty = fullcpcty - usedcpcty; + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return cpcty; + } + + /** + * 시스템의 메모리 유효 용량을 확인 + * @return long cpcty 메모리 유효 용량 + * @exception Exception + */ + public static float getMoryFreeCpcty() throws Exception { + + // 메모리 유효 용량 + float cpcty = 0; + + Process p = null; + BufferedReader b_out = null; + try { + String cmdStr = EgovProperties.getPathProperty(Globals.SERVER_CONF_PATH, "SHELL." + Globals.OS_TYPE + ".getMoryInfo"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), "FREE" }; + p = Runtime.getRuntime().exec(command); + //p.waitFor(); + + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + + if ("UNIX".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.length() <= MAX_STR_LEN) { + cpcty = Float.parseFloat(str); + } + } + } else if ("WINDOWS".equals(Globals.OS_TYPE)) { + while (true) { + String str = b_out.readLine(); + if (str == null) + break; + if (str != null && !"".equals(str) && str.indexOf("사용 가능한 실제 메모리:") != -1 && str.length() <= MAX_STR_LEN) { + str = str.replaceAll("사용 가능한 실제 메모리:", "").replaceAll(" ", "").replaceAll("MB", "").replaceAll(",", ""); + cpcty = Long.parseLong(str); + } + } + } + } finally { + EgovResourceCloseHelper.close(b_out); + + if (p != null) { + p.destroy(); + } + } + + return cpcty; + } + + /** + * 특정 프로그램을 실행시키기 위해 메모리용량이 충분한지 확인 + * @param String memory 메모리용량(MB) + * @return boolean 가용여부 True/False + * @exception Exception + */ + public static boolean checkMoryCpcty(long memory) throws Exception { + + // 가용여부 + boolean result = false; + + if (memory <= 0) { + //log.debug("+++ Memory Capacity is Not Valid.."); + return false; + } + + if (memory < getMoryFreeCpcty()) { + result = true; + } + + return result; + } + + /** + *
    +	 * Comment : 디스크속성정보를 확인한다.
    +	 * 
    + * @return ArrayList result 디스크속성정보를 라인단위로 담은 ArrayList를 리턴한다. + */ + public static List getDiskAttribute() { + + List result = new ArrayList(); + String[] command = { "" }; // 인자 없음 + try { + result = executeProgram("getDiskAttrb", command); + } catch (Exception e) { + throw new RuntimeException(e); + } + + return result; + } + + /** + *
    +	 * Comment : 디스크용량정보를 확인한다.
    +	 * 
    + * @return ArrayList result 디스크용량정보를 라인단위로 담은 ArrayList를 리턴한다. + */ + public static List getDiskCapacity() { + + List result = new ArrayList(); + String[] command = { "" }; // 인자 없음 + try { + result = executeProgram("getDiskCpcty", command); + } catch (Exception e) { + throw new RuntimeException(e); + } + + return result; + } + + /** + *
    +	 * Comment : 디스크존재여부를 확인한다.
    +	 * 
    + * @return ArrayList result 디스크존재여부를 라인단위로 담은 ArrayList를 리턴한다. + */ + public static List getExistDisk(String diskName) { + + List result = new ArrayList(); + String[] command = { "", diskName }; // 인자 없음 + try { + result = executeProgram("getDiskExst", command); + } catch (Exception e) { + throw new RuntimeException(e); + } + + return result; + } + + /** + * 시스템에서 특정 쉘프로그램을 동작하고 콘솔에 출력된 결과를 라인단위로 ArrayList에 담아서 전달한다. + * @param String propertyKeyword 프로퍼티키워드 -프로퍼티에서 해당키에 대한 프로그램정보를 확인) + * @param String[] command 실행할 프로그램의 argument + * @return ArrayList resultTxtList 콘솔상에 출력된 결과를 라인단위 문자열로 보관 + * @exception Exception + */ + public static List executeProgram(String propertyKeyword, String[] command) throws Exception { + + List resultTxtList = new ArrayList(); + + BufferedReader b_err = null; + BufferedReader b_out = null; + try { + Process p = null; + String cmdStr = EgovProperties.getPathProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + "." + propertyKeyword); + command[0] = cmdStr; + p = Runtime.getRuntime().exec(command); + p.waitFor(); + //프로세스 에러시 종료 + if (p.exitValue() != 0) { + b_err = new BufferedReader(new InputStreamReader(p.getErrorStream())); + while (b_err.ready()) { + //String line = b_err.readLine(); + //if (line.length() <= MAX_STR_LEN) log.debug("ERR\n" + line); + } + } else { //프로세스 실행 성공시 결과 확인 + String tmpLine = ""; + b_out = new BufferedReader(new InputStreamReader(p.getInputStream())); + while (b_out.ready()) { + // 결과문자가 있으면 생성자가 있다는 의미 + tmpLine = b_out.readLine(); + //2017.03.03 조성원 시큐어코딩(ES)-Null Pointer 역참조[CWE-476] + if(tmpLine != null){ + if (tmpLine.length() <= MAX_STR_LEN) { + resultTxtList.add(tmpLine); + } + } + } + } + } finally { + EgovResourceCloseHelper.close(b_err, b_out); + } + + return resultTxtList; + } + + /** + *
    +	 * Comment : 프로세스 정보를 확인한다. (
    +	 * 
    + * @param + * @return List 프로세스 정보를 리턴한다. + * @version 1.0 (2009.01.12.) + * @see + */ + public static List getProcessId() { + + List processes = new ArrayList(); + String[] command = { "", "-all" }; // 인자 없음 + try { + String line; + String separator = null; + + Process p = null; + + if ("WINDOWS".equals(Globals.OS_TYPE)) { + p = Runtime.getRuntime().exec("tasklist.exe /fo csv /nh"); + separator = "\",\""; + + if (p == null) { + throw new RuntimeException("Can't execute process..."); + } + BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); + if (input != null) { + while ((line = input.readLine()) != null) { + if (!line.trim().equals("") && line.length() <= MAX_STR_LEN) { + + line = line.substring(1, line.length() - 1); + String[] operator = line.split(separator); + + processes.add(operator); + } + } + + input.close(); + } + + } else if ("UNIX".equals(Globals.OS_TYPE)) { + /* + String tmp = "ps -eo \"%p %G %U %c %a\"|awk -F\" \" '{print $1,$2,$3,$4,$5}'"; + log.debug(tmp); + command [0] = tmp; + p = Runtime.getRuntime().exec(tmp); + separator = " "; + */ + separator = " "; + List resultList = executeProgram("getProcInfo", command); + + for (String result : resultList) { + String[] operator = result.split(separator); + + processes.add(operator); + } + + } + + + } catch (IOException err) {//KISA 보안약점 조치 (2018-10-29, 윤창원) + throw new RuntimeException(err); + } catch (Exception err) { + throw new RuntimeException(err); + } + + return processes; + } + + /** + *
    +	 * Comment : 프로세스 정보를 확인한다. (
    +	 * 
    + * @param String processName + * @return List 프로세스 정보를 리턴한다. + * @version 1.0 (2009.01.12.) + * @see + */ + public static List getProcessId(String processName) { + //log.debug("getProcessId_start"); + List processes = new ArrayList(); + String[] command = { "", "" }; // 인자 없음 + //String tmp = ""; + BufferedReader input = null; + try { + String line; + String separator = null; + + Process p = null; + + if (Globals.OS_TYPE == null) { + throw new RuntimeException("Globals.OS_TYPE property value is needed!!!"); + } + + //log.debug("Globals.OS_TYPE:"+Globals.OS_TYPE); + if ("WINDOWS".equals(Globals.OS_TYPE)) { + p = Runtime.getRuntime().exec("tasklist /fo csv /nh /fi \"imagename eq " + processName + "*\""); + separator = "\",\""; + + if (p == null) { // 2012.11 KISA 보안조치 + throw new RuntimeException("Can't execute process..."); + } + input = new BufferedReader(new InputStreamReader(p.getInputStream())); + if (input != null) { + while ((line = input.readLine()) != null) { + //log.debug("LINE__"+line); + if (line.length() <= MAX_STR_LEN) { + + line = line.substring(1, line.length() - 1); + String[] operator = line.split(separator); + + processes.add(operator); + } + } + + input.close(); + } + + } else if ("UNIX".equals(Globals.OS_TYPE)) { + //tmp = "ps -eo \"%p %G %U %c %a\"|awk -F\" \" '{print $1,$2,$3,$4,$5}'|grep "+processName; + //command [0] = tmp; + //p = Runtime.getRuntime().exec(tmp); + command[1] = processName; + + separator = " "; + + List resultList = executeProgram("getProcInfo", command); + + for (String result : resultList) { + String[] operator = result.split(separator); + + processes.add(operator); + } + } + + } catch (IOException err) {//KISA 보안약점 조치 (2018-10-29, 윤창원) + throw new RuntimeException(err); + } catch (Exception err) { + throw new RuntimeException(err); + } + + return processes; + } +} diff --git a/src/main/java/egovframework/com/utl/sim/service/EgovXMLDoc.java b/src/main/java/egovframework/com/utl/sim/service/EgovXMLDoc.java new file mode 100644 index 00000000..61685b51 --- /dev/null +++ b/src/main/java/egovframework/com/utl/sim/service/EgovXMLDoc.java @@ -0,0 +1,337 @@ +/** + * Class Name : EgovXMLDoc.java + * Description : XML파일을 파싱하여 구조체 형태로 반환 또는 구조체 형태의 데이터를 XML파일로 저장하는 Business Interface class + * Modification Information + * + * 수정일 수정자 수정내용 + * ------- -------- --------------------------- + * 2009.02.03 박지욱 최초 생성 + * + * @author 공통 서비스 개발팀 박지욱 + * @since 2009. 02. 03 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ +package egovframework.com.utl.sim.service; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStreamReader; + +import egovframework.com.cmm.EgovWebUtil; +import egovframework.com.cmm.service.EgovProperties; +import egovframework.com.cmm.service.Globals; +import egovframework.com.cmm.util.EgovResourceCloseHelper; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Result; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import noNamespace.SndngMailDocument; + +import org.apache.xmlbeans.XmlOptions; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.Text; + +public class EgovXMLDoc { + + // 파일구분자 + static final char FILE_SEPARATOR = File.separatorChar; + + // 최대 문자길이 + static final int MAX_STR_LEN = 1024; + + // Log + //protected static final Log log = LogFactory.getLog(EgovXMLDoc.class); + /** + * XML스키마를 자바클래스(임의)로 생성 + * @param String xml XML스키마 + * @param String ja 생성될JAR파일의 위치 + * @return boolean result 생성여부 True/False + * @exception Exception + */ + public static boolean creatSchemaToClass(String xml, String ja) throws Exception { + + boolean result = false; + + // 1. 스키마가 없으면 에러 + String file = xml.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File xmlFile = new File(file); + if (!xmlFile.exists() || !xmlFile.isFile()) { + //log.debug("+++ 지정된 위치에 스키마 파일이 없습니다."); + return false; + } + + // 2. 동일한 jar파일이 이미 존재하면 에러 + String jar = ja.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File jarFile = new File(jar); + if (jarFile.exists()) { + //log.debug("+++ 동일한 JAR 파일이 존재합니다."); + return false; + } + + // 3. scomp -src [소스생성위치] [xsd파일] : 입력받은 스키마를 컴파일하여 JAVA 소스파일로 생성 + Process p = null; + BufferedReader b_err = null; + String cmdStr = EgovProperties.getPathProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".compileSchema"); + String[] command = { cmdStr.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR), jar, file }; + + try { + p = Runtime.getRuntime().exec(command); + //프로세스가 처리될때까지 대기 + p.waitFor(); + + //프로세스 에러시 종료 + if (p.exitValue() != 0) { + b_err = new BufferedReader(new InputStreamReader(p.getErrorStream())); + while (b_err.ready()) { + //String line = b_err.readLine(); + //if (line.length() <= MAX_STR_LEN) log.debug("ERR\n" + line); + } + b_err.close(); + } + //프로세스 실행 성공시 결과 확인 + else { + result = true; + } + } finally { + EgovResourceCloseHelper.close(b_err); + + if (p != null) { + p.destroy(); + } + } + return result; + } + + /** + * XML파일을 파싱하여 메일발송 클래스(임의)에 내용을 담아 반환 + * @param String file XML파일 + * @return SndngMailDocument mailDoc 메일발송 클래스(XML스키마를 통해 생성된 자바클래스) + * @exception Exception + */ + public static SndngMailDocument getXMLToClass(String file) throws Exception { + + File xmlFile = null; + FileInputStream fis = null; + SndngMailDocument mailDoc = null; + try { + String file1 = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + xmlFile = new File(EgovWebUtil.filePathBlackList(file1)); + if (xmlFile.exists() && xmlFile.isFile()) { + fis = new FileInputStream(xmlFile); + mailDoc = SndngMailDocument.Factory.parse(xmlFile); + + } + } finally { + EgovResourceCloseHelper.close(fis); + } + + return mailDoc; + } + + /** + * XML데이터를 XML파일로 저장 + * @param UserinfoDocument userDoc 사용자 임의 클래스(XML스키마를 통해 생성된 자바클래스) + * @param String fiile 저장될 파일 + * @return boolean 저장여부 True / False + * @exception Exception + */ + public static boolean getClassToXML(SndngMailDocument mailDoc, String file) throws Exception { + + boolean result = false; + + FileOutputStream fos = null; + + try { + + String file1 = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + file1 = EgovFileTool.createNewFile(file1); + File xmlFile = new File(EgovWebUtil.filePathBlackList(file1)); + fos = new FileOutputStream(xmlFile); + + XmlOptions xmlOptions = new XmlOptions(); + xmlOptions.setSavePrettyPrint(); + xmlOptions.setSavePrettyPrintIndent(4); + xmlOptions.setCharacterEncoding("UTF-8"); + String xmlStr = mailDoc.xmlText(xmlOptions); + + fos.write(xmlStr.getBytes("UTF-8")); + result = true; + + } finally { + EgovResourceCloseHelper.close(fos); + } + + return result; + } + + /** + * XML 파일을 파싱하여 데이터를 조작할 수 있는 Document 객체를 반환 + * @param String file XML파일 + * @return Document document 문서객체 + * @exception Exception + */ + public static Document getXMLDocument(String xml) throws Exception { + + Document xmlDoc = null; + + String file = xml.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(file); + FileInputStream fis = null; + try { + if (srcFile.exists() && srcFile.isFile()) { + + fis = new FileInputStream(srcFile); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = null; + factory.setValidating(true); + builder = factory.newDocumentBuilder(); + xmlDoc = builder.parse(fis); + } + } finally { + EgovResourceCloseHelper.close(fis); + } + + return xmlDoc; + } + + /** + * Document의 최상의 Element로 이동 + * @param Document document XML데이터 + * @return Element root 루트 + * @exception Exception + */ + public static Element getRootElement(Document document) throws Exception { + + Element root = document.getDocumentElement(); + return root; + } + + /** + * 하위에 새로운 Elemenet를 생성 + * @param Document document XML데이터 + * @prarm Element rt 추가될위치 + * @param id 생성될 Element의 ID + * @return Element element 추가된 Element + * @exception Exception + */ + public static Element insertElement(Document document, Element rt, String id) throws Exception { + + Element child = null; + Element root = null; + + if (rt == null) { + root = getRootElement(document); + } else { + root = rt; + } + child = document.createElement(id); + root.appendChild(child); + + return child; + } + + /** + * 하위에 문자열을 가지는 새로운 Elemenet를 생성 + * @param Document document XML데이터 + * @prarm Element rt 추가 위치 + * @param id 생성될 Element의 ID + * @param text Element 하위에 들어갈 문자열 + * @return Element element 추가된 Element + * @exception Exception + */ + public static Element insertElement(Document document, Element rt, String id, String text) throws Exception { + + Element echild = null; + Text tchild = null; + Element root = null; + + if (rt == null) { + root = getRootElement(document); + } else { + root = rt; + } + echild = document.createElement(id); + root.appendChild(echild); + tchild = document.createTextNode(text); + echild.appendChild(tchild); + + return echild; + } + + /** + * 하위에 문자열을 추가 + * @param Document document XML데이터 + * @prarm Element rt 추가 위치 + * @param id 생성될 Element의 ID + * @param text Element 하위에 들어갈 문자열 + * @return Element element 추가된 Element + * @exception Exception + */ + public static Text insertText(Document document, Element rt, String text) throws Exception { + + Text tchild = null; + Element root = null; + + if (rt == null) { + root = getRootElement(document); + } else { + root = rt; + } + tchild = document.createTextNode(text); + root.appendChild(tchild); + + return tchild; + } + + /** + * 마지막으로 입력되었거나 참조된 XML Node의 상위 Element를 리턴 + * @prarm Element current 현재노드 + * @return Element parent 상위노드 + * @exception Exception + */ + public static Element getParentNode(Element current) throws Exception { + + Node parent = current.getParentNode(); + return (Element) parent; + } + + /** + * Document 객체를 XML파일로 저장 + * @param Document document 문서객체 + * @param String fiile 저장될 파일 + * @return boolean 저장여부 True / False + * @exception Exception + */ + public static boolean getXMLFile(Document document, String file) throws Exception { + + boolean retVal = false; + + String file1 = file.replace('\\', FILE_SEPARATOR).replace('/', FILE_SEPARATOR); + File srcFile = new File(file1); + if (srcFile.exists() && srcFile.isFile()) { + + Source source = new DOMSource(document); + Result result = new StreamResult(srcFile); + Transformer transformer = TransformerFactory.newInstance().newTransformer(); + transformer.setOutputProperty(OutputKeys.METHOD, "xml"); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + transformer.transform(source, result); + } + + return retVal; + } +} diff --git a/src/main/java/egovframework/com/utl/wed/filter/CkFilter.java b/src/main/java/egovframework/com/utl/wed/filter/CkFilter.java new file mode 100644 index 00000000..3c3015df --- /dev/null +++ b/src/main/java/egovframework/com/utl/wed/filter/CkFilter.java @@ -0,0 +1,111 @@ +/* + * CKEditor image upload module for Java. + * Copyright guavatak (https://github.com/guavatak/ckeditor-upload-filter-java) + * + * 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. + * + * @author guavatak (https://github.com/guavatak/ckeditor-upload-filter-java) + */ +package egovframework.com.utl.wed.filter; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +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; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Filter class + * @author guavatak + * @since 2014.12.04 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *  수정일              수정자              수정내용
    + *  ----------  --------    ---------------------------
    + *  2014.12.04	표준프레임워크	최초 적용 (패키지 변경 및 소스 정리)
    + *  2018.12.28	신용호             CkImageSaver 수정
    + * 
    + */ +public class CkFilter implements Filter { + private static final Log log = LogFactory.getLog(CkFilter.class); + + private static final String IMAGE_BASE_DIR_KEY = "ck.image.dir"; + private static final String IMAGE_BASE_URL_KEY = "ck.image.url"; + private static final String IMAGE_ALLOW_TYPE_KEY = "ck.image.type.allow"; + private static final String IMAGE_SAVE_CLASS_KEY = "ck.image.save.class"; + + private CkImageSaver ckImageSaver; + + public void init(FilterConfig filterConfig) throws ServletException { + String properties = filterConfig.getInitParameter("properties"); + InputStream inStream = Thread.currentThread().getContextClassLoader() .getResourceAsStream(properties); + Properties props = new Properties(); + try { + props.load(inStream); + } catch (IOException e) { + log.error(e); + } finally { //KISA 보안약점 조치 (2018-10-29, 윤창원) + try { + inStream.close(); + } catch (IOException e) { + log.error(e); + } + } + + String imageBaseDir = (String) props.get(IMAGE_BASE_DIR_KEY); + String imageDomain = (String) props.get(IMAGE_BASE_URL_KEY); + + String[] allowFileTypeArr = null; + String allowFileType = (String) props.get(IMAGE_ALLOW_TYPE_KEY); + if (StringUtils.isNotBlank(allowFileType)) { + allowFileTypeArr = StringUtils.split(allowFileType, ","); + } + + String saveManagerClass = (String) props.get(IMAGE_SAVE_CLASS_KEY); + + ckImageSaver = new CkImageSaver(imageBaseDir, imageDomain, allowFileTypeArr, saveManagerClass); + + } + + public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { + HttpServletRequest request = (HttpServletRequest) req; + HttpServletResponse response = (HttpServletResponse) res; + + if (request.getContentType() == null || request.getContentType().indexOf("multipart") == -1) { + // contentType 이 multipart 가 아니라면 스킵한다. + chain.doFilter(request, response); + } else { + ckImageSaver.saveAndReturnUrlToClient(request, response); + + } + } + + public void destroy() { + // no-op + } +} diff --git a/src/main/java/egovframework/com/utl/wed/filter/CkImageSaver.java b/src/main/java/egovframework/com/utl/wed/filter/CkImageSaver.java new file mode 100644 index 00000000..ef6c6b10 --- /dev/null +++ b/src/main/java/egovframework/com/utl/wed/filter/CkImageSaver.java @@ -0,0 +1,212 @@ +/* + * CKEditor image upload module for Java. + * Copyright guavatak (https://github.com/guavatak/ckeditor-upload-filter-java) + * + * 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. + * + * @author guavatak (https://github.com/guavatak/ckeditor-upload-filter-java) + */ +package egovframework.com.utl.wed.filter; + +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URLEncoder; +import java.util.List; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemFactory; +import org.apache.commons.fileupload.FileUploadException; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.commons.fileupload.servlet.ServletFileUpload; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +import egovframework.com.cmm.EgovWebUtil; +import egovframework.com.cmm.service.EgovProperties; +import egovframework.rte.fdl.cryptography.EgovEnvCryptoService; +import egovframework.rte.fdl.cryptography.EgovPasswordEncoder; +import egovframework.rte.fdl.cryptography.impl.EgovEnvCryptoServiceImpl; + +/** + * Created by guava on 1/20/14. + * 이미지 저장 처리 클래스 + * @author guavatak + * @since 2014.12.04 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *  수정일              수정자             수정내용
    + *  ----------  --------    ---------------------------
    + *  2014.12.04	표준프레임워크	최초 적용 (패키지 변경 및 소스 정리)
    + *  2016.04.21	장동한		공통컴포넌트 V3.6 수정
    + *  2018.12.11	신용호		KISA 보안취약점 등 수정
    + *  2018.12.28	신용호		업로드 이미지 URL 생성 부분 수정
    + * 
    + */ +public class CkImageSaver { + private static final Log log = LogFactory.getLog(CkFilter.class); + + private static final String FUNC_NO = "CKEditorFuncNum"; + + private String imageBaseDir; + private String imageDomain; + private String[] allowFileTypeArr; + + private String fileStorePath = EgovProperties.getProperty("Globals.fileStorePath"); + + private FileSaveManager fileSaveManager; + + public CkImageSaver(String imageBaseDir, String imageDomain, String[] allowFileTypeArr, String saveManagerClass) { + this.imageBaseDir = EgovWebUtil.filePathBlackList(imageBaseDir); + + if (imageBaseDir.endsWith("/")) { + StringUtils.removeEnd(imageBaseDir, "/"); + } + if (imageBaseDir.endsWith("\\")) { + StringUtils.removeEnd(imageBaseDir, "\\"); + } + + this.imageDomain = EgovWebUtil.filePathBlackList(imageDomain); + if (imageDomain.endsWith("/")) { + StringUtils.removeEnd(imageDomain, "/"); + } + + this.allowFileTypeArr = allowFileTypeArr; + + if (StringUtils.isBlank(saveManagerClass)) { + fileSaveManager = new DefaultFileSaveManager(); + } else { + try { + Class klass = Class.forName(saveManagerClass); + fileSaveManager = (FileSaveManager) klass.newInstance(); + } catch (ClassNotFoundException e) { + log.error(e); + throw new RuntimeException(e); + } catch (InstantiationException e) { + log.error(e); + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + log.error(e); + throw new RuntimeException(e); + } + } + } + + public void saveAndReturnUrlToClient(HttpServletRequest request, HttpServletResponse response) throws IOException { + // Parse the request + try { + FileItemFactory factory = new DiskFileItemFactory(); + + // Create a new file upload handler + ServletFileUpload upload = new ServletFileUpload(factory); + + List /* FileItem */items = upload.parseRequest(request); + // We upload just one file at the same time + FileItem uplFile = items.get(0); + + String errorMessage = null; + String relUrl = null; + + if (isAllowFileType(FilenameUtils.getName(uplFile.getName()))) { + String uploadFilePath = fileSaveManager.saveFile(uplFile, fileStorePath+imageBaseDir); + //System.out.println("===>>> uploadFilePath = "+uploadFilePath); + + String fileName = uploadFilePath.substring(uploadFilePath.lastIndexOf('/') + 1); + String filePath = imageBaseDir+uploadFilePath.substring(0,uploadFilePath.lastIndexOf('/')); + + relUrl = request.getContextPath() + + "/utl/web/imageSrc.do?" + + "path=" + this.encrypt(filePath,request) + + "&physical=" + this.encrypt(fileName,request) + + "&contentType=" + this.encrypt(uplFile.getContentType(),request); + + //System.out.println("===>>> relUrl = "+relUrl); + } else { + errorMessage = "Restricted Image Format"; + } + + StringBuffer sb = new StringBuffer(); + sb.append(""); + + response.setContentType("text/html"); + response.setHeader("Cache-Control", "no-cache"); + PrintWriter out = response.getWriter(); + + out.print(sb.toString()); + out.flush(); + out.close(); + + } catch (FileUploadException e) { + log.error(e); + } + } + + protected boolean isAllowFileType(String fileName) { + boolean isAllow = false; + if (allowFileTypeArr != null && allowFileTypeArr.length > 0) { + for (String allowFileType : allowFileTypeArr) { + if (StringUtils.equalsIgnoreCase(allowFileType, StringUtils.substringAfterLast(fileName, "."))) { + isAllow = true; + break; + } + } + } else { + isAllow = true; + } + + return isAllow; + } + + /** + * 암호화 + * + * @param encrypt + */ + private String encrypt(String encrypt,HttpServletRequest request) { + + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); + EgovEnvCryptoService cryptoService = (EgovEnvCryptoService)wac.getBean("egovEnvCryptoService"); + + try { + return cryptoService.encrypt(encrypt); + } catch(IllegalArgumentException e) { + log.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + log.error("[" + e.getClass() +"] :" + e.getMessage()); + } + return encrypt; + } + +} diff --git a/src/main/java/egovframework/com/utl/wed/filter/DefaultFileSaveManager.java b/src/main/java/egovframework/com/utl/wed/filter/DefaultFileSaveManager.java new file mode 100644 index 00000000..fa4a0221 --- /dev/null +++ b/src/main/java/egovframework/com/utl/wed/filter/DefaultFileSaveManager.java @@ -0,0 +1,78 @@ +/* + * CKEditor image upload module for Java. + * Copyright guavatak (https://github.com/guavatak/ckeditor-upload-filter-java) + * + * 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. + * + * @author guavatak (https://github.com/guavatak/ckeditor-upload-filter-java) + */ +package egovframework.com.utl.wed.filter; + +import java.io.File; +import java.io.IOException; + +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import egovframework.com.cmm.service.EgovProperties; + +/** + * Created by guava on 1/20/14. + * 이미지 저장 처리 클래스 + * @author guavatak + * @since 2014.12.04 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *  수정일              수정자             수정내용
    + *  ----------  --------    ---------------------------
    + *  2014.12.04	표준프레임워크	최초 적용 (패키지 변경 및 소스 정리)
    + *  2018.12.28	신용호             saveFile() 파라미터 수정
    + * 
    + */ +public class DefaultFileSaveManager implements FileSaveManager { + + private static final Logger LOGGER = LoggerFactory.getLogger(EgovProperties.class); + + @Override + public String saveFile(FileItem fileItem, String imageBaseDir) { + String originalFileName = FilenameUtils.getName(fileItem.getName()); + String relUrl; + // filename + String subDir = File.separator + DirectoryPathManager.getDirectoryPathByDateType(DirectoryPathManager.DIR_DATE_TYPE.DATE_POLICY_YYYY_MM); + String fileName = RandomStringUtils.randomAlphanumeric(20) + "." + StringUtils.lowerCase(StringUtils.substringAfterLast(originalFileName, ".")); + + File newFile = new File(imageBaseDir + subDir + fileName); + File fileToSave = DirectoryPathManager.getUniqueFile(newFile.getAbsoluteFile()); + + try { + FileUtils.writeByteArrayToFile(fileToSave, fileItem.get()); + } catch (IOException e) { + //KISA 보안약점 조치 (2018-10-29, 윤창원) + LOGGER.debug("File IO exception" + e.getMessage()); + } + + String savedFileName = FilenameUtils.getName(fileToSave.getAbsolutePath()); + relUrl = StringUtils.replace(subDir, "\\", "/") + savedFileName; + + return relUrl; + } +} diff --git a/src/main/java/egovframework/com/utl/wed/filter/DirectoryPathManager.java b/src/main/java/egovframework/com/utl/wed/filter/DirectoryPathManager.java new file mode 100644 index 00000000..3d9d1add --- /dev/null +++ b/src/main/java/egovframework/com/utl/wed/filter/DirectoryPathManager.java @@ -0,0 +1,86 @@ +/* + * CKEditor image upload module for Java. + * Copyright guavatak (https://github.com/guavatak/ckeditor-upload-filter-java) + * + * 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. + * + * @author guavatak (https://github.com/guavatak/ckeditor-upload-filter-java) + */ +package egovframework.com.utl.wed.filter; + +import java.io.File; +import java.util.Calendar; + +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.StringUtils; + +import com.sun.star.auth.InvalidArgumentException; + +/** + * 이미지 저장 처리 클래스 + * @author guavatak + * @since 2014.12.04 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *  수정일              수정자             수정내용
    + *  ----------  --------    ---------------------------
    + *  2014.12.04  표준프레임워크   최초 적용 (패키지 변경 및 소스 정리)
    + *  2018.12.28  신용호             getDirectoryPathByDateType() Month의 범위를 1~12가 되도록 수정
    + * 
    + */ +public class DirectoryPathManager { + public enum DIR_DATE_TYPE { + DATE_POLICY_YYYY_MM_DD, DATE_POLICY_YYYY_MM, DATE_POLICY_YYYY + }; + + /** + * 2012/12/22/ + * @param dateType + * @return + * @throws InvalidArgumentException + */ + public static String getDirectoryPathByDateType(DIR_DATE_TYPE policy) { + + Calendar calendar = Calendar.getInstance(); + StringBuffer sb = new StringBuffer(); + sb.append(calendar.get(Calendar.YEAR)).append(File.separator); + if (policy.ordinal() <= DIR_DATE_TYPE.DATE_POLICY_YYYY_MM.ordinal()) { + sb.append(StringUtils.leftPad(String.valueOf(calendar.get(Calendar.MONTH)+1), 2, '0')).append(File.separator); + } + if (policy.ordinal() <= DIR_DATE_TYPE.DATE_POLICY_YYYY_MM_DD.ordinal()) { + sb.append(StringUtils.leftPad(String.valueOf(calendar.get(Calendar.DATE)), 2, '0')).append(File.separator); + } + + return sb.toString(); + } + + public static File getUniqueFile(final File file) { + if (!file.exists()) + return file; + + File tmpFile = new File(file.getAbsolutePath()); + File parentDir = tmpFile.getParentFile(); + int count = 1; + String extension = FilenameUtils.getExtension(tmpFile.getName()); + String baseName = FilenameUtils.getBaseName(tmpFile.getName()); + do { + tmpFile = new File(parentDir, baseName + "_" + count++ + "_." + extension); + } while (tmpFile.exists()); + return tmpFile; + } + +} diff --git a/src/main/java/egovframework/com/utl/wed/filter/FileSaveManager.java b/src/main/java/egovframework/com/utl/wed/filter/FileSaveManager.java new file mode 100644 index 00000000..55f89655 --- /dev/null +++ b/src/main/java/egovframework/com/utl/wed/filter/FileSaveManager.java @@ -0,0 +1,49 @@ +/* + * CKEditor image upload module for Java. + * Copyright guavatak (https://github.com/guavatak/ckeditor-upload-filter-java) + * + * 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. + * + * @author guavatak (https://github.com/guavatak/ckeditor-upload-filter-java) + */ +package egovframework.com.utl.wed.filter; + +import org.apache.commons.fileupload.FileItem; + +/** + * Created by guava on 1/20/14. + * 이미지 저장 처리 클래스 + * @author guavatak + * @since 2014.12.04 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *   
    + *  수정일              수정자             수정내용
    + *  ----------  --------    ---------------------------
    + *  2014.12.04	표준프레임워크	최초 적용 (패키지 변경 및 소스 정리)
    + *  2018.12.28	신용호             saveFile() 파라미터 수정
    + * 
    + */ +public interface FileSaveManager { + /** + * + * @param fileItem + * @param imageBaseDir 기본 이미지 저장 디렉토리. 이 디렉토리 아래로 모든 파일을 넣어도 되고, 폴더를 구분하여 넣어도 된다. 이 파라미터에는 마지막 디렉토리 구분자는 포함되지 않는다. + * @return 이미지 파일을 액세스 할 수 있는 URL 을 반환한다. 반환된 URL 은 ckeditor 에게 전달되어 즉시 사용자 브라우져에 이미지가 나타나게 된다. + */ + String saveFile(FileItem fileItem, String imageBaseDir); +} + diff --git a/src/main/java/egovframework/com/utl/wed/web/EgovWebEditorImageController.java b/src/main/java/egovframework/com/utl/wed/web/EgovWebEditorImageController.java new file mode 100644 index 00000000..096b8b93 --- /dev/null +++ b/src/main/java/egovframework/com/utl/wed/web/EgovWebEditorImageController.java @@ -0,0 +1,216 @@ +package egovframework.com.utl.wed.web; + +import java.io.FileNotFoundException; +import java.net.URLEncoder; +import java.util.List; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +import egovframework.com.cmm.EgovMessageSource; +import egovframework.com.cmm.service.EgovProperties; +import egovframework.com.utl.fcc.service.EgovFileUploadUtil; +import egovframework.com.utl.fcc.service.EgovFormBasedFileUtil; +import egovframework.com.utl.fcc.service.EgovFormBasedFileVo; +import egovframework.com.utl.fcc.service.EgovStringUtil; +import egovframework.rte.fdl.cryptography.EgovEnvCryptoService; +import egovframework.rte.fdl.cryptography.EgovPasswordEncoder; + +/** + * 웹에디터 이미지 upload 처리 Controller + * @author 공통컴포넌트개발팀 한성곤 + * @since 2009.08.26 + * @version 1.0 + * @see + * + *
    + * << 개정이력(Modification Information) >>
    + *
    + *   수정일                수정자          수정내용
    + *  -----------   --------  ---------------------------
    + *   2009.08.26   한성곤          최초 생성
    + *   2017.08.31   장동한          path, physical 파라미터 노출 암호화 처리
    + *   2017.12.12   장동한          출력 모듈 경로 변경 취약점 조치
    + *   2018.03.07   신용호          URLEncode 처리
    + *   2018.08.17   신용호          URL 암호화 보안 추가 조치
    + *   
    + * 
    + */ +@Controller +public class EgovWebEditorImageController { + + /** 로그설정 */ + private static final Logger LOGGER = LoggerFactory.getLogger(EgovWebEditorImageController.class); + + /** 첨부파일 위치 지정 => globals.properties */ + private final String uploadDir = EgovProperties.getProperty("Globals.fileStorePath"); + /** 허용할 확장자를 .확장자 형태로 연달아 기술한다. ex) .gif.jpg.jpeg.png => globals.properties */ + private final String extWhiteList = EgovProperties.getProperty("Globals.fileDownload.Extensions"); + + /** 첨부 최대 파일 크기 지정 */ + private final long maxFileSize = 1024 * 1024 * 100; //업로드 최대 사이즈 설정 (100M) + + /** 암호화서비스 */ + @Resource(name = "egovEnvCryptoService") + EgovEnvCryptoService cryptoService; + + @Resource(name = "egovEnvPasswordEncoderService") + EgovPasswordEncoder egovPasswordEncoder; + + /** EgovMessageSource */ + @Resource(name="egovMessageSource") + EgovMessageSource egovMessageSource; + + /** + * 이미지 Upload 화면으로 이동한다. + * + * @return + * @throws Exception + */ + @RequestMapping(value="/utl/wed/insertImage.do", method=RequestMethod.GET) + public String goInsertImage() throws Exception { + + return "egovframework/com/utl/wed/EgovInsertImage"; + } + + + /** + * 이미지 Upload를 처리한다. + * + * @param request + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value="/utl/wed/insertImage.do", method=RequestMethod.POST) + public String imageUpload(MultipartHttpServletRequest request, Model model) throws Exception { + + uploadImageFiles(request, model); + return "egovframework/com/utl/wed/EgovInsertImage"; + } + + /** + * 이미지 Upload(CK에디터)를 처리한다. + * + * @param request + * @param model + * @return + * @throws Exception + */ + @RequestMapping(value="/utl/wed/insertImageCk.do", method=RequestMethod.POST) + public String imageUploadCk(@RequestParam(value="CKEditorFuncNum", required=false) String ckEditorFuncNum, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception { + // Spring multipartResolver 미사용 시 (commons-fileupload 활용) + //List list = EgovFormBasedFileUtil.uploadFiles(request, uploadDir, maxFileSize); + model.addAttribute("ckEditorFuncNum", ckEditorFuncNum); + uploadImageFiles(request, model); + return "egovframework/com/utl/wed/EgovUploadImageComplete"; + } + + /** + * @param request + * @param model + * @throws Exception + */ + private void uploadImageFiles(HttpServletRequest request, Model model) throws Exception { + + try { + List list = EgovFileUploadUtil.uploadFilesExt(request, uploadDir, maxFileSize, extWhiteList); + if (list.size() > 0) { + EgovFormBasedFileVo vo = list.get(0); // 첫번째 이미지 + + String url = request.getContextPath() + + "/utl/web/imageSrc.do?" + + "path=" + this.encrypt(vo.getServerSubPath()) + + "&physical=" + this.encrypt(vo.getPhysicalName()) + + "&contentType=" + this.encrypt(vo.getContentType()); + + model.addAttribute("url", url); + model.addAttribute("msg",egovMessageSource.getMessage("success.file.transfer")); + } + } catch (SecurityException e) { + model.addAttribute("url", ""); + model.addAttribute("msg",egovMessageSource.getMessage("errors.file.extension")); + } catch (Exception e) { + LOGGER.error(e.getMessage()); + model.addAttribute("url", ""); + model.addAttribute("msg",egovMessageSource.getMessage("errors.file.transfer")); + } + } + + /** + * 이미지 view를 제공한다. + * + * @param request + * @param response + * @throws Exception + */ + @RequestMapping(value="/utl/web/imageSrc.do",method=RequestMethod.GET) + public void download(HttpServletRequest request, HttpServletResponse response) throws Exception { + //2017.12.12 - 출력 모듈 경로 변경 취약점 조치 + //KISA 보안약점 조치 (2018-10-29, 윤창원) + String subPath = this.decrypt(EgovStringUtil.isNullToString(request.getParameter("path"))); + String physical = this.decrypt(EgovStringUtil.isNullToString(request.getParameter("physical"))); + String mimeType = this.decrypt(EgovStringUtil.isNullToString(request.getParameter("contentType"))); + + if (subPath.indexOf("..") >= 0 ) throw new Exception("Security Exception - illegal url called."); + if (physical.indexOf("..") >= 0 ) throw new Exception("Security Exception - illegal url called."); + + String ext = ""; + if ( physical.lastIndexOf(".") > 0 ) + ext = physical.substring(physical.lastIndexOf(".") + 1,physical.length()).toLowerCase(); + if ( ext == null ) throw new FileNotFoundException(); + + if ( extWhiteList.indexOf(ext) >= 0 ) + EgovFormBasedFileUtil.viewFile(response, uploadDir, subPath, physical, mimeType); + else + throw new FileNotFoundException(); + } + + /** + * 암호화 + * + * @param encrypt + */ + private String encrypt(String encrypt) { + + try { + return cryptoService.encrypt(encrypt); // Handles URLEncoding. + //return cryptoService.encryptNone(encrypt); // Does not handle URLEncoding. + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + return encrypt; + } + + /** + * 복호화 + * + * @param decrypt + */ + private String decrypt(String decrypt){ + + try { + //return cryptoService.decrypt(decrypt); // Handles URLDecoding. + return cryptoService.decryptNone(decrypt); // Does not handle URLDecoding. + } catch(IllegalArgumentException e) { + LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); + } catch (Exception e) { + LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); + } + return decrypt; + } + + +} diff --git a/src/main/java/iams/nlib/common/MainController.java b/src/main/java/iams/nlib/common/MainController.java new file mode 100644 index 00000000..d0bba6be --- /dev/null +++ b/src/main/java/iams/nlib/common/MainController.java @@ -0,0 +1,79 @@ +package iams.nlib.common; + +import java.lang.reflect.Method; +import java.util.Map; +import java.util.TreeMap; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; + +import egovframework.com.cmm.IncludedCompInfoVO; +import egovframework.com.cmm.LoginVO; +import egovframework.com.cmm.annotation.IncludedInfo; +import egovframework.com.cmm.util.EgovUserDetailsHelper; + +/** + *
    + * @Class Name : MainController.java
    + * 
    + * @Description : 메인화면에 표시할 정보를 처리하는 Controller 클래스
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 22. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 22. + * @version 1.0 + * + */ +@Controller +public class MainController { + + private static final Logger log = LoggerFactory.getLogger(MainController.class); + + @RequestMapping("/index.do") + public String index(ModelMap model) { + return "iams/nlib/common/Main"; + } + + + @RequestMapping("/Top.do") + public String top() { + return "iams/nlib/common/Top"; + } + + @RequestMapping("/Bottom.do") + public String bottom() { + return "iams/nlib/common/Bottom"; + } + + @RequestMapping("/Content.do") + public String setContent(ModelMap model) { + + LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + model.addAttribute("loginVO", loginVO); + + return "iams/nlib/common/Content"; + } + + @RequestMapping("/Left.do") + public String setLeftMenu(ModelMap model) { + return "iams/nlib/common/Left"; + } + +} diff --git a/src/main/java/iams/nlib/dataapi/service/DataApi.java b/src/main/java/iams/nlib/dataapi/service/DataApi.java new file mode 100644 index 00000000..6ebc7190 --- /dev/null +++ b/src/main/java/iams/nlib/dataapi/service/DataApi.java @@ -0,0 +1,323 @@ +package iams.nlib.dataapi.service; + +import java.util.HashMap; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; + +import com.thoughtworks.xstream.XStream; + +import iams.nlib.util.StringUtil; + +/** + *
    + * @Class Name : DataApi.java
    + * 
    + * @Description : 통합자료관리시스템에 RESTful API를 통해 질의/응답을 처리한다.
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 22. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 22. + * @version 1.0 + * + */ +public class DataApi { + + private static final Logger log = LoggerFactory.getLogger(DataApi.class); + + /* DataApi 접속 서버 정보 */ + @Value("#{properties['dataapi.server.ip']}") + private String DAPI_SERVER_IP; + + @Value("#{properties['dataapi.server.port']}") + private String DAPI_SERVER_PORT; + + @Value("#{properties['dataapi.server.protocol']}") + private String DAPI_SERVER_PROTOCOL; + + + /** + * 조회 + * + * @param reqVO + * @return + */ + public DataApiResVO get(DataApiReqVO reqVO) { + + return send(reqVO, HttpMethod.GET); + } + + /** + * 등록 + * + * @param reqVO + * @return + */ + public DataApiResVO put(DataApiReqVO reqVO) { + return send(reqVO, HttpMethod.PUT); + } + + /** + * 수정 + * + * @param reqVO + * @return + */ + public DataApiResVO post(DataApiReqVO reqVO) { + return send(reqVO, HttpMethod.POST); + } + + /** + * 삭제 + * + * @param reqVO + * @return + */ + public DataApiResVO delete (DataApiReqVO reqVO) { + return send(reqVO, HttpMethod.DELETE); + } + + /** + * 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다. + * + * @param reqVO + * @param method + * @return + */ + public DataApiResVO send(DataApiReqVO reqVO, HttpMethod method) { + + DataApiResVO resVO = null; + + try { + //----------------------------------- + // 입력값 검증작업 + //----------------------------------- + resVO = checkReqCommonParams(reqVO); + if(resVO != null) return resVO; + if(method == null) return new DataApiResVO("ERR_NO_METHOD", "HTTP 요청 Method가 유효하지 않습니다."); + + //----------------------------------- + // 폼 파라메터 생성 작업 + //----------------------------------- + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + MultiValueMap parameters = makeParamMap(reqVO); + HttpEntity> requestEntity = new HttpEntity(parameters, headers); + + //----------------------------------- + // 요청 처리 + //----------------------------------- + RestTemplate restTemplate = new RestTemplate(); + String url = DAPI_SERVER_PROTOCOL + "://" + DAPI_SERVER_IP + ("80".equals(DAPI_SERVER_PORT) ? "" : ":" + DAPI_SERVER_PORT) + reqVO.getReqUrl(); + log.debug("REQ URL : " + reqVO.getReqUrl()); + + ResponseEntity responseEntity = restTemplate.exchange(url, method, requestEntity, String.class); + + //----------------------------------- + // 응답 처리 + //----------------------------------- + HttpStatus statusCode = responseEntity.getStatusCode(); + log.debug("RES StatusCode : " + statusCode); + String resultXML = ""; + resultXML = responseEntity.getBody(); + log.debug("RES resultXML : " + resultXML); + + // 응답 자료 객체화 + resVO = convertXmlToResVO(resultXML); + + // 처리결과 코드 확인 + if(StringUtil.isEmpty(resVO.getResultCode())) { + if (statusCode == HttpStatus.OK) { + resVO.setResultCode("S_HTTP_STATUS_OK"); + resVO.setResultMessage("정상처리되었습니다."); + } else { + resVO.setResultCode("E_STATUS_CODE_FAIL"); + resVO.setResultMessage(String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString())); + } + } + + //log.debug("RES resVO : " + resVO); + + } catch(Exception e) { + e.printStackTrace(); + return makeErrorRes("E_REQ_EXCEPTION", e.toString()); + } + + return resVO; + } + + + /** + * 요청 VO를 Map 형태로 변환한다. + * + * @param reqVO + * @return + */ + public static MultiValueMap makeParamMap(DataApiReqVO reqVO) { + + MultiValueMap map = new LinkedMultiValueMap<>(); + + // 공통 + map.add("authKey", reqVO.getAuthKey()); + map.add("rows", "" + reqVO.getPageRows()); + map.add("page", "" + reqVO.getPageNo()); + + // 추가 정보 + if(reqVO.hasInfo()) { + HashMap info = reqVO.getInfo(); + for(String key : map.keySet()) { + Object val = map.get(key); + if(val instanceof HashMap) { + HashMap subInfo = (HashMap)val; + for(String subKey : subInfo.keySet()) { + String subVal = subInfo.get(subKey); + map.add(subKey, subVal); + } + } else { + map.add(key, (String)val); + } + } + } + + return map; + } + + + /** + * 요청전 공통 입력 파라메터를 확인한다. + * + * @param reqVO + * @return + * @throws Exception + */ + public DataApiResVO checkReqCommonParams(DataApiReqVO reqVO) throws Exception { + + if(reqVO == null) { + return new DataApiResVO("ERR_NO_REQ", "데이터송수신 요청객체가 존재하지 않습니다."); + } + + if(StringUtil.isEmpty(reqVO.getReqUrl())) { + return new DataApiResVO("ERR_NO_RURL", "데이터 요청 업무ID에 대한 URL/RUI 정보가 존재하지 않습니다."); + } + if(StringUtil.isEmpty(reqVO.getAuthKey())) { + return new DataApiResVO("ERR_NO_AUTHKEY", "데이터 요청에 대한 권한키 정보가 존재하지 않습니다."); + } + + return null; + } + + /** + * 처리결과 정보를 입력받아 DataApiResVO를 생성한다. + * + * @param resultCode + * @param resultMessage + * @return + */ + public DataApiResVO makeErrorRes(String resultCode, String resultMessage) { + return new DataApiResVO(resultCode, resultMessage); + } + + /** + * 응답받은 XML 문자열을 DataApiResVO (내부 Map객체 포함) 객체로 변환하여 리턴한다. + * + * @param xmlStr + * @return + */ + public static DataApiResVO convertXmlToResVO(String xmlStr) { + + DataApiResVO resVO = new DataApiResVO(); + + XStream magicApi = new XStream(); + magicApi.registerConverter(new MapEntryConverter()); + magicApi.alias("result", Map.class); + + Map map = null; + try { + map = (Map) magicApi.fromXML(xmlStr); + } catch(Exception e) { + e.printStackTrace(); + + resVO.setResultCode("ERR_RES_XML_FORMAT"); + resVO.setResultMessage(String.format("올바르지 않은 XML 형식의 응답입니다. : [%s]", xmlStr)); + + return resVO; + } + + // 처리결과 확인 + String commonKeyList = "|resulttype|code|message|page|totpages|records|".toLowerCase(); + String lowerKey = null; + for( String key : map.keySet()) { + + lowerKey = key.toLowerCase(); + if(commonKeyList.contains("|" + lowerKey + "|")) { + + if(lowerKey.equals("resulttype")) { + String resultType = (String)map.get(key); + if(!StringUtil.isEmpty(resultType) && resultType.toLowerCase().compareTo("success") == 0) { + resVO.setResultCode("S0000"); + } + } + + if(lowerKey.equals("code")) { + String code = (String)map.get(key); + int codeInt = 0; + try { + codeInt = Integer.parseInt(code); + } catch(Exception e) { + log.error("회신 code 정보를 정수로 변환처리 중 오류가 발생하였습니다." + e.toString()); + codeInt = -1; + } + + if(codeInt != 0) { + resVO.setResultCode(String.format("ERR_BIZERR(%s)", code)); + } else { + resVO.setResultCode("S0000"); + } + } + + if(lowerKey.equals("message")) { + resVO.setResultMessage((String)map.get(key)); + } + + if(lowerKey.equals("page")) { + resVO.setPageNo(StringUtil.toNumber((String)map.get(key))); + } + + if(lowerKey.equals("totpages")) { + resVO.setPageTotCount(StringUtil.toNumber((String)map.get(key))); + } + + if(lowerKey.equals("records")) { + resVO.setRecordTotCount(StringUtil.toNumber((String)map.get(key), 0)); + } + } else { + if(resVO.getInfo() == null) resVO.setInfo(new HashMap()); + HashMap info = resVO.getInfo(); + info.put(key, map.get(key)); + } + } + + return resVO; + } +} diff --git a/src/main/java/iams/nlib/dataapi/service/DataApiReqVO.java b/src/main/java/iams/nlib/dataapi/service/DataApiReqVO.java new file mode 100644 index 00000000..77001b8e --- /dev/null +++ b/src/main/java/iams/nlib/dataapi/service/DataApiReqVO.java @@ -0,0 +1,116 @@ +package iams.nlib.dataapi.service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + *
    + * @Class Name : DataApiReqVO.java
    + * 
    + * @Description : RESTful API 요청 VO
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 22. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 22. + * @version 1.0 + * + */ +public class DataApiReqVO { + + /* 처리결과 */ + private String authKey; /* 로그인키 */ + + /* 페이징 정보 */ + private int pageNo = 0; /* 요청 페이지 번호 */ + private int pageRows = 0; /* 페이지별 표출할 레코드 수 */ + + /* 기본정보 */ + private HashMap info = null; + + public boolean hasInfo() { + return (info != null && info.size() > 0); + } + + /* 요청업무ID 및 처리URI */ + int reqMethod; /* 요청메소드구분값 */ + String reqUrl; /* 요청업무ID에 대한 통합시스템의 응답 처리 프로그램 URI */ + + // GET/SET + public String getAuthKey() { + return authKey; + } + + public void setAuthKey(String authKey) { + this.authKey = authKey; + } + + public int getPageNo() { + return pageNo; + } + + public void setPageNo(int pageNo) { + this.pageNo = pageNo; + } + + public void setPageNo(String pageNo) { + try { + this.pageNo = Integer.parseInt(pageNo); + } catch(Exception e) { + this.pageNo = 1; + } + + } + + public int getPageRows() { + return pageRows; + } + + public void setPageRows(String pageRows) { + try { + this.pageRows = Integer.parseInt(pageRows); + } catch(Exception e) { + this.pageRows = 10; + } + + } + + public void setPageRows(int pageRows) { + this.pageRows = pageRows; + } + + public HashMap getInfo() { + return info; + } + + public void setInfo(HashMap info) { + this.info = info; + } + + public String getReqUrl() { + return reqUrl; + } + public void setReqUrl(String reqUrl) { + this.reqUrl = reqUrl; + } + + public int getReqMethod() { + return reqMethod; + } + + public void setReqMethod(int reqMethod) { + this.reqMethod = reqMethod; + } + + +} diff --git a/src/main/java/iams/nlib/dataapi/service/DataApiResVO.java b/src/main/java/iams/nlib/dataapi/service/DataApiResVO.java new file mode 100644 index 00000000..5f37b6a4 --- /dev/null +++ b/src/main/java/iams/nlib/dataapi/service/DataApiResVO.java @@ -0,0 +1,136 @@ +package iams.nlib.dataapi.service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import iams.nlib.util.StringUtil; + +/** + *
    + * @Class Name : DataApiResVO.java
    + * 
    + * @Description : RESTful API 응답 VO
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 22. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 22. + * @version 1.0 + * + */ +public class DataApiResVO { + + /** + * 생성자 + */ + public DataApiResVO() { + super(); + } + + /** + * 생성자 + * + * @param resultCode + * @param resultMessage + */ + public DataApiResVO(String resultCode, String resultMessage) { + this.resultCode = resultCode; + this.resultMessage = resultMessage; + } + + + /* 처리결과 */ + String resultCode; /* 결과코드 */ + String resultMessage; /* 결과내용(오류내용) */ + + /* 페이징 정보 */ + int pageNo = 0; /* 요청 페이지 번호 */ + int pageTotCount = 0; /* 페이지총수 */ + int pageRows = 0; /* 페이지별 표출할 레코드 수 */ + + /* 기본정보 */ + HashMap info = null; + + /* 목록정보 */ + int recordCount = 0; /* 전송 실제 레코드수 */ + int recordTotCount = 0; /* 총 레코드수 */ + List> records = null; /* 결과목록 (다건인 경우) */ + + /** + * 응답 처리결과가 성공인지의 여부를 리턴한다. + * 결과코드(resultCode)의 값이 "S"로 시작하는 경우 true 리턴한다. + * + * @return + */ + public boolean isSuccess() { + if(StringUtil.isEmpty(resultCode)) return false; + return (resultCode.trim().charAt(0) == 'S'); + } + + // GET/SET + + public String getResultCode() { + return resultCode; + } + public void setResultCode(String resultCode) { + this.resultCode = resultCode; + } + public String getResultMessage() { + return resultMessage; + } + public void setResultMessage(String resultMessage) { + this.resultMessage = resultMessage; + } + public int getPageNo() { + return pageNo; + } + public void setPageNo(int pageNo) { + this.pageNo = pageNo; + } + public int getPageTotCount() { + return pageTotCount; + } + public void setPageTotCount(int pageTotCount) { + this.pageTotCount = pageTotCount; + } + public int getPageRows() { + return pageRows; + } + public void setPageRows(int pageRows) { + this.pageRows = pageRows; + } + public HashMap getInfo() { + return info; + } + public void setInfo(HashMap info) { + this.info = info; + } + public int getRecordCount() { + return recordCount; + } + public void setRecordCount(int recordCount) { + this.recordCount = recordCount; + } + public int getRecordTotCount() { + return recordTotCount; + } + public void setRecordTotCount(int recordTotCount) { + this.recordTotCount = recordTotCount; + } + public List> getRecords() { + return records; + } + public void setRecords(List> records) { + this.records = records; + } +} diff --git a/src/main/java/iams/nlib/dataapi/service/MapEntryConverter.java b/src/main/java/iams/nlib/dataapi/service/MapEntryConverter.java new file mode 100644 index 00000000..21364d15 --- /dev/null +++ b/src/main/java/iams/nlib/dataapi/service/MapEntryConverter.java @@ -0,0 +1,95 @@ +package iams.nlib.dataapi.service; + +import java.util.AbstractMap; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import com.thoughtworks.xstream.converters.Converter; +import com.thoughtworks.xstream.converters.MarshallingContext; +import com.thoughtworks.xstream.converters.UnmarshallingContext; +import com.thoughtworks.xstream.io.HierarchicalStreamReader; +import com.thoughtworks.xstream.io.HierarchicalStreamWriter; + +/** + *
    + * @Class Name : MapEntryConverter.java
    + * 
    + * @Description : XML 문자열을 Map 객체로 변환 처리 
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 22. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 22. + * @version 1.0 + * + */ +public class MapEntryConverter implements Converter { + + public boolean canConvert(Class clazz) { + return AbstractMap.class.isAssignableFrom(clazz); + } + + public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { + AbstractMap map = (AbstractMap) value; + for (Object obj : map.entrySet()) { + Entry entry = (Entry) obj; + Object entryValue = entry.getValue(); + + if (entryValue instanceof Map) { + writer.startNode(entry.getKey().toString()); + marshal(entry.getValue(), writer, context); + writer.endNode(); + continue; + } + + writer.startNode(entry.getKey().toString()); + writer.setValue(entryValue.toString()); + writer.endNode(); + } + } + + public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { + Map map = new HashMap(); + + while (reader.hasMoreChildren()) { + reader.moveDown(); + if (reader.hasMoreChildren()) { + Map childMap = new HashMap(); + map.put(reader.getNodeName(), childMap); + unmarshalHierarchical(reader, context, childMap); + reader.moveUp(); + continue; + } + map.put(reader.getNodeName(), reader.getValue()); + reader.moveUp(); + } + return map; + } + + private void unmarshalHierarchical(HierarchicalStreamReader reader, UnmarshallingContext context, + Map map) { + while (reader.hasMoreChildren()) { + reader.moveDown(); + if (reader.hasMoreChildren()) { + Map childMap = new HashMap(); + map.put(reader.getNodeName(), childMap); + unmarshalHierarchical(reader, context, childMap); + reader.moveUp(); + continue; + } + map.put(reader.getNodeName(), reader.getValue()); + reader.moveUp(); + } + } +} + diff --git a/src/main/java/iams/nlib/sample/service/SampleDataApiDAO.java b/src/main/java/iams/nlib/sample/service/SampleDataApiDAO.java new file mode 100644 index 00000000..c7056616 --- /dev/null +++ b/src/main/java/iams/nlib/sample/service/SampleDataApiDAO.java @@ -0,0 +1,48 @@ +package iams.nlib.sample.service; + +import org.springframework.stereotype.Repository; + +import iams.nlib.dataapi.service.DataApi; +import iams.nlib.dataapi.service.DataApiReqVO; +import iams.nlib.dataapi.service.DataApiResVO; + +/** + *
    + * @Class Name : SampleDataApiDAO.java
    + * 
    + * @Description : RESTful API 호출 샘플
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 22. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 22. + * @version 1.0 + * + */ +@Repository("sampleDataApiDAO") +public class SampleDataApiDAO extends DataApi { + + + /** + * 주 자원의 URI + */ + public static final String RESOURCE_URI = "/uac/service/exports"; + + public DataApiResVO getSampleInfo(DataApiReqVO reqVO) throws Exception { + + // URI가 다른 경우, 해당 URI 설정 + reqVO.setReqUrl(RESOURCE_URI); + + return get(reqVO); + } + +} diff --git a/src/main/java/iams/nlib/sample/service/SampleDataApiService.java b/src/main/java/iams/nlib/sample/service/SampleDataApiService.java new file mode 100644 index 00000000..66d4f8d4 --- /dev/null +++ b/src/main/java/iams/nlib/sample/service/SampleDataApiService.java @@ -0,0 +1,46 @@ +package iams.nlib.sample.service; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import egovframework.com.cmm.service.EgovCmmUseService; +import egovframework.com.cop.ems.service.impl.SndngMailRegistDAO; +import iams.nlib.dataapi.service.DataApi; +import iams.nlib.dataapi.service.DataApiReqVO; +import iams.nlib.dataapi.service.DataApiResVO; + +/** + *
    + * @Class Name : SampleDataApiService.java
    + * 
    + * @Description : RESTful API 호출 샘플
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 22. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 22. + * @version 1.0 + * + */ +@Service("sampleDataApiService") +public class SampleDataApiService { + + /** SampleDataApiDAO */ + @Resource(name = "sampleDataApiDAO") + private SampleDataApiDAO sampleDataApiDAO; + + public DataApiResVO getSampleInfo(DataApiReqVO reqVO) throws Exception { + return sampleDataApiDAO.getSampleInfo(reqVO); + } + +} diff --git a/src/main/java/iams/nlib/sample/web/SampleDataApiController.java b/src/main/java/iams/nlib/sample/web/SampleDataApiController.java new file mode 100644 index 00000000..7b97c572 --- /dev/null +++ b/src/main/java/iams/nlib/sample/web/SampleDataApiController.java @@ -0,0 +1,87 @@ +package iams.nlib.sample.web; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.springframework.beans.factory.annotation.Value; +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 iams.nlib.dataapi.service.DataApiReqVO; +import iams.nlib.dataapi.service.DataApiResVO; +import iams.nlib.sample.service.SampleDataApiService; + +/** + *
    + * @Class Name : SampleDataApiController.java
    + * 
    + * @Description : RESTful API 호출 샘플
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 22. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 22. + * @version 1.0 + * + */ +@Controller +public class SampleDataApiController { + + /** SampleDataApiService */ + @Resource(name = "sampleDataApiService") + private SampleDataApiService sampleDataApiService; + + + /* DataApi 접속 서버 정보 */ + @Value("#{properties['dataapi.server.ip']}") + private String dataapiServerIp; + + @Value("#{properties['dataapi.server.port']}") + private String dataapiServerPort; + + @Value("#{properties['dataapi.server.protocol']}") + private String dataapiServerProtocol; + + + @RequestMapping("/sample/getSampleInfoForm.do") + public String getSampleInfoForm(ModelMap model) throws Exception { + + model.addAttribute("serverProtocol", dataapiServerIp); + model.addAttribute("serverIp", dataapiServerPort); + model.addAttribute("serverPort", dataapiServerProtocol); + return "iams/nlib/sample/getSampleInfoForm"; + } + + @RequestMapping("/sample/getSampleInfo.do") + public String getSampleInfo(@RequestParam Map commandMap, ModelMap model) throws Exception { + + String authKey = (String) commandMap.get("authKey"); + String page = (String) commandMap.get("page"); + String rows = (String) commandMap.get("rows"); + + DataApiReqVO reqVO = new DataApiReqVO(); + reqVO.setAuthKey(authKey); + reqVO.setPageNo(page); + reqVO.setPageRows(rows); + + DataApiResVO resVO = sampleDataApiService.getSampleInfo(reqVO); + model.addAttribute("result", resVO); + + return "iams/nlib/sample/getSampleInfo"; + } + +} diff --git a/src/main/java/iams/nlib/util/StringUtil.java b/src/main/java/iams/nlib/util/StringUtil.java new file mode 100644 index 00000000..5c0e60ea --- /dev/null +++ b/src/main/java/iams/nlib/util/StringUtil.java @@ -0,0 +1,65 @@ +package iams.nlib.util; + +import egovframework.com.utl.fcc.service.EgovStringUtil; + +/** + *
    + * @Class Name : StringUtil.java
    + * 
    + * @Description : 문자열 관련 공통 함수 모음 
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 22. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 22. + * @version 1.0 + * + */ +public class StringUtil extends EgovStringUtil { + + /** + * Null 이거나, 빈문자열(공백 포함)인 경우, true를 리턴한다. + * + * @param str + * @return + */ + public static boolean isEmpty(String str) { + return str == null || str.trim().length() == 0; + } + + /** + * 문자열을 정수형으로 변환하여 리턴한다. 만일 문자열이 null 또는 빈 문자열인 경우, -1을 리턴한다. + * + * @param str + * @return + */ + public static int toNumber(String str) { + return toNumber(str, -1); + } + + /** + * 문자열을 정수형으로 변환하여 리턴한다. 만일 문자열이 null 또는 빈 문자열인 경우, 기본값 정보 defaultInt를 리턴한다. + * + * @param str + * @param defaultInt + * @return + */ + public static int toNumber(String str, int defaultInt) { + if(isEmpty(str)) return defaultInt; + + try { + return Integer.parseInt(str.trim()); + } catch(Exception e) {} + + return defaultInt; + } +} diff --git a/src/main/resources/egovframework/egovProps/ck.properties b/src/main/resources/egovframework/egovProps/ck.properties new file mode 100644 index 00000000..cccd15d7 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/ck.properties @@ -0,0 +1,16 @@ +# CKEditor Image File Upload + +#optional +ck.image.type.allow=jpg,jpeg,gif,bmp,png +#optional +#ck.image.save.class=Implementation of egovframework.com.utl.wed.filter.FileSaveManager + +# if you use "separate image server" or other case. (apache, cdn, nas...) +#ck.image.dir=/www/images.mydomain.com/upload +#ck.image.url=http://images.mydomain.com/upload/ + +# if you use "web application"'s deployed directory. +#ck.image.dir=/upload_dir : define Globals.fileStorePath(globals.properties) sub directory => Do not start with "/". +#ck.image.url=/contextRoot/upload/ +ck.image.dir=ck_image +ck.image.url=/ckUploadImage \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/conf/SMEConfig.properties b/src/main/resources/egovframework/egovProps/conf/SMEConfig.properties new file mode 100644 index 00000000..f99fa8bc --- /dev/null +++ b/src/main/resources/egovframework/egovProps/conf/SMEConfig.properties @@ -0,0 +1,14 @@ +sms_url = sme://127.0.0.1:20000 +sms_id = ID +sms_pwd = PW + +use_console_logger = false +use_file_logger = false +log_layout = [%d] [%-5p] %l - %m%n + +# debug / info +log_level = debug + +# path +log_path = C:\egovframework\log\SMELog.log +ping_term = 60 \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/conf/client.properties b/src/main/resources/egovframework/egovProps/conf/client.properties new file mode 100644 index 00000000..58c497f3 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/conf/client.properties @@ -0,0 +1,27 @@ +#----------------------------------------------------------------------- +# +# client.properties : \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 OS\uc815\ubcf4\ub97c \ub098\ud0c0\ub0b4\ub294 Config \ud30c\uc77c +# +#----------------------------------------------------------------------- +# 1. key = value \uad6c\uc870\uc785\ub2c8\ub2e4. +# 2. key\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \ud3ec\ud568\ubd88\uac00, value\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \uac00\ub2a5 +# 3. key\uac12\uc73c\ub85c \ud55c\uae00\uc744 \uc0ac\uc6a9\ubd88\uac00, value\uac12\uc740 \ud55c\uae00\uc0ac\uc6a9\uc774 \uac00\ub2a5 +# 4. \uc904\uc744 \ubc14\uafc0 \ud544\uc694\uac00 \uc788\uc73c\uba74 '\'\ub97c \ub77c\uc778\uc758 \ub05d\uc5d0 \ucd94\uac00(\ub9cc\uc57d '\'\ubb38\uc790\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\ub294 '\\'\ub97c \uc0ac\uc6a9) +# 5. Windows\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '\\' or '/' ('\' \uc0ac\uc6a9\ud558\uba74 \uc548\ub428) +# 6. Unix\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '/' +# 7. \uc8fc\uc11d\ubb38 \ucc98\ub9ac\ub294 #\uc0ac\uc6a9 +# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83 +#----------------------------------------------------------------------- + +# \ud074\ub77c\uc774\uc5b8\ud2b8 OS \uc720\ud615 \ubaa9\ub85d +WINDOWS95 = Windows 95 +WINDOWS98 = Windows 98 +WINDOWSNT = Windows NT +WINDOWSNT5.0 = Windows 2000 +WINDOWSNT5.1 = Windows XP +WINDOWSNT5.2 = Windows Server 2003 +WINDOWSNT6.0 = Windows Vista +WIN32 = Windows XP +MSN2.5 = MSN 2.5 on Windows 98 +MAC_POWERPC = Mac OS X +SUNOS5.9SUN4U = SunOS 5.0 \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/conf/confirmmessage.properties b/src/main/resources/egovframework/egovProps/conf/confirmmessage.properties new file mode 100644 index 00000000..23cde90c --- /dev/null +++ b/src/main/resources/egovframework/egovProps/conf/confirmmessage.properties @@ -0,0 +1 @@ +test.message = confirm message diff --git a/src/main/resources/egovframework/egovProps/conf/errormessage.properties b/src/main/resources/egovframework/egovProps/conf/errormessage.properties new file mode 100644 index 00000000..e4cdad36 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/conf/errormessage.properties @@ -0,0 +1 @@ +test.message = error message diff --git a/src/main/resources/egovframework/egovProps/conf/format.properties b/src/main/resources/egovframework/egovProps/conf/format.properties new file mode 100644 index 00000000..7b62771f --- /dev/null +++ b/src/main/resources/egovframework/egovProps/conf/format.properties @@ -0,0 +1,166 @@ +abs=audio/x-mpeg +ai=application/postscript +aif=audio/x-aiff +aif=caudio/x-aiff +aiff=audio/x-aiff +aim=application/x-aim +art=image/x-jg +asf=video/x-ms-asf +asx=video/x-ms-asf +au=audio/basic +avi=video/x-msvideo +avx=video/x-rad-screenplay +bcpio=application/x-bcpio +bin=application/octet-stream +bmp=image/bmp +body=text/html +cdf=application/x-cdf +cer=application/x-x509-ca-cert +class=application/java +cpio=application/x-cpio +csh=application/x-csh +css=text/css +dib=image/bmp +doc=application/msword +dtd=application/xml-dtd +dv=video/x-dv +dvi=application/x-dvi +eps=application/postscript +etx=text/x-setext +exe=application/octet-stream +gif=image/gif +gtar=application/x-gtar +gz=application/x-gzip +hdf=application/x-hdf +hqx=application/mac-binhex40 +htc=text/x-component +htm=text/html +html=text/html +hqx=application/mac-binhex40 +ief=image/ief +jad=text/vnd.sun.j2me.app-descriptor +jar=application/java-archive +java=text/plain +jnlp=application/x-java-jnlp-file +jpe=image/jpeg +jpeg=image/jpeg +jpg=image/jpeg +js=text/javascript +jsf=text/plain +jspf=text/plain +kar=audio/x-midi +latex=application/x-latex +m3u=audio/x-mpegurl +mac=image/x-macpaint +man=application/x-troff-man +mathml=application/mathml+xml +me=application/x-troff-me +mid=audio/x-midi +midi=audio/x-midi +mif=application/x-mif +mov=video/quicktime +movie=video/x-sgi-movie +mp1=audio/x-mpeg +mp2=audio/x-mpeg +mp3=audio/x-mpeg +mp4=video/mp4 +mpa=audio/x-mpeg +mpe=video/mpeg +mpeg=video/mpeg +mpega=audio/x-mpeg +mpg=video/mpeg +mpv2=video/mpeg2 +ms=application/x-wais-source +nc=application/x-netcdf +oda=application/oda +odb=application/vnd.oasis.opendocument.database +odc=application/vnd.oasis.opendocument.chart +odf=application/vnd.oasis.opendocument.formula +odg=application/vnd.oasis.opendocument.graphics +odi=application/vnd.oasis.opendocument.image +odm=application/vnd.oasis.opendocument.text-master +odp=application/vnd.oasis.opendocument.presentation +ods=application/vnd.oasis.opendocument.spreadsheet +odt=application/vnd.oasis.opendocument.text +ogg=application/ogg +otg=application/vnd.oasis.opendocument.graphics-template +oth=application/vnd.oasis.opendocument.text-web +otp=application/vnd.oasis.opendocument.presentation-template +ots=application/vnd.oasis.opendocument.spreadsheet-template +ott=application/vnd.oasis.opendocument.text-template +pbm=image/x-portable-bitmap +pct=image/pict +pdf=application/pdf +pgm=image/x-portable-graymap +pic=image/pict +pict=image/pict +pls=audio/x-scpls +png=image/png +pnm=image/x-portable-anymap +pnt=image/x-macpaint +ppm=image/x-portable-pixmap +ppt=application/powerpoint +ps=application/postscript +psd=image/x-photoshop +qt=video/quicktime +qti=image/x-quicktime +qtif=image/x-quicktime +ras=image/x-cmu-raster +rdf=application/rdf+xml +rgb=image/x-rgb +rm=application/vnd.rn-realmedia +roff=application/x-troff +rtf=application/rtf +rtx=text/richtext +sh=application/x-sh +shar=application/x-shar +shtml=text/x-server-parsed-html +smf=audio/x-midi +sit=application/x-stuffit +snd=audio/basic +src=application/x-wais-source +sv4cpio=application/x-sv4cpio +sv4crc=application/x-sv4crc +swf=application/x-shockwave-flash +t=application/x-troff +tar=application/x-tar +tcl=application/x-tcl +tex=application/x-tex +texi=application/x-texinfo +texinfo=application/x-texinfo +tif=image/tiff +tiff=image/tiff +tr=application/x-troff +tsv=text/tab-separated-values +txt=text/plain +ulw=audio/basic +ustar=application/x-ustar +vxml=application/voicexml+xml +xbm=image/x-xbitmap +xht=application/xhtml+xml +xhtml=application/xhtml+xml +xml=application/xml +xpm=image/x-xpixmap +xsl=application/xml +xslt=application/xslt+xml +xul=application/vnd.mozilla.xul+xml +xwd=image/x-xwindowdump +wav=audio/x-wav +svg=image/svg+xml +svgz=image/svg+xml +vsd=application/x-visio +wbmp=image/vnd.wap.wbmp +wml=text/vnd.wap.wml +wmlc=application/vnd.wap.wmlc +wmls=text/vnd.wap.wmlscript +wmlscriptc=application/vnd.wap.wmlscriptc +wmv=video/x-ms-wmv +wrl=x-world/x-vrml +wspolicy=application/wspolicy+xml +Z=application/x-compress +z=application/x-compress +zip=application/zip +xls=application/vnd.ms-excel +doc=application/vnd.ms-word +ppt=application/vnd.ms-powerpoint + \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/conf/gpki.properties b/src/main/resources/egovframework/egovProps/conf/gpki.properties new file mode 100644 index 00000000..5cf8acd4 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/conf/gpki.properties @@ -0,0 +1,20 @@ +#-------------------------- +# for GPKI LDAP access +#-------------------------- +#gpki.ldap.ip=ldap.gcc.go.kr +#gpki.ldap.ip=10.1.7.140 +gpki.ldap.ip=152.99.56.86 +gpki.ldap.port=389 +gpki.ldap.basedn=ou=Group of Server,o=Government of Korea,c=kr +gpki.ldap.attribute=usercertificate;binary + +#-------------------------- +# \uc778\uc99d\uc11c \uc815\ubcf4 +# \uc2e4\uc81c \uc778\uc99d\uc11c \uad00\ub828 \ud30c\uc77c\ub4e4\uc740 \uac01 \uc18d\uc131\ub4e4\uc744 \uc870\ud569\ud574\uc11c \uc5bb\uc74c +#-------------------------- +gpki.certificate.path = /home/gpki/certificate/class1 +gpki.certificate.server = server +gpki.privatekey.password = PW +#gpki.certificate.path = C:/Documents and Settings/Administrator/egovProps/gpkisecureweb/certs +#gpki.certificate.server = 1310505011 +#gpki.privatekey.password = 8866kim4 diff --git a/src/main/resources/egovframework/egovProps/conf/infomessage.properties b/src/main/resources/egovframework/egovProps/conf/infomessage.properties new file mode 100644 index 00000000..0d6e145d --- /dev/null +++ b/src/main/resources/egovframework/egovProps/conf/infomessage.properties @@ -0,0 +1 @@ +test.message = info message diff --git a/src/main/resources/egovframework/egovProps/conf/server.properties b/src/main/resources/egovframework/egovProps/conf/server.properties new file mode 100644 index 00000000..735e07b0 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/conf/server.properties @@ -0,0 +1,46 @@ +#----------------------------------------------------------------------- +# +# server.properties : \uc124\uce58\ub41c \uc11c\ubc84\uc758 \uc815\ubcf4\ub97c \uae30\ub85d\ud558\ub294 Config \ud30c\uc77c +# +#----------------------------------------------------------------------- +# 1. key = value \uad6c\uc870\uc785\ub2c8\ub2e4. +# 2. key\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \ud3ec\ud568\ubd88\uac00, value\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \uac00\ub2a5 +# 3. key\uac12\uc73c\ub85c \ud55c\uae00\uc744 \uc0ac\uc6a9\ubd88\uac00, value\uac12\uc740 \ud55c\uae00\uc0ac\uc6a9\uc774 \uac00\ub2a5 +# 4. \uc904\uc744 \ubc14\uafc0 \ud544\uc694\uac00 \uc788\uc73c\uba74 '\'\ub97c \ub77c\uc778\uc758 \ub05d\uc5d0 \ucd94\uac00(\ub9cc\uc57d '\'\ubb38\uc790\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\ub294 '\\'\ub97c \uc0ac\uc6a9) +# 5. Windows\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '\\' or '/' ('\' \uc0ac\uc6a9\ud558\uba74 \uc548\ub428) +# 6. Unix\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '/' +# 7. \uc8fc\uc11d\ubb38 \ucc98\ub9ac\ub294 #\uc0ac\uc6a9 +# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83 +#----------------------------------------------------------------------- + +# \uc11c\ubc84\uc81c\ud488 +SERVER_LIST = WEBLOGIC$JEUS$JBOSS +WEBLOGIC.VERSION = 9.2 MP3 +JEUS.VERSION = 6.0 +JBOSS.VERSION = 3.1 +WEBLOGIC.PORT = 7001 +JEUS.PORT = 9736 +JBOSS.PORT = 8080 + +# \uc11c\ubc84\ubc84\uc804 +SHELL.WINDOWS.getPrductVersion = prg/getPrductVersion.bat +SHELL.UNIX.getPrductVersion = prg/getPrductVersion.sh + +# \uc11c\ubc84\uc2e4\ud589\uc0c1\ud0dc +SHELL.WINDOWS.getPrductStatus = prg/getPrductStatus.bat +SHELL.UNIX.getPrductStatus = prg/getPrductStatus.sh + +# \uc2dc\uc2a4\ud15c OS\uc815\ubcf4 +SHELL.WINDOWS.getOSInfo = prg/getOSInfo.bat +SHELL.UNIX.getOSInfo = prg/getOSInfo.sh + +# \uc2dc\uc2a4\ud15c \ub514\uc2a4\ud06c \uc6a9\ub7c9 \uc815\ubcf4 +SHELL.WINDOWS.getDiskInfo = prg/getDiskInfo.bat +SHELL.UNIX.getDiskInfo = prg/getDiskInfo.sh + +# \uc2dc\uc2a4\ud15c \uba54\ubaa8\ub9ac \uc6a9\ub7c9 \uc815\ubcf4 +SHELL.WINDOWS.getMoryInfo = prg/getMoryInfo.bat +SHELL.UNIX.getMoryInfo = prg/getMoryInfo.sh + +# MAC +SHELL.UNIX.getNetWorkInfo = prg/getNetWorkInfo.sh diff --git a/src/main/resources/egovframework/egovProps/conf/warnmessage.properties b/src/main/resources/egovframework/egovProps/conf/warnmessage.properties new file mode 100644 index 00000000..bd588797 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/conf/warnmessage.properties @@ -0,0 +1,4 @@ +test.message = warn message + + + diff --git a/src/main/resources/egovframework/egovProps/globals.properties b/src/main/resources/egovframework/egovProps/globals.properties new file mode 100644 index 00000000..299e74cd --- /dev/null +++ b/src/main/resources/egovframework/egovProps/globals.properties @@ -0,0 +1,144 @@ +#----------------------------------------------------------------------- +# +# globals.properties : \uc2dc\uc2a4\ud15c +# +#----------------------------------------------------------------------- +# 1. key = value \uad6c\uc870\uc785\ub2c8\ub2e4. +# 2. key\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \ud3ec\ud568\ubd88\uac00, value\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \uac00\ub2a5 +# 3. key\uac12\uc73c\ub85c \ud55c\uae00\uc744 \uc0ac\uc6a9\ubd88\uac00, value\uac12\uc740 \ud55c\uae00\uc0ac\uc6a9\uc774 \uac00\ub2a5 +# 4. \uc904\uc744 \ubc14\uafc0 \ud544\uc694\uac00 \uc788\uc73c\uba74 '\'\ub97c \ub77c\uc778\uc758 \ub05d\uc5d0 \ucd94\uac00(\ub9cc\uc57d '\'\ubb38\uc790\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\ub294 '\\'\ub97c \uc0ac\uc6a9) +# 5. Windows\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '\\' or '/' ('\' \uc0ac\uc6a9\ud558\uba74 \uc548\ub428) +# 6. Unix\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '/' +# 7. \uc8fc\uc11d\ubb38 \ucc98\ub9ac\ub294 #\uc0ac\uc6a9 +# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83 +#----------------------------------------------------------------------- + +# \uc6b4\uc601\uc11c\ubc84 \ud0c0\uc785(WINDOWS, UNIX) +Globals.OsType =WINDOWS + +# DB\uc11c\ubc84 \ud0c0\uc785(mysql, oracle, altibase, tibero, cubrid, maria, postgres) - datasource \ubc0f sqlMap \ud30c\uc77c \uc9c0\uc815\uc5d0 \uc0ac\uc6a9\ub428 +Globals.DbType =maria + +# \uad8c\ud55c \uc778\uc99d\ubc29\uc2dd(dummy, session, security) - \uc0ac\uc6a9\uc790\uc758 \ub85c\uadf8\uc778\uc2dc \uc778\uc99d \ubc29\uc2dd\uc744 \uacb0\uc815\ud568 +# dummy : \ub354\ubbf8 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\uc790 \uad8c\ud55c\uc744 \uc778\uc99d\ud568 +# session : \uc138\uc158 \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\uc790 \uad8c\ud55c\uc744 \uc778\uc99d\ud568 +# security : spring security \ubc29\uc2dd\uc73c\ub85c \uc0ac\uc6a9\uc790 \uad8c\ud55c\uc744 \uc778\uc99d\ud568 +Globals.Auth =security + +# MainPage Setting +Globals.MainPage =/EgovContent.do + +# \uc704\uc800\ub4dc \uc0ac\uc6a9\uc2dc \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad00\ub828 \uc124\uc815\uc744 \ubd88\ub7ec\uc634 + +#MariaDB +Globals.maria.DriverClassName=org.mariadb.jdbc.Driver +Globals.maria.Url=jdbc:mariadb://db.nlib.iams:3306/com +Globals.maria.UserName =root +Globals.maria.Password =password + +# \ub85c\uadf8\uc778 \uc778\uc99d \uc81c\ud55c(login authentication limit) +# (\uc0ac\uc6a9 \uc5ec\ubd80 \uc124\uc815\uac12 : true, false) +Globals.login.Lock =true +# -\uc778\uc99d \uc81c\uc2dc\ub3c4 \ud69f\uc218 +Globals.login.LockCount =5 + +#\ud1b5\ud569\uba54\uc778\uba54\ub274 +#Globals.MainPage = /sym/mnu/mpm/EgovMainMenuHome.do + +# G4C \uc5f0\uacb0\uc6a9 IP (localhost) +#Globals.LocalIp = 127.0.0.2 + +# \ud658\uacbd\ud30c\uc77c \uc704\uce58 +Globals.ShellFilePath =globals.properties +Globals.ServerConfPath =conf/server.properties +Globals.ClientConfPath =conf/client.properties +Globals.FileFormatPath =conf/format.properties +Globals.GPKIConfPath =conf/gpki.properties +Globals.ConfPath =conf +Globals.MailRequestPath =mail/request/ +Globals.MailRResponsePath =mail/response/ +Globals.SMEConfigPath =conf/SMEConfig.properties + +# \ud658\uacbd\ud30c\uc77c \uc704\uce58 (jeus) +#Globals.ShellFilePath = globals.properties +#Globals.ServerConfPath = conf/server.properties +#Globals.ClientConfPath = conf/client.properties +#Globals.FileFormatPath = conf/format.properties +#Globals.GPKIConfPath = conf/gpki.properties +#Globals.ConfPath = conf +#Globals.fileStorePath = +#Globals.MailRequestPath = mail/request/ +#Globals.MailRResponsePath = mail/response/ +#Globals.SMEConfigPath = conf/SMEConfig.properties +#Globals.SynchrnServerPath = tmp/upload/ + +# WINDOWS\uc6a9 \uc258\ud30c\uc77c \uc815\ubcf4 +SHELL.WINDOWS.getHostName =prg/sh_001.bat +SHELL.WINDOWS.getDrctryByOwner =prg/getDrctryByOwner.bat +SHELL.WINDOWS.getDrctryOwner =prg/getDrctryOwner.bat +SHELL.WINDOWS.moveDrctry =prg/moveDrctry.bat +SHELL.WINDOWS.compileSchema =prg/compileSchema.bat +SHELL.WINDOWS.getDiskAttrb =prg/getDiskAttrb.bat +SHELL.WINDOWS.getDiskCpcty =prg/getDiskCpcty.bat +SHELL.WINDOWS.getDiskExst =prg/getDiskExst.bat + +# UNIX\uc6a9 \uc258\ud30c\uc77c \uc815\ubcf4 - \uac1c\ubc1cwas jeus\uc5d0\uc11c \uc0ac\uc6a9\ud560\ub54c \uae30\uc900 +SHELL.UNIX.getHostName =prg/sh_001.sh +SHELL.UNIX.getDrctryByOwner =prg/getDrctryByOwner.sh +SHELL.UNIX.getDrctryOwner =prg/getDrctryOwner.sh +SHELL.UNIX.getDrctryAccess =prg/getDrctryAccess.sh +SHELL.UNIX.getMountLc =prg/getMountLc.sh +SHELL.UNIX.getDiskName =prg/getNetWorkInfo.sh +SHELL.UNIX.moveDrctry =prg/moveDrctry.sh +SHELL.UNIX.compileSchema =prg/compileSchema.sh +SHELL.UNIX.getDiskAttrb =prg/getDiskAttrb.sh +SHELL.UNIX.getDiskCpcty =prg/getDiskCpcty.sh +SHELL.UNIX.getDiskExst =prg/getDiskExst.sh +SHELL.UNIX.getProcInfo =prg/getProcInfo.sh + +# LINUX\uc6a9 \uc258\ud30c\uc77c \uc815\ubcf4 + +# \uc5f0\uacc4 +# \uae30\uad00\ucf54\ub4dc\uc218\uc2e0\uc6a9(\uacbd\ub85c \uc124\uc815\uc740 \ubc18\ub4dc\uc2dc \uc808\ub300\uacbd\ub85c\ub97c \uc0ac\uc6a9\ud574\uc57c\ud568.) +CNTC.INSTTCODE.DIR.rcv =C:/iams/workspace/nlib/data/tmp/test/rcv/ +CNTC.INSTTCODE.DIR.rcvold =C:/iams/workspace/nlib/data/tmp/test/rcvold/ +CNTC.INSTTCODE.DIR.bin =C:/iams/workspace/nlib/data/tmp/test/bin/ + +CNTC.INSTTCODE.CMD.edircv =gcc_edircv.bat +CNTC.INSTTCODE.CMD.edircvmsg =gcc_edircvmsg.bat + +CNTC.INSTTCODE.INFO.userid =USERID +CNTC.INSTTCODE.INFO.userpw =****** + +# \ud30c\uc77c \uc5c5\ub85c\ub4dc \uacbd\ub85c(\uacbd\ub85c \uc124\uc815\uc740 \ubc18\ub4dc\uc2dc \uc808\ub300\uacbd\ub85c\ub97c \uc0ac\uc6a9\ud574\uc57c\ud568, \uacbd\ub85c \ub4a4\uc5d0 /\ub97c \ubd99\uc5ec \uc8fc\uc5b4\uc57c\ud568.) +Globals.fileStorePath =C:/egovframework/upload/ +# \uc5c5\ub85c\ub4dc URL \uacbd\ub85c \uc554\ud638\ud654 KEY +#Globals.filePath.Encryption.key = 10\uc790\ub9ac\uc774\uc0c1,\uc54c\ud30c\ubcb3 \ubc0f \uc22b\uc790 \ubc0f \ud2b9\uc218\uae30\ud638 \ud63c\uc6a9\ud558\uc5ec \ud0a4\ub97c \uc9c0\uc815\ud55c\ub2e4. +# \ud30c\uc77c \ud655\uc7a5\uc790 \ud654\uc774\ud2b8\ub9ac\uc2a4\ud2b8(\ud5c8\uc6a9\ubaa9\ub85d) : \ud30c\uc77c \ud655\uc7a5\uc790\ub97c (.)\uacfc \ud568\uaed8 \uc5f0\uc774\uc5b4\uc11c \uc0ac\uc6a9\ud568. +Globals.fileUpload.Extensions =.gif.jpg.jpeg.png +Globals.fileDownload.Extensions =.gif.jpg.jpeg.png + +# \ud30c\uc77c \ub3d9\uae30\ud654 \ucef4\ud3ec\ub10c\ud2b8\uc5d0\uc11c \uc0ac\uc6a9\ud560 \ud30c\uc77c \uc5c5\ub85c\ub4dc \uacbd\ub85c(\uacbd\ub85c \uc124\uc815\uc740 \ubc18\ub4dc\uc2dc \uc808\ub300\uacbd\ub85c\ub97c \uc0ac\uc6a9\ud574\uc57c\ud568, \uacbd\ub85c \ub4a4\uc5d0 /\ub97c \ubd99\uc5ec \uc8fc\uc5b4\uc57c\ud568.) +Globals.SynchrnServerPath =C:/egovframework/upload/Synch/ + +# for JFile properties +system.uploadpath =C:/iams/workspace/nlib/data/upload/ +no.image.url =/resources/jfile/swfupload/images/no_img.gif +ftp.server.ip =127.0.0.1 +ftp.user.id =test +ftp.user.password =test + +# Social(Facebook, Oauth \ucef4\ud3ec\ub10c\ud2b8 \uc0ac\uc6a9\uc2dc \ud65c\uc6a9) +facebook.appId = +facebook.appSecret = +twitter.consumerKey = +twitter.consumerSecret = + +#LDAP\uc870\uc9c1\ub3c4\uad00\ub9ac \ucef4\ud3ec\ub10c\ud2b8 \uc0ac\uc6a9\uc2dc LDAP\uc11c\ubc84\uc124\uc815\uc815\ubcf4 \ud544\uc694 +ldap.url =ldap://localhost:10389 +ldap.rootDn =c=kr +ldap.username =uid=admin,ou=system +ldap.password =secret + +#\uc57d\ub3c4\uad00\ub9ac Kakao \uac1c\ubc1c\uc790 appkey \ubc1c\uae09 \ubc1b\uc544 \ub4f1\ub85d\ud574\uc11c \uae30\uc785 (\uce74\uce74\uc624\uac1c\ubc1c Dev \uc571\uad00\ub9ac \ub0b4\uc5d0\uc11c \ub3c4\uba54\uc778 \ub4f1\ub85d \ud544\uc694) +roughMap.appkey =b0fdac4f718d71a02d796f8fe3e12987 diff --git a/src/main/resources/egovframework/egovProps/prg/compileSchema.bat b/src/main/resources/egovframework/egovProps/prg/compileSchema.bat new file mode 100644 index 00000000..f5959ae3 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/compileSchema.bat @@ -0,0 +1,16 @@ +@rem Shell Name : compileSchema.bat +@rem Description : XML 스키마를 자바클래스로 변환하는 Shell +@rem Modification Information +@rem +@rem 수정일 수정자 수정내용 +@rem ------- -------- --------------------------- +@rem 2009.02.13 박지욱 최초 생성 +@rem +@rem author 공통 서비스 개발팀 박지욱 +@rem since 2009. 02. 13 +@rem version 1.0 +@rem see +@rem +@rem Copyright (C) 2009 by MOPAS All right reserved. + +scomp -out %1 %2 \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/compileSchema.sh b/src/main/resources/egovframework/egovProps/prg/compileSchema.sh new file mode 100644 index 00000000..e9e98d96 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/compileSchema.sh @@ -0,0 +1,16 @@ +# Shell Name : compileSchema.sh +# Description : XML 스키마를 자바클래스로 변환하는 Shell +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.13 박지욱 최초 생성 +# +# @author 공통 서비스 개발팀 박지욱 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. + +scomp -out $1 $2 \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDiskAttrb.bat b/src/main/resources/egovframework/egovProps/prg/getDiskAttrb.bat new file mode 100644 index 00000000..67f18623 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDiskAttrb.bat @@ -0,0 +1 @@ +@echo "Not supported in WINDOWS" \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDiskAttrb.sh b/src/main/resources/egovframework/egovProps/prg/getDiskAttrb.sh new file mode 100644 index 00000000..c7afd57a --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDiskAttrb.sh @@ -0,0 +1,128 @@ +# Shell Name : getDiskAttr.bat +# Description : 디스크 속성정보 확인 +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.23 조재영 최초 생성 +# +# @author 공통 서비스 개발팀 조재영 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. +#### DISK CHECK #### +#for A in `lspv | awk '{print $1}' ` +for A in `lsdev -Cc disk | awk '{print $1}'` +do + # NAME + echo $A + # ATTRIBUTE + echo `lscfg -l $A | awk -F $A '{print $2}'` + # TYPE + echo "disk" + # AUTHORITY + + # SIZE + isEq="FALSE" + for B in `lspv | awk '{print $1}' ` + do + if [ $A = $B ] + then + isEq="TRUE" + fi + done + + if [ $isEq = "TRUE" ] + then + # TOTAL SIZE + lspv $A | grep "TOTAL PPs" | awk -F"(" '{print $2}' | awk '{print $1}' + # USED SIZE + lspv $A | grep "USED PPs" | awk -F"(" '{print $2}' | awk '{print $1}' + # FREE SIZE + lspv $A | grep "FREE PPs" | awk -F"(" '{print $2}' | awk '{print $1}' + else + echo "" + echo "" + echo "" + fi + +done + +#### USB CHECK #### +for A in `lsdev -Cc usb | awk '{print $1}'` +do +# NAME +echo $A +# ATTRIBUTE +echo `lscfg -l $A | awk -F $A '{print $2}'` +# TYPE +echo "usb" +# AUTHORITY + +# SIZE + isEq="FALSE" + for B in `lspv | awk '{print $1}' ` + do + if [ $A = $B ] + then + isEq="TRUE" + fi + done + + if [ $isEq = "TRUE" ] + then + # TOTAL SIZE + lspv $A | grep "TOTAL PPs" | awk -F"(" '{print $2}' | awk '{print $1}' + # USED SIZE + lspv $A | grep "USED PPs" | awk -F"(" '{print $2}' | awk '{print $1}' + # FREE SIZE + lspv $A | grep "FREE PPs" | awk -F"(" '{print $2}' | awk '{print $1}' + else + echo "" + echo "" + echo "" + fi + +done + +#### CDROM CHECK #### +for A in `lsdev -Cc cdrom | awk '{print $1}'` +do +# NAME +echo $A +# ATTRIBUTE +echo `lscfg -l $A | awk -F $A '{print $2}'` +# TYPE +echo "cdrom" +# AUTHORITY + +# SIZE + isEq="FALSE" + for B in `lspv | awk '{print $1}' ` + do + if [ $A = $B ] + then + isEq="TRUE" + fi + + isEq="TRUE" + fi + done + + if [ $isEq = "TRUE" ] + then + # TOTAL SIZE + lspv $A | grep "TOTAL PPs" | awk -F"(" '{print $2}' | awk '{print $1}' + # USED SIZE + lspv $A | grep "USED PPs" | awk -F"(" '{print $2}' | awk '{print $1}' + # FREE SIZE + lspv $A | grep "FREE PPs" | awk -F"(" '{print $2}' | awk '{print $1}' + else + echo "" + echo "" + echo "" + fi + +done \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDiskCpcty.bat b/src/main/resources/egovframework/egovProps/prg/getDiskCpcty.bat new file mode 100644 index 00000000..67f18623 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDiskCpcty.bat @@ -0,0 +1 @@ +@echo "Not supported in WINDOWS" \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDiskCpcty.sh b/src/main/resources/egovframework/egovProps/prg/getDiskCpcty.sh new file mode 100644 index 00000000..8de6cbee --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDiskCpcty.sh @@ -0,0 +1,18 @@ +# Shell Name : getDiskCpcty.bat +# Description : 디스크 용량 확인 +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.23 조재영 최초 생성 +# +# @author 공통 서비스 개발팀 조재영 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. +for B in `df -k | grep / | awk '{print $2} {print $3} {print $4} {print $7}'` + do + echo $B +done \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDiskExst.bat b/src/main/resources/egovframework/egovProps/prg/getDiskExst.bat new file mode 100644 index 00000000..67f18623 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDiskExst.bat @@ -0,0 +1 @@ +@echo "Not supported in WINDOWS" \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDiskExst.sh b/src/main/resources/egovframework/egovProps/prg/getDiskExst.sh new file mode 100644 index 00000000..d578f9e1 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDiskExst.sh @@ -0,0 +1,15 @@ +# Shell Name : getDiskExst.bat +# Description : 디스크 존재여부 확인(윈도우에서는 지원 안함) +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.23 조재영 최초 생성 +# +# @author 공통 서비스 개발팀 조재영 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. +lsdev -Cc disk | wc -l \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDiskInfo.bat b/src/main/resources/egovframework/egovProps/prg/getDiskInfo.bat new file mode 100644 index 00000000..35efc5f0 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDiskInfo.bat @@ -0,0 +1,16 @@ +@rem Shell Name : getDiskInfo.bat +@rem Description : 시스템 Disk의 이름을 조회하는 Shell +@rem Modification Information +@rem +@rem 수정일 수정자 수정내용 +@rem ------- -------- --------------------------- +@rem 2009.02.13 박지욱 최초 생성 +@rem +@rem author 공통 서비스 개발팀 박지욱 +@rem since 2009. 02. 13 +@rem version 1.0 +@rem see +@rem +@rem Copyright (C) 2009 by MOPAS All right reserved. + +echo Can Not Support \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDiskInfo.sh b/src/main/resources/egovframework/egovProps/prg/getDiskInfo.sh new file mode 100644 index 00000000..0ded896e --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDiskInfo.sh @@ -0,0 +1,40 @@ +# Shell Name : getDiskInfo.sh +# Description : 시스템에 존재하는 디스크 정보를 조회하는 Shell +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.23 박지욱 최초 생성 +# +# @author 공통 서비스 개발팀 박지욱 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. + +#echo $1 -SEARCH NAME (NAME, FULL, USING, VALID) + +#NAME +if [ $1 == "NAME" ] +then + lspv | awk '{print $1}' +fi + +#FULL +if [ $1 == "FULL" ] +then + lspv $2 | grep "TOTAL PPs" | awk -F"(" '{print $2}' | awk '{print $1}' +fi + +#USING +if [ $1 == "USED" ] +then + lspv $2 | grep "USED PPs" | awk -F"(" '{print $2}' | awk '{print $1}' +fi + +#VALID +if [ $1 == "FREE" ] +then + lspv $2 | grep "FREE PPs" | awk -F"(" '{print $2}' | awk '{print $1}' +fi \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDrctryAccess.sh b/src/main/resources/egovframework/egovProps/prg/getDrctryAccess.sh new file mode 100644 index 00000000..5e864cbc --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDrctryAccess.sh @@ -0,0 +1,15 @@ +# Shell Name : getDrctryAccess.sh +# Description : 해당되는 디렉토리의 접근권한을 찾는다. +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.23 조재영 최초 생성 +# +# @author 공통 서비스 개발팀 조재영 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. +ls -alF $1 | grep $2 | awk -F" " '{print $1}' \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDrctryByOwner.bat b/src/main/resources/egovframework/egovProps/prg/getDrctryByOwner.bat new file mode 100644 index 00000000..67f18623 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDrctryByOwner.bat @@ -0,0 +1 @@ +@echo "Not supported in WINDOWS" \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDrctryByOwner.sh b/src/main/resources/egovframework/egovProps/prg/getDrctryByOwner.sh new file mode 100644 index 00000000..7b24dca4 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDrctryByOwner.sh @@ -0,0 +1,15 @@ +# Shell Name : getDrctryByOwner.sh +# Description : 해당되는 사용자 계정이 소유주인 디렉토리를 찾는다. +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.23 조재영 최초 생성 +# +# @author 공통 서비스 개발팀 조재영 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. +find $1 -name $2 -user $3 \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDrctryOwner.bat b/src/main/resources/egovframework/egovProps/prg/getDrctryOwner.bat new file mode 100644 index 00000000..67f18623 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDrctryOwner.bat @@ -0,0 +1 @@ +@echo "Not supported in WINDOWS" \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getDrctryOwner.sh b/src/main/resources/egovframework/egovProps/prg/getDrctryOwner.sh new file mode 100644 index 00000000..b22b57b8 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getDrctryOwner.sh @@ -0,0 +1,15 @@ +# Shell Name : getDrctryByOwner.sh +# Description : 해당되는 디렉토리 안 파일의 소유주를 찾는다. +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.23 조재영 최초 생성 +# +# @author 공통 서비스 개발팀 조재영 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. +ls -alF $1 | grep $2 | awk -F" " '{print $3}' \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getMoryInfo.bat b/src/main/resources/egovframework/egovProps/prg/getMoryInfo.bat new file mode 100644 index 00000000..b3594e36 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getMoryInfo.bat @@ -0,0 +1,16 @@ +@rem Shell Name : getMoryInfo.bat +@rem Description : ý ޸ ü, , ȿ 뷮 ȸϴ Shell +@rem Modification Information +@rem +@rem +@rem ------- -------- --------------------------- +@rem 2009.02.24 +@rem +@rem author +@rem since 2009. 02. 24 +@rem version 1.0 +@rem see +@rem +@rem Copyright (C) 2009 by MOPAS All right reserved. + +systeminfo \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getMoryInfo.sh b/src/main/resources/egovframework/egovProps/prg/getMoryInfo.sh new file mode 100644 index 00000000..46c72e96 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getMoryInfo.sh @@ -0,0 +1,34 @@ +# Shell Name : getMoryInfo.sh +# Description : 시스템에 존재하는 메모리 정보를 조회하는 Shell +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.23 박지욱 최초 생성 +# +# @author 공통 서비스 개발팀 박지욱 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. + +#echo $1 -SEARCH NAME (FULL, USING, FREE) + +#FULL +if [ $1 == "FULL" ] +then + vmstat | grep "mem=" | awk '{print $4}' +fi + +#USING +if [ $1 == "USED" ] +then + vmstat | tail -1 | awk '{print $3*4096/1024/1024}' +fi + +#VALID +if [ $1 == "FREE" ] +then + vmstat | tail -1 | awk '{print $4*4096/1024/1024}' +fi \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getMountLc.sh b/src/main/resources/egovframework/egovProps/prg/getMountLc.sh new file mode 100644 index 00000000..3ecbde0e --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getMountLc.sh @@ -0,0 +1,19 @@ +# Shell Name : getMountLc.sh +# Description : 파일(디렉토리)가 존재하는 파일시스템(마운트된 위치)을 조회하는 Shell +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.23 박지욱 최초 생성 +# +# @author 공통 서비스 개발팀 박지욱 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. + +#echo $1 -FILE LOCATION +#echo $1 -/ + +df -k $1 | grep $2 | awk -F" " '{print $7}' \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getNetWorkInfo.sh b/src/main/resources/egovframework/egovProps/prg/getNetWorkInfo.sh new file mode 100644 index 00000000..9e3ba8d7 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getNetWorkInfo.sh @@ -0,0 +1,63 @@ +# Shell Name : getNetWorkInfo.sh +# Description : 네트워크 정보를 찾는다. +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.23 이용 최초 생성 +# +# @author 공통 서비스 개발팀 이용 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. + +#getNetWorkInfo.sh +#네트워크 정보를 찾는다. +#netstat -v ent0 | grep "하드웨어 주소" -MAC +#prtconf | grep "IP 주소" -IP +#prtconf | grep "서브넷 마스크" -SM +#prtconf | grep "게이트웨이" -GW +#echo $1 +#echo $2 +#MAC +if [ $1 == "MAC" ] +then + netstat -v $2 | grep "하드웨어 주소" | awk '{print $3}' +fi + +#IP +if [ $1 == "IP" ] +then + prtconf | grep "IP 주소" | awk '{print $3}' +fi + +#SM +if [ $1 == "SM" ] +then + prtconf | grep "서브넷 마스크" | awk '{print $3}' +fi + +#GW +if [ $1 == "GW" ] +then + prtconf | grep "게이트웨이" | awk '{print $2}' +fi + +#도메인명 +if [ $1 == "DN" ] +then + hostname +fi + +#DNS +if [ $1 == "DNS" ] +then + host $2 | awk '{print $2}' +fi + +if [ $1 == "SCAN" ] +then + netstat -na | egrep 'tcp|udp' +fi \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getOSInfo.bat b/src/main/resources/egovframework/egovProps/prg/getOSInfo.bat new file mode 100644 index 00000000..7fdd1f7c --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getOSInfo.bat @@ -0,0 +1,16 @@ +@rem Shell Name : getOSInfo.bat +@rem Description : 시스템 OS의 이름, 버전, 제조사를 조회하는 Shell +@rem Modification Information +@rem +@rem 수정일 수정자 수정내용 +@rem ------- -------- --------------------------- +@rem 2009.02.13 박지욱 최초 생성 +@rem +@rem author 공통 서비스 개발팀 박지욱 +@rem since 2009. 02. 13 +@rem version 1.0 +@rem see +@rem +@rem Copyright (C) 2009 by MOPAS All right reserved. + +systeminfo \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getOSInfo.sh b/src/main/resources/egovframework/egovProps/prg/getOSInfo.sh new file mode 100644 index 00000000..adee8e9c --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getOSInfo.sh @@ -0,0 +1,40 @@ +# Shell Name : getOSInfo.sh +# Description : 시스템 OS의 이름, 버전, 제조사를 조회하는 Shell +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.13 박지욱 최초 생성 +# +# @author 공통 서비스 개발팀 박지욱 +# @since 2009. 02. 13 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. + +#echo $1 -SEARCH NAME (NAME, VERSION, PRDUCTOR) + +#NAME +if [ $1 == "NAME" ] +then + uname -s +fi + +#VERSION +if [ $1 == "VERSION" ] +then + oslevel +fi + +#PRDUCTOR +if [ $1 == "PRDUCTOR" ] +then + prtconf | grep "시스템 모델:" | awk '{print $3}' +fi + +#PROCESSOR +if [ $1 == "PROCESSOR" ] +then + uname -a | awk '{print substr($5,3,6)}' +fi \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getPrductStatus.bat b/src/main/resources/egovframework/egovProps/prg/getPrductStatus.bat new file mode 100644 index 00000000..cdacab11 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getPrductStatus.bat @@ -0,0 +1,16 @@ +@rem Shell Name : getPrductStatus.bat +@rem Description : 시스템에 설치된 서버(WAS,WEB,MAIL서버)의 실행상태를 조회하는 Shell +@rem Modification Information +@rem +@rem 수정일 수정자 수정내용 +@rem ------- -------- --------------------------- +@rem 2009.02.11 박지욱 최초 생성 +@rem +@rem author 공통 서비스 개발팀 박지욱 +@rem since 2009. 02. 11 +@rem version 1.0 +@rem see +@rem +@rem Copyright (C) 2009 by MOPAS All right reserved. + +netstat -na \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getPrductStatus.sh b/src/main/resources/egovframework/egovProps/prg/getPrductStatus.sh new file mode 100644 index 00000000..a1dfd75a --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getPrductStatus.sh @@ -0,0 +1,18 @@ +# Shell Name : getPrductStatus.sh +# Description : 시스템에 설치된 서버(WAS,WEB,MAIL서버)의 실행상태를 조회하는 Shell +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.11 박지욱 최초 생성 +# +# @author 공통 서비스 개발팀 박지욱 +# @since 2009. 02. 11 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. + +#echo $1 -PORT + +netstat -na | grep -w "LISTEN" | grep -c $1 \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getPrductVersion.bat b/src/main/resources/egovframework/egovProps/prg/getPrductVersion.bat new file mode 100644 index 00000000..d9483713 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getPrductVersion.bat @@ -0,0 +1,43 @@ +@rem Shell Name : getPrductVersion.bat +@rem Description : 시스템에 설치된 서버(WAS,WEB,MAIL서버)의 버전을 조회하는 Shell +@rem Modification Information +@rem +@rem 수정일 수정자 수정내용 +@rem ------- -------- --------------------------- +@rem 2009.02.11 박지욱 최초 생성 +@rem +@rem author 공통 서비스 개발팀 박지욱 +@rem since 2009. 02. 11 +@rem version 1.0 +@rem see +@rem +@rem Copyright (C) 2009 by MOPAS All right reserved. + +IF "%1"=="WEBLOGIC" goto step1 +IF "%1"=="JEUS" goto step2 +IF "%1"=="JBOSS" goto step3 +goto error + +:step1 +set CMMD1=java weblogic.Admin -username weblogic -password weblogic VERSION +set CMMD2= +goto done + + +:step2 +set CMMD1=jeusadmin -version +set CMMD2= +goto done + + +:step3 +set CMMD1=twiddle.bat -s localhost:1099 -u admin -p admin get "jboss.system:type=Server" +set CMMD2=find "Version=" +goto done + +:error +@echo Usage: getPrductVersion 서버이름 +@echo example) getPrductVersion WEBLOGIC + +:done +%CMMD1%|%CMMD2% \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/getPrductVersion.sh b/src/main/resources/egovframework/egovProps/prg/getPrductVersion.sh new file mode 100644 index 00000000..c0ffddb4 --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/getPrductVersion.sh @@ -0,0 +1,34 @@ +# Shell Name : getPrductVersion.sh +# Description : 시스템에 설치된 서버(WAS,WEB,MAIL서버)의 버전을 조회하는 Shell +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.11 박지욱 최초 생성 +# +# @author 공통 서비스 개발팀 박지욱 +# @since 2009. 02. 11 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. + +#echo $1 -SERVER NAME + +#WEBLOGIC +if [ $1 == "WEBLOGIC" ] +then + java weblogic.Admin -username weblogic -password weblogic VERSION +fi + +#JEUS +if [ $1 == "JEUS" ] +then + jeusadmin -version +fi + +#JBOSS +if [ $1 == "JBOSS" ] +then + /user/com/jboss/bin/twiddle.sh -s localhost:1099 -u admin -p admin get "jboss.system:type=Server" | grep "Version=" +fi \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/moveDrctry.bat b/src/main/resources/egovframework/egovProps/prg/moveDrctry.bat new file mode 100644 index 00000000..a7044dcc --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/moveDrctry.bat @@ -0,0 +1 @@ +move %1 %2 \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/moveDrctry.sh b/src/main/resources/egovframework/egovProps/prg/moveDrctry.sh new file mode 100644 index 00000000..31b2394a --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/moveDrctry.sh @@ -0,0 +1,15 @@ +# Shell Name : moveDrctry.sh +# Description : 파일을 이동한다. +# Modification Information +# +# 수정일 수정자 수정내용 +# ------- -------- --------------------------- +# 2009.02.11 박지욱 최초 생성 +# +# @author 공통 서비스 개발팀 박지욱 +# @since 2009. 02. 11 +# @version 1.0 +# @see +# +# Copyright (C) 2009 by MOPAS All right reserved. +mv $1 $2 \ No newline at end of file diff --git a/src/main/resources/egovframework/egovProps/prg/sh_001.bat b/src/main/resources/egovframework/egovProps/prg/sh_001.bat new file mode 100644 index 00000000..7006cb9b --- /dev/null +++ b/src/main/resources/egovframework/egovProps/prg/sh_001.bat @@ -0,0 +1 @@ +@hostname \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_altibase.xml b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_altibase.xml new file mode 100644 index 00000000..8f19cb23 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_altibase.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNFILE + (ATCH_FILE_ID, CREAT_DT, USE_AT) + VALUES + ( #{atchFileId}, SYSDATE, 'Y') + + + + + + INSERT INTO COMTNFILEDETAIL + ( ATCH_FILE_ID, FILE_SN, FILE_STRE_COURS, STRE_FILE_NM, + ORIGNL_FILE_NM, FILE_EXTSN, FILE_SIZE, FILE_CN ) + VALUES + ( #{atchFileId}, #{fileSn}, #{fileStreCours}, #{streFileNm}, + #{orignlFileNm}, #{fileExtsn}, #{fileMg}, #{fileCn} ) + + + + + + DELETE FROM COMTNFILEDETAIL + WHERE + ATCH_FILE_ID = #{atchFileId} + AND + FILE_SN = #{fileSn} + + + + + + + + + + UPDATE COMTNFILE + SET USE_AT = 'N' + WHERE ATCH_FILE_ID = #{atchFileId} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_cubrid.xml b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_cubrid.xml new file mode 100644 index 00000000..64effce9 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_cubrid.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNFILE + (ATCH_FILE_ID, CREAT_DT, USE_AT) + VALUES + ( #{atchFileId}, SYSDATETIME, 'Y') + + + + + + INSERT INTO COMTNFILEDETAIL + ( ATCH_FILE_ID, FILE_SN, FILE_STRE_COURS, STRE_FILE_NM, + ORIGNL_FILE_NM, FILE_EXTSN, FILE_SIZE, FILE_CN ) + VALUES + ( #{atchFileId}, #{fileSn}, #{fileStreCours}, #{streFileNm}, + #{orignlFileNm}, #{fileExtsn}, #{fileMg}, #{fileCn} ) + + + + + + DELETE FROM COMTNFILEDETAIL + WHERE + ATCH_FILE_ID = #{atchFileId} + AND + FILE_SN = #{fileSn} + + + + + + + + + + UPDATE COMTNFILE + SET USE_AT = 'N' + WHERE ATCH_FILE_ID = #{atchFileId} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_maria.xml b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_maria.xml new file mode 100644 index 00000000..b957d4d3 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_maria.xml @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNFILE + (ATCH_FILE_ID, CREAT_DT, USE_AT) + VALUES + ( #{atchFileId}, SYSDATE(), 'Y') + + + + + + INSERT INTO COMTNFILEDETAIL + ( ATCH_FILE_ID, FILE_SN, FILE_STRE_COURS, STRE_FILE_NM, + ORIGNL_FILE_NM, FILE_EXTSN, FILE_SIZE, FILE_CN ) + VALUES + ( #{atchFileId}, #{fileSn}, #{fileStreCours}, #{streFileNm}, + #{orignlFileNm}, #{fileExtsn}, #{fileMg}, #{fileCn} ) + + + + + + DELETE FROM COMTNFILEDETAIL + WHERE + ATCH_FILE_ID = #{atchFileId} + AND + FILE_SN = #{fileSn} + + + + + + + + + + UPDATE COMTNFILE + SET USE_AT = 'N' + WHERE ATCH_FILE_ID = #{atchFileId} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_mysql.xml b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_mysql.xml new file mode 100644 index 00000000..b957d4d3 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_mysql.xml @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNFILE + (ATCH_FILE_ID, CREAT_DT, USE_AT) + VALUES + ( #{atchFileId}, SYSDATE(), 'Y') + + + + + + INSERT INTO COMTNFILEDETAIL + ( ATCH_FILE_ID, FILE_SN, FILE_STRE_COURS, STRE_FILE_NM, + ORIGNL_FILE_NM, FILE_EXTSN, FILE_SIZE, FILE_CN ) + VALUES + ( #{atchFileId}, #{fileSn}, #{fileStreCours}, #{streFileNm}, + #{orignlFileNm}, #{fileExtsn}, #{fileMg}, #{fileCn} ) + + + + + + DELETE FROM COMTNFILEDETAIL + WHERE + ATCH_FILE_ID = #{atchFileId} + AND + FILE_SN = #{fileSn} + + + + + + + + + + UPDATE COMTNFILE + SET USE_AT = 'N' + WHERE ATCH_FILE_ID = #{atchFileId} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_oracle.xml b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_oracle.xml new file mode 100644 index 00000000..486f2942 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_oracle.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNFILE + (ATCH_FILE_ID, CREAT_DT, USE_AT) + VALUES + ( #{atchFileId}, SYSDATE, 'Y') + + + + + + INSERT INTO COMTNFILEDETAIL + ( ATCH_FILE_ID, FILE_SN, FILE_STRE_COURS, STRE_FILE_NM, + ORIGNL_FILE_NM, FILE_EXTSN, FILE_SIZE, FILE_CN ) + VALUES + ( #{atchFileId}, #{fileSn}, #{fileStreCours}, #{streFileNm}, + #{orignlFileNm}, #{fileExtsn}, #{fileMg}, #{fileCn} ) + + + + + + DELETE FROM COMTNFILEDETAIL + WHERE + ATCH_FILE_ID = #{atchFileId} + AND + FILE_SN = #{fileSn} + + + + + + + + + + UPDATE COMTNFILE + SET USE_AT = 'N' + WHERE ATCH_FILE_ID = #{atchFileId} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_postgres.xml b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_postgres.xml new file mode 100644 index 00000000..53ebf42f --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_postgres.xml @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNFILE + (ATCH_FILE_ID, CREAT_DT, USE_AT) + VALUES + ( #{atchFileId}, NOW(), 'Y') + + + + + + INSERT INTO COMTNFILEDETAIL + ( ATCH_FILE_ID, FILE_SN, FILE_STRE_COURS, STRE_FILE_NM, + ORIGNL_FILE_NM, FILE_EXTSN, FILE_SIZE, FILE_CN ) + VALUES + ( #{atchFileId}, CAST(#{fileSn} AS NUMERIC), #{fileStreCours}, #{streFileNm}, + #{orignlFileNm}, #{fileExtsn}, CAST(#{fileMg} AS NUMERIC), #{fileCn} ) + + + + + + DELETE FROM COMTNFILEDETAIL + WHERE + ATCH_FILE_ID = #{atchFileId} + AND + FILE_SN = CAST(#{fileSn} AS NUMERIC) + + + + + + + + + + UPDATE COMTNFILE + SET USE_AT = 'N' + WHERE ATCH_FILE_ID = #{atchFileId} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_tibero.xml b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_tibero.xml new file mode 100644 index 00000000..486f2942 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/fms/EgovFile_SQL_tibero.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNFILE + (ATCH_FILE_ID, CREAT_DT, USE_AT) + VALUES + ( #{atchFileId}, SYSDATE, 'Y') + + + + + + INSERT INTO COMTNFILEDETAIL + ( ATCH_FILE_ID, FILE_SN, FILE_STRE_COURS, STRE_FILE_NM, + ORIGNL_FILE_NM, FILE_EXTSN, FILE_SIZE, FILE_CN ) + VALUES + ( #{atchFileId}, #{fileSn}, #{fileStreCours}, #{streFileNm}, + #{orignlFileNm}, #{fileExtsn}, #{fileMg}, #{fileCn} ) + + + + + + DELETE FROM COMTNFILEDETAIL + WHERE + ATCH_FILE_ID = #{atchFileId} + AND + FILE_SN = #{fileSn} + + + + + + + + + + UPDATE COMTNFILE + SET USE_AT = 'N' + WHERE ATCH_FILE_ID = #{atchFileId} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_altibase.xml b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_altibase.xml new file mode 100644 index 00000000..428b3fe9 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_altibase.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_cubrid.xml b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_cubrid.xml new file mode 100644 index 00000000..4b1025be --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_cubrid.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_maria.xml b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_maria.xml new file mode 100644 index 00000000..728cbb60 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_maria.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_mysql.xml b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_mysql.xml new file mode 100644 index 00000000..728cbb60 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_mysql.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_oracle.xml b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_oracle.xml new file mode 100644 index 00000000..ccb78f6e --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_oracle.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_postgres.xml b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_postgres.xml new file mode 100644 index 00000000..728cbb60 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_postgres.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_tibero.xml b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_tibero.xml new file mode 100644 index 00000000..4b1025be --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cmm/use/EgovCmmUse_SQL_tibero.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_altibase.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_altibase.xml new file mode 100644 index 00000000..cd4ec432 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_altibase.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM COMTHEMAILDSPTCHMANAGE + WHERE mssage_id = #{mssageId} + + + + + + + DELETE FROM COMTNEMAILATCHMNINFO + WHERE mssage_id = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_cubrid.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_cubrid.xml new file mode 100644 index 00000000..cd4ec432 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_cubrid.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM COMTHEMAILDSPTCHMANAGE + WHERE mssage_id = #{mssageId} + + + + + + + DELETE FROM COMTNEMAILATCHMNINFO + WHERE mssage_id = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_maria.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_maria.xml new file mode 100644 index 00000000..ab229683 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_maria.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM COMTHEMAILDSPTCHMANAGE + WHERE mssage_id = #{mssageId} + + + + + + + DELETE FROM COMTNEMAILATCHMNINFO + WHERE mssage_id = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_mysql.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_mysql.xml new file mode 100644 index 00000000..ab229683 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_mysql.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM COMTHEMAILDSPTCHMANAGE + WHERE mssage_id = #{mssageId} + + + + + + + DELETE FROM COMTNEMAILATCHMNINFO + WHERE mssage_id = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_oracle.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_oracle.xml new file mode 100644 index 00000000..ab229683 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_oracle.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM COMTHEMAILDSPTCHMANAGE + WHERE mssage_id = #{mssageId} + + + + + + + DELETE FROM COMTNEMAILATCHMNINFO + WHERE mssage_id = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_postgres.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_postgres.xml new file mode 100644 index 00000000..49111035 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_postgres.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM COMTHEMAILDSPTCHMANAGE + WHERE mssage_id = #{mssageId} + + + + + + + DELETE FROM COMTNEMAILATCHMNINFO + WHERE mssage_id = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_tibero.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_tibero.xml new file mode 100644 index 00000000..ab229683 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDetail_SQL_tibero.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM COMTHEMAILDSPTCHMANAGE + WHERE mssage_id = #{mssageId} + + + + + + + DELETE FROM COMTNEMAILATCHMNINFO + WHERE mssage_id = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_altibase.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_altibase.xml new file mode 100644 index 00000000..b673b3fc --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_altibase.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_cubrid.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_cubrid.xml new file mode 100644 index 00000000..910c35c5 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_cubrid.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_maria.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_maria.xml new file mode 100644 index 00000000..deae98d6 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_maria.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_mysql.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_mysql.xml new file mode 100644 index 00000000..deae98d6 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_mysql.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_oracle.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_oracle.xml new file mode 100644 index 00000000..fcd1e546 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_oracle.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_postgres.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_postgres.xml new file mode 100644 index 00000000..deae98d6 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_postgres.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_tibero.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_tibero.xml new file mode 100644 index 00000000..8cfcfa50 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailDtls_SQL_tibero.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_altibase.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_altibase.xml new file mode 100644 index 00000000..443f3a0b --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_altibase.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + INSERT INTO COMTHEMAILDSPTCHMANAGE + ( + MSSAGE_ID, + SNDR, + RCVER, + SJ, + SNDNG_RESULT_CODE, + EMAIL_CN, + DSPTCH_DT, + ATCH_FILE_ID + ) + VALUES + ( + #{mssageId}, + #{dsptchPerson}, + #{recptnPerson}, + #{sj}, + #{sndngResultCode}, + #{emailCn}, + TO_CHAR(SYSDATE, 'YYYYMMDD'), + #{atchFileId} + ) + + + + + + + + + + UPDATE COMTHEMAILDSPTCHMANAGE + SET SNDNG_RESULT_CODE = #{sndngResultCode} + WHERE MSSAGE_ID = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_cubrid.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_cubrid.xml new file mode 100644 index 00000000..6af21e4b --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_cubrid.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + INSERT INTO COMTHEMAILDSPTCHMANAGE + ( + MSSAGE_ID, + SNDR, + RCVER, + SJ, + SNDNG_RESULT_CODE, + EMAIL_CN, + DSPTCH_DT, + ATCH_FILE_ID + ) + VALUES + ( + #{mssageId}, + #{dsptchPerson}, + #{recptnPerson}, + #{sj}, + #{sndngResultCode}, + #{emailCn}, + TO_CHAR(SYSDATETIME, 'yyyy-mm-dd hh24:mi:ss'), + #{atchFileId} + ) + + + + + + + + + + UPDATE COMTHEMAILDSPTCHMANAGE + SET SNDNG_RESULT_CODE = #{sndngResultCode} + WHERE MSSAGE_ID = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_maria.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_maria.xml new file mode 100644 index 00000000..d5b78ed5 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_maria.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + INSERT INTO COMTHEMAILDSPTCHMANAGE + ( + MSSAGE_ID, + SNDR, + RCVER, + SJ, + SNDNG_RESULT_CODE, + EMAIL_CN, + DSPTCH_DT, + ATCH_FILE_ID + ) + VALUES + ( + #{mssageId}, + #{dsptchPerson}, + #{recptnPerson}, + #{sj}, + #{sndngResultCode}, + #{emailCn}, + sysdate(), + #{atchFileId} + ) + + + + + + + + + + UPDATE COMTHEMAILDSPTCHMANAGE + SET SNDNG_RESULT_CODE = #{sndngResultCode} + WHERE MSSAGE_ID = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_mysql.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_mysql.xml new file mode 100644 index 00000000..d5b78ed5 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_mysql.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + INSERT INTO COMTHEMAILDSPTCHMANAGE + ( + MSSAGE_ID, + SNDR, + RCVER, + SJ, + SNDNG_RESULT_CODE, + EMAIL_CN, + DSPTCH_DT, + ATCH_FILE_ID + ) + VALUES + ( + #{mssageId}, + #{dsptchPerson}, + #{recptnPerson}, + #{sj}, + #{sndngResultCode}, + #{emailCn}, + sysdate(), + #{atchFileId} + ) + + + + + + + + + + UPDATE COMTHEMAILDSPTCHMANAGE + SET SNDNG_RESULT_CODE = #{sndngResultCode} + WHERE MSSAGE_ID = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_oracle.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_oracle.xml new file mode 100644 index 00000000..b9e48fb8 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_oracle.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + INSERT INTO COMTHEMAILDSPTCHMANAGE + ( + MSSAGE_ID, + SNDR, + RCVER, + SJ, + SNDNG_RESULT_CODE, + EMAIL_CN, + DSPTCH_DT, + ATCH_FILE_ID + ) + VALUES + ( + #{mssageId}, + #{dsptchPerson}, + #{recptnPerson}, + #{sj}, + #{sndngResultCode}, + #{emailCn}, + SYSDATE, + #{atchFileId} + ) + + + + + + + + + + UPDATE COMTHEMAILDSPTCHMANAGE + SET SNDNG_RESULT_CODE = #{sndngResultCode} + WHERE MSSAGE_ID = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_postgres.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_postgres.xml new file mode 100644 index 00000000..fb03f6b6 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_postgres.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + INSERT INTO COMTHEMAILDSPTCHMANAGE + ( + MSSAGE_ID, + SNDR, + RCVER, + SJ, + SNDNG_RESULT_CODE, + EMAIL_CN, + DSPTCH_DT, + ATCH_FILE_ID + ) + VALUES + ( + #{mssageId}, + #{dsptchPerson}, + #{recptnPerson}, + #{sj}, + #{sndngResultCode}, + #{emailCn}, + TO_CHAR(NOW(), 'YYYY-mm-dd HH24:MI:SS'), + #{atchFileId} + ) + + + + + + + + + + UPDATE COMTHEMAILDSPTCHMANAGE + SET SNDNG_RESULT_CODE = #{sndngResultCode} + WHERE MSSAGE_ID = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_tibero.xml b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_tibero.xml new file mode 100644 index 00000000..3b4bdc22 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/cop/ems/EgovSndngMailRegist_SQL_tibero.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + INSERT INTO COMTHEMAILDSPTCHMANAGE + ( + MSSAGE_ID, + SNDR, + RCVER, + SJ, + SNDNG_RESULT_CODE, + EMAIL_CN, + DSPTCH_DT, + ATCH_FILE_ID + ) + VALUES + ( + #{mssageId}, + #{dsptchPerson}, + #{recptnPerson}, + #{sj}, + #{sndngResultCode}, + #{emailCn}, + SYSDATE, + #{atchFileId} + ) + + + + + + + + + + UPDATE COMTHEMAILDSPTCHMANAGE + SET SNDNG_RESULT_CODE = #{sndngResultCode} + WHERE MSSAGE_ID = #{mssageId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_altibase.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_altibase.xml new file mode 100644 index 00000000..23d0bb48 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_altibase.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORINFO + ( AUTHOR_CODE + , AUTHOR_NM + , AUTHOR_DC + , AUTHOR_CREAT_DE ) + VALUES ( #{authorCode} + , #{authorNm} + , #{authorDc} + , SYSDATE) + + + + + + UPDATE COMTNAUTHORINFO + SET AUTHOR_NM=#{authorNm} + , AUTHOR_DC=#{authorDc} + WHERE AUTHOR_CODE=#{authorCode} + + + + + + DELETE FROM COMTNAUTHORINFO + WHERE AUTHOR_CODE=#{authorCode} + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_cubrid.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_cubrid.xml new file mode 100644 index 00000000..f2828d68 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_cubrid.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORINFO + ( AUTHOR_CODE + , AUTHOR_NM + , AUTHOR_DC + , AUTHOR_CREAT_DE ) + VALUES ( #{authorCode} + , #{authorNm} + , #{authorDc} + , SYSDATETIME) + + + + + + UPDATE COMTNAUTHORINFO + SET AUTHOR_NM=#{authorNm} + , AUTHOR_DC=#{authorDc} + WHERE AUTHOR_CODE=#{authorCode} + + + + + + DELETE FROM COMTNAUTHORINFO + WHERE AUTHOR_CODE=#{authorCode} + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_maria.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_maria.xml new file mode 100644 index 00000000..0764496c --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_maria.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORINFO + ( AUTHOR_CODE + , AUTHOR_NM + , AUTHOR_DC + , AUTHOR_CREAT_DE ) + VALUES ( #{authorCode} + , #{authorNm} + , #{authorDc} + , now()) + + + + + + UPDATE COMTNAUTHORINFO + SET AUTHOR_NM=#{authorNm} + , AUTHOR_DC=#{authorDc} + WHERE AUTHOR_CODE=#{authorCode} + + + + + + DELETE FROM COMTNAUTHORINFO + WHERE AUTHOR_CODE=#{authorCode} + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_mysql.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_mysql.xml new file mode 100644 index 00000000..0764496c --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_mysql.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORINFO + ( AUTHOR_CODE + , AUTHOR_NM + , AUTHOR_DC + , AUTHOR_CREAT_DE ) + VALUES ( #{authorCode} + , #{authorNm} + , #{authorDc} + , now()) + + + + + + UPDATE COMTNAUTHORINFO + SET AUTHOR_NM=#{authorNm} + , AUTHOR_DC=#{authorDc} + WHERE AUTHOR_CODE=#{authorCode} + + + + + + DELETE FROM COMTNAUTHORINFO + WHERE AUTHOR_CODE=#{authorCode} + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_oracle.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_oracle.xml new file mode 100644 index 00000000..82e62a7c --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_oracle.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORINFO + ( AUTHOR_CODE + , AUTHOR_NM + , AUTHOR_DC + , AUTHOR_CREAT_DE ) + VALUES ( #{authorCode} + , #{authorNm} + , #{authorDc} + , SYSDATE) + + + + + + UPDATE COMTNAUTHORINFO + SET AUTHOR_NM=#{authorNm} + , AUTHOR_DC=#{authorDc} + WHERE AUTHOR_CODE=#{authorCode} + + + + + + DELETE FROM COMTNAUTHORINFO + WHERE AUTHOR_CODE=#{authorCode} + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_postgres.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_postgres.xml new file mode 100644 index 00000000..3fd842e2 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_postgres.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORINFO + ( AUTHOR_CODE + , AUTHOR_NM + , AUTHOR_DC + , AUTHOR_CREAT_DE ) + VALUES ( #{authorCode} + , #{authorNm} + , #{authorDc} + , TO_CHAR(now(), 'YYYY-mm-dd HH24:MI:SS')) + + + + + + UPDATE COMTNAUTHORINFO + SET AUTHOR_NM=#{authorNm} + , AUTHOR_DC=#{authorDc} + WHERE AUTHOR_CODE=#{authorCode} + + + + + + DELETE FROM COMTNAUTHORINFO + WHERE AUTHOR_CODE=#{authorCode} + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_tibero.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_tibero.xml new file mode 100644 index 00000000..87811885 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorManage_SQL_tibero.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORINFO + ( AUTHOR_CODE + , AUTHOR_NM + , AUTHOR_DC + , AUTHOR_CREAT_DE ) + VALUES ( #{authorCode} + , #{authorNm} + , #{authorDc} + , SYSDATE) + + + + + + UPDATE COMTNAUTHORINFO + SET AUTHOR_NM=#{authorNm} + , AUTHOR_DC=#{authorDc} + WHERE AUTHOR_CODE=#{authorCode} + + + + + + DELETE FROM COMTNAUTHORINFO + WHERE AUTHOR_CODE=#{authorCode} + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_altibase.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_altibase.xml new file mode 100644 index 00000000..20e3075b --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_altibase.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORROLERELATE + ( AUTHOR_CODE + , ROLE_CODE + , CREAT_DT) + VALUES ( #{authorCode} + , #{roleCode} + , SYSDATE) + + + + + + DELETE FROM COMTNAUTHORROLERELATE + WHERE AUTHOR_CODE=#{authorCode} + AND ROLE_CODE=#{roleCode} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_cubrid.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_cubrid.xml new file mode 100644 index 00000000..433bf347 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_cubrid.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORROLERELATE + ( AUTHOR_CODE + , ROLE_CODE + , CREAT_DT) + VALUES ( #{authorCode} + , #{roleCode} + , SYSDATETIME) + + + + + + DELETE FROM COMTNAUTHORROLERELATE + WHERE AUTHOR_CODE=#{authorCode} + AND ROLE_CODE=#{roleCode} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_maria.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_maria.xml new file mode 100644 index 00000000..7e10dd86 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_maria.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORROLERELATE + ( AUTHOR_CODE + , ROLE_CODE + , CREAT_DT) + VALUES ( #{authorCode} + , #{roleCode} + , now()) + + + + + + DELETE FROM COMTNAUTHORROLERELATE + WHERE AUTHOR_CODE=#{authorCode} + AND ROLE_CODE=#{roleCode} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_mysql.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_mysql.xml new file mode 100644 index 00000000..7e10dd86 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_mysql.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORROLERELATE + ( AUTHOR_CODE + , ROLE_CODE + , CREAT_DT) + VALUES ( #{authorCode} + , #{roleCode} + , now()) + + + + + + DELETE FROM COMTNAUTHORROLERELATE + WHERE AUTHOR_CODE=#{authorCode} + AND ROLE_CODE=#{roleCode} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_oracle.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_oracle.xml new file mode 100644 index 00000000..cfed8db1 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_oracle.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORROLERELATE + ( AUTHOR_CODE + , ROLE_CODE + , CREAT_DT) + VALUES ( #{authorCode} + , #{roleCode} + , SYSDATE) + + + + + + DELETE FROM COMTNAUTHORROLERELATE + WHERE AUTHOR_CODE=#{authorCode} + AND ROLE_CODE=#{roleCode} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_postgres.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_postgres.xml new file mode 100644 index 00000000..e057b52b --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_postgres.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORROLERELATE + ( AUTHOR_CODE + , ROLE_CODE + , CREAT_DT) + VALUES ( #{authorCode} + , #{roleCode} + , NOW()) + + + + + + DELETE FROM COMTNAUTHORROLERELATE + WHERE AUTHOR_CODE=#{authorCode} + AND ROLE_CODE=#{roleCode} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_tibero.xml b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_tibero.xml new file mode 100644 index 00000000..cfed8db1 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sec/ram/EgovAuthorRoleManage_SQL_tibero.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNAUTHORROLERELATE + ( AUTHOR_CODE + , ROLE_CODE + , CREAT_DT) + VALUES ( #{authorCode} + , #{roleCode} + , SYSDATE) + + + + + + DELETE FROM COMTNAUTHORROLERELATE + WHERE AUTHOR_CODE=#{authorCode} + AND ROLE_CODE=#{roleCode} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_altibase.xml b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_altibase.xml new file mode 100644 index 00000000..452bac6b --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_altibase.xml @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT + INTO COMTNRESTDE + ( RESTDE_NO + , RESTDE + , RESTDE_NM + , RESTDE_DC + , RESTDE_SE_CODE + , FRST_REGIST_PNTTM + , FRST_REGISTER_ID + , LAST_UPDT_PNTTM + , LAST_UPDUSR_ID + ) + VALUES + ( #{restdeNo} + , #{restdeDe} + , #{restdeNm} + , #{restdeDc} + , #{restdeSeCode} + , SYSDATE + , #{frstRegisterId} + , SYSDATE + , #{frstRegisterId} + ) + + + + + + + + UPDATE COMTNRESTDE + SET RESTDE_NM = #{restdeNm} + , RESTDE_DC = #{restdeDc} + , RESTDE_SE_CODE = #{restdeSeCode} + , LAST_UPDT_PNTTM = sysdate + , LAST_UPDUSR_ID = #{lastUpdusrId} + WHERE RESTDE_NO = #{restdeNo} + + + + + + DELETE + FROM COMTNRESTDE + WHERE RESTDE_NO = #{restdeNo} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_cubrid.xml b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_cubrid.xml new file mode 100644 index 00000000..7cf6d90e --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_cubrid.xml @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT + INTO COMTNRESTDE + ( RESTDE_NO + , RESTDE + , RESTDE_NM + , RESTDE_DC + , RESTDE_SE_CODE + , FRST_REGIST_PNTTM + , FRST_REGISTER_ID + , LAST_UPDT_PNTTM + , LAST_UPDUSR_ID + ) + VALUES + ( #{restdeNo} + , #{restdeDe} + , #{restdeNm} + , #{restdeDc} + , #{restdeSeCode} + , SYSDATETIME + , #{frstRegisterId} + , SYSDATETIME + , #{frstRegisterId} + ) + + + + + + + + UPDATE COMTNRESTDE + SET RESTDE_NM = #{restdeNm} + , RESTDE_DC = #{restdeDc} + , RESTDE_SE_CODE = #{restdeSeCode} + , LAST_UPDT_PNTTM = SYSDATETIME + , LAST_UPDUSR_ID = #{lastUpdusrId} + WHERE RESTDE_NO = #{restdeNo} + + + + + + DELETE + FROM COMTNRESTDE + WHERE RESTDE_NO = #{restdeNo} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_maria.xml b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_maria.xml new file mode 100644 index 00000000..27ae7668 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_maria.xml @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT + INTO COMTNRESTDE + ( RESTDE_NO + , RESTDE + , RESTDE_NM + , RESTDE_DC + , RESTDE_SE_CODE + , FRST_REGIST_PNTTM + , FRST_REGISTER_ID + , LAST_UPDT_PNTTM + , LAST_UPDUSR_ID + ) + VALUES + ( #{restdeNo} + , #{restdeDe} + , #{restdeNm} + , #{restdeDc} + , #{restdeSeCode} + , SYSDATE() + , #{frstRegisterId} + , SYSDATE() + , #{frstRegisterId} + ) + + + + + + + + UPDATE COMTNRESTDE + SET RESTDE_NM = #{restdeNm} + , RESTDE_DC = #{restdeDc} + , RESTDE_SE_CODE = #{restdeSeCode} + , LAST_UPDT_PNTTM = sysdate() + , LAST_UPDUSR_ID = #{lastUpdusrId} + WHERE RESTDE_NO = #{restdeNo} + + + + + + DELETE + FROM COMTNRESTDE + WHERE RESTDE_NO = #{restdeNo} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_mysql.xml b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_mysql.xml new file mode 100644 index 00000000..27ae7668 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_mysql.xml @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT + INTO COMTNRESTDE + ( RESTDE_NO + , RESTDE + , RESTDE_NM + , RESTDE_DC + , RESTDE_SE_CODE + , FRST_REGIST_PNTTM + , FRST_REGISTER_ID + , LAST_UPDT_PNTTM + , LAST_UPDUSR_ID + ) + VALUES + ( #{restdeNo} + , #{restdeDe} + , #{restdeNm} + , #{restdeDc} + , #{restdeSeCode} + , SYSDATE() + , #{frstRegisterId} + , SYSDATE() + , #{frstRegisterId} + ) + + + + + + + + UPDATE COMTNRESTDE + SET RESTDE_NM = #{restdeNm} + , RESTDE_DC = #{restdeDc} + , RESTDE_SE_CODE = #{restdeSeCode} + , LAST_UPDT_PNTTM = sysdate() + , LAST_UPDUSR_ID = #{lastUpdusrId} + WHERE RESTDE_NO = #{restdeNo} + + + + + + DELETE + FROM COMTNRESTDE + WHERE RESTDE_NO = #{restdeNo} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_oracle.xml b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_oracle.xml new file mode 100644 index 00000000..c51622d2 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_oracle.xml @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT + INTO COMTNRESTDE + ( RESTDE_NO + , RESTDE + , RESTDE_NM + , RESTDE_DC + , RESTDE_SE_CODE + , FRST_REGIST_PNTTM + , FRST_REGISTER_ID + , LAST_UPDT_PNTTM + , LAST_UPDUSR_ID + ) + VALUES + ( #{restdeNo} + , #{restdeDe} + , #{restdeNm} + , #{restdeDc} + , #{restdeSeCode} + , SYSDATE + , #{frstRegisterId} + , SYSDATE + , #{frstRegisterId} + ) + + + + + + + + UPDATE COMTNRESTDE + SET RESTDE_NM = #{restdeNm} + , RESTDE_DC = #{restdeDc} + , RESTDE_SE_CODE = #{restdeSeCode} + , LAST_UPDT_PNTTM = sysdate + , LAST_UPDUSR_ID = #{lastUpdusrId} + WHERE RESTDE_NO = #{restdeNo} + + + + + + DELETE + FROM COMTNRESTDE + WHERE RESTDE_NO = #{restdeNo} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_postgres.xml b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_postgres.xml new file mode 100644 index 00000000..ed635817 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_postgres.xml @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT + INTO COMTNRESTDE + ( RESTDE_NO + , RESTDE + , RESTDE_NM + , RESTDE_DC + , RESTDE_SE_CODE + , FRST_REGIST_PNTTM + , FRST_REGISTER_ID + , LAST_UPDT_PNTTM + , LAST_UPDUSR_ID + ) + VALUES + ( #{restdeNo} + , #{restdeDe} + , #{restdeNm} + , #{restdeDc} + , #{restdeSeCode} + , NOW() + , #{frstRegisterId} + , NOW() + , #{frstRegisterId} + ) + + + + + + + + UPDATE COMTNRESTDE + SET RESTDE_NM = #{restdeNm} + , RESTDE_DC = #{restdeDc} + , RESTDE_SE_CODE = #{restdeSeCode} + , LAST_UPDT_PNTTM = NOW() + , LAST_UPDUSR_ID = #{lastUpdusrId} + WHERE RESTDE_NO = #{restdeNo} + + + + + + DELETE + FROM COMTNRESTDE + WHERE RESTDE_NO = #{restdeNo} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_tibero.xml b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_tibero.xml new file mode 100644 index 00000000..fc521683 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_tibero.xml @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT + INTO COMTNRESTDE + ( RESTDE_NO + , RESTDE + , RESTDE_NM + , RESTDE_DC + , RESTDE_SE_CODE + , FRST_REGIST_PNTTM + , FRST_REGISTER_ID + , LAST_UPDT_PNTTM + , LAST_UPDUSR_ID + ) + VALUES + ( #{restdeNo} + , #{restdeDe} + , #{restdeNm} + , #{restdeDc} + , #{restdeSeCode} + , SYSDATE + , #{frstRegisterId} + , SYSDATE + , #{frstRegisterId} + ) + + + + + + + + UPDATE COMTNRESTDE + SET RESTDE_NM = #{restdeNm} + , RESTDE_DC = #{restdeDc} + , RESTDE_SE_CODE = #{restdeSeCode} + , LAST_UPDT_PNTTM = sysdate + , LAST_UPDUSR_ID = #{lastUpdusrId} + WHERE RESTDE_NO = #{restdeNo} + + + + + + DELETE + FROM COMTNRESTDE + WHERE RESTDE_NO = #{restdeNo} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_altibase.xml b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_altibase.xml new file mode 100644 index 00000000..ad6a114f --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_altibase.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNLOGINPOLICY + (EMPLYR_ID + ,IP_INFO + ,DPLCT_PERM_AT + ,LMTT_AT + ,FRST_REGISTER_ID + ,FRST_REGIST_PNTTM + ,LAST_UPDUSR_ID + ,LAST_UPDT_PNTTM) + VALUES (#{emplyrId} + ,#{ipInfo} + ,#{dplctPermAt} + ,#{lmttAt} + ,#{userId} + ,SYSDATE + ,#{userId} + ,SYSDATE) + + + + + + UPDATE COMTNLOGINPOLICY + SET IP_INFO = #{ipInfo} + ,DPLCT_PERM_AT = #{dplctPermAt} + ,LMTT_AT = #{lmttAt} + ,LAST_UPDUSR_ID = #{userId} + ,LAST_UPDT_PNTTM = SYSDATE + WHERE EMPLYR_ID = #{emplyrId} + + + + + + DELETE FROM COMTNLOGINPOLICY + WHERE EMPLYR_ID = #{emplyrId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_cubrid.xml b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_cubrid.xml new file mode 100644 index 00000000..889a81e9 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_cubrid.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNLOGINPOLICY + (EMPLYR_ID + ,IP_INFO + ,DPLCT_PERM_AT + ,LMTT_AT + ,FRST_REGISTER_ID + ,FRST_REGIST_PNTTM + ,LAST_UPDUSR_ID + ,LAST_UPDT_PNTTM) + VALUES (#{emplyrId} + ,#{ipInfo} + ,#{dplctPermAt} + ,#{lmttAt} + ,#{userId} + ,SYSDATETIME + ,#{userId} + ,SYSDATETIME) + + + + + + UPDATE COMTNLOGINPOLICY + SET IP_INFO = #{ipInfo} + ,DPLCT_PERM_AT = #{dplctPermAt} + ,LMTT_AT = #{lmttAt} + ,LAST_UPDUSR_ID = #{userId} + ,LAST_UPDT_PNTTM = SYSDATETIME + WHERE EMPLYR_ID = #{emplyrId} + + + + + + DELETE FROM COMTNLOGINPOLICY + WHERE EMPLYR_ID = #{emplyrId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_maria.xml b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_maria.xml new file mode 100644 index 00000000..65bcaaff --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_maria.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNLOGINPOLICY + (EMPLYR_ID + ,IP_INFO + ,DPLCT_PERM_AT + ,LMTT_AT + ,FRST_REGISTER_ID + ,FRST_REGIST_PNTTM + ,LAST_UPDUSR_ID + ,LAST_UPDT_PNTTM) + VALUES (#{emplyrId} + ,#{ipInfo} + ,#{dplctPermAt} + ,#{lmttAt} + ,#{userId} + ,now() + ,#{userId} + ,now()) + + + + + + UPDATE COMTNLOGINPOLICY + SET IP_INFO = #{ipInfo} + ,DPLCT_PERM_AT = #{dplctPermAt} + ,LMTT_AT = #{lmttAt} + ,LAST_UPDUSR_ID = #{userId} + ,LAST_UPDT_PNTTM = now() + WHERE EMPLYR_ID = #{emplyrId} + + + + + + DELETE FROM COMTNLOGINPOLICY + WHERE EMPLYR_ID = #{emplyrId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_mysql.xml b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_mysql.xml new file mode 100644 index 00000000..65bcaaff --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_mysql.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNLOGINPOLICY + (EMPLYR_ID + ,IP_INFO + ,DPLCT_PERM_AT + ,LMTT_AT + ,FRST_REGISTER_ID + ,FRST_REGIST_PNTTM + ,LAST_UPDUSR_ID + ,LAST_UPDT_PNTTM) + VALUES (#{emplyrId} + ,#{ipInfo} + ,#{dplctPermAt} + ,#{lmttAt} + ,#{userId} + ,now() + ,#{userId} + ,now()) + + + + + + UPDATE COMTNLOGINPOLICY + SET IP_INFO = #{ipInfo} + ,DPLCT_PERM_AT = #{dplctPermAt} + ,LMTT_AT = #{lmttAt} + ,LAST_UPDUSR_ID = #{userId} + ,LAST_UPDT_PNTTM = now() + WHERE EMPLYR_ID = #{emplyrId} + + + + + + DELETE FROM COMTNLOGINPOLICY + WHERE EMPLYR_ID = #{emplyrId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_oracle.xml b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_oracle.xml new file mode 100644 index 00000000..3d56d499 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_oracle.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNLOGINPOLICY + (EMPLYR_ID + ,IP_INFO + ,DPLCT_PERM_AT + ,LMTT_AT + ,FRST_REGISTER_ID + ,FRST_REGIST_PNTTM + ,LAST_UPDUSR_ID + ,LAST_UPDT_PNTTM) + VALUES (#{emplyrId} + ,#{ipInfo} + ,#{dplctPermAt} + ,#{lmttAt} + ,#{userId} + ,SYSDATE + ,#{userId} + ,SYSDATE) + + + + + + UPDATE COMTNLOGINPOLICY + SET IP_INFO = #{ipInfo} + ,DPLCT_PERM_AT = #{dplctPermAt} + ,LMTT_AT = #{lmttAt} + ,LAST_UPDUSR_ID = #{userId} + ,LAST_UPDT_PNTTM = SYSDATE + WHERE EMPLYR_ID = #{emplyrId} + + + + + + DELETE FROM COMTNLOGINPOLICY + WHERE EMPLYR_ID = #{emplyrId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_postgres.xml b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_postgres.xml new file mode 100644 index 00000000..e4665109 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_postgres.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNLOGINPOLICY + (EMPLYR_ID + ,IP_INFO + ,DPLCT_PERM_AT + ,LMTT_AT + ,FRST_REGISTER_ID + ,FRST_REGIST_PNTTM + ,LAST_UPDUSR_ID + ,LAST_UPDT_PNTTM) + VALUES (#{emplyrId} + ,#{ipInfo} + ,#{dplctPermAt} + ,#{lmttAt} + ,#{userId} + ,NOW() + ,#{userId} + ,NOW()) + + + + + + UPDATE COMTNLOGINPOLICY + SET IP_INFO = #{ipInfo} + ,DPLCT_PERM_AT = #{dplctPermAt} + ,LMTT_AT = #{lmttAt} + ,LAST_UPDUSR_ID = #{userId} + ,LAST_UPDT_PNTTM = NOW() + WHERE EMPLYR_ID = #{emplyrId} + + + + + + DELETE FROM COMTNLOGINPOLICY + WHERE EMPLYR_ID = #{emplyrId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_tibero.xml b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_tibero.xml new file mode 100644 index 00000000..1207f1b8 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uap/EgovLoginPolicy_SQL_tibero.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO COMTNLOGINPOLICY + (EMPLYR_ID + ,IP_INFO + ,DPLCT_PERM_AT + ,LMTT_AT + ,FRST_REGISTER_ID + ,FRST_REGIST_PNTTM + ,LAST_UPDUSR_ID + ,LAST_UPDT_PNTTM) + VALUES (#{emplyrId} + ,#{ipInfo} + ,#{dplctPermAt} + ,#{lmttAt} + ,#{userId} + ,SYSDATE + ,#{userId} + ,SYSDATE) + + + + + + UPDATE COMTNLOGINPOLICY + SET IP_INFO = #{ipInfo} + ,DPLCT_PERM_AT = #{dplctPermAt} + ,LMTT_AT = #{lmttAt} + ,LAST_UPDUSR_ID = #{userId} + ,LAST_UPDT_PNTTM = SYSDATE + WHERE EMPLYR_ID = #{emplyrId} + + + + + + DELETE FROM COMTNLOGINPOLICY + WHERE EMPLYR_ID = #{emplyrId} + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_altibase.xml b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_altibase.xml new file mode 100644 index 00000000..8fab086e --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_altibase.xml @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE COMTNGNRLMBER + SET password = #{password} + WHERE mber_id = #{id} + + + + + + UPDATE COMTNENTRPRSMBER + SET entrprs_mber_password = #{password} + WHERE ENTRPRS_MBER_ID = #{id} + + + + + + UPDATE COMTNEMPLYRINFO + SET password = #{password} + WHERE emplyr_id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_cubrid.xml b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_cubrid.xml new file mode 100644 index 00000000..05a1cc2e --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_cubrid.xml @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE COMTNGNRLMBER + SET password = #{password} + WHERE mber_id = #{id} + + + + + + UPDATE COMTNENTRPRSMBER + SET entrprs_mber_password = #{password} + WHERE ENTRPRS_MBER_ID = #{id} + + + + + + UPDATE COMTNEMPLYRINFO + SET password = #{password} + WHERE emplyr_id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_maria.xml b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_maria.xml new file mode 100644 index 00000000..6817cebe --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_maria.xml @@ -0,0 +1,421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE COMTNGNRLMBER + SET password = #{password} + WHERE mber_id = #{id} + + + + + + UPDATE COMTNENTRPRSMBER + SET entrprs_mber_password = #{password} + WHERE ENTRPRS_MBER_ID = #{id} + + + + + + UPDATE COMTNEMPLYRINFO + SET password = #{password} + WHERE emplyr_id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_mysql.xml b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_mysql.xml new file mode 100644 index 00000000..6817cebe --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_mysql.xml @@ -0,0 +1,421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE COMTNGNRLMBER + SET password = #{password} + WHERE mber_id = #{id} + + + + + + UPDATE COMTNENTRPRSMBER + SET entrprs_mber_password = #{password} + WHERE ENTRPRS_MBER_ID = #{id} + + + + + + UPDATE COMTNEMPLYRINFO + SET password = #{password} + WHERE emplyr_id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_oracle.xml b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_oracle.xml new file mode 100644 index 00000000..1990f120 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_oracle.xml @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE COMTNGNRLMBER + SET password = #{password} + WHERE mber_id = #{id} + + + + + + UPDATE COMTNENTRPRSMBER + SET entrprs_mber_password = #{password} + WHERE ENTRPRS_MBER_ID = #{id} + + + + + + UPDATE COMTNEMPLYRINFO + SET password = #{password} + WHERE emplyr_id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_postgres.xml b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_postgres.xml new file mode 100644 index 00000000..f130fce4 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_postgres.xml @@ -0,0 +1,421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE COMTNGNRLMBER + SET password = #{password} + WHERE mber_id = #{id} + + + + + + UPDATE COMTNENTRPRSMBER + SET entrprs_mber_password = #{password} + WHERE ENTRPRS_MBER_ID = #{id} + + + + + + UPDATE COMTNEMPLYRINFO + SET password = #{password} + WHERE emplyr_id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_tibero.xml b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_tibero.xml new file mode 100644 index 00000000..a8ffa018 --- /dev/null +++ b/src/main/resources/egovframework/mapper/com/uat/uia/EgovLoginUsr_SQL_tibero.xml @@ -0,0 +1,404 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE COMTNGNRLMBER + SET password = #{password} + WHERE mber_id = #{id} + + + + + + UPDATE COMTNENTRPRSMBER + SET entrprs_mber_password = #{password} + WHERE ENTRPRS_MBER_ID = #{id} + + + + + + UPDATE COMTNEMPLYRINFO + SET password = #{password} + WHERE emplyr_id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/config/mapper-config.xml b/src/main/resources/egovframework/mapper/config/mapper-config.xml new file mode 100644 index 00000000..2ef765e9 --- /dev/null +++ b/src/main/resources/egovframework/mapper/config/mapper-config.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cmm/err/message-common_en.properties b/src/main/resources/egovframework/message/com/cmm/err/message-common_en.properties new file mode 100644 index 00000000..b8a65613 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cmm/err/message-common_en.properties @@ -0,0 +1,23 @@ +#common# +comCmmErr.button=before page + +#accessDenied# +comCmmErr.accessDenied.title=You do not have permission to access this page! +comCmmErr.accessDenied.code=User authorization Error + +#dataAccessFailure# +comCmmErr.dataAccessFailure.title=Error occurred while processing data! +comCmmErr.dataAccessFailure.code=Database Processing Error + + +#bizException# +comCmmErr.bizException.title=During business logic processing! +comCmmErr.bizException.code=Business Logic Processing Error + +#runtimeException# +comCmmErr.runtimeException.title=Unknown error occurred! +comCmmErr.runtimeException.code=System Error + +#sessionException# +comCmmErr.sessionException.title=Session Expiration Error! +comCmmErr.sessionException.code=Session Expiration Error diff --git a/src/main/resources/egovframework/message/com/cmm/err/message-common_ko.properties b/src/main/resources/egovframework/message/com/cmm/err/message-common_ko.properties new file mode 100644 index 00000000..f2cda9d1 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cmm/err/message-common_ko.properties @@ -0,0 +1,22 @@ +#common# +comCmmErr.button=\uc774\uc804 \ud398\uc774\uc9c0 + +#accessDenied# +comCmmErr.accessDenied.title=\ud604\uc7ac \ud398\uc774\uc9c0\uc5d0 \ub300\ud55c \uc811\uadfc\uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4! +comCmmErr.accessDenied.code=\uc0ac\uc6a9\uc790\uc811\uadfc\uad8c\ud55c \uc5d0\ub7ec + +#dataAccessFailure# +comCmmErr.dataAccessFailure.title=\ub370\uc774\ud130 \ucc98\ub9ac \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4! +comCmmErr.dataAccessFailure.code=\ub370\uc774\ud130\ucc98\ub9ac \uc5d0\ub7ec + +#bizException# +comCmmErr.bizException.title=\ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \ucc98\ub9ac \uc911 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +comCmmErr.bizException.code=\ube44\uc988\ub2c8\uc2a4\ub85c\uc9c1\ucc98\ub9ac \uc5d0\ub7ec + +#runtimeException# +comCmmErr.runtimeException.title=\uc54c \uc218 \uc5c6\ub294 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +comCmmErr.runtimeException.code=\uc2dc\uc2a4\ud15c \uc5d0\ub7ec + +#sessionException# +comCmmErr.sessionException.title=\uc138\uc158\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4! +comCmmErr.sessionException.code=\uc138\uc158\ub9cc\ub8cc \uc5d0\ub7ec diff --git a/src/main/resources/egovframework/message/com/cmm/message-common_en.properties b/src/main/resources/egovframework/message/com/cmm/message-common_en.properties new file mode 100644 index 00000000..59e208a0 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cmm/message-common_en.properties @@ -0,0 +1,222 @@ +#top# +comCmm.top.title=eGoverment Standard Framework Common Components VERSION 3.8 + +#left# +comCmm.mai.title=Portal(example) Main Page +comCmm.uat.title=User Authentication/Directory Service +comCmm.sec.title=Security +comCmm.sts.title=Statistics/Reporting +comCmm.cop.title=Collaboration +comCmm.uss.title=User Support +comCmm.sym.title=System Management +comCmm.ssi.title=System/Service Integration +comCmm.dam.title=Digital Asset Management +comCmm.com.title=Utility Technology +comCmm.ext.title=External Add Components + +#component# +#Portal(example) Main Page# +comCmm.left.1=Portal(example) Main Page + +#User Authentication/Directory Service# +comCmm.left.10=Log In +comCmm.left.30=Log In Policy Management + +#Security# +comCmm.left.60=Authority Management +comCmm.left.70=Authority Group Management +comCmm.left.80=Group Management +comCmm.left.90=Role management for Each Authority +comCmm.left.100=Department Authority Management + +#Statistics/Reporting# +comCmm.left.120=Post Statistics +comCmm.left.130=User Statistics +comCmm.left.140=Connection Statistics +comCmm.left.150=Screen Statistics +comCmm.left.160=Report Statistics +comCmm.left.161=Data Usage Statistics + +#Collaboration# +comCmm.left.170=Blog Management +comCmm.left.180=Board Master Management +comCmm.left.190=Board Usage Management +comCmm.left.200=Template Management +comCmm.left.250=Scrap Management +comCmm.left.270=Community Creation/Usage/Member Management +comCmm.left.310=SMS Service +comCmm.left.320=Department Schedule Management +comCmm.left.330=Schedule Management +comCmm.left.340=Diary Management +comCmm.left.350=Master Schedule +comCmm.left.360=Send Mail +comCmm.left.361=Send Mail List +comCmm.left.370=Business Card Management +comCmm.left.371=My Business Card Management +comCmm.left.380=Address Book Management +comCmm.left.390=Executive Schedule Management +comCmm.left.400=Division Task Folder Management +comCmm.left.401=Division Task Information +comCmm.left.410=Weekly/Monthly Reports Management +comCmm.left.420=Memo/To-do List Management +comCmm.left.430=Memo Report + +#User Support# +comCmm.left.450=Corporate Member Management +comCmm.left.460=User Management +comCmm.left.461=Department Management +comCmm.left.470=Member Management +comCmm.left.480=My Page +comCmm.left.490=Provision Management +comCmm.left.500=Copyright Protection Policy +comCmm.left.510=Private Information Protection Policy +comCmm.left.520=Help +comCmm.left.530=Word Dictionary +comCmm.left.540=FAQ Management +comCmm.left.550=Q&A Management +comCmm.left.551=Q&A Answer +comCmm.left.560=Administration Terminology Dictionary +comCmm.left.561=Administration Terminology Dictionary Management +comCmm.left.570=Online Manual +comCmm.left.571=User Online Manual +comCmm.left.580=Consulting Management +comCmm.left.581=Consulting Answer Management +comCmm.left.590=Questionnaire Management +comCmm.left.600=Questionnaire Survey +comCmm.left.610=Questionnaire Template Management +comCmm.left.620=Questionnaire Respond Management +comCmm.left.630=Questionnaire Question Management +comCmm.left.640=Questionnaire Item Management +comCmm.left.650=Meeting Management +comCmm.left.660=Online POLL Management +comCmm.left.661=Online POLL Participation +comCmm.left.670=News Management +comCmm.left.680=Site Management +comCmm.left.700=Recommended Site Management +comCmm.left.710=Occasion/Event/Campaign +comCmm.left.711=Extra Human Resource +comCmm.left.720=Pop-up Management +comCmm.left.730=Information Alerts +comCmm.left.740=Banner Management +comCmm.left.741=MYPAGE Banner Management +comCmm.left.750=Login Page Image Management +comCmm.left.760=Recent Search Word Inquiry +comCmm.left.770=Main Image Management +comCmm.left.771=Main Image View Reflection Result +comCmm.left.780=Link Intergration Management +comCmm.left.790=User Absence Management +comCmm.left.800=Internet Service Information and Management +comCmm.left.810=Wiki Function +comCmm.left.820=RSS Tag Management +comCmm.left.822=RSS Tag Service +comCmm.left.830=Twitter Linkage +comCmm.left.831=Facebook Linkage +comCmm.left.840=Note Management +comCmm.left.850=Received Note Box Management +comCmm.left.860=Sent Note Box Management +comCmm.left.870=Meeting Room Management +comCmm.left.871=Meeting Room Reservation Management +comCmm.left.890=Employee Family Event Management +comCmm.left.891=Employee Congratulatory Approval Management +comCmm.left.900=Vacation Management +comCmm.left.901=Vacation Approval Management +comCmm.left.902=Personal Vocation Management +comCmm.left.910=Duty Management +comCmm.left.911=Duty Journal Management +comCmm.left.920=Compensation +comCmm.left.921=Compensation Approval Management +comCmm.left.930=Anniversary Management +comCmm.left.931=Anniversary List (Check) +comCmm.left.940=Event Application Management +comCmm.left.941=Event Reception Management +comCmm.left.942=Event Reception Approval Management +comCmm.left.943=Office Location Management +comCmm.left.950=Commute Management + +#System Management# +comCmm.left.960=Common Classification Code +comCmm.left.970=Common Detail Code +comCmm.left.980=Common Code +comCmm.left.1000=Address Management +comCmm.left.1010=Administration Code Management +comCmm.left.1020=Institutions Code Management +comCmm.left.1030=Log Management +comCmm.left.1040=User Log Management +comCmm.left.1050=Transmit/Receive Log Management +comCmm.left.1060=System History Management +comCmm.left.1070=Web Log Management +comCmm.left.1080=Connection Log Management +comCmm.left.1085=Privacy Log Management +comCmm.left.1090=Menu Management +comCmm.left.1091=Menu Management List +comCmm.left.1100=Menu Creation Management +comCmm.left.1101=Site Map +comCmm.left.1110=Short Cut Menu Management +comCmm.left.1111=Program Management +comCmm.left.1112=Program Change Management +comCmm.left.1113=Program Change Process +comCmm.left.1114=Program Change History +comCmm.left.1120=Batch Work Management +comCmm.left.1130=Batch Result Management +comCmm.left.1140=Schedule Process +comCmm.left.1150=Backup Management +comCmm.left.1151=Backup Result Management +comCmm.left.1160=NetWork Management +comCmm.left.1170=Server Information Management +comCmm.left.1171=Server S/W List +comCmm.left.1180=Trouble Request Management +comCmm.left.1190=Trouble Process Result Management + +#System/Service Integration# +comCmm.left.1210=System Contact Management +comCmm.left.1220=Contact Status Management +comCmm.left.1230=Contact Message Management +comCmm.left.1240=Contact Institution Management + +#Digital Asset Management# +comCmm.left.1250=Individual Knowledge Management +comCmm.left.1260=Knowledge Map Management by Types +comCmm.left.1261=Organizational Knowledge Map Management +comCmm.left.1270=Knowledge Expert Management +comCmm.left.1280=Knowledge Information Management +comCmm.left.1290=Knowledge Evaluation Management +comCmm.left.1291=Knowledge Information Offer + +#Utility Technology# +comCmm.left.1300=General Calendar +comCmm.left.2080=Transmit and Receive Monitoring +comCmm.left.2090=DB Service Monitoring +comCmm.left.2100=HTTP Service Monitoring +comCmm.left.2110=Process Monitoring +comCmm.left.2120=Network Service Monitoring +comCmm.left.2130=File System Monitoring +comCmm.left.2140=Proxy Service +comCmm.left.2150=File Synchronization +comCmm.left.2160=Login Session Information Check +comCmm.left.2170=Server Resource Monitoring +comCmm.left.2180=Address Info Linkage +comCmm.left.2200=Encryption/Decryption + +#External Add Components# +comCmm.left.3000=JFile Guide +comCmm.left.3010=JFile File Upload +comCmm.left.3020=JFile File Download +comCmm.left.3100=LDAP Org. Management +comCmm.left.3110=LDAP Org. Graph +comCmm.left.3200=WebMessenger + +#EgovUnitContent(\ub85c\uadf8\uc778 \ud6c4 \ud398\uc774\uc9c0)# +comCmm.unitContent.1=Common Compoent +comCmm.unitContent.2=Welcome. +comCmm.unitContent.3=Logout +comCmm.unitContent.4=If you run into any errors, please contact the eGovframework center. +comCmm.unitContent.5=Screen description +comCmm.unitContent.6=The left menu is not affected by the menu-related components (menu management, site map, etc.) +comCmm.unitContent.7=Controller class that finds installed components after installing components through IncludedInfo annotation and processes information to be displayed on the screen. +comCmm.unitContent.8= +comCmm.unitContent.9= +comCmm.unitContent.10=Before the menu structure is developed, +comCmm.unitContent.11=the list of common components included in the distribution files is provided. +comCmm.unitContent.12=If you use this control to configure menus at runtime, +comCmm.unitContent.13=we recommend that you delete and deploy them in production +comCmm.unitContent.14= because they can cause performance problems or cause errors in your menu configuration. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cmm/message-common_ko.properties b/src/main/resources/egovframework/message/com/cmm/message-common_ko.properties new file mode 100644 index 00000000..10dd17e9 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cmm/message-common_ko.properties @@ -0,0 +1,222 @@ +#top# +comCmm.top.title=\uc804\uc790\uc815\ubd80 \ud45c\uc900\ud504\ub808\uc784\uc6cc\ud06c \uacf5\ud1b5\ucef4\ud3ec\ub10c\ud2b8 VERSION 3.8 + +#left# +comCmm.mai.title=\ud3ec\ud138(\uc608\uc81c) \uba54\uc778\ud654\uba74 +comCmm.uat.title=\uc0ac\uc6a9\uc790\ub514\ub809\ud1a0\ub9ac/\ud1b5\ud569\uc778\uc99d +comCmm.sec.title=\ubcf4\uc548 +comCmm.sts.title=\ud1b5\uacc4/\ub9ac\ud3ec\ud305 +comCmm.cop.title=\ud611\uc5c5 +comCmm.uss.title=\uc0ac\uc6a9\uc790\uc9c0\uc6d0 +comCmm.sym.title=\uc2dc\uc2a4\ud15c\uad00\ub9ac +comCmm.ssi.title=\uc2dc\uc2a4\ud15c/\uc11c\ube44\uc2a4\uc5f0\uacc4 +comCmm.dam.title=\ub514\uc9c0\ud138 \uc790\uc0b0 \uad00\ub9ac +comCmm.com.title=\uc694\uc18c\uae30\uc220 +comCmm.ext.title=\uc678\ubd80 \ucd94\uac00 \ucef4\ud3ec\ub10c\ud2b8 + +#component# +#\ud3ec\ud0c8 \uba54\uc778\ud654\uba74# +comCmm.left.1=\ud3ec\ud138(\uc608\uc81c) \uba54\uc778\ud654\uba74 + +#\uc0ac\uc6a9\uc790\ub514\ub809\ud1a0\ub9ac/\ud1b5\ud569\uc778\uc99d# +comCmm.left.10=\ub85c\uadf8\uc778 +comCmm.left.30=\ub85c\uadf8\uc778\uc815\ucc45\uad00\ub9ac + +#\ubcf4\uc548# +comCmm.left.60=\uad8c\ud55c\uad00\ub9ac +comCmm.left.70=\uad8c\ud55c\uadf8\ub8f9\uad00\ub9ac +comCmm.left.80=\uadf8\ub8f9\uad00\ub9ac +comCmm.left.90=\ub864\uad00\ub9ac +comCmm.left.100=\ubd80\uc11c\uad8c\ud55c\uad00\ub9ac + +#\ud1b5\uacc4/\ub9ac\ud3ec\ud305# +comCmm.left.120=\uac8c\uc2dc\ubb3c\ud1b5\uacc4 +comCmm.left.130=\uc0ac\uc6a9\uc790\ud1b5\uacc4 +comCmm.left.140=\uc811\uc18d\ud1b5\uacc4 +comCmm.left.150=\ud654\uba74\ud1b5\uacc4 +comCmm.left.160=\ubcf4\uace0\uc11c\ud1b5\uacc4 +comCmm.left.161=\uc790\ub8cc\uc774\uc6a9\ud604\ud669\ud1b5\uacc4 + +\ud611\uc5c5 +comCmm.left.170=\ube14\ub85c\uadf8\uad00\ub9ac +comCmm.left.180=\uac8c\uc2dc\ud310\uad00\ub9ac +comCmm.left.190=\uac8c\uc2dc\ud310\uc0ac\uc6a9\uc815\ubcf4 +comCmm.left.200=\ud15c\ud50c\ub9bf\uad00\ub9ac +comCmm.left.250=\uc2a4\ud06c\ub7a9 \ubaa9\ub85d +comCmm.left.270=\ucee4\ubba4\ub2c8\ud2f0\uad00\ub9ac +comCmm.left.310=\ubb38\uc790\uba54\uc2dc\uc9c0 +comCmm.left.320=\ubd80\uc11c\uc77c\uc815\uad00\ub9ac +comCmm.left.330=\uc77c\uc815\uad00\ub9ac +comCmm.left.340=\uc77c\uc9c0\uad00\ub9ac +comCmm.left.350=\uc804\uccb4\uc77c\uc815\uad00\ub9ac +comCmm.left.360=\uba54\uc77c\ubc1c\uc1a1 +comCmm.left.361=\ubc1c\uc1a1\uba54\uc77c\ub0b4\uc5ed +comCmm.left.370=\uba85\ud568\uad00\ub9ac +comCmm.left.371=\ub0b4\uba85\ud568\ubaa9\ub85d +comCmm.left.380=\uc8fc\uc18c\ub85d\uad00\ub9ac +comCmm.left.390=\uac04\ubd80\uc77c\uc815\uad00\ub9ac +comCmm.left.400=\ubd80\uc11c\uc5c5\ubb34\ud568\uad00\ub9ac +comCmm.left.401=\ubd80\uc11c\uc5c5\ubb34\uc815\ubcf4 +comCmm.left.410=\uc8fc\uac04/\uc6d4\uac04\ubcf4\uace0\uad00\ub9ac +comCmm.left.420=\uba54\ubaa8\ud560\uc77c\uad00\ub9ac +comCmm.left.430=\uba54\ubaa8\ubcf4\uace0 + +#\uc0ac\uc6a9\uc790\uc9c0\uc6d0# +comCmm.left.450=\uae30\uc5c5\ud68c\uc6d0\uad00\ub9ac +comCmm.left.460=\uc5c5\ubb34\uc0ac\uc6a9\uc790\uad00\ub9ac +comCmm.left.461=\ubd80\uc11c\uad00\ub9ac +comCmm.left.470=\uc77c\ubc18\ud68c\uc6d0\uad00\ub9ac +comCmm.left.480=\ub9c8\uc774\ud398\uc774\uc9c0\uad00\ub9ac +comCmm.left.490=\uc57d\uad00\uad00\ub9ac +comCmm.left.500=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45 +comCmm.left.510=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\ud655\uc778 +comCmm.left.520=\ub3c4\uc6c0\ub9d0 +comCmm.left.530=\uc6a9\uc5b4\uc0ac\uc804 +comCmm.left.540=FAQ\uad00\ub9ac +comCmm.left.550=Q&A\uad00\ub9ac +comCmm.left.551=Q&A\ub2f5\ubcc0\uad00\ub9ac +comCmm.left.560=\ud589\uc815\uc804\ubb38\uc6a9\uc5b4\uc0ac\uc804 +comCmm.left.561=\ud589\uc815\uc804\ubb38\uc6a9\uc5b4\uc0ac\uc804\uad00\ub9ac +comCmm.left.570=\uc628\ub77c\uc778\ub9e4\ub274\uc5bc +comCmm.left.571=\uc0ac\uc6a9\uc790\uc628\ub77c\uc778\ub9e4\ub274\uc5bc +comCmm.left.580=\uc0c1\ub2f4\uad00\ub9ac +comCmm.left.581=\uc0c1\ub2f4\ub2f5\ubcc0\uad00\ub9ac +comCmm.left.590=\uc124\ubb38\uad00\ub9ac +comCmm.left.600=\uc124\ubb38\uc870\uc0ac +comCmm.left.610=\uc124\ubb38\ud15c\ud50c\ub9bf\uad00\ub9ac +comCmm.left.620=\uc751\ub2f5\uc790\uad00\ub9ac +comCmm.left.630=\uc9c8\ubb38\uad00\ub9ac +comCmm.left.640=\ud56d\ubaa9\uad00\ub9ac +comCmm.left.650=\ud68c\uc758\uad00\ub9ac +comCmm.left.660=\uc628\ub77c\uc778poll\uad00\ub9ac +comCmm.left.661=\uc628\ub77c\uc778poll\ucc38\uc5ec +comCmm.left.670=\ub274\uc2a4\uad00\ub9ac +comCmm.left.680=\uc0ac\uc774\ud2b8\uad00\ub9ac +comCmm.left.700=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uad00\ub9ac +comCmm.left.710=\ud589\uc0ac/\uc774\ubca4\ud2b8/\ucea0\ud398\uc778 +comCmm.left.711=\uc678\ubd80\uc778\uc0ac\uc815\ubcf4 +comCmm.left.720=\ud31d\uc5c5\ucc3d\uad00\ub9ac +comCmm.left.730=\uc815\ubcf4\uc54c\ub9bc\uc774 +comCmm.left.740=\ubc30\ub108\uad00\ub9ac +comCmm.left.741=MYPAGE\ubc30\ub108\uad00\ub9ac +comCmm.left.750=\ub85c\uadf8\uc778\ud654\uba74\uc774\ubbf8\uc9c0\uad00\ub9ac +comCmm.left.760=\ucd5c\uadfc\uac80\uc0c9\uc5b4 \uc870\ud68c +comCmm.left.770=\uba54\uc778\uc774\ubbf8\uc9c0\uad00\ub9ac +comCmm.left.771=\uba54\uc778\uc774\ubbf8\uc9c0 \ubc18\uc601\uacb0\uacfc\ubcf4\uae30 +comCmm.left.780=\ud1b5\ud569\ub9c1\ud06c\uad00\ub9ac +comCmm.left.790=\uc0ac\uc6a9\uc790\ubd80\uc7ac\uad00\ub9ac +comCmm.left.800=\uc778\ud130\ub137\uc11c\ube44\uc2a4\uc548\ub0b4\ubc0f\uad00\ub9ac +comCmm.left.810=Wiki\uae30\ub2a5 +comCmm.left.820=RSS\ud0dc\uadf8\uad00\ub9ac +comCmm.left.822=RSS\ud0dc\uadf8\uc11c\ube44\uc2a4 +comCmm.left.830=Twitter\uc5f0\ub3d9 +comCmm.left.831=Facebook \uc5f0\ub3d9 +comCmm.left.840=\ucabd\uc9c0\uad00\ub9ac +comCmm.left.850=\ubc1b\uc740\ucabd\uc9c0\ud568\uad00\ub9ac +comCmm.left.860=\ubcf4\ub0b8\ucabd\uc9c0\ud568\uad00\ub9ac +comCmm.left.870=\ud68c\uc758\uc2e4\uad00\ub9ac +comCmm.left.871=\ud68c\uc758\uc2e4\uc608\uc57d\uad00\ub9ac +comCmm.left.890=\uc9c1\uc6d0\uacbd\uc870\uc0ac\uad00\ub9ac +comCmm.left.891=\uc9c1\uc6d0\uacbd\uc870\uc0ac\uc2b9\uc778\uad00\ub9ac +comCmm.left.900=\ud734\uac00\uad00\ub9ac +comCmm.left.901=\ud734\uac00\uc2b9\uc778\uad00\ub9ac +comCmm.left.902=\uac1c\uc778\uc5f0\ucc28\uad00\ub9ac +comCmm.left.910=\ub2f9\uc9c1\uad00\ub9ac +comCmm.left.911=\ub2f9\uc9c1\uccb4\ud06c\uad00\ub9ac +comCmm.left.920=\ud3ec\uc0c1\uad00\ub9ac +comCmm.left.921=\ud3ec\uc0c1\uc2b9\uc778\uad00\ub9ac +comCmm.left.930=\uae30\ub150\uc77c\uad00\ub9ac +comCmm.left.931=\uae30\ub150\uc77c\ubaa9\ub85d(\ud655\uc778\uc6a9) +comCmm.left.940=\ud589\uc0ac\uc2e0\uccad\uad00\ub9ac +comCmm.left.941=\ud589\uc0ac\uc811\uc218\uad00\ub9ac +comCmm.left.942=\ud589\uc0ac\uc811\uc218\uc2b9\uc778\uad00\ub9ac +comCmm.left.943=\uc57d\ub3c4 \uad00\ub9ac +comCmm.left.950=\ucd9c\ud1f4\uadfc\uad00\ub9ac + +#\uc2dc\uc2a4\ud15c\uad00\ub9ac# +comCmm.left.960=\uacf5\ud1b5\ubd84\ub958\ucf54\ub4dc +comCmm.left.970=\uacf5\ud1b5\uc0c1\uc138\ucf54\ub4dc +comCmm.left.980=\uacf5\ud1b5\ucf54\ub4dc +comCmm.left.1000=\uc6b0\ud3b8\ubc88\ud638\uad00\ub9ac +comCmm.left.1010=\ud589\uc815\ucf54\ub4dc\uad00\ub9ac +comCmm.left.1020=\uae30\uad00\ucf54\ub4dc\uc218\uc2e0 +comCmm.left.1030=\ub85c\uadf8\uad00\ub9ac +comCmm.left.1040=\uc0ac\uc6a9\ub85c\uadf8\uad00\ub9ac +comCmm.left.1050=\uc1a1/\uc218\uc2e0\ub85c\uadf8\uad00\ub9ac +comCmm.left.1060=\uc2dc\uc2a4\ud15c\uc774\ub825\uad00\ub9ac +comCmm.left.1070=\uc6f9\ub85c\uadf8\uad00\ub9ac +comCmm.left.1080=\uc811\uc18d\ub85c\uadf8\uad00\ub9ac +comCmm.left.1085=\uac1c\uc778\uc815\ubcf4\uc870\ud68c\ub85c\uadf8\uad00\ub9ac +comCmm.left.1090=\uba54\ub274\ub9ac\uc2a4\ud2b8\uad00\ub9ac +comCmm.left.1091=\uba54\ub274\uad00\ub9ac\ub9ac\uc2a4\ud2b8 +comCmm.left.1100=\uba54\ub274\uc0dd\uc131\uad00\ub9ac +comCmm.left.1101=\uc0ac\uc774\ud2b8\ub9f5 +comCmm.left.1110=\ubc14\ub85c\uac00\uae30\uba54\ub274\uad00\ub9ac +comCmm.left.1111=\ud504\ub85c\uadf8\ub7a8\uad00\ub9ac +comCmm.left.1112=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\uad00\ub9ac +comCmm.left.1113=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\ucc98\ub9ac +comCmm.left.1114=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc774\ub825 +comCmm.left.1120=\ubc30\uce58\uc791\uc5c5\uad00\ub9ac +comCmm.left.1130=\ubc30\uce58\uacb0\uacfc\uad00\ub9ac +comCmm.left.1140=\uc2a4\ucf00\uc904\ucc98\ub9ac +comCmm.left.1150=\ubc31\uc5c5\uad00\ub9ac +comCmm.left.1151=\ubc31\uc5c5\uacb0\uacfc\uad00\ub9ac +comCmm.left.1160=\ub124\ud2b8\uc6cc\ud06c\uad00\ub9ac +comCmm.left.1170=\uc11c\ubc84\uc815\ubcf4\uad00\ub9ac +comCmm.left.1171=\uc11c\ubc84(S/W)\ubaa9\ub85d +comCmm.left.1180=\uc7a5\uc560\uc2e0\uccad\uad00\ub9ac +comCmm.left.1190=\uc7a5\uc560\ucc98\ub9ac\uacb0\uacfc\uad00\ub9ac + +#\uc2dc\uc2a4\ud15c/\uc11c\ube44\uc2a4\uc5f0\uacc4# +comCmm.left.1210=\uc2dc\uc2a4\ud15c\uc5f0\uacc4\uad00\ub9ac +comCmm.left.1220=\uc5f0\uacc4\ud604\ud669\uad00\ub9ac +comCmm.left.1230=\uc5f0\uacc4\uba54\uc2dc\uc9c0\uad00\ub9ac +comCmm.left.1240=\uc5f0\uacc4\uae30\uad00\uad00\ub9ac + +#\ub514\uc9c0\ud138 \uc790\uc0b0 \uad00\ub9ac# +comCmm.left.1250=\uac1c\uc778\uc9c0\uc2dd\uad00\ub9ac +comCmm.left.1260=\uc9c0\uc2dd\ub9f5\uad00\ub9ac(\uc720\ud615) +comCmm.left.1261=\uc9c0\uc2dd\ub9f5\uad00\ub9ac(\uc870\uc9c1) +comCmm.left.1270=\uc9c0\uc2dd\uc804\ubb38\uac00\uad00\ub9ac +comCmm.left.1280=\uc9c0\uc2dd\uc815\ubcf4\uad00\ub9ac +comCmm.left.1290=\uc9c0\uc2dd\ud3c9\uac00\uad00\ub9ac +comCmm.left.1291=\uc9c0\uc2dd\uc815\ubcf4\uc81c\uacf5 + +#\uc694\uc18c\uae30\uc220# +comCmm.left.1300=\uacf5\ud734\uc77c\uad00\ub9ac(\ub2ec\ub825) +comCmm.left.2080=\uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2090=DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2100=HTTP\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2110=\ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2120=\ub124\ud2b8\uc6cc\ud06c\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2130=\ud30c\uc77c\uc2dc\uc2a4\ud15c\ubaa8\ub2c8\ud130\ub9c1 +comCmm.left.2140=\ud504\ub85d\uc2dc\uc11c\ube44\uc2a4 +comCmm.left.2150=\ud30c\uc77c\ub3d9\uae30\ud654(\ub300\uc0c1\uc11c\ubc84) +comCmm.left.2160=\ub85c\uadf8\uc778\uc138\uc158\uc815\ubcf4\uccb4\ud06c +comCmm.left.2170=\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1-\ub300\uc0c1\ubaa9\ub85d +comCmm.left.2180=\uc8fc\uc18c\uc815\ubcf4\uc5f0\uacc4 +comCmm.left.2200=\uc554\ud638\ud654/\ubcf5\ud638\ud654 + +#\uc678\ubd80 \ucd94\uac00 \ucef4\ud3ec\ub10c\ud2b8# +comCmm.left.3000=JFile \uac00\uc774\ub4dc +comCmm.left.3010=JFile \ud30c\uc77c \uc5c5\ub85c\ub4dc +comCmm.left.3020=JFile \ud30c\uc77c \ub2e4\uc6b4\ub85c\ub4dc +comCmm.left.3100=LDAP \uc870\uc9c1\ub3c4 \ud2b8\ub9ac +comCmm.left.3110=LDAP \uc870\uc9c1\ub3c4 \uadf8\ub798\ud504 +comCmm.left.3200=\uc6f9\uc18c\ucf13 \uba54\uc2e0\uc800 + +#EgovUnitContent(\ub85c\uadf8\uc778 \ud6c4 \ud398\uc774\uc9c0)# +comCmm.unitContent.1=\uacf5\ud1b5\ucef4\ud3ec\ub10c\ud2b8 +comCmm.unitContent.2=\ub2d8 \ud658\uc601\ud569\ub2c8\ub2e4. +comCmm.unitContent.3=\ub85c\uadf8\uc544\uc6c3 +comCmm.unitContent.4=\uc2e4\ud589 \uc2dc \uc624\ub958 \uc0ac\ud56d\uc774 \uc788\uc73c\uc2dc\uba74 \ud45c\uc900\ud504\ub808\uc784\uc6cc\ud06c\uc13c\ud130\ub85c \uc5f0\ub77d\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. +comCmm.unitContent.5=\ud654\uba74 \uc124\uba85 +comCmm.unitContent.6=\uc67c\ucabd \uba54\ub274\ub294 \uba54\ub274\uc640 \uad00\ub828\ub41c \ucef4\ud3ec\ub10c\ud2b8(\uba54\ub274\uad00\ub9ac, \uc0ac\uc774\ud2b8\ub9f5 \ub4f1)\ub4e4\uc758 \uc601\ud5a5\uc744 \ubc1b\uc9c0 \uc54a\uc73c\uba70, +comCmm.unitContent.7=\uac01 \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc27d\uac8c \ucc3e\uc544\ubcfc \uc218 \uc788\ub294 \ubc14\ub85c \uac00\uae30 \ub9c1\ud06c\ud398\uc774\uc9c0\uc785\ub2c8\ub2e4. +comCmm.unitContent.8=\ucef4\ud3ec\ub10c\ud2b8 \uc124\uce58 \ud6c4 \uc124\uce58\ub41c \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc744 IncludedInfo annotation\uc744 \ud1b5\ud574 \ucc3e\uc544\ub0b8 \ud6c4 +comCmm.unitContent.9=\ud654\uba74\uc5d0 \ud45c\uc2dc\ud560 \uc815\ubcf4\ub97c \ucc98\ub9ac\ud558\ub294 Controller \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4. +comCmm.unitContent.10=\uac1c\ubc1c \uc2dc \uba54\ub274 \uad6c\uc870\uac00 \uc7a1\ud788\uae30 \uc804\uc5d0 \ubc30\ud3ec \ud30c\uc77c\ub4e4\uc5d0 \ud3ec\ud568\ub41c \uacf5\ud1b5 \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc758 \ubaa9\ub85d\uc131 \ud654\uba74\uc5d0 URL\uc744 \uc81c\uacf5\ud558\uc5ec +comCmm.unitContent.11=\uac1c\ubc1c\uc790\uac00 \ud3b8\ub9ac\ud558\uac8c \ud65c\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCmm.unitContent.12=\uc6b4\uc601 \uc2dc\uc5d0 \ubcf8 \ucee8\ud2b8\ub864\uc744 \uc0ac\uc6a9\ud558\uc5ec \uba54\ub274\ub97c \uad6c\uc131\ud558\ub294 \uacbd\uc6b0, +comCmm.unitContent.13=\uc131\ub2a5 \ubb38\uc81c\ub97c \uc77c\uc73c\ud0a4\uac70\ub098 \uc0ac\uc6a9\uc790\ubcc4 \uba54\ub274 \uad6c\uc131\uc5d0 \uc624\ub958\ub97c \ubc1c\uc0dd\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 +comCmm.unitContent.14=\uc2e4 \uc6b4\uc601 \uc2dc\uc5d0\ub294 \uc0ad\uc81c\ud574\uc11c \ubc30\ud3ec\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud574 \ub4dc\ub9bd\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/adb/message_en.properties b/src/main/resources/egovframework/message/com/cop/adb/message_en.properties new file mode 100644 index 00000000..8561413c --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/adb/message_en.properties @@ -0,0 +1,51 @@ +#Address Book Management Message# +comCopAdb.title=Address Book Management + +comCopAdb.searchCondition.searchCnd0=Address Book Name +comCopAdb.searchCondition.searchCnd1=Scope of Disclosure +comCopAdb.searchCondition.searchCnd2=Registrant + +comCopAdb.validate.isUser=Duplicated user is not allowed. + +comCopAdb.searchCondition.userNm = Name +comCopAdb.searchCondition.group = Group +comCopAdb.btn.groupInquire = Group Inquiry Popup + +comCopAdb.list.adbkNm=Address Book Name +comCopAdb.list.othbcScope=Scope of Disclosure + +comCopAdb.regist.adbkNm=Address Book Name +comCopAdb.regist.othbcScope=Scope of Disclosure +comCopAdb.regist.company=Company +comCopAdb.regist.part=Department Name +comCopAdb.regist.man=Individual +comCopAdb.regist.adbkUser=Member +comCopAdb.regist.findAdbkUser=Find Member + + +comCopAdb.registList.id=User ID +comCopAdb.registList.name=Name +comCopAdb.registList.email=Email +comCopAdb.registList.homeTel=PhoneNumber +comCopAdb.registList.mobileTel=Mobile PhoneNumber +comCopAdb.registList.officeTel=Office PhoneNumber +comCopAdb.registList.faxNum=Fax Number +comCopAdb.registList.del=Delete + +comCopAdb.popopUserList.title=User List + +comCopAdb.popopUserList.title1=User List +comCopAdb.popopUserList.title2=Name Card List + +comCopAdb.popopUserListSearchCondition.searchUser=User Name +comCopAdb.popopUserListSearchCondition.searchMyNcrd=Name Card Title + +comCopAdb.popopUserList.id=User ID +comCopAdb.popopUserList.name=User Name +comCopAdb.popopUserList.myNcrdId=Name Card ID +comCopAdb.popopUserList.myNcrdNm=Name Card Title +comCopAdb.popopUserList.email=Email +comCopAdb.popopUserList.homeTel=Home PhoneNumber +comCopAdb.popopUserList.mobileTel=Mobile PhoneNumber +comCopAdb.popopUserList.officeTel=Office PhoneNumber +comCopAdb.popopUserList.faxNum=Fax Number \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/adb/message_ko.properties b/src/main/resources/egovframework/message/com/cop/adb/message_ko.properties new file mode 100644 index 00000000..7ee610f3 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/adb/message_ko.properties @@ -0,0 +1,51 @@ +#\uc8fc\uc18c\ub85d\uad00\ub9ac Message# +comCopAdb.title=\uc8fc\uc18c\ub85d\uad00\ub9ac + +comCopAdb.searchCondition.searchCnd0=\uc8fc\uc18c\ub85d\uba85 +comCopAdb.searchCondition.searchCnd1=\uacf5\uac1c\ubc94\uc704 +comCopAdb.searchCondition.searchCnd2=\ub4f1\ub85d\uc790 + +comCopAdb.validate.isUser=\uc774\ubbf8 \ub4f1\ub85d\ub41c \uc0ac\ub78c\uc785\ub2c8\ub2e4. + +comCopAdb.searchCondition.userNm = \uc0ac\uc6a9\uc790 \uba85 +comCopAdb.searchCondition.group = \uadf8\ub8f9 +comCopAdb.btn.groupInquire = \uadf8\ub8f9\uc870\ud68c \ud31d\uc5c5 + +comCopAdb.list.adbkNm=\uc8fc\uc18c\ub85d\uba85 +comCopAdb.list.othbcScope=\uacf5\uac1c\ubc94\uc704 + +comCopAdb.regist.adbkNm = \uc8fc\uc18c\ub85d\uba85 +comCopAdb.regist.othbcScope = \uacf5\uac1c\ubc94\uc704 +comCopAdb.regist.company = \ud68c\uc0ac +comCopAdb.regist.part = \ubd80\uc11c +comCopAdb.regist.man = \uac1c\uc778 +comCopAdb.regist.adbkUser = \uad6c\uc131\uc6d0 +comCopAdb.regist.findAdbkUser = \uad6c\uc131\uc6d0 \ucc3e\uae30 + + +comCopAdb.registList.id=\uc544\uc774\ub514 +comCopAdb.registList.name=\uc774\ub984 +comCopAdb.registList.email=\uc774\uba54\uc77c +comCopAdb.registList.homeTel=\uc9d1\uc804\ud654\ubc88\ud638 +comCopAdb.registList.mobileTel=\ud734\ub300\ud3f0\uc804\ud654\ubc88\ud638 +comCopAdb.registList.officeTel=\ud68c\uc0ac\ubc88\ud638 +comCopAdb.registList.faxNum=\ud329\uc2a4\ubc88\ud638 +comCopAdb.registList.del=\uc0ad\uc81c + +comCopAdb.popopUserList.title=\uc0ac\uc6a9\uc790 \ubaa9\ub85d + +comCopAdb.popopUserList.title1=\uc0ac\uc6a9\uc790 \ubaa9\ub85d +comCopAdb.popopUserList.title2=\uba85\ud568\ubaa9\ub85d + +comCopAdb.popopUserListSearchCondition.searchUser=\uc0ac\uc6a9\uc790\uba85 +comCopAdb.popopUserListSearchCondition.searchMyNcrd=\uba85\ud568\uba85 + +comCopAdb.popopUserList.id=\uc0ac\uc6a9\uc790\uc544\uc774\ub514 +comCopAdb.popopUserList.name=\uc0ac\uc6a9\uc790\uba85 +comCopAdb.popopUserList.myNcrdId=\uba85\ud568\uc544\uc774\ub514 +comCopAdb.popopUserList.myNcrdNm=\uba85\ud568\uba85 +comCopAdb.popopUserList.email=\uc774\uba54\uc77c +comCopAdb.popopUserList.homeTel=\uc9d1\uc804\ud654\ubc88\ud638 +comCopAdb.popopUserList.mobileTel=\ud734\ub300\ud3f0\ubc88\ud638 +comCopAdb.popopUserList.officeTel=\ud68c\uc0ac\ubc88\ud638 +comCopAdb.popopUserList.faxNum=\ud329\uc2a4\ubc88\ud638 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/bbs/message_en.properties b/src/main/resources/egovframework/message/com/cop/bbs/message_en.properties new file mode 100644 index 00000000..fbd26233 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/bbs/message_en.properties @@ -0,0 +1,88 @@ +#\uac8c\uc2dc\ud310\uc18d\uc131\uad00\ub9ac BBS Master# +comCopBbs.boardMasterVO.title=Board Master Management + +comCopBbs.boardMasterVO.list.bbsNm=Board Title +comCopBbs.boardMasterVO.list.bbsIntrcn=Board Explantation +comCopBbs.boardMasterVO.list.useAt=Available Options + +comCopBbs.boardMasterVO.detail.bbsNm=Board Title +comCopBbs.boardMasterVO.detail.bbsIntrcn=Board Explanation +comCopBbs.boardMasterVO.detail.useAt=Available Options +comCopBbs.boardMasterVO.detail.replyPosblAt=Reply Available +comCopBbs.boardMasterVO.detail.fileAtchPosblAt=Attach files Available +comCopBbs.boardMasterVO.detail.atchPosblFileNumber=The Maximum Number of File Attachments +comCopBbs.boardMasterVO.detail.bbsTyCode=Board Type +comCopBbs.boardMasterVO.detail.bbsAdres=Board Domain +comCopBbs.boardMasterVO.detail.option=Additional Options +comCopBbs.boardMasterVO.detail.option1=No Option +comCopBbs.boardMasterVO.detail.option2=Comments +comCopBbs.boardMasterVO.detail.option3=Satisfactions +comCopBbs.boardMasterVO.detail.option.unabledToModify=\u203b Additional options cannot be modified (first time can be set for unset existing bulletin board). + +comCopBbs.boardMasterVO.regist.bbsNm=Board Title +comCopBbs.boardMasterVO.regist.bbsIntrcn=Board Explanation +comCopBbs.boardMasterVO.regist.useAt=Available Options +comCopBbs.boardMasterVO.regist.replyPosblAt=Reply Available +comCopBbs.boardMasterVO.regist.fileAtchPosblAt=Attach files Available +comCopBbs.boardMasterVO.regist.atchPosblFileNumber=The Maximum Number of File Attachments +comCopBbs.boardMasterVO.regist.bbsTyCode=Board Type + +comCopBbs.boardMasterVO.updt.bbsNm=Board Title +comCopBbs.boardMasterVO.updt.bbsIntrcn=Board Explanation +comCopBbs.boardMasterVO.updt.useAt=Available Options +comCopBbs.boardMasterVO.updt.replyPosblAt=Reply Available +comCopBbs.boardMasterVO.updt.fileAtchPosblAt=Attach files Available +comCopBbs.boardMasterVO.updt.atchPosblFileNumber=The Maximum Number of File Attachments +comCopBbs.boardMasterVO.updt.bbsTyCode=Board Type + +comCopBbs.boardMasterVO.guestReply=Unable to reply in guestbook. +comCopBbs.boardMasterVO.guestFile=Unable to upload file in guestbook. + + +#BBS(Article) +comCopBbs.articleVO.title=Article Board + +comCopBbs.articleVO.list.nttSj=Title +comCopBbs.articleVO.list.nttCn=Contents +comCopBbs.articleVO.list.inqireCo=Views + +comCopBbs.articleVO.detail.nttSj=Title +comCopBbs.articleVO.detail.nttCn=Contents +comCopBbs.articleVO.detail.inqireCo=Views +comCopBbs.articleVO.detail.ntceDe=Notice Period +comCopBbs.articleVO.detail.atchFile=Attach files + +comCopBbs.articleVO.regist.nttSj=Title +comCopBbs.articleVO.regist.nttCn=Contents +comCopBbs.articleVO.regist.sjBoldAt=Subject Bold +comCopBbs.articleVO.regist.noticeAt=Notice Submit +comCopBbs.articleVO.regist.secretAt=Privacy Mode +comCopBbs.articleVO.regist.anonymousAt=Anonymous Mode +comCopBbs.articleVO.regist.ntceDe=Notice Period +comCopBbs.articleVO.regist.atchFile=Attach files + +comCopBbs.articleVO.updt.nttSj=Title +comCopBbs.articleVO.updt.nttCn=Contents +comCopBbs.articleVO.updt.sjBoldAt=Subject Bold +comCopBbs.articleVO.updt.noticeAt=Notice Submit +comCopBbs.articleVO.updt.secretAt=Privacy Mode +comCopBbs.articleVO.updt.anonymousAt=Anonymous Mode +comCopBbs.articleVO.updt.ntceDe=Notice Period +comCopBbs.articleVO.updt.atchFile=Attach files +comCopBbs.articleVO.updt.atchFileAdd=Add Attach files + +comCopBbs.articleVO.reply.nttSj=Title +comCopBbs.articleVO.reply.nttCn=Contents +comCopBbs.articleVO.reply.sjBoldAt=Subject Bold +comCopBbs.articleVO.reply.noticeAt=Notice Submit +comCopBbs.articleVO.reply.anonymousAt=Anonymous Mode +comCopBbs.articleVO.reply.ntceDe=Notice Period +comCopBbs.articleVO.reply.atchFile=Attach files + +comCopBbs.articleVO.guest.title=Guest Board + +comCopBbs.articleVO.secretBold=Unable to post a title in bold on privacy mode. +comCopBbs.articleVO.secretAnonymous=Unable to be an anonymous user on privacy mode +comCopBbs.articleVO.secretNotice=Unable to post up a notice on privacy mode. +comCopBbs.articleVO.anonymousNotice=Unable to post up a notice by an anonyomus user. +comCopBbs.articleVO.ntceDeError=Start date cannot be greater than End date \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/bbs/message_ko.properties b/src/main/resources/egovframework/message/com/cop/bbs/message_ko.properties new file mode 100644 index 00000000..0b0c40f9 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/bbs/message_ko.properties @@ -0,0 +1,88 @@ +#\uac8c\uc2dc\ud310\uc18d\uc131\uad00\ub9ac BBS Master# +comCopBbs.boardMasterVO.title=\uac8c\uc2dc\ud310 + +comCopBbs.boardMasterVO.list.bbsNm=\uac8c\uc2dc\ud310\uba85 +comCopBbs.boardMasterVO.list.bbsIntrcn=\uac8c\uc2dc\ud310\uc18c\uac1c\ub0b4\uc6a9 +comCopBbs.boardMasterVO.list.useAt=\uc0ac\uc6a9\uc5ec\ubd80 + +comCopBbs.boardMasterVO.detail.bbsNm=\uac8c\uc2dc\ud310\uba85 +comCopBbs.boardMasterVO.detail.bbsIntrcn=\uac8c\uc2dc\ud310\uc18c\uac1c\ub0b4\uc6a9 +comCopBbs.boardMasterVO.detail.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comCopBbs.boardMasterVO.detail.replyPosblAt=\ub2f5\uc7a5\uac00\ub2a5\uc5ec\ubd80 +comCopBbs.boardMasterVO.detail.fileAtchPosblAt=\ud30c\uc77c\ucca8\ubd80\uac00\ub2a5\uc5ec\ubd80 +comCopBbs.boardMasterVO.detail.atchPosblFileNumber=\ucca8\ubd80\uac00\ub2a5\ud30c\uc77c\uc22b\uc790 +comCopBbs.boardMasterVO.detail.bbsTyCode=\uac8c\uc2dc\ud310 \uc720\ud615 +comCopBbs.boardMasterVO.detail.bbsAdres=\uac8c\uc2dc\ud310 \uc8fc\uc18c +comCopBbs.boardMasterVO.detail.option=\ucd94\uac00\uc120\ud0dd\uc0ac\ud56d +comCopBbs.boardMasterVO.detail.option1=\ubbf8\uc120\ud0dd +comCopBbs.boardMasterVO.detail.option2=\ub313\uae00 +comCopBbs.boardMasterVO.detail.option3=\ub9cc\uc871\ub3c4\uc870\uc0ac +comCopBbs.boardMasterVO.detail.option.unabledToModify=\u203b \ucd94\uac00 \uc120\ud0dd\uc0ac\ud56d\uc740 \uc218\uc815 \ubd88\uac00 (\ubbf8\uc124\uc815\ub41c \uae30\uc874 \uac8c\uc2dc\ud310\uc758 \uacbd\uc6b0 \ucc98\uc74c \uc124\uc815\uc740 \uac00\ub2a5\ud568) + +comCopBbs.boardMasterVO.regist.bbsNm=\uac8c\uc2dc\ud310\uba85 +comCopBbs.boardMasterVO.regist.bbsIntrcn=\uac8c\uc2dc\ud310\uc18c\uac1c\ub0b4\uc6a9 +comCopBbs.boardMasterVO.regist.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comCopBbs.boardMasterVO.regist.replyPosblAt=\ub2f5\uc7a5\uac00\ub2a5\uc5ec\ubd80 +comCopBbs.boardMasterVO.regist.fileAtchPosblAt=\ud30c\uc77c\ucca8\ubd80\uac00\ub2a5\uc5ec\ubd80 +comCopBbs.boardMasterVO.regist.atchPosblFileNumber=\ucca8\ubd80\uac00\ub2a5\ud30c\uc77c\uc22b\uc790 +comCopBbs.boardMasterVO.regist.bbsTyCode=\uac8c\uc2dc\ud310 \uc720\ud615 + +comCopBbs.boardMasterVO.updt.bbsNm=\uac8c\uc2dc\ud310\uba85 +comCopBbs.boardMasterVO.updt.bbsIntrcn=\uac8c\uc2dc\ud310\uc18c\uac1c\ub0b4\uc6a9 +comCopBbs.boardMasterVO.updt.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comCopBbs.boardMasterVO.updt.replyPosblAt=\ub2f5\uc7a5\uac00\ub2a5\uc5ec\ubd80 +comCopBbs.boardMasterVO.updt.fileAtchPosblAt=\ud30c\uc77c\ucca8\ubd80\uac00\ub2a5\uc5ec\ubd80 +comCopBbs.boardMasterVO.updt.atchPosblFileNumber=\ucca8\ubd80\uac00\ub2a5\ud30c\uc77c\uc22b\uc790 +comCopBbs.boardMasterVO.updt.bbsTyCode=\uac8c\uc2dc\ud310 \uc720\ud615 + +comCopBbs.boardMasterVO.guestReply=\ubc29\uba85\ub85d\uc5d0 \ub2f5\uc7a5\uc774 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4. +comCopBbs.boardMasterVO.guestFile=\ubc29\uba85\ub85d\uc5d0 \ud30c\uc77c\uc744 \ucca8\ubd80\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + + +#\uac8c\uc2dc\ud310 +comCopBbs.articleVO.title=\uac8c\uc2dc\uae00 + +comCopBbs.articleVO.list.nttSj=\uc81c\ubaa9 +comCopBbs.articleVO.list.nttCn=\ub0b4\uc6a9 +comCopBbs.articleVO.list.inqireCo=\uc870\ud68c\uc218 + +comCopBbs.articleVO.detail.nttSj=\uc81c\ubaa9 +comCopBbs.articleVO.detail.nttCn=\ub0b4\uc6a9 +comCopBbs.articleVO.detail.inqireCo=\uc870\ud68c\uc218 +comCopBbs.articleVO.detail.ntceDe=\uac8c\uc2dc\uae30\uac04 +comCopBbs.articleVO.detail.atchFile=\ucca8\ubd80\ud30c\uc77c + +comCopBbs.articleVO.regist.nttSj=\uc81c\ubaa9 +comCopBbs.articleVO.regist.nttCn=\ub0b4\uc6a9 +comCopBbs.articleVO.regist.sjBoldAt=\uc81c\ubaa9 \uc9c4\ud558\uac8c +comCopBbs.articleVO.regist.noticeAt=\uacf5\uc9c0\ub4f1\ub85d +comCopBbs.articleVO.regist.secretAt=\ube44\ubc00\uae00 +comCopBbs.articleVO.regist.anonymousAt=\uc775\uba85\ub4f1\ub85d +comCopBbs.articleVO.regist.ntceDe=\uac8c\uc2dc\uae30\uac04 +comCopBbs.articleVO.regist.atchFile=\ucca8\ubd80\ud30c\uc77c + +comCopBbs.articleVO.updt.nttSj=\uc81c\ubaa9 +comCopBbs.articleVO.updt.nttCn=\ub0b4\uc6a9 +comCopBbs.articleVO.updt.sjBoldAt=\uc81c\ubaa9 \uc9c4\ud558\uac8c +comCopBbs.articleVO.updt.noticeAt=\uacf5\uc9c0\ub4f1\ub85d +comCopBbs.articleVO.updt.secretAt=\ube44\ubc00\uae00 +comCopBbs.articleVO.updt.anonymousAt=\uc775\uba85\ub4f1\ub85d +comCopBbs.articleVO.updt.ntceDe=\uac8c\uc2dc\uae30\uac04 +comCopBbs.articleVO.updt.atchFile=\ucca8\ubd80\ud30c\uc77c +comCopBbs.articleVO.updt.atchFileAdd=\ucca8\ubd80\ud30c\uc77c \ucd94\uac00 + +comCopBbs.articleVO.reply.nttSj=\uc81c\ubaa9 +comCopBbs.articleVO.reply.nttCn=\ub0b4\uc6a9 +comCopBbs.articleVO.reply.sjBoldAt=\uc81c\ubaa9 \uc9c4\ud558\uac8c +comCopBbs.articleVO.reply.noticeAt=\uacf5\uc9c0\ub4f1\ub85d +comCopBbs.articleVO.reply.anonymousAt=\uc775\uba85\ub4f1\ub85d +comCopBbs.articleVO.reply.ntceDe=\uac8c\uc2dc\uae30\uac04 +comCopBbs.articleVO.reply.atchFile=\ucca8\ubd80\ud30c\uc77c + +comCopBbs.articleVO.guest.title=\ubc29\uba85\ub85d + +comCopBbs.articleVO.secretBold=\ube44\ubc00\uae00\uc740 \uc81c\ubaa9\uc744 \uc9c4\ud558\uac8c \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopBbs.articleVO.secretAnonymous=\ube44\ubc00\uae00\uc740 \uc775\uba85\uc73c\ub85c \ub4f1\ub85d\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopBbs.articleVO.secretNotice=\ube44\ubc00\uae00\uc740 \uacf5\uc9c0\ub85c \ub4f1\ub85d\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopBbs.articleVO.anonymousNotice=\uc775\uba85\uae00\uc740 \uacf5\uc9c0\ub85c \ub4f1\ub85d\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopBbs.articleVO.ntceDeError=\uac8c\uc2dc\uae30\uac04 \uc885\ub8cc\uc77c\uc774 \uc2dc\uc791\uc77c\ubcf4\ub2e4 \ube60\ub985\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/blog/message_en.properties b/src/main/resources/egovframework/message/com/cop/blog/message_en.properties new file mode 100644 index 00000000..9ed6c182 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/blog/message_en.properties @@ -0,0 +1,60 @@ +# Blog Main List +comCopBlog.articleBlogList.regCategory=Category Registration +comCopBlog.articleBlogList.setListNumbers=Set Number of Posts +comCopBlog.articleBlogList.listNumber5=5 lines +comCopBlog.articleBlogList.listNumber10=10 lines +comCopBlog.articleBlogList.listNumber15=15 lines +comCopBlog.articleBlogList.listNumber20=20 lines +comCopBlog.articleBlogList.listNumber30=30 lines +comCopBlog.articleBlogList.validate.noResult=No posts! \\nPlease register your post. +comCopBlog.articleBlogList.validate.limitSize=Comments can be up to 500bytes. +comCopBlog.articleBlogList.validate.noContent=The text does not exist! +comCopBlog.articleBlogList.validate.occurError=An error has occurred. +comCopBlog.articleBlogList.validate.noBoard=There are no registered boards.\\nPlease create a board through category registration. + +#\uac8c\uc2dc\ud310\uc18d\uc131\uad00\ub9ac BBS Master# +comCopBlog.blogMasterVO.title=Blog + +comCopBlog.blogMasterVO.list.blogNm=Blog Name +comCopBlog.blogMasterVO.list.useAt=Usage Status + +comCopBlog.blogMasterVO.detail.blogNm=Blog Name +comCopBlog.blogMasterVO.detail.blogIntrcn=About Blog +comCopBlog.blogMasterVO.detail.useAt=Usage Status +comCopBlog.blogMasterVO.detail.blogAdres=Blog Address + +comCopBlog.blogMasterVO.regist.blogNm=Blog Name +comCopBlog.blogMasterVO.regist.blogIntrcn=About Blog +comCopBlog.blogMasterVO.regist.useAt=Usage Status + +comCopBlog.blogMasterVO.updt.blogNm=Blog Name +comCopBlog.blogMasterVO.updt.blogIntrcn=About Blog +comCopBlog.blogMasterVO.updt.useAt=Usage Status + + + +comCopBlog.blogUserVO.title=Blog User + +comCopBlog.blogUserVO.emplyrId=User ID +comCopBlog.blogUserVO.emplyrNm=User Name +comCopBlog.blogUserVO.mberSttus=Member Status +comCopBlog.blogUserVO.etc=Etc + + +#Manage blog users# +comCopBlog.blogUseMgrMain.title=Blog User Main + +comCopBlog.blogUseMgrMain.btnBoard=Personal Blog Management +comCopBlog.blogUseMgrMain.btnUser=User Management + +comCopBlog.blogUseMgrMain.btnMemberWithdrawal=Member Withdrawal +comCopBlog.blogUseMgrMain.btnMemberJoin=Member Join + +comCopBlog.blogUseMgrMain.titleContents=Content Area + + +comCopBlog.blogUseMgrBaseTmpl.title=Blog Default Template +comCopBlog.blogUseMgrBaseTmpl.more=More +comCopBlog.blogUseMgrBaseTmpl.noList=There is no registered contents. + +comCopBlog.validate.blogUserCheck=A blog already exists with the same account. diff --git a/src/main/resources/egovframework/message/com/cop/blog/message_ko.properties b/src/main/resources/egovframework/message/com/cop/blog/message_ko.properties new file mode 100644 index 00000000..4730e132 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/blog/message_ko.properties @@ -0,0 +1,60 @@ +# \ube14\ub85c\uadf8 \uba54\uc778\ubaa9\ub85d +comCopBlog.articleBlogList.regCategory=\uce74\ud14c\uace0\ub9ac\ub4f1\ub85d +comCopBlog.articleBlogList.setListNumbers=\uac8c\uc2dc\ubb3c \uac2f\uc218 \uc124\uc815 +comCopBlog.articleBlogList.listNumber5=5\uc904 \ubcf4\uae30 +comCopBlog.articleBlogList.listNumber10=10\uc904 \ubcf4\uae30 +comCopBlog.articleBlogList.listNumber15=15\uc904 \ubcf4\uae30 +comCopBlog.articleBlogList.listNumber20=20\uc904 \ubcf4\uae30 +comCopBlog.articleBlogList.listNumber30=30\uc904 \ubcf4\uae30 +comCopBlog.articleBlogList.validate.noResult=\uac8c\uc2dc\uae00\uc774 \uc5c6\uc2b5\ub2c8\ub2e4!\\n\uac8c\uc2dc\uae00\uc744 \ub4f1\ub85d\ud574 \uc8fc\uc138\uc694. +comCopBlog.articleBlogList.validate.limitSize=\ub313\uae00\uc740 500byte \uae4c\uc9c0 \uc791\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +comCopBlog.articleBlogList.validate.noContent=\ubcf8\ubb38 \ub0b4\uc6a9\uc774 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4! +comCopBlog.articleBlogList.validate.occurError=\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. +comCopBlog.articleBlogList.validate.noBoard=\ub4f1\ub85d\ub41c \uac8c\uc2dc\ud310\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.\\n\uce74\ud14c\uace0\ub9ac\ub4f1\ub85d\uc744 \ud1b5\ud574 \uac8c\uc2dc\ud310\uc744 \uc0dd\uc131\ud574\uc8fc\uc138\uc694. + +#\uac8c\uc2dc\ud310\uc18d\uc131\uad00\ub9ac BBS Master# +comCopBlog.blogMasterVO.title=\ube14\ub85c\uadf8 + +comCopBlog.blogMasterVO.list.blogNm=\ube14\ub85c\uadf8\uba85 +comCopBlog.blogMasterVO.list.useAt=\uc0ac\uc6a9\uc5ec\ubd80 + +comCopBlog.blogMasterVO.detail.blogNm=\ube14\ub85c\uadf8\uba85 +comCopBlog.blogMasterVO.detail.blogIntrcn=\ube14\ub85c\uadf8\uc18c\uac1c\ub0b4\uc6a9 +comCopBlog.blogMasterVO.detail.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comCopBlog.blogMasterVO.detail.blogAdres=\ube14\ub85c\uadf8 \uc8fc\uc18c + +comCopBlog.blogMasterVO.regist.blogNm=\ube14\ub85c\uadf8\uba85 +comCopBlog.blogMasterVO.regist.blogIntrcn=\ube14\ub85c\uadf8\uc18c\uac1c\ub0b4\uc6a9 +comCopBlog.blogMasterVO.regist.useAt=\uc0ac\uc6a9\uc5ec\ubd80 + +comCopBlog.blogMasterVO.updt.blogNm=\ube14\ub85c\uadf8\uba85 +comCopBlog.blogMasterVO.updt.blogIntrcn=\ube14\ub85c\uadf8\uc18c\uac1c\ub0b4\uc6a9 +comCopBlog.blogMasterVO.updt.useAt=\uc0ac\uc6a9\uc5ec\ubd80 + + + +comCopBlog.blogUserVO.title=\ube14\ub85c\uadf8 \uc0ac\uc6a9\uc790 + +comCopBlog.blogUserVO.emplyrId=\uc0ac\uc6a9\uc790ID +comCopBlog.blogUserVO.emplyrNm=\uc0ac\uc6a9\uc790\uba85 +comCopBlog.blogUserVO.mberSttus=\ud68c\uc6d0\uc0c1\ud0dc +comCopBlog.blogUserVO.etc=\ube44\uace0 + + +#\ube14\ub85c\uadf8 \uc0ac\uc6a9\uc790 \uad00\ub9ac# +comCopBlog.blogUseMgrMain.title=\ube14\ub85c\uadf8 \uc0ac\uc6a9\uc790 \uba54\uc778 + +comCopBlog.blogUseMgrMain.btnBoard=\uac1c\uc778\ube14\ub85c\uadf8\uad00\ub9ac +comCopBlog.blogUseMgrMain.btnUser=\uc0ac\uc6a9\uc790\uad00\ub9ac + +comCopBlog.blogUseMgrMain.btnMemberWithdrawal=\ud0c8\ud1f4\uc2e0\uccad +comCopBlog.blogUseMgrMain.btnMemberJoin=\uac00\uc785\uc2e0\uccad + +comCopBlog.blogUseMgrMain.titleContents=\ucee8\ud150\uce20\uc601\uc5ed + + +comCopBlog.blogUseMgrBaseTmpl.title=\ube14\ub85c\uadf8\uae30\ubcf8\ud15c\ud50c\ub9bf +comCopBlog.blogUseMgrBaseTmpl.more=\ub354\ubcf4\uae30 +comCopBlog.blogUseMgrBaseTmpl.noList=\ub4f1\ub85d \ub41c \ub0b4\uc6a9\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +comCopBlog.validate.blogUserCheck = \uc774\ubbf8 \ub3d9\uc77c\ud55c \uacc4\uc815\uc73c\ub85c \ube14\ub85c\uadf8\uac00 \uc874\uc7ac\ud569\ub2c8\ub2e4. diff --git a/src/main/resources/egovframework/message/com/cop/cmt/message_en.properties b/src/main/resources/egovframework/message/com/cop/cmt/message_en.properties new file mode 100644 index 00000000..dd02bb41 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/cmt/message_en.properties @@ -0,0 +1,4 @@ +#Article Comment# +comCopCmt.articleCommentVO.title=Comments + +comCopCmt.articleCommentVO.commentCn=Comment contents \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/cmt/message_ko.properties b/src/main/resources/egovframework/message/com/cop/cmt/message_ko.properties new file mode 100644 index 00000000..30db42a7 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/cmt/message_ko.properties @@ -0,0 +1,4 @@ +#\uac8c\uc2dc\uae00 \ub313\uae00# +comCopCmt.articleCommentVO.title=\ub313\uae00 + +comCopCmt.articleCommentVO.commentCn=\ub313\uae00\ub0b4\uc6a9 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/cmy/message_en.properties b/src/main/resources/egovframework/message/com/cop/cmy/message_en.properties new file mode 100644 index 00000000..012f28f6 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/cmy/message_en.properties @@ -0,0 +1,52 @@ +#Community Master# +comCopCmy.commuMasterVO.title=Community Master Management + +comCopCmy.commuMasterVO.list.cmmntyNm=Community Title +comCopCmy.commuMasterVO.list.useAt=Available Options + +comCopCmy.commuMasterVO.detail.cmmntyNm=Community Title +comCopCmy.commuMasterVO.detail.cmmntyIntrcn=Community Explanation +comCopCmy.commuMasterVO.detail.useAt=Available Options +comCopCmy.commuMasterVO.detail.commuAdres=Community Domain + +comCopCmy.commuMasterVO.regist.cmmntyNm=Community Title +comCopCmy.commuMasterVO.regist.cmmntyIntrcn=Community Explanation +comCopCmy.commuMasterVO.regist.useAt=Available Options + +comCopCmy.commuMasterVO.updt.cmmntyNm=Community Title +comCopCmy.commuMasterVO.updt.cmmntyIntrcn=Community Explanation +comCopCmy.commuMasterVO.updt.useAt=Available Options +comCopCmy.commuMasterVO.updt.yes=Yes +comCopCmy.commuMasterVO.updt.no=No + + +comCopCmy.commuMasterVO.list.board=Board List + +comCopCmy.commuUserVO.title=Community User Management + +comCopCmy.commuUserVO.emplyrId=User ID +comCopCmy.commuUserVO.emplyrNm=User Name +comCopCmy.commuUserVO.mberSttus=Member Status +comCopCmy.commuUserVO.etc=etc + + +#Community Usage Management# +comCopCmy.communityUseMgrMain.title=Community Usage Management Main + +comCopCmy.communityUseMgrMain.btnBoard=Board Management +comCopCmy.communityUseMgrMain.btnUser=Member Management + +comCopCmy.communityUseMgrMain.btnMemberWithdrawal=Delete Your Account +comCopCmy.communityUseMgrMain.btnMemberJoin=Sign Up + +comCopCmy.communityUseMgrMain.titleContents=Content Area + + +comCopCmy.communityUseMgrBaseTmpl.title=Community Usage Management Default Template +comCopCmy.communityUseMgrBaseTmpl.more=Load More +comCopCmy.communityUseMgrBaseTmpl.noList=Currently there is no content on the list. + +comCopCmy.commuMain.joinMember.info.success=Member registration has been processed. +comCopCmy.commuMain.joinMember.info.fail=already registered as a member. +comCopCmy.commuMain.deleteMember.info.success=Your account has been deleted. +comCopCmy.commuMain.deleteMember.info.admin=Administrator accounts can not be deleted. diff --git a/src/main/resources/egovframework/message/com/cop/cmy/message_ko.properties b/src/main/resources/egovframework/message/com/cop/cmy/message_ko.properties new file mode 100644 index 00000000..562619d3 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/cmy/message_ko.properties @@ -0,0 +1,52 @@ +#\uac8c\uc2dc\ud310\uc18d\uc131\uad00\ub9ac BBS Master# +comCopCmy.commuMasterVO.title=\ucee4\ubba4\ub2c8\ud2f0 + +comCopCmy.commuMasterVO.list.cmmntyNm=\ucee4\ubba4\ub2c8\ud2f0\uba85 +comCopCmy.commuMasterVO.list.useAt=\uc0ac\uc6a9\uc5ec\ubd80 + +comCopCmy.commuMasterVO.detail.cmmntyNm=\ucee4\ubba4\ub2c8\ud2f0\uba85 +comCopCmy.commuMasterVO.detail.cmmntyIntrcn=\ucee4\ubba4\ub2c8\ud2f0\uc18c\uac1c\ub0b4\uc6a9 +comCopCmy.commuMasterVO.detail.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comCopCmy.commuMasterVO.detail.commuAdres=\ucee4\ubba4\ub2c8\ud2f0 \uc8fc\uc18c + +comCopCmy.commuMasterVO.regist.cmmntyNm=\ucee4\ubba4\ub2c8\ud2f0\uba85 +comCopCmy.commuMasterVO.regist.cmmntyIntrcn=\ucee4\ubba4\ub2c8\ud2f0\uc18c\uac1c\ub0b4\uc6a9 +comCopCmy.commuMasterVO.regist.useAt=\uc0ac\uc6a9\uc5ec\ubd80 + +comCopCmy.commuMasterVO.updt.cmmntyNm=\ucee4\ubba4\ub2c8\ud2f0\uba85 +comCopCmy.commuMasterVO.updt.cmmntyIntrcn=\ucee4\ubba4\ub2c8\ud2f0\uc18c\uac1c\ub0b4\uc6a9 +comCopCmy.commuMasterVO.updt.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comCopCmy.commuMasterVO.updt.yes=\uc608 +comCopCmy.commuMasterVO.updt.no=\uc544\ub2c8\uc624 + + +comCopCmy.commuMasterVO.list.board=\uac8c\uc2dc\ud310 \ubaa9\ub85d + +comCopCmy.commuUserVO.title=\ucee4\ubba4\ub2c8\ud2f0 \uc0ac\uc6a9\uc790 + +comCopCmy.commuUserVO.emplyrId=\uc0ac\uc6a9\uc790ID +comCopCmy.commuUserVO.emplyrNm=\uc0ac\uc6a9\uc790\uba85 +comCopCmy.commuUserVO.mberSttus=\ud68c\uc6d0\uc0c1\ud0dc +comCopCmy.commuUserVO.etc=\ube44\uace0 + + +#\ucee4\ubba4\ub2c8\ud2f0 \uc0ac\uc6a9\uc790 \uad00\ub9ac# +comCopCmy.communityUseMgrMain.title=\ucee4\ubba4\ub2c8\ud2f0 \uc0ac\uc6a9\uc790 \uba54\uc778 + +comCopCmy.communityUseMgrMain.btnBoard=\uac8c\uc2dc\ud310\uad00\ub9ac +comCopCmy.communityUseMgrMain.btnUser=\uc0ac\uc6a9\uc790\uad00\ub9ac + +comCopCmy.communityUseMgrMain.btnMemberWithdrawal=\ud0c8\ud1f4\uc2e0\uccad +comCopCmy.communityUseMgrMain.btnMemberJoin=\uac00\uc785\uc2e0\uccad + +comCopCmy.communityUseMgrMain.titleContents=\ucee8\ud150\uce20\uc601\uc5ed + + +comCopCmy.communityUseMgrBaseTmpl.title=\ucee4\ubba4\ub2c8\ud2f0\uae30\ubcf8\ud15c\ud50c\ub9bf +comCopCmy.communityUseMgrBaseTmpl.more=\ub354\ubcf4\uae30 +comCopCmy.communityUseMgrBaseTmpl.noList=\ub4f1\ub85d \ub41c \ub0b4\uc6a9\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +comCopCmy.commuMain.joinMember.info.success=\uac00\uc785\uc2e0\uccad\uc774 \uc815\uc0c1\ucc98\ub9ac \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCopCmy.commuMain.joinMember.info.fail=\uc774\ubbf8 \uac00\uc785\ucc98\ub9ac\uac00 \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. +comCopCmy.commuMain.deleteMember.info.success=\ud0c8\ud1f4\uc2e0\uccad\uc774 \uc815\uc0c1\ucc98\ub9ac \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCopCmy.commuMain.deleteMember.info.admin=\uad00\ub9ac\uc790\ub294 \ud0c8\ud1f4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. diff --git a/src/main/resources/egovframework/message/com/cop/com/message_en.properties b/src/main/resources/egovframework/message/com/cop/com/message_en.properties new file mode 100644 index 00000000..064e02a6 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/com/message_en.properties @@ -0,0 +1,9 @@ +comCopCom.userListPop.title=User List +comCopCom.userListPop.pageTop.title=User List +comCopCom.userListPop.index=Index +comCopCom.userListPop.userId=User ID +comCopCom.userListPop.userNm=User Name +comCopCom.userListPop.userAdres=Address +comCopCom.userListPop.userEmail=Email +comCopCom.userListPop.useAt=Usage status +comCopCom.userListPop.select=Select diff --git a/src/main/resources/egovframework/message/com/cop/com/message_ko.properties b/src/main/resources/egovframework/message/com/cop/com/message_ko.properties new file mode 100644 index 00000000..e5bc1260 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/com/message_ko.properties @@ -0,0 +1,9 @@ +comCopCom.userListPop.title=\uc0ac\uc6a9\uc790 \ubaa9\ub85d +comCopCom.userListPop.pageTop.title=\uc0ac\uc6a9\uc790 \ubaa9\ub85d +comCopCom.userListPop.index=\ubc88\ud638 +comCopCom.userListPop.userId=\uc0ac\uc6a9\uc790\uc544\uc774\ub514 +comCopCom.userListPop.userNm=\uc0ac\uc6a9\uc790\uba85 +comCopCom.userListPop.userAdres=\uc8fc\uc18c +comCopCom.userListPop.userEmail=\uc774\uba54\uc77c +comCopCom.userListPop.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comCopCom.userListPop.select=\uc120\ud0dd diff --git a/src/main/resources/egovframework/message/com/cop/ncm/message_en.properties b/src/main/resources/egovframework/message/com/cop/ncm/message_en.properties new file mode 100644 index 00000000..a4bc6db0 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/ncm/message_en.properties @@ -0,0 +1,107 @@ +#\uba85\ud568\ubaa9\ub85d \uc870\ud68c +#EgovNcrdList.jsp +comCopNcm.ncrdList.title=Public Business Card List +comCopNcm.ncrdList.submit=Send +comCopNcm.ncrdList.searchWordInput=Enter Search Words +comCopNcm.ncrdList.nrcdSearch=Business card inquiry +comCopNcm.ncrdList.multiList=Number, name, company name, department name, registration date, use registration list. + +#EgovNcrdInqirePopup.jsp +comCopNcm.ncrdInqirePopup.title=Contact information + +#EgovMyNcrdList.jsp +comCopNcm.myNcrdList.title=My business card list + +#EgovNcrdRegist.jsp +comCopNcm.ncrdRegist.title=Business Card Registration +comCopNcm.ncrdRegist.idNo=Identification number + +#EgovNcrdUpdt.jsp +comCopNcm.ncrdUpdt.title=Business Card Update + +#EgovNcrdRegist.xml +comCopNcm.ncrdRegist.validate.areaNo=Area code +comCopNcm.ncrdRegist.validate.middleTelNo=4 digit station number +comCopNcm.ncrdRegist.validate.endTelNo=4 digits at end of phone +comCopNcm.ncrdRegist.validate.middleMbtlNum=4 digits in front of your phone +comCopNcm.ncrdRegist.validate.endMbtlNum=4 digits at the end of your phone number +comCopNcm.ncrdRegist.validate.detailAdres=Detailed Address + +#370\uba85\ud568\uad00\ub9ac , 371.\ub0b4\uba85\ud568\ubaa9\ub85d \uae40\uc608\uc601J# +cop.extrlUser = External User +cop.intrlUser = Internal User +cop.private = private +cop.public = public + +cop.adbkNm = Address Name +cop.othbcScope = Disclose Range +cop.company = compnay +cop.part = part +cop.man = man +cop.adbkUser = member +cop.bbsNm = BBS Name +cop.bbsIntrcn = BBS Introduction +cop.bbsTyCode = BBS Type +cop.bbsAttrbCode = BBS Attribute +cop.replyPosblAt = Reply Possible Alternative +cop.fileAtchPosblAt = File Attach Possible Alternative +cop.posblAtchFileNumber = Possible Attach File Number +cop.tmplatId = Template Information +cop.guestList.subject = This article registered by Guest List +cop.nttSj = Notice Subject +cop.nttCn = Notice Contents +cop.ntceBgnde = Notice Start Date +cop.ntceEndde = Notice End Date +cop.ntcrNm = Noticer Name +cop.password = PassWord +cop.atchFile = Attach Files +cop.guestList = Guest List +cop.guestListCn = Guest List Contents +cop.noticeTerm = Notice term +cop.atchFileList = Attached File List +cop.cmmntyNm = Community Name +cop.cmmntyIntrcn = Community Introduction +cop.cmmntyMngr = Community Manager +cop.clbOprtr = Club Operator +cop.clbIntrcn = Club Introduction +cop.clbNm = Club Name +cop.tmplatNm = Template Name +cop.tmplatSeCode = Template Se Code +cop.tmplatCours = Template Cours +cop.useAt = Use Alternative +cop.ncrdNm = NameCard user name +cop.cmpnyNm = Company name +cop.deptNm = Department name +cop.ofcpsNm = OFCPS name +cop.clsfNm = Class Name +cop.emailAdres = E-mail +cop.telNo = Tel No. +cop.mbtlNum = Mobile +cop.adres = Address +cop.extrlUserAt = External User alternative +cop.publicAt = Public open alternative +cop.remark = Remark +cop.trgetNm = Company/Club Information +cop.preview = preview + +cop.withdraw.msg=confirm withdrawal memebership? +cop.reregist.msg=confirm re-registration? +cop.registmanager.msg=confirm registration of manager? +cop.use.msg=confirm use? +cop.unuse.msg=confirm stop using? +cop.delete.confirm.msg=If you choose to disable the re-use change is impossible. +cop.ing.msg=Approval is being requested. +cop.request.msg=Signup is normally requested. +cop.password.msg=Please enter your password. +cop.password.not.same.msg=Password do not match. + +cop.comment.wrterNm = Writer Name +cop.comment.commentCn = Comment +cop.comment.commentPassword = Password + +cop.satisfaction.wrterNm = Writer Name +cop.satisfaction.stsfdgCn = Satisfaction +cop.satisfaction.stsfdg = Satisfaction Degree +cop.satisfaction.stsfdgPassword = Password + +cop.scrap.scrapNm = Scrap Name \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/ncm/message_ko.properties b/src/main/resources/egovframework/message/com/cop/ncm/message_ko.properties new file mode 100644 index 00000000..4c0d95f0 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/ncm/message_ko.properties @@ -0,0 +1,107 @@ +#\uba85\ud568\ubaa9\ub85d \uc870\ud68c +#EgovNcrdList.jsp +comCopNcm.ncrdList.title=\uacf5\uac1c \uba85\ud568\ubaa9\ub85d +comCopNcm.ncrdList.submit=\uc804\uc1a1 +comCopNcm.ncrdList.searchWordInput=\uac80\uc0c9\ub2e8\uc5b4\uc785\ub825 +comCopNcm.ncrdList.nrcdSearch=\uba85\ud568\uc870\ud68c +comCopNcm.ncrdList.multiList=\ubc88\ud638,\uc774\ub984,\ud68c\uc0ac\uba85,\ubd80\uc11c\uba85,\ub4f1\ub85d\uc77c\uc790,\uc0ac\uc6a9\ub4f1\ub85d \ubaa9\ub85d\uc785\ub2c8\ub2e4. + +#EgovNcrdInqirePopup.jsp +comCopNcm.ncrdInqirePopup.title=\uba85\ud568\uc815\ubcf4\uc870\ud68c + +#EgovMyNcrdList.jsp +comCopNcm.myNcrdList.title=\ub098\uc758 \uba85\ud568\ubaa9\ub85d + +#EgovNcrdRegist.jsp +comCopNcm.ncrdRegist.title=\uba85\ud568 \ub4f1\ub85d +comCopNcm.ncrdRegist.idNo=\uc2dd\ubcc4\ubc88\ud638 + +#EgovNcrdUpdt.jsp +comCopNcm.ncrdUpdt.title=\uba85\ud568\uc218\uc815 + +#EgovNcrdRegist.xml +comCopNcm.ncrdRegist.validate.areaNo=\uc9c0\uc5ed\ubc88\ud638 +comCopNcm.ncrdRegist.validate.middleTelNo=\uad6d\ubc884\uc790\ub9ac +comCopNcm.ncrdRegist.validate.endTelNo=\uc804\ud654\ubc88\ud638\ub05d4\uc790\ub9ac +comCopNcm.ncrdRegist.validate.middleMbtlNum=\ud734\ub300\uc804\ud654\uc55e4\uc790\ub9ac +comCopNcm.ncrdRegist.validate.endMbtlNum=\ud734\ub300\uc804\ud654\ubc88\ud638\ub05d4\uc790\ub9ac +comCopNcm.ncrdRegist.validate.detailAdres=\uc0c1\uc138\uc8fc\uc18c + +#370\uba85\ud568\uad00\ub9ac , 371.\ub0b4\uba85\ud568\ubaa9\ub85d \uae40\uc608\uc601J# +cop.extrlUser = \uc678\ubd80\uc0ac\uc6a9\uc790 +cop.intrlUser = \ub0b4\ubd80\uc0ac\uc6a9\uc790 +cop.private = \ube44\uacf5\uac1c +cop.public = \uacf5\uac1c + +cop.adbkNm = \uc8fc\uc18c\ub85d\uba85 +cop.othbcScope = \uacf5\uac1c\ubc94\uc704 +cop.company = \ud68c\uc0ac +cop.part = \ubd80\uc11c +cop.man = \uac1c\uc778 +cop.adbkUser = \uad6c\uc131\uc6d0 +cop.bbsNm = \uac8c\uc2dc\ud310\uba85 +cop.bbsIntrcn = \uac8c\uc2dc\ud310\uc18c\uac1c +cop.bbsTyCode = \uac8c\uc2dc\ud310 \uc720\ud615 +cop.bbsAttrbCode = \uac8c\uc2dc\ud310 \uc18d\uc131 +cop.replyPosblAt = \ub2f5\uc7a5\uac00\ub2a5\uc5ec\ubd80 +cop.fileAtchPosblAt = \ud30c\uc77c\ucca8\ubd80\uac00\ub2a5\uc5ec\ubd80 +cop.posblAtchFileNumber = \ucca8\ubd80\uac00\ub2a5\ud30c\uc77c \uc22b\uc790 +cop.tmplatId = \ud15c\ud50c\ub9bf \uc815\ubcf4 +cop.guestList.subject = \ubc29\uba85\ub85d \uac8c\uc2dc\uae00\uc785\ub2c8\ub2e4. +cop.nttSj = \uc81c\ubaa9 +cop.nttCn = \uae00\ub0b4\uc6a9 +cop.ntceBgnde = \uac8c\uc2dc\uc2dc\uc791\uc77c +cop.ntceEndde = \uac8c\uc2dc\uc885\ub8cc\uc77c +cop.ntcrNm = \uc791\uc131\uc790 +cop.password = \ud328\uc2a4\uc6cc\ub4dc +cop.atchFile = \ud30c\uc77c\ucca8\ubd80 +cop.guestList = \ubc29\uba85\ub85d +cop.guestListCn = \ubc29\uba85\ub85d \ub0b4\uc6a9 +cop.noticeTerm = \uac8c\uc2dc\uae30\uac04 +cop.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d +cop.cmmntyNm = \ucee4\ubba4\ub2c8\ud2f0\uba85 +cop.cmmntyIntrcn = \ucee4\ubba4\ub2c8\ud2f0 \uc18c\uac1c +cop.cmmntyMngr = \ucee4\ubba4\ub2c8\ud2f0 \uad00\ub9ac\uc790 +cop.clbOprtr = \ub3d9\ud638\ud68c \uc6b4\uc601\uc790 +cop.clbIntrcn = \ub3d9\ud638\ud68c \uc18c\uac1c +cop.clbNm = \ub3d9\ud638\ud68c \uba85 +cop.tmplatNm = \ud15c\ud50c\ub9bf\uba85 +cop.tmplatSeCode = \ud15c\ud50c\ub9bf \uad6c\ubd84 +cop.tmplatCours = \ud15c\ud50c\ub9bf\uacbd\ub85c +cop.useAt = \uc0ac\uc6a9\uc5ec\ubd80 +cop.ncrdNm = \uc774\ub984 +cop.cmpnyNm = \ud68c\uc0ac\uba85 +cop.deptNm = \ubd80\uc11c\uba85 +cop.ofcpsNm = \uc9c1\uc704 +cop.clsfNm = \uc9c1\uae09 +cop.emailAdres = \uc774\uba54\uc77c\uc8fc\uc18c +cop.telNo = \uc804\ud654\ubc88\ud638 +cop.mbtlNum = \ud734\ub300\ud3f0\ubc88\ud638 +cop.adres = \uc8fc\uc18c +cop.extrlUserAt = \uc678\ubd80\uc0ac\uc6a9\uc790\uc5ec\ubd80 +cop.publicAt = \uacf5\uac1c\uc5ec\ubd80 +cop.remark = \ube44\uace0 +cop.trgetNm = \ucee4\ubba4\ub2c8\ud2f0/\ub3d9\ud638\ud68c \uc815\ubcf4 +cop.preview = \ubbf8\ub9ac\ubcf4\uae30 + +cop.withdraw.msg=\ud0c8\ud1f4\ucc98\ub9ac \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +cop.reregist.msg=\uc7ac\uac00\uc785 \ucc98\ub9ac\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +cop.registmanager.msg=\uc6b4\uc601\uc9c4\uc73c\ub85c \ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +cop.use.msg=\uc0ac\uc6a9 \ucc98\ub9ac\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +cop.unuse.msg=\uc0ac\uc6a9\uc911\uc9c0 \ucc98\ub9ac\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +cop.delete.confirm.msg=\uc0ac\uc6a9\uc911\uc9c0\ub97c \uc120\ud0dd\ud558\uc2e4 \uacbd\uc6b0 \ub2e4\uc2dc \uc0ac\uc6a9\uc73c\ub85c \ubcc0\uacbd\uc774 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4. +cop.ing.msg=\uc2b9\uc778\uc694\uccad \uc911\uc785\ub2c8\ub2e4. +cop.request.msg=\uac00\uc785\uc2e0\uccad\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \uc694\uccad\ub418\uc5c8\uc2b5\ub2c8\ub2e4 +cop.password.msg=\ud328\uc2a4\uc6cc\ub4dc\ub97c \uc785\ub825\ud574 \uc8fc\uc2ed\uc2dc\uc624. +cop.password.not.same.msg=\ud328\uc2a4\uc6cc\ub4dc\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. + +cop.comment.wrterNm = \uc791\uc131\uc790 +cop.comment.commentCn = \ub0b4\uc6a9 +cop.comment.commentPassword = \ud328\uc2a4\uc6cc\ub4dc + +cop.satisfaction.wrterNm = \uc791\uc131\uc790 +cop.satisfaction.stsfdgCn = \ub0b4\uc6a9 +cop.satisfaction.stsfdg = \ub9cc\uc871\ub3c4 +cop.satisfaction.stsfdgPassword = \ud328\uc2a4\uc6cc\ub4dc + +cop.scrap.scrapNm = \uc2a4\ud06c\ub7a9\uba85 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/scp/message_en.properties b/src/main/resources/egovframework/message/com/cop/scp/message_en.properties new file mode 100644 index 00000000..d6107590 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/scp/message_en.properties @@ -0,0 +1,19 @@ +#Scrap Article # +comCopScp.articleScrapVO.title=Scrap Article + +comCopScp.articleScrapVO.list.scrapNm=Scrap Title + +comCopScp.articleScrapVO.detail.scrapNm=Scrap Title +comCopScp.articleScrapVO.detail.nttSj=Subject +comCopScp.articleScrapVO.detail.nttCn=Contents +comCopScp.articleScrapVO.detail.inqireCo=Views + +comCopScp.articleScrapVO.regist.scrapNm=Scrap Title +comCopScp.articleScrapVO.regist.nttSj=Subject +comCopScp.articleScrapVO.regist.nttCn=Contents +comCopScp.articleScrapVO.regist.inqireCo=Views + +comCopScp.articleScrapVO.updt.scrapNm=Scrap Title +comCopScp.articleScrapVO.updt.nttSj=Subject +comCopScp.articleScrapVO.updt.nttCn=Contents +comCopScp.articleScrapVO.updt.inqireCo=Views \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/scp/message_ko.properties b/src/main/resources/egovframework/message/com/cop/scp/message_ko.properties new file mode 100644 index 00000000..b027dd20 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/scp/message_ko.properties @@ -0,0 +1,19 @@ +#\uc2a4\ud06c\ub7a9 \uad00\ub9ac # +comCopScp.articleScrapVO.title=\uc2a4\ud06c\ub7a9 + +comCopScp.articleScrapVO.list.scrapNm=\uc2a4\ud06c\ub7a9\uba85 + +comCopScp.articleScrapVO.detail.scrapNm=\uc2a4\ud06c\ub7a9\uba85 +comCopScp.articleScrapVO.detail.nttSj=\uae00\uc81c\ubaa9 +comCopScp.articleScrapVO.detail.nttCn=\uae00\ub0b4\uc6a9 +comCopScp.articleScrapVO.detail.inqireCo=\uc870\ud68c\uc218 + +comCopScp.articleScrapVO.regist.scrapNm=\uc2a4\ud06c\ub7a9\uba85 +comCopScp.articleScrapVO.regist.nttSj=\uae00\uc81c\ubaa9 +comCopScp.articleScrapVO.regist.nttCn=\uae00\ub0b4\uc6a9 +comCopScp.articleScrapVO.regist.inqireCo=\uc870\ud68c\uc218 + +comCopScp.articleScrapVO.updt.scrapNm=\uc2a4\ud06c\ub7a9\uba85 +comCopScp.articleScrapVO.updt.nttSj=\uae00\uc81c\ubaa9 +comCopScp.articleScrapVO.updt.nttCn=\uae00\ub0b4\uc6a9 +comCopScp.articleScrapVO.updt.inqireCo=\uc870\ud68c\uc218 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/sms/message_en.properties b/src/main/resources/egovframework/message/com/cop/sms/message_en.properties new file mode 100644 index 00000000..1acdbcfb --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/sms/message_en.properties @@ -0,0 +1,16 @@ +#UI COP Message# +cop.sms.trnsmitTelno=Sender +cop.sms.trnsmitCn=Contents +cop.sms.recptnTelno=Receiver(s) +cop.sms.send=Send +cop.sms.addRecptn=Add +cop.sms.recptnTelno.msg=The phone number of receiver is required. + +cop.sms.textMassageList=SMS Service List +cop.sms.textMassageRegist=SMS Service Regist +cop.sms.textMassageDetail=SMS Service Detail +cop.sms.trnsmitTelno=Outgoing phone number +cop.sms.recptnCnt=Number of incoming phone numbers +cop.sms.frstRegisterPnttm=Transmission date and time +cop.sms.frstRegisterNm=Sender +cop.sms.recptnResult=Receive and transmit results \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/sms/message_ko.properties b/src/main/resources/egovframework/message/com/cop/sms/message_ko.properties new file mode 100644 index 00000000..3dfac44c --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/sms/message_ko.properties @@ -0,0 +1,16 @@ +#UI COP Message# +cop.sms.trnsmitTelno=\ubc1c\uc2e0\uc804\ud654\ubc88\ud638 +cop.sms.trnsmitCn=\uc804\uc1a1\ub0b4\uc6a9 +cop.sms.recptnTelno=\uc218\uc2e0\uc804\ud654\ubc88\ud638 +cop.sms.send=\uc804\uc1a1 +cop.sms.addRecptn=\ucd94\uac00 +cop.sms.recptnTelno.msg=\uc218\uc2e0\uc804\ud654\ubc88\ud638 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. + +cop.sms.textMassageList=\ubb38\uc790\uba54\uc2dc\uc9c0 \ubaa9\ub85d +cop.sms.textMassageRegist=\ubb38\uc790\uba54\uc2dc\uc9c0 \ub4f1\ub85d +cop.sms.textMassageDetail=\ubb38\uc790\uba54\uc2dc\uc9c0 \uc0c1\uc138\ubcf4\uae30 +cop.sms.trnsmitTelno=\ubc1c\uc2e0\uc804\ud654\ubc88\ud638 +cop.sms.recptnCnt=\uc218\uc2e0\uc804\ud654\ubc88\ud638 \uc218 +cop.sms.frstRegisterPnttm=\uc804\uc1a1\uc77c\uc2dc +cop.sms.frstRegisterNm=\uc804\uc1a1\uc790 +cop.sms.recptnResult=\uc218\uc2e0 \ubc0f \uc804\uc1a1\uacb0\uacfc \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/djm/message_en.properties b/src/main/resources/egovframework/message/com/cop/smt/djm/message_en.properties new file mode 100644 index 00000000..071633f1 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/djm/message_en.properties @@ -0,0 +1,77 @@ +# Departmental Workplace Management +# EgovDeptJobBxList.jsp +comCopSmtDjm.deptJobBxList.title = View your departmental workbook management list +comCopSmtDjm.deptJobBxList.indictOrdrChanged = You can change the order of departments within the same department name. +comCopSmtDjm.deptJobBxList.searchCnd = You have not selected any query criteria. +comCopSmtDjm.deptJobBxList.ordrCnd = Please select the department you want to edit the order in. +comCopSmtDjm.deptJobBxList.deptNm = Department name +comCopSmtDjm.deptJobBxList.deptJobNm = Departmental job description +comCopSmtDjm.deptJobBxList.deptJobBxManage = Departmental Workbox Management +comCopSmtDjm.deptJobBxList.finalEditor = final sperm +comCopSmtDjm.deptJobBxList.finalEditDate = Last Modified Date + +# EgovDeptJobRegist.jsp +comCopSmtDjm.deptJobRegist.title = Departmental Worker Registration +comCopSmtDjm.deptJobRegist.deptJobBxNmDuplicated = There is a duplicate department job in the department. +comCopSmtDjm.deptJobRegist.intIndictOrdr = You must enter a value of 1 or greater in the display order. +comCopSmtDjm.deptJobRegist.deptIndictOrdr = The maximum value of the departmental display order for this department is +Since comCopSmtDjm.deptJobRegist.deptIndictOrdrCause = +comCopSmtDjm.deptJobRegist.deptIndictOrdrInput = You must enter below. +comCopSmtDjm.deptJobRegist.deptNm = Department +comCopSmtDjm.deptJobRegist.deptJobBxNm = Departmental job description +comCopSmtDjm.deptJobRegist.indictOrdr = Display Order + +# EgovDeptListPopup.jsp +comCopSmtDjm.deptListPopup.title = Department List + +# EgovDeptList.jsp +comCopSmtDjm.deptList.title = View department list +comCopSmtDjm.deptList.deptSelect = Select department +comCopSmtDjm.deptList.deptExplain = Department description + +# EgovDeptJobBxUpdt.jsp +comCopSmtDjm.deptJobBxUpdt.title = Departmental work order + +#EgovDeptJobList.jsp +comCopSmtDjm.deptJobList.title = Department List +comCopSmtDjm.deptJobList.subject = Title +comCopSmtDjm.deptJobList.content = Content +comCopSmtDjm.deptJobList.charger = Contact +comCopSmtDjm.deptJobList.summary = Provides a list of departmental workspaces. +comCopSmtDjm.deptJobList.writerDate = Date created + +# EgovDeptJob.xml +comCopSmtDjm.deptJobVO.validate.deptNm = Department +comCopSmtDjm.deptJobVO.validate.deptJobBxNm = Departmental job description +comCopSmtDjm.deptJobVO.validate.deptJobNm = Department job name +comCopSmtDjm.deptJobVO.validate.deptJobCn = Departmental business content +comCopSmtDjm.deptJobVO.validate.chargerNm = Business contact +comCopSmtDjm.deptJobVO.validate.priort = Priority + +# EgovDeptJobRegist.jsp +comCopSmtDjm.deptJobRegist.title = Departmental business registration +comCopSmtDjm.deptJobRegist.high = High +comCopSmtDjm.deptJobRegist.medium = Medium +comCopSmtDjm.deptJobRegist.low = Low +comCopSmtDjm.deptJobRegist.fileAttach = Attach file + +#EgovDeptJobBxListPopup.jsp +comCopSmtDjm.deptJobBxListPopup.title=Department Workbox List + +# EgovDeptJobBxList.jsp +comCopSmtDjm.deptJobBxList.title = Departmental Worklist +comCopSmtDjm.deptJobBxList.userNm = username + +# EgovChargerList.jsp +comCopSmtDjm.chargerList.title = View contact list +comCopSmtDjm.chargerList.chargerSelect = Select Contact +comCopSmtDjm.chargerList.deptNm = Department name +comCopSmtDjm.chargerList.emplyrNm = Employee name +comCopSmtDjm.chargerList.ofcpsNm = Position +comCopSmtDjm.chargerList.emplNo = employer Number + +#EgovDeptJobDetail.jsp +comCopSmtDjm.deptJobDetail.title=View details of departmental work + +# EgovDeptJobUpdt.jsp +comCopSmtDjm.deptJobUpdt.title = Modify Department Jobs \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/djm/message_ko.properties b/src/main/resources/egovframework/message/com/cop/smt/djm/message_ko.properties new file mode 100644 index 00000000..10971a09 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/djm/message_ko.properties @@ -0,0 +1,77 @@ +#\ubd80\uc11c\uc5c5\ubb34\ud568\uad00\ub9ac +#EgovDeptJobBxList.jsp +comCopSmtDjm.deptJobBxList.title=\ubd80\uc11c\uc5c5\ubb34\ud568\uad00\ub9ac \ubaa9\ub85d\uc870\ud68c +comCopSmtDjm.deptJobBxList.indictOrdrChanged=\ub3d9\uc77c \ubd80\uc11c\uba85\ub0b4\uc5d0\uc11c \ubd80\uc11c\uc5c5\ubb34\ud568\uba85\uc758 \uc21c\uc11c\ub97c \ubcc0\uacbd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +comCopSmtDjm.deptJobBxList.searchCnd=\uc870\ud68c\uc870\uac74\uc744 \uc120\ud0dd\ud558\uc9c0 \uc54a\uc73c\uc168\uc2b5\ub2c8\ub2e4. +comCopSmtDjm.deptJobBxList.ordrCnd=\uc21c\uc11c\ub97c \uc218\uc815\ud560 \ubd80\uc11c\uc5c5\ubb34\ud568\uc744 \uc120\ud0dd\ud558\uc138\uc694. +comCopSmtDjm.deptJobBxList.deptNm=\ubd80\uc11c\uba85 +comCopSmtDjm.deptJobBxList.deptJobNm=\ubd80\uc11c\uc5c5\ubb34\ud568\uba85 +comCopSmtDjm.deptJobBxList.deptJobBxManage=\ubd80\uc11c\uc5c5\ubb34\ud568\uad00\ub9ac +comCopSmtDjm.deptJobBxList.finalEditor=\ucd5c\uc885\uc218\uc815\uc790 +comCopSmtDjm.deptJobBxList.finalEditDate=\ucd5c\uc885\uc218\uc815\uc77c + +#EgovDeptJobRegist.jsp +comCopSmtDjm.deptJobRegist.title=\ubd80\uc11c\uc5c5\ubb34\ud568 \ub4f1\ub85d +comCopSmtDjm.deptJobRegist.deptJobBxNmDuplicated=\ubd80\uc11c\ub0b4 \uc911\ubcf5\ub41c \ubd80\uc11c\uc5c5\ubb34\ud568\uba85\uc774 \uc788\uc2b5\ub2c8\ub2e4. +comCopSmtDjm.deptJobRegist.intIndictOrdr=\ud45c\uc2dc\uc21c\uc11c\uc758 \uac12\uc744 1 \uc774\uc0c1\uc73c\ub85c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +comCopSmtDjm.deptJobRegist.deptIndictOrdr=\ud574\ub2f9 \ubd80\uc11c\uc758 \ubd80\uc11c\uc5c5\ubb34\ud568 \ud45c\uc2dc\uc21c\uc11c\uc758 \ucd5c\ub300 \uac12\uc740 +comCopSmtDjm.deptJobRegist.deptIndictOrdrCause=\uc774\ubbc0\ub85c +comCopSmtDjm.deptJobRegist.deptIndictOrdrInput=\uc774\ud558\ub85c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +comCopSmtDjm.deptJobRegist.deptNm=\ubd80\uc11c +comCopSmtDjm.deptJobRegist.deptJobBxNm=\ubd80\uc11c\uc5c5\ubb34\ud568\uba85 +comCopSmtDjm.deptJobRegist.indictOrdr=\ud45c\uc2dc\uc21c\uc11c + +#EgovDeptListPopup.jsp +comCopSmtDjm.deptListPopup.title=\ubd80\uc11c \ubaa9\ub85d + +#EgovDeptList.jsp +comCopSmtDjm.deptList.title=\ubd80\uc11c \ubaa9\ub85d\uc870\ud68c +comCopSmtDjm.deptList.deptSelect=\ubd80\uc11c \uc120\ud0dd +comCopSmtDjm.deptList.deptExplain=\ubd80\uc11c\uc124\uba85 + +#EgovDeptJobBxUpdt.jsp +comCopSmtDjm.deptJobBxUpdt.title=\ubd80\uc11c\uc5c5\ubb34\ud568\uc218\uc815 + +#EgovDeptJobList.jsp +comCopSmtDjm.deptJobList.title=\ubd80\uc11c\uc5c5\ubb34 \ubaa9\ub85d +comCopSmtDjm.deptJobList.subject=\uc81c\ubaa9 +comCopSmtDjm.deptJobList.content=\ub0b4\uc6a9 +comCopSmtDjm.deptJobList.charger=\ub2f4\ub2f9\uc790 +comCopSmtDjm.deptJobList.summary=\ubd80\uc11c\uc5c5\ubb34\ud568\uc5d0 \ub300\ud55c \ubaa9\ub85d\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. +comCopSmtDjm.deptJobList.writerDate=\uc791\uc131\uc77c + +#EgovDeptJob.xml +comCopSmtDjm.deptJobVO.validate.deptNm=\ubd80\uc11c +comCopSmtDjm.deptJobVO.validate.deptJobBxNm=\ubd80\uc11c\uc5c5\ubb34\ud568\uba85 +comCopSmtDjm.deptJobVO.validate.deptJobNm=\ubd80\uc11c\uc5c5\ubb34\uba85 +comCopSmtDjm.deptJobVO.validate.deptJobCn=\ubd80\uc11c\uc5c5\ubb34\ub0b4\uc6a9 +comCopSmtDjm.deptJobVO.validate.chargerNm=\uc5c5\ubb34\ub2f4\ub2f9\uc790 +comCopSmtDjm.deptJobVO.validate.priort=\uc6b0\uc120\uc21c\uc704 + +#EgovDeptJobRegist.jsp +comCopSmtDjm.deptJobRegist.title=\ubd80\uc11c\uc5c5\ubb34 \ub4f1\ub85d +comCopSmtDjm.deptJobRegist.high=\ub192\uc74c +comCopSmtDjm.deptJobRegist.medium=\ubcf4\ud1b5 +comCopSmtDjm.deptJobRegist.low=\ub0ae\uc74c +comCopSmtDjm.deptJobRegist.fileAttach=\ud30c\uc77c\ucca8\ubd80 + +#EgovDeptJobBxListPopup.jsp +comCopSmtDjm.deptJobBxListPopup.title=\ubd80\uc11c\uc5c5\ubb34\ud568 \ubaa9\ub85d + +#EgovDeptJobBxList.jsp +comCopSmtDjm.deptJobBxList.title=\ubd80\uc11c\uc5c5\ubb34\ud568 \ubaa9\ub85d +comCopSmtDjm.deptJobBxList.userNm=\uc0ac\uc6a9\uc790 \uba85 + +#EgovChargerList.jsp +comCopSmtDjm.chargerList.title=\ub2f4\ub2f9\uc790 \ubaa9\ub85d\uc870\ud68c +comCopSmtDjm.chargerList.chargerSelect=\ub2f4\ub2f9\uc790 \uc120\ud0dd +comCopSmtDjm.chargerList.deptNm=\ubd80\uc11c\uba85 +comCopSmtDjm.chargerList.emplyrNm=\uc0ac\uc6d0\uba85 +comCopSmtDjm.chargerList.ofcpsNm=\uc9c1\uc704 +comCopSmtDjm.chargerList.emplNo=\uc0ac\ubc88 + +#EgovDeptJobDetail.jsp +comCopSmtDjm.deptJobDetail.title=\ubd80\uc11c\uc5c5\ubb34 \uc0c1\uc138\ubcf4\uae30 + +#EgovDeptJobUpdt.jsp +comCopSmtDjm.deptJobUpdt.title=\ubd80\uc11c\uc5c5\ubb34 \uc218\uc815 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/dsm/message_en.properties b/src/main/resources/egovframework/message/com/cop/smt/dsm/message_en.properties new file mode 100644 index 00000000..149d62dc --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/dsm/message_en.properties @@ -0,0 +1,20 @@ +#Diary management Message# +comCopSmtDsm.title=Diary Management + +comCopSmtDsm.searchCondition.diaryNm=Diary Title +comCopSmtDsm.searchCondition.drctMatter=Instructions +comCopSmtDsm.searchCondition.partclrMatter=Speciality +comCopSmtDsm.searchCondition.schdulId=Schedule ID + +comCopSmtDsm.list.diaryNm=Diary Title +comCopSmtDsm.list.diaryProcsPte=The Rate of Progress + +comCopSmtDsm.regist.schdulCn=Schedule Information +comCopSmtDsm.regist.diaryNm=Diary Title +comCopSmtDsm.regist.drctMatter=Instructions +comCopSmtDsm.regist.partclrMatter=Speciality +comCopSmtDsm.regist.diaryProcsPte=The Rate of Progress +comCopSmtDsm.regist.Atch=Attach file +comCopSmtDsm.regist.atchFileList=Attachment list + +comCopSmtDsm.registBtn.schdulCn=Search for Schedule \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/dsm/message_ko.properties b/src/main/resources/egovframework/message/com/cop/smt/dsm/message_ko.properties new file mode 100644 index 00000000..f8c5a1dd --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/dsm/message_ko.properties @@ -0,0 +1,20 @@ +#\uc77c\uc815\uad00\ub9ac Message# +comCopSmtDsm.title=\uc77c\uc9c0\uad00\ub9ac + +comCopSmtDsm.searchCondition.diaryNm=\uc77c\uc9c0\uba85 +comCopSmtDsm.searchCondition.drctMatter=\uc9c0\uc2dc\uc0ac\ud56d +comCopSmtDsm.searchCondition.partclrMatter=\ud2b9\uc774\uc0ac\ud56d +comCopSmtDsm.searchCondition.schdulId=\uc77c\uc815ID + +comCopSmtDsm.list.diaryNm=\uc77c\uc9c0\uba85 +comCopSmtDsm.list.diaryProcsPte=\uc9c4\ucc99\ub960 + +comCopSmtDsm.regist.schdulCn=\uc77c\uc9c0\uc815\ubcf4 +comCopSmtDsm.regist.diaryNm=\uc77c\uc9c0\uba85 +comCopSmtDsm.regist.drctMatter=\uc9c0\uc2dc\uc0ac\ud56d +comCopSmtDsm.regist.partclrMatter=\ud2b9\uc774\uc0ac\ud56d +comCopSmtDsm.regist.diaryProcsPte=\uc9c4\ucc99\ub960 +comCopSmtDsm.regist.Atch=\ud30c\uc77c \ucca8\ubd80 +comCopSmtDsm.regist.atchFileList=\ucca8\ubd80\ud30c\uc77c \ubaa9\ub85d + +comCopSmtDsm.registBtn.schdulCn=\uc77c\uc9c0\uc815\ubcf4\ucc3e\uae30 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/lsm/message_en.properties b/src/main/resources/egovframework/message/com/cop/smt/lsm/message_en.properties new file mode 100644 index 00000000..62d48680 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/lsm/message_en.properties @@ -0,0 +1,82 @@ +#\uac04\ubd80\uc77c\uc815\uad00\ub9ac +#EgovLeaderSchdul.xml +comCopSmtLsm.leaderSchdul.validate.schdulSe = Classification +comCopSmtLsm.leaderSchdul.validate.schdulNm = Schedule name +comCopSmtLsm.leaderSchdul.validate.schdulCn = Schedule contents +comCopSmtLsm.leaderSchdul.validate.schdulBgndeYYYMMDD = Calendar Start Date +comCopSmtLsm.leaderSchdul.validate.schdulEnddeYYYMMDD = Calendar end date +comCopSmtLsm.leaderSchdul.validate.schdulBgndeHH = Calendar Start (hour) +comCopSmtLsm.leaderSchdul.validate.schdulBgndeMM = Schedule start (minutes) +comCopSmtLsm.leaderSchdul.validate.schdulEnddeHH = Calendar End (hour) +comCopSmtLsm.leaderSchdul.validate.schdulEnddeMM = Schedule end (minutes) +comCopSmtLsm.leaderSchdul.validate.leaderName =Executive +comCopSmtLsm.leaderSchdul.validate.schdulChargerName = Contact Person + +# EgovLeaderSttus.xml +comCopSmtLsm.leaderSchdul.validate.leaderNm = Executive +comCopSmtLsm.leaderSchdul.validate.leaderSttus = Executive status + +# EgovLeaderSchdulList.jsp +comCopSmtLsm.leaderSchdulList.title = Executive Calendar List +comCopSmtLsm.leaderSchdulList.title.selectLeaderSchdulMonthList = View Monthly Calendar +comCopSmtLsm.leaderSchdulList.title.selectLeaderSchdulWeekList = View Weekly Calendar +comCopSmtLsm.leaderSchdulList.title.selectLeaderSchdulDailyList = View Day's Calendar + +# EgovLeaderSchdulMonthList.jsp +comCopSmtLsm.leaderSchdulMonthList.title = View the monthly executive calendar +comCopSmtLsm.leaderSchdulMonthList.list = Monthly Executive Calendar List +comCopSmtLsm.leaderSchdulMonthList.year = Year +comCopSmtLsm.leaderSchdulMonthList.month = Month +comCopSmtLsm.leaderSchdulMonthList.mon = Mon +comCopSmtLsm.leaderSchdulMonthList.tue = Tues +comCopSmtLsm.leaderSchdulMonthList.wed = Wednes +comCopSmtLsm.leaderSchdulMonthList.thu = Thurs +comCopSmtLsm.leaderSchdulMonthList.fri = Fri +comCopSmtLsm.leaderSchdulMonthList.sat = Satur +comCopSmtLsm.leaderSchdulMonthList.sun = Sun + +#EgovLeaderSchdulDetail.jsp +comCopSmtLsm.leaderSchdulDetail.title = Detailed management of executive calendar +comCopSmtLsm.leaderSchdulDetail.schdulPlace = Schedule location +comCopSmtLsm.leaderSchdulDetail.reptitSeCode = Repeat Separation +comCopSmtLsm.leaderSchdulDetail.datetime = Date / Time +comCopSmtLsm.leaderSchdulDetail.hour = hour +comCopSmtLsm.leaderSchdulDetail.minute = minutes + + +# EgovLeaderSchdulModify.jsp +comCopSmtLsm.leaderSchdulModify.title = Update Executive Calendar +comCopSmtLsm.leaderSchdulModify.noRepeat = No repeat +comCopSmtLsm.leaderSchdulModify.everyday = Daily +comCopSmtLsm.leaderSchdulModify.everyweek = Weekly +comCopSmtLsm.leaderSchdulModify.everymonth = Monthly +comCopSmtLsm.leaderSchdulModify.validate.timeCompare = The minute can not be earlier than the minute at the start of the schedule. +comCopSmtLsm.leaderSchdulModify.validate.dayCompare = The schedule end date and time can not be earlier than the schedule start date and time. + +# EgovLeaderSchdulRegist.jsp +comCopSmtLsm.leaderSchdulRegist.title = Register for Executive Calendar Management + +# EgovEmplyrList.jsp +comCopSmtLsm.emplyrList.title = View user list +comCopSmtLsm.emplyrList.dept = Department name +comCopSmtLsm.emplyrList.employrName = Employee name +comCopSmtLsm.emplyrList.leaderName = Manage exec +comCopSmtLsm.emplyrList.no = number +comCopSmtLsm.emplyrList.orgnztNm = Department +comCopSmtLsm.emplyrList.ofcpsNm = Position +comCopSmtLsm.emplyrList.emplNo = Squad +comCopSmtLsm.emplyrList.emplyrNm = Employee name + +# EgovLeaderSchdulWeekList.jsp +comCopSmtLsm.leaderSchdulWeekList.day = +comCopSmtLsm.leaderSchdulWeekList.search = View weekly executive calendar +comCopSmtLsm.leaderSchdulWeekList.week = week +comCopSmtLsm.leaderSchdulWeekList.list = List of weekly executive agenda +comCopSmtLsm.leaderSchdulWeekList.summary = This table provides a list of weekly executive schedules, consisting of date, time, calendar name, and executive information. +comCopSmtLsm.leaderSchdulWeekList.date = date +comCopSmtLsm.leaderSchdulWeekList.time = Time + +# EgovLeaderSchdulDailyList.jsp +comCopSmtLsm.leaderSchdulDailyList.title = View the daily executive calendar +comCopSmtLsm.leaderSchdulDailyList.list = List of daily executive agenda +comCopSmtLsm.leaderSchdulDailyList.summary = This table provides a list of daily executive schedules and consists of time, schedule name, and executive information. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/lsm/message_ko.properties b/src/main/resources/egovframework/message/com/cop/smt/lsm/message_ko.properties new file mode 100644 index 00000000..a03c2bf2 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/lsm/message_ko.properties @@ -0,0 +1,81 @@ +#\uac04\ubd80\uc77c\uc815\uad00\ub9ac +#EgovLeaderSchdul.xml +comCopSmtLsm.leaderSchdul.validate.schdulSe=\uc77c\uc815\uad6c\ubd84 +comCopSmtLsm.leaderSchdul.validate.schdulNm=\uc77c\uc815\uba85 +comCopSmtLsm.leaderSchdul.validate.schdulCn=\uc77c\uc815\ub0b4\uc6a9 +comCopSmtLsm.leaderSchdul.validate.schdulBgndeYYYMMDD=\uc77c\uc815\uc2dc\uc791\uc77c\uc790 +comCopSmtLsm.leaderSchdul.validate.schdulEnddeYYYMMDD=\uc77c\uc815\uc885\ub8cc\uc77c\uc790 +comCopSmtLsm.leaderSchdul.validate.schdulBgndeHH=\uc77c\uc815\uc2dc\uc791(\uc2dc) +comCopSmtLsm.leaderSchdul.validate.schdulBgndeMM=\uc77c\uc815\uc2dc\uc791(\ubd84) +comCopSmtLsm.leaderSchdul.validate.schdulEnddeHH=\uc77c\uc815\uc885\ub8cc(\uc2dc) +comCopSmtLsm.leaderSchdul.validate.schdulEnddeMM=\uc77c\uc815\uc885\ub8cc(\ubd84) +comCopSmtLsm.leaderSchdul.validate.leaderName=\uac04\ubd80\uba85 +comCopSmtLsm.leaderSchdul.validate.schdulChargerName=\ub2f4\ub2f9\uc790 + +#EgovLeaderSttus.xml +comCopSmtLsm.leaderSchdul.validate.leaderNm=\uac04\ubd80 +comCopSmtLsm.leaderSchdul.validate.leaderSttus=\uac04\ubd80\uc0c1\ud0dc + +#EgovLeaderSchdulList.jsp +comCopSmtLsm.leaderSchdulList.title=\uac04\ubd80\uc77c\uc815\uad00\ub9ac \ubaa9\ub85d +comCopSmtLsm.leaderSchdulList.title.selectLeaderSchdulMonthList=\uc6d4\ubcc4\uc77c\uc815\ubcf4\uae30 +comCopSmtLsm.leaderSchdulList.title.selectLeaderSchdulWeekList=\uc8fc\uac04\ubcc4\uc77c\uc815\ubcf4\uae30 +comCopSmtLsm.leaderSchdulList.title.selectLeaderSchdulDailyList=\uc77c\ubcc4\uc77c\uc815\ubcf4\uae30 + +#EgovLeaderSchdulMonthList.jsp +comCopSmtLsm.leaderSchdulMonthList.title=\uc6d4\ubcc4 \uac04\ubd80\uc77c\uc815 \uc870\ud68c +comCopSmtLsm.leaderSchdulMonthList.list=\uc6d4\ubcc4\uac04\ubd80\uc77c\uc815\ubaa9\ub85d +comCopSmtLsm.leaderSchdulMonthList.year=\ub144 +comCopSmtLsm.leaderSchdulMonthList.month=\uc6d4 +comCopSmtLsm.leaderSchdulMonthList.mon=\uc6d4 +comCopSmtLsm.leaderSchdulMonthList.tue=\ud654 +comCopSmtLsm.leaderSchdulMonthList.wed=\uc218 +comCopSmtLsm.leaderSchdulMonthList.thu=\ubaa9 +comCopSmtLsm.leaderSchdulMonthList.fri=\uae08 +comCopSmtLsm.leaderSchdulMonthList.sat=\ud1a0 +comCopSmtLsm.leaderSchdulMonthList.sun=\uc77c + +#EgovLeaderSchdulDetail.jsp +comCopSmtLsm.leaderSchdulDetail.title=\uac04\ubd80\uc77c\uc815\uad00\ub9ac \uc0c1\uc138\ubcf4\uae30 +comCopSmtLsm.leaderSchdulDetail.schdulPlace=\uc77c\uc815\uc7a5\uc18c +comCopSmtLsm.leaderSchdulDetail.reptitSeCode=\ubc18\ubcf5\uad6c\ubd84 +comCopSmtLsm.leaderSchdulDetail.datetime=\ub0a0\uc9dc/\uc2dc\uac04 +comCopSmtLsm.leaderSchdulDetail.hour=\uc2dc +comCopSmtLsm.leaderSchdulDetail.minute=\ubd84 + +#EgovLeaderSchdulModify.jsp +comCopSmtLsm.leaderSchdulModify.title=\uac04\ubd80\uc77c\uc815\uad00\ub9ac \uc218\uc815 +comCopSmtLsm.leaderSchdulModify.noRepeat=\ubc18\ubcf5\uc5c6\uc74c +comCopSmtLsm.leaderSchdulModify.everyday=\ub9e4\uc77c +comCopSmtLsm.leaderSchdulModify.everyweek=\ub9e4\uc8fc +comCopSmtLsm.leaderSchdulModify.everymonth=\ub9e4\uc6d4 +comCopSmtLsm.leaderSchdulModify.validate.timeCompare=\uc77c\uc815 \uc885\ub8cc \uc2dc \ubd84\uc774 \uc77c\uc815 \uc2dc\uc791 \uc2dc \ubd84\ubcf4\ub2e4 \ube60\ub97c\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSmtLsm.leaderSchdulModify.validate.dayCompare=\uc77c\uc815 \uc885\ub8cc \uc77c\uc2dc\uac00 \uc77c\uc815 \uc2dc\uc791 \uc77c\uc2dc\ubcf4\ub2e4 \ube60\ub97c\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +#EgovLeaderSchdulRegist.jsp +comCopSmtLsm.leaderSchdulRegist.title=\uac04\ubd80\uc77c\uc815\uad00\ub9ac \ub4f1\ub85d + +#EgovEmplyrList.jsp +comCopSmtLsm.emplyrList.title=\uc0ac\uc6a9\uc790 \ubaa9\ub85d\uc870\ud68c +comCopSmtLsm.emplyrList.dept=\ubd80\uc11c\uba85 +comCopSmtLsm.emplyrList.employrName=\uc0ac\uc6d0\uba85 +comCopSmtLsm.emplyrList.leaderName=\uac04\ubd80 \uad00\ub9ac +comCopSmtLsm.emplyrList.no=\ubc88\ud638 +comCopSmtLsm.emplyrList.orgnztNm=\ubd80\uc11c +comCopSmtLsm.emplyrList.ofcpsNm=\uc9c1\uc704 +comCopSmtLsm.emplyrList.emplNo=\uc0ac\ubc88 +comCopSmtLsm.emplyrList.emplyrNm=\uc0ac\uc6d0\uba85 + +#EgovLeaderSchdulWeekList.jsp +comCopSmtLsm.leaderSchdulWeekList.day=\uc694\uc77c +comCopSmtLsm.leaderSchdulWeekList.search=\uc8fc\ubcc4 \uac04\ubd80\uc77c\uc815 \uc870\ud68c +comCopSmtLsm.leaderSchdulWeekList.week=\uc8fc +comCopSmtLsm.leaderSchdulWeekList.list=\uc8fc\ubcc4 \uac04\ubd80\uc77c\uc815 \ubaa9\ub85d +comCopSmtLsm.leaderSchdulWeekList.summary=\uc774 \ud45c\ub294 \uc8fc\ubcc4 \uac04\ubd80\uc77c\uc815 \ubaa9\ub85d\uc744 \uc81c\uacf5\ud558\uba70, \ub0a0\uc9dc, \uc2dc\uac04, \uc77c\uc815\uba85, \uac04\ubd80 \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. +comCopSmtLsm.leaderSchdulWeekList.date=\ub0a0\uc9dc +comCopSmtLsm.leaderSchdulWeekList.time=\uc2dc\uac04 + +#EgovLeaderSchdulDailyList.jsp +comCopSmtLsm.leaderSchdulDailyList.title=\uc77c\ubcc4 \uac04\ubd80\uc77c\uc815 \uc870\ud68c +comCopSmtLsm.leaderSchdulDailyList.list=\uc77c\ubcc4\uac04\ubd80\uc77c\uc815\ubaa9\ub85d +comCopSmtLsm.leaderSchdulDailyList.summary=\uc774\ud45c\ub294 \uc77c\ubcc4 \uac04\ubd80\uc77c\uc815 \ubaa9\ub85d\uc744 \uc81c\uacf5\ud558\uba70, \uc2dc\uac04, \uc77c\uc815\uba85, \uac04\ubd80 \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. diff --git a/src/main/resources/egovframework/message/com/cop/smt/mrm/message_en.properties b/src/main/resources/egovframework/message/com/cop/smt/mrm/message_en.properties new file mode 100644 index 00000000..3c32a9e5 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/mrm/message_en.properties @@ -0,0 +1,50 @@ +# Manage notes reporting +# EgovMemoReprt.xml +comCopSmtMrm.memoReprtVO.validate.reprtSj = Report title +comCopSmtMrm.memoReprtVO.validate.reprtDe = Date reported +comCopSmtMrm.memoReprtVO.validate.wrterNm = Author Name +comCopSmtMrm.memoReprtVO.validate.reportrNm = Reporter +comCopSmtMrm.memoReprtVO.validate.reprtCn=Report Content + +# EgovMemoReprtList.jsp +comCopSmtMrm.memoReprtList.title = View note report list +comCopSmtMrm.memoReprtList.select = Select approval status +comCopSmtMrm.memoReprtList.searchSttus = Report Status +comCopSmtMrm.memoReprtList.searchSttus0 = Unidentified +comCopSmtMrm.memoReprtList.searchSttus1 = identified +comCopSmtMrm.memoReprtList.reportDate = Date reported +comCopSmtMrm.memoReprtList.searchBgnDe = Enter View Start Date +comCopSmtMrm.memoReprtList.searchEndDe = Enter View End Date +comCopSmtMrm.memoReprtList.searchDrctMatterYN = Feedback +comCopSmtMrm.memoReprtList.searchDrctMatter0 = Unregistered +comCopSmtMrm.memoReprtList.searchDrctMatter1 = Register +comCopSmtMrm.memoReprtList.searchCnd = Select query criteria +comCopSmtMrm.memoReprtList.searchCnd0 = Report title +comCopSmtMrm.memoReprtList.searchCnd1 = Report content +comCopSmtMrm.memoReprtList.searchCnd2 = Author +comCopSmtMrm.memoReprtList.searchDrctMatter = Feedback + +# EgovMemoReprtRegist.jsp +comCopSmtMrm.memoReprtRegist.title = Register for Comment Reporting +comCopSmtMrm.memoReprtRegist.reprtCn.reportrNm = Reporter is required. +comCopSmtMrm.memoReprtRegist.reprtCn.reprtSj = Report title is required. +comCopSmtMrm.memoReprtRegist.reprtCn.essential = Report content is required. +comCopSmtMrm.memoReprtRegist.reprtCn = Report content +comCopSmtMrm.memoReprtRegist.attachFile = Attach file + +# EgovMemoReprtDetail.jsp +comCopSmtMrm.memoReprtDetail.title = View Notes Detail View +comCopSmtMrm.memoReprtDetail.memoreprt.confirm = Would you like to comment? +comCopSmtMrm.memoReprtDetail.memoreprt = Feedback +comCopSmtMrm.memoReprtDetail.drctMatter = Comments / Instructions + +#EgovMemoReprtUpdt.jsp +comCopSmtMrm.memoReprtUpdt.title = Edit note reporting + +# EgovReportrList.jsp +comCopSmtMrm.reportrList.title = View list of people to view +comCopSmtMrm.reportrList.select = Select who to view +comCopSmtMrm.reportrList.orgnztNm = Department +comCopSmtMrm.reportrList.ofcpsNm = Position +comCopSmtMrm.reportrList.emplNo = Saved +comCopSmtMrm.reportrList.emplyrNm = Employee name diff --git a/src/main/resources/egovframework/message/com/cop/smt/mrm/message_ko.properties b/src/main/resources/egovframework/message/com/cop/smt/mrm/message_ko.properties new file mode 100644 index 00000000..d0320fe7 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/mrm/message_ko.properties @@ -0,0 +1,50 @@ +#\uba54\ubaa8\ubcf4\uace0\uad00\ub9ac +#EgovMemoReprt.xml +comCopSmtMrm.memoReprtVO.validate.reprtSj=\ubcf4\uace0\uc11c\uc81c\ubaa9 +comCopSmtMrm.memoReprtVO.validate.reprtDe=\ubcf4\uace0\uc77c\uc790 +comCopSmtMrm.memoReprtVO.validate.wrterNm=\uc791\uc131\uc790\uba85 +comCopSmtMrm.memoReprtVO.validate.reportrNm=\ubcf4\uace0\ub300\uc0c1\uc790 +comCopSmtMrm.memoReprtVO.validate.reprtCn=\ubcf4\uace0\ub0b4\uc6a9 + +#EgovMemoReprtList.jsp +comCopSmtMrm.memoReprtList.title=\uba54\ubaa8\ubcf4\uace0 \ubaa9\ub85d\uc870\ud68c +comCopSmtMrm.memoReprtList.select=\uc2b9\uc778\uc5ec\ubd80 \uc120\ud0dd +comCopSmtMrm.memoReprtList.searchSttus=\ubcf4\uace0\uc11c\uc0c1\ud0dc +comCopSmtMrm.memoReprtList.searchSttus0=\ubbf8\ud655\uc778 +comCopSmtMrm.memoReprtList.searchSttus1=\ud655\uc778 +comCopSmtMrm.memoReprtList.reportDate=\ubcf4\uace0\uc77c\uc790 +comCopSmtMrm.memoReprtList.searchBgnDe=\uc870\ud68c\uc2dc\uc791\uc77c\uc790 \uc785\ub825 +comCopSmtMrm.memoReprtList.searchEndDe=\uc870\ud68c\uc885\ub8cc\uc77c\uc790 \uc785\ub825 +comCopSmtMrm.memoReprtList.searchDrctMatterYN=\uc758\uacac\ub4f1\ub85d\uc5ec\ubd80 +comCopSmtMrm.memoReprtList.searchDrctMatter0=\ubbf8\ub4f1\ub85d +comCopSmtMrm.memoReprtList.searchDrctMatter1=\ub4f1\ub85d +comCopSmtMrm.memoReprtList.searchCnd=\uc870\ud68c\uc870\uac74 \uc120\ud0dd +comCopSmtMrm.memoReprtList.searchCnd0=\ubcf4\uace0\uc81c\ubaa9 +comCopSmtMrm.memoReprtList.searchCnd1=\ubcf4\uace0\ub0b4\uc6a9 +comCopSmtMrm.memoReprtList.searchCnd2=\uc791\uc131\uc790 +comCopSmtMrm.memoReprtList.searchDrctMatter=\uc758\uacac + +#EgovMemoReprtRegist.jsp +comCopSmtMrm.memoReprtRegist.title=\uba54\ubaa8\ubcf4\uace0 \ub4f1\ub85d +comCopSmtMrm.memoReprtRegist.reprtCn.reportrNm=\ubcf4\uace0\ub300\uc0c1\uc790\ub294 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comCopSmtMrm.memoReprtRegist.reprtCn.reprtSj=\ubcf4\uace0\uc11c\uc81c\ubaa9\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comCopSmtMrm.memoReprtRegist.reprtCn.essential=\ubcf4\uace0\ub0b4\uc6a9\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comCopSmtMrm.memoReprtRegist.reprtCn=\ubcf4\uace0\ub0b4\uc6a9 +comCopSmtMrm.memoReprtRegist.attachFile=\ud30c\uc77c\ucca8\ubd80 + +#EgovMemoReprtDetail.jsp +comCopSmtMrm.memoReprtDetail.title=\uba54\ubaa8\ubcf4\uace0 \uc0c1\uc138\ubcf4\uae30 +comCopSmtMrm.memoReprtDetail.memoreprt.confirm=\uc758\uacac\ub4f1\ub85d\uc744 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comCopSmtMrm.memoReprtDetail.memoreprt=\uc758\uacac\ub4f1\ub85d +comCopSmtMrm.memoReprtDetail.drctMatter=\uc758\uacac/\uc9c0\uc2dc\uc0ac\ud56d + +#EgovMemoReprtUpdt.jsp +comCopSmtMrm.memoReprtUpdt.title=\uba54\ubaa8\ubcf4\uace0 \uc218\uc815 + +#EgovReportrList.jsp +comCopSmtMrm.reportrList.title=\ubcf4\uace0\ub300\uc0c1\uc790 \ubaa9\ub85d\uc870\ud68c +comCopSmtMrm.reportrList.select=\ubcf4\uace0\ub300\uc0c1\uc790 \uc120\ud0dd +comCopSmtMrm.reportrList.orgnztNm=\ubd80\uc11c +comCopSmtMrm.reportrList.ofcpsNm=\uc9c1\uc704 +comCopSmtMrm.reportrList.emplNo=\uc0ac\ubc88 +comCopSmtMrm.reportrList.emplyrNm=\uc0ac\uc6d0\uba85 diff --git a/src/main/resources/egovframework/message/com/cop/smt/mtm/message_en.properties b/src/main/resources/egovframework/message/com/cop/smt/mtm/message_en.properties new file mode 100644 index 00000000..9ac004cb --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/mtm/message_en.properties @@ -0,0 +1,46 @@ +# Manage notes +# EgovMemoTodo.xml +comCopSmtMtm.memoToDo.validate.todoNm = To do title +comCopSmtMtm.memoToDo.validate.todoDe = Date of task +comCopSmtMtm.memoToDo.validate.todoBeginHour = Do's start (at) +comCopSmtMtm.memoToDo.validate.todoBeginMin = Start day (in minutes) +comCopSmtMtm.memoToDo.validate.todoEndHour = End Task (at) +comCopSmtMtm.memoToDo.validate.todoEndMin = End Task Days (minutes) +comCopSmtMtm.memoToDo.validate.wrterNm = Author Name +comCopSmtMtm.memoToDo.validate.todoCn = What to do + +# EgovMemoTodoList.jsp +comCopSmtMtm.memoTodoList.title = View your to-do list +comCopSmtMtm.memoTodoList.bgnDe = Search start date +comCopSmtMtm.memoTodoList.endDe = Search end date +comCopSmtMtm.memoTodoList.searchBgnDe = Enter View Start Date +comCopSmtMtm.memoTodoList.searchEndDe = Enter View End Date +comCopSmtMtm.memoTodoList.bgnDeEvalEndDe = The search end date can not be earlier than the search start date. +comCopSmtMtm.memoTodoList.searchDeVal = Please select date lookup. +comCopSmtMtm.memoTodoList.searchbgnDeVal = Please enter search start date. +comCopSmtMtm.memoTodoList.searchEndDeVal = Please enter the search end date. +comCopSmtMtm.memoTodoList.aearchCndVal = Please select a task condition. +comCopSmtMtm.memoTodoList.searchDe = Select date lookup +comCopSmtMtm.memoTodoList.searchDe0 = Date of task +comCopSmtMtm.memoTodoList.searchDe1 = Date created +comCopSmtMtm.memoTodoList.searchCnd = To-do condition +comCopSmtMtm.memoTodoList.searchCnd0 = To do title +comCopSmtMtm.memoTodoList.searchCnd1 = What to do +comCopSmtMtm.memoTodoList.toDoListToday = Today +comCopSmtMtm.memoTodoList.frstRegisterPnttm = Date created + +# EgovMemoTodoListToday.jsp +comCopSmtMtm.memoTodoListToday.title = View today's todo list +comCopSmtMtm.memoTodoListToday.allList = Full list + +# EgovMemoTodoRegist.jsp +comCopSmtMtm.memoTodoRegist.title = Register your note to do +comCopSmtMtm.memoTodoRegist.todoHourMin = Can not be less than minutes at the beginning of the task. + +# EgovMemoTodoDetail.jsp +comCopSmtMtm.memoTodoDetail.title = Show details of notes + +# EgovMemoTodoUpdt.jsp +comCopSmtMtm.memoTodoUpdt.title = Edit Notes +comCopSmtMtm.memoTodoUpdt.hour = hours +comCopSmtMtm.memoTodoUpdt.minutes = minutes \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/mtm/message_ko.properties b/src/main/resources/egovframework/message/com/cop/smt/mtm/message_ko.properties new file mode 100644 index 00000000..8dee0b50 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/mtm/message_ko.properties @@ -0,0 +1,46 @@ +#\uba54\ubaa8\ud560\uc77c\uad00\ub9ac +#EgovMemoTodo.xml +comCopSmtMtm.memoToDo.validate.todoNm=\ud560\uc77c\uc81c\ubaa9 +comCopSmtMtm.memoToDo.validate.todoDe=\ud560\uc77c\uc77c\uc790 +comCopSmtMtm.memoToDo.validate.todoBeginHour=\ud560\uc77c\uc2dc\uc791(\uc2dc) +comCopSmtMtm.memoToDo.validate.todoBeginMin=\ud560\uc77c\uc2dc\uc791(\ubd84) +comCopSmtMtm.memoToDo.validate.todoEndHour=\ud560\uc77c\uc885\ub8cc(\uc2dc) +comCopSmtMtm.memoToDo.validate.todoEndMin=\ud560\uc77c\uc885\ub8cc(\ubd84) +comCopSmtMtm.memoToDo.validate.wrterNm=\uc791\uc131\uc790\uba85 +comCopSmtMtm.memoToDo.validate.todoCn=\ud560\uc77c\ub0b4\uc6a9 + +#EgovMemoTodoList.jsp +comCopSmtMtm.memoTodoList.title=\uba54\ubaa8\ud560\uc77c \ubaa9\ub85d\uc870\ud68c +comCopSmtMtm.memoTodoList.bgnDe=\uac80\uc0c9\uc2dc\uc791\uc77c\uc790 +comCopSmtMtm.memoTodoList.endDe=\uac80\uc0c9\uc885\ub8cc\uc77c\uc790 +comCopSmtMtm.memoTodoList.searchBgnDe=\uc870\ud68c\uc2dc\uc791\uc77c\uc790 \uc785\ub825 +comCopSmtMtm.memoTodoList.searchEndDe=\uc870\ud68c\uc885\ub8cc\uc77c\uc790 \uc785\ub825 +comCopSmtMtm.memoTodoList.bgnDeEvalEndDe=\uac80\uc0c9\uc885\ub8cc\uc77c\uc790\uac00 \uac80\uc0c9\uc2dc\uc791\uc77c\uc790\ubcf4\ub2e4 \ube60\ub97c\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSmtMtm.memoTodoList.searchDeVal=\uc77c\uc790\uc870\ud68c\ub97c \uc120\ud0dd\ud558\uc138\uc694. +comCopSmtMtm.memoTodoList.searchbgnDeVal=\uac80\uc0c9\uc2dc\uc791\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694. +comCopSmtMtm.memoTodoList.searchEndDeVal=\uac80\uc0c9\uc885\ub8cc\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694. +comCopSmtMtm.memoTodoList.aearchCndVal=\ud560\uc77c\uc870\uac74\uc744 \uc120\ud0dd\ud558\uc138\uc694. +comCopSmtMtm.memoTodoList.searchDe=\uc77c\uc790\uc870\ud68c\uc120\ud0dd +comCopSmtMtm.memoTodoList.searchDe0=\ud560\uc77c\uc77c\uc790 +comCopSmtMtm.memoTodoList.searchDe1=\uc791\uc131\uc77c\uc790 +comCopSmtMtm.memoTodoList.searchCnd=\ud560\uc77c\uc870\uac74 +comCopSmtMtm.memoTodoList.searchCnd0=\ud560\uc77c\uc81c\ubaa9 +comCopSmtMtm.memoTodoList.searchCnd1=\ud560\uc77c\ub0b4\uc6a9 +comCopSmtMtm.memoTodoList.toDoListToday=\uc624\ub298\uc758\ud560\uc77c +comCopSmtMtm.memoTodoList.frstRegisterPnttm=\uc791\uc131\uc77c\uc790 + +#EgovMemoTodoListToday.jsp +comCopSmtMtm.memoTodoListToday.title=\uc624\ub298\uc758 \ud560\uc77c \ubaa9\ub85d\uc870\ud68c +comCopSmtMtm.memoTodoListToday.allList=\uc804\uccb4\ubaa9\ub85d + +#EgovMemoTodoRegist.jsp +comCopSmtMtm.memoTodoRegist.title=\uba54\ubaa8\ud560\uc77c \ub4f1\ub85d +comCopSmtMtm.memoTodoRegist.todoHourMin=\ud560\uc77c\uc885\ub8cc\uc2dc\ubd84\uc774 \ud560\uc77c\uc2dc\uc791\uc2dc\ubd84\ubcf4\ub2e4 \ube60\ub97c\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +#EgovMemoTodoDetail.jsp +comCopSmtMtm.memoTodoDetail.title=\uba54\ubaa8\ud560\uc77c \uc0c1\uc138\ubcf4\uae30 + +#EgovMemoTodoUpdt.jsp +comCopSmtMtm.memoTodoUpdt.title=\uba54\ubaa8\ud560\uc77c \uc218\uc815 +comCopSmtMtm.memoTodoUpdt.hour=\uc2dc +comCopSmtMtm.memoTodoUpdt.minutes=\ubd84 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/sam/message_en.properties b/src/main/resources/egovframework/message/com/cop/smt/sam/message_en.properties new file mode 100644 index 00000000..fd3eaa1d --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/sam/message_en.properties @@ -0,0 +1,16 @@ +#\uc804\uccb4\uc77c\uc815\uad00\ub9ac Message# +comCopSmtSam.title=Master Schedule + +comCopSmtSam.searchCondition.schdulNm=Schedule Name +comCopSmtSam.searchCondition.schdulCn=Schedule Info + +comCopSmtSam.list.schdulKind=Schedule Type +comCopSmtSam.list.schdulNm=Schedule Title + +comCopSmtSam.registBtn.schdulCn=Search for Schedule +comCopSmtSam.regist.schdulCn=Schedule Info +comCopSmtSam.regist.diaryNm=Diary Title +comCopSmtSam.regist.drctMatter=Instructions +comCopSmtSam.regist.partclrMatter=Specialty +comCopSmtSam.regist.diaryProcsPte=The Rate of Progress +comCopSmtSam.regist.Atch=Attach files \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/sam/message_ko.properties b/src/main/resources/egovframework/message/com/cop/smt/sam/message_ko.properties new file mode 100644 index 00000000..9cc10eb9 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/sam/message_ko.properties @@ -0,0 +1,16 @@ +#\uc804\uccb4\uc77c\uc815\uad00\ub9ac Message# +comCopSmtSam.title=\uc804\uccb4\uc77c\uc815\uad00\ub9ac + +comCopSmtSam.searchCondition.schdulNm=\uc77c\uc815\uba85 +comCopSmtSam.searchCondition.schdulCn=\uc77c\uc815\ub0b4\uc6a9 + +comCopSmtSam.list.schdulKind=\uc77c\uc815\uad6c\ubd84 +comCopSmtSam.list.schdulNm=\uc77c\uc815\uba85 + +comCopSmtSam.registBtn.schdulCn=\uc77c\uc9c0\uc815\ubcf4\ucc3e\uae30 +comCopSmtSam.regist.schdulCn=\uc77c\uc9c0\uc815\ubcf4 +comCopSmtSam.regist.diaryNm=\uc77c\uc9c0\uba85 +comCopSmtSam.regist.drctMatter=\uc9c0\uc2dc\uc0ac\ud56d +comCopSmtSam.regist.partclrMatter=\ud2b9\uc774\uc0ac\ud56d +comCopSmtSam.regist.diaryProcsPte=\uce5c\ucc99\uc728 +comCopSmtSam.regist.Atch=\ucca8\ubd80\ud30c\uc77c \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/sdm/message_en.properties b/src/main/resources/egovframework/message/com/cop/smt/sdm/message_en.properties new file mode 100644 index 00000000..d012912b --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/sdm/message_en.properties @@ -0,0 +1,77 @@ +#Department Schedule Management Message# +comCopSmtSdm.title=Department Schedule Management + +comCopSmtSdm.Gbn.Monthly=Monthly +comCopSmtSdm.Gbn.Weekly=Weekly +comCopSmtSdm.Gbn.Daily=Daily + +comCopSmtSdm.Navi.Today=TODAY +comCopSmtSdm.Navi.Year=YEAR +comCopSmtSdm.Navi.Month=MONTH +comCopSmtSdm.Navi.Day=DAY +comCopSmtSdm.Navi.Week=WEEK + +comCopSmtSdm.Monthly.monday=Monday +comCopSmtSdm.Monthly.tuesday=Tuesday +comCopSmtSdm.Monthly.wednesday=Wednesday +comCopSmtSdm.Monthly.thursday=Thursday +comCopSmtSdm.Monthly.friday=Friday +comCopSmtSdm.Monthly.saturday=Saturday +comCopSmtSdm.Monthly.sunday=Sunday + +comCopSmtSdm.Weekly.date=DAY +comCopSmtSdm.Weekly.time=TIME +comCopSmtSdm.Weekly.title=Title +comCopSmtSdm.Weekly.chargeName=In Charge + +comCopSmtSdm.selectSchdulSe=Select Schedule Type +comCopSmtSdm.validate.alert.delete=Are you sure you want to delete? +comCopSmtSdm.validate.alert.diffBgndeEndde=Please select a date later than the start date. +comCopSmtSdm.goPrevMonth=Go to previous month +comCopSmtSdm.goNextMonth=Go to next month + +comCopSmtSdm.regist.schdulSe=Schedule Type +comCopSmtSdm.regist.schdulIpcrCode=Importance +comCopSmtSdm.regist.schdulDeptName=Department Title +comCopSmtSdm.regist.schdulNm=Schedule Name +comCopSmtSdm.regist.schdulCn=Schedule Content +comCopSmtSdm.regist.reptitSeCode=Repeat Type +comCopSmtSdm.regist.schdulSe1=Today +comCopSmtSdm.regist.schdulSe2=Repeat +comCopSmtSdm.regist.schdulSe3=Consecutively +comCopSmtSdm.regist.schdulDatetime=Date/Time +comCopSmtSdm.regist.schdulYYYY=Hours +comCopSmtSdm.regist.schdulMM=Minutes +comCopSmtSdm.regist.schdulChargerName=In Charge +comCopSmtSdm.regist.schdulAtch=Attach files + +comCopSmtSdm.btn.diaryManage=Diary Management + +#Department Schedule Management List Popup Message# +comCopSmtSdm.popup.title=Department Schedule Management Popup List + +comCopSmtSdm.popupSearchCondition.diaryNm=Diary Title + +comCopSmtSdm.popupListValidate.searchKeyword=Please, search a keyword! +comCopSmtSdm.popupListValidate.searchCondition=Please, select a condition! + +comCopSmtSdm.popupList.diaryType=Diary Type +comCopSmtSdm.popupList.diaryNm=Diary Title + +comCopSmtSdm.popupList.diaryPersonal=Individual Schedule +comCopSmtSdm.popupList.diaryDept=Dept Schedule + + +#user list popup# +comCopSmtSdm.empLyrTitle=User Popup Search + +comCopSmtSdm.empLyrList.id=ID +comCopSmtSdm.empLyrList.name=Name +comCopSmtSdm.empLyrList.tel=Phonenumber +comCopSmtSdm.empLyrList.addr=Address + +#dept \ud31d\uc5c5# +comCopSmtSdm.deptLyrTitle=Dept Popup Search + +comCopSmtSdm.deptLyrList.name=Department Name +comCopSmtSdm.deptLyrList.description=Department Description \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/sdm/message_ko.properties b/src/main/resources/egovframework/message/com/cop/smt/sdm/message_ko.properties new file mode 100644 index 00000000..7af53547 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/sdm/message_ko.properties @@ -0,0 +1,77 @@ +#\ubd80\uc11c\uc77c\uc815\uad00\ub9ac Message# +comCopSmtSdm.title=\ubd80\uc11c\uc77c\uc815\uad00\ub9ac + +comCopSmtSdm.Gbn.Monthly=\uc6d4\uac04 +comCopSmtSdm.Gbn.Weekly=\uc8fc\uac04 +comCopSmtSdm.Gbn.Daily=\uc77c\uac04 + +comCopSmtSdm.Navi.Today=\uc624\ub298 +comCopSmtSdm.Navi.Year=\ub144 +comCopSmtSdm.Navi.Month=\uc6d4 +comCopSmtSdm.Navi.Day=\uc77c +comCopSmtSdm.Navi.Week=\uc8fc + +comCopSmtSdm.Monthly.monday=\uc6d4 +comCopSmtSdm.Monthly.tuesday=\ud654 +comCopSmtSdm.Monthly.wednesday=\uc218 +comCopSmtSdm.Monthly.thursday=\ubaa9 +comCopSmtSdm.Monthly.friday=\uae08 +comCopSmtSdm.Monthly.saturday=\ud1a0 +comCopSmtSdm.Monthly.sunday=\uc77c + +comCopSmtSdm.Weekly.date=\ub0a0\uc9dc +comCopSmtSdm.Weekly.time=\uc2dc\uac04 +comCopSmtSdm.Weekly.title=\uc81c\ubaa9 +comCopSmtSdm.Weekly.chargeName=\ub2f4\ub2f9\uc790 + +comCopSmtSdm.selectSchdulSe=\uc77c\uc815\uad6c\ubd84\uc120\ud0dd +comCopSmtSdm.validate.alert.delete=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comCopSmtSdm.validate.alert.diffBgndeEndde=\uc885\ub8cc\uc77c\uc790\ub294 \uc2dc\uc791\uc77c\uc790\ubcf4\ub2e4 \uc774\ud6c4\ub0a0\uc9dc\ub85c \uc120\ud0dd\ud558\uc138\uc694. +comCopSmtSdm.goPrevMonth=\uc774\uc804\ub2ec\ub85c \uac00\uae30 +comCopSmtSdm.goNextMonth=\ub2e4\uc74c\ub2ec\ub85c \uac00\uae30 + +comCopSmtSdm.regist.schdulSe=\uc77c\uc815\uad6c\ubd84 +comCopSmtSdm.regist.schdulIpcrCode=\uc911\uc694\ub3c4 +comCopSmtSdm.regist.schdulDeptName=\ubd80\uc11c +comCopSmtSdm.regist.schdulNm=\uc77c\uc815\uba85 +comCopSmtSdm.regist.schdulCn=\uc77c\uc815\ub0b4\uc6a9 +comCopSmtSdm.regist.reptitSeCode=\ubc18\ubcf5\uad6c\ubd84 +comCopSmtSdm.regist.schdulSe1=\ub2f9\uc77c +comCopSmtSdm.regist.schdulSe2=\ubc18\ubcf5 +comCopSmtSdm.regist.schdulSe3=\uc5f0\uc18d +comCopSmtSdm.regist.schdulDatetime=\ub0a0\uc9dc/\uc2dc\uac04 +comCopSmtSdm.regist.schdulYYYY=\uc2dc +comCopSmtSdm.regist.schdulMM=\ubd84 +comCopSmtSdm.regist.schdulChargerName=\ub2f4\ub2f9\uc790 +comCopSmtSdm.regist.schdulAtch=\ud30c\uc77c\ucca8\ubd80 + +comCopSmtSdm.btn.diaryManage=\uc77c\uc9c0\uad00\ub9ac + +#\ubd80\uc11c\uc77c\uc815\uad00\ub9ac \ud31d\uc5c5# +comCopSmtSdm.popup.title=\uc77c\uc815\uad00\ub9ac \ubaa9\ub85d \ud31d\uc5c5 + +comCopSmtSdm.popupSearchCondition.diaryNm=\uc77c\uc9c0\uba85 + +comCopSmtSdm.popupListValidate.searchKeyword=\uac80\uc0c9\uc5b4\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694! +comCopSmtSdm.popupListValidate.searchCondition=\uac80\uc0c9 \uad6c\ubd84\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694! + +comCopSmtSdm.popupList.diaryType=\uc77c\uc815\uad6c\ubd84 +comCopSmtSdm.popupList.diaryNm=\uc77c\uc9c0\uba85 + +comCopSmtSdm.popupList.diaryPersonal=\uac1c\uc778\uc77c\uc815 +comCopSmtSdm.popupList.diaryDept=\ubd80\uc11c\uc77c\uc815 + + +#\uc0ac\uc6a9\uc790 \ud31d\uc5c5# +comCopSmtSdm.empLyrTitle=\uc0ac\uc6a9\uc790 \uac80\uc0c9 \ud31d\uc5c5 + +comCopSmtSdm.empLyrList.id=\uc544\uc774\ub514 +comCopSmtSdm.empLyrList.name=\uc774\ub984 +comCopSmtSdm.empLyrList.tel=\uc804\ud654\ubc88\ud638 +comCopSmtSdm.empLyrList.addr=\uc8fc\uc18c + +#\ubd80\uc11c\ud31d\uc5c5 \ud31d\uc5c5# +comCopSmtSdm.deptLyrTitle=\ubd80\uc11c \uac80\uc0c9 \ud31d\uc5c5 + +comCopSmtSdm.deptLyrList.name=\ubd80\uc11c\uba85 +comCopSmtSdm.deptLyrList.description=\ubd80\uc11c\uc124\uba85 diff --git a/src/main/resources/egovframework/message/com/cop/smt/sim/message_en.properties b/src/main/resources/egovframework/message/com/cop/smt/sim/message_en.properties new file mode 100644 index 00000000..aa758314 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/sim/message_en.properties @@ -0,0 +1,59 @@ +#Schedule Management Message# +comCopSmtSim.title=Master Schedule + +comCopSmtSim.Gbn.Monthly=MONTHLY +comCopSmtSim.Gbn.Weekly=WEEKLY +comCopSmtSim.Gbn.Daily=DAILY + +comCopSmtSim.Navi.Today=TODAY +comCopSmtSim.Navi.Year=YEAR +comCopSmtSim.Navi.Month=MONTH +comCopSmtSim.Navi.Day=DAY +comCopSmtSim.Navi.Week=WEEK + +comCopSmtSim.Monthly.monday=Monday +comCopSmtSim.Monthly.tuesday=Tuesday +comCopSmtSim.Monthly.wednesday=Wednesday +comCopSmtSim.Monthly.thursday=Thursday +comCopSmtSim.Monthly.friday=Friday +comCopSmtSim.Monthly.saturday=Saturday +comCopSmtSim.Monthly.sunday=Sunday + +comCopSmtSim.Weekly.date=DAY +comCopSmtSim.Weekly.time=TIME +comCopSmtSim.Weekly.title=TITLE +comCopSmtSim.Weekly.chargeName=In Charge + +comCopSmtSim.goPrevMonth=Go to previous month +comCopSmtSim.goNextMonth=Go to next month + +comCopSmtSim.regist.schdulSe=Schedule Type +comCopSmtSim.regist.schdulIpcrCode=Importance +comCopSmtSim.regist.schdulDeptName=Department Name +comCopSmtSim.regist.schdulNm=Schedule Name +comCopSmtSim.regist.schdulCn=Schedule Content +comCopSmtSim.regist.reptitSeCode=Repeat Type +comCopSmtSim.regist.schdulSe1=Today +comCopSmtSim.regist.schdulSe2=Repeat +comCopSmtSim.regist.schdulSe3=Consecutively +comCopSmtSim.regist.schdulDatetime=Date/Time +comCopSmtSim.regist.schdulYYYY=Hours +comCopSmtSim.regist.schdulMM=Minutes +comCopSmtSim.regist.schdulChargerName=In Charge +comCopSmtSim.regist.schdulAtch=Attach files + +comCopSmtSim.btn.diaryManage=Diary Management + +#\uc77c\uc815\uad00\ub9ac \ud31d\uc5c5# +comCopSmtSim.popup.title=Master Schedule Popup List + +comCopSmtSim.popupSearchCondition.diaryNm=Diary Title + +comCopSmtSim.popupListValidate.searchKeyword=Please type a search term! +comCopSmtSim.popupListValidate.searchCondition=Please select the search division! + +comCopSmtSim.popupList.diaryType=Diary Type +comCopSmtSim.popupList.diaryNm=Diary Name + +comCopSmtSim.popupList.diaryPersonal=Individual schedule +comCopSmtSim.popupList.diaryDept=Dept schedule \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/sim/message_ko.properties b/src/main/resources/egovframework/message/com/cop/smt/sim/message_ko.properties new file mode 100644 index 00000000..bf7ad975 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/sim/message_ko.properties @@ -0,0 +1,59 @@ +#\uc77c\uc815\uad00\ub9ac Message# +comCopSmtSim.title=\uc77c\uc815\uad00\ub9ac + +comCopSmtSim.Gbn.Monthly=\uc6d4\uac04 +comCopSmtSim.Gbn.Weekly=\uc8fc\uac04 +comCopSmtSim.Gbn.Daily=\uc77c\uac04 + +comCopSmtSim.Navi.Today=\uc624\ub298 +comCopSmtSim.Navi.Year=\ub144 +comCopSmtSim.Navi.Month=\uc6d4 +comCopSmtSim.Navi.Day=\uc77c +comCopSmtSim.Navi.Week=\uc8fc + +comCopSmtSim.Monthly.monday=\uc6d4 +comCopSmtSim.Monthly.tuesday=\ud654 +comCopSmtSim.Monthly.wednesday=\uc218 +comCopSmtSim.Monthly.thursday=\ubaa9 +comCopSmtSim.Monthly.friday=\uae08 +comCopSmtSim.Monthly.saturday=\ud1a0 +comCopSmtSim.Monthly.sunday=\uc77c + +comCopSmtSim.Weekly.date=\ub0a0\uc9dc +comCopSmtSim.Weekly.time=\uc2dc\uac04 +comCopSmtSim.Weekly.title=\uc81c\ubaa9 +comCopSmtSim.Weekly.chargeName=\ub2f4\ub2f9\uc790 + +comCopSmtSim.goPrevMonth=Go to previous month +comCopSmtSim.goNextMonth=Go to next month + +comCopSmtSim.regist.schdulSe=\uc77c\uc815\uad6c\ubd84 +comCopSmtSim.regist.schdulIpcrCode=\uc911\uc694\ub3c4 +comCopSmtSim.regist.schdulDeptName=\ubd80\uc11c +comCopSmtSim.regist.schdulNm=\uc77c\uc815\uba85 +comCopSmtSim.regist.schdulCn=\uc77c\uc815\ub0b4\uc6a9 +comCopSmtSim.regist.reptitSeCode=\ubc18\ubcf5\uad6c\ubd84 +comCopSmtSim.regist.schdulSe1=\ub2f9\uc77c +comCopSmtSim.regist.schdulSe2=\ubc18\ubcf5 +comCopSmtSim.regist.schdulSe3=\uc5f0\uc18d +comCopSmtSim.regist.schdulDatetime=\ub0a0\uc9dc/\uc2dc\uac04 +comCopSmtSim.regist.schdulYYYY=\uc2dc +comCopSmtSim.regist.schdulMM=\ubd84 +comCopSmtSim.regist.schdulChargerName=\ub2f4\ub2f9\uc790 +comCopSmtSim.regist.schdulAtch=\ud30c\uc77c\ucca8\ubd80 + +comCopSmtSim.btn.diaryManage=\uc77c\uc9c0\uad00\ub9ac + +#\uc77c\uc815\uad00\ub9ac \ud31d\uc5c5# +comCopSmtSim.popup.title=\uc77c\uc815\uad00\ub9ac \ubaa9\ub85d \ud31d\uc5c5 + +comCopSmtSim.popupSearchCondition.diaryNm=\uc77c\uc9c0\uba85 + +comCopSmtSim.popupListValidate.searchKeyword=\uac80\uc0c9\uc5b4\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694! +comCopSmtSim.popupListValidate.searchCondition=\uac80\uc0c9 \uad6c\ubd84\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694! + +comCopSmtSim.popupList.diaryType=\uc77c\uc815\uad6c\ubd84 +comCopSmtSim.popupList.diaryNm=\uc77c\uc9c0\uba85 + +comCopSmtSim.popupList.diaryPersonal=\uac1c\uc778\uc77c\uc815 +comCopSmtSim.popupList.diaryDept=\ubd80\uc11c\uc77c\uc815 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/wmr/message_en.properties b/src/main/resources/egovframework/message/com/cop/smt/wmr/message_en.properties new file mode 100644 index 00000000..43268c93 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/wmr/message_en.properties @@ -0,0 +1,78 @@ +#Weekly / Monthly Reporting Management# +copSmtWmr.wikMnthngReprtList.wikMnthngReprtList=Weekly / monthly Report List +copSmtWmr.wikMnthngReprtList.searchSttus=Approval status +copSmtWmr.wikMnthngReprtList.unapproved=Unapproved +copSmtWmr.wikMnthngReprtList.approval=Approval +copSmtWmr.wikMnthngReprtList.searchDe=Date +copSmtWmr.wikMnthngReprtList.reprtDe=Report Date +copSmtWmr.wikMnthngReprtList.reprtBgnEndDe=The Date +copSmtWmr.wikMnthngReprtList.searchSe=Reporting type +copSmtWmr.wikMnthngReprtList.WeeklyReport=Weekly Report +copSmtWmr.wikMnthngReprtList.MonthlyReport=Monthly Report +copSmtWmr.wikMnthngReprtList.searchCnd=Title / Writer +copSmtWmr.wikMnthngReprtList.reprtSj=Title +copSmtWmr.wikMnthngReprtList.reprtSuj=Report Title +copSmtWmr.wikMnthngReprtList.wrterNm=Writer +copSmtWmr.wikMnthngReprtList.searchBgnDe=Search Start date +copSmtWmr.wikMnthngReprtList.searchEndDe=Search End date +copSmtWmr.wikMnthngReprtList.validate.searchDeAlert=The search end date can not be earlier than the search date. + +copSmtWmr.wikMnthngReprtRegist.wikMnthngReprtRegist=Weekly / monthly Report Regist +copSmtWmr.wikMnthngReprtRegist.bgnDe=Start date +copSmtWmr.wikMnthngReprtRegist.endDe=End date +copSmtWmr.wikMnthngReprtRegist.validate.searchDeAlert=The end date can not be earlier than the search date. +copSmtWmr.wikMnthngReprtRegist.searchSe=Reporting type +copSmtWmr.wikMnthngReprtRegist.WeeklyReport=Weekly Report +copSmtWmr.wikMnthngReprtRegist.MonthlyReport=Monthly Report +copSmtWmr.wikMnthngReprtRegist.reprtDe=Report Date +copSmtWmr.wikMnthngReprtRegist.reprtBgnEndDe=The Date +copSmtWmr.wikMnthngReprtRegist.wrterNm=Writer +copSmtWmr.wikMnthngReprtRegist.reportrNm=Report target +copSmtWmr.wikMnthngReprtRegist.reprtSuj=Report Title +copSmtWmr.wikMnthngReprtRegist.reprtThswikCn=Report of the week +copSmtWmr.wikMnthngReprtRegist.reprtLesseeCn=Report of next week +copSmtWmr.wikMnthngReprtRegist.partclrMatter=Special note +copSmtWmr.wikMnthngReprtRegist.file=File attachment + +copSmtWmr.wikMnthngReprtDetail.wikMnthngReprtDetail=Weekly / monthly Report Detail +copSmtWmr.wikMnthngReprtDetail.reprtSeInfo=Reporting type +copSmtWmr.wikMnthngReprtDetail.reprtDe=Report Date +copSmtWmr.wikMnthngReprtDetail.reprtBgnEndDe=The Date +copSmtWmr.wikMnthngReprtDetail.wrterNm=Writer +copSmtWmr.wikMnthngReprtDetail.reportrNm=Report target +copSmtWmr.wikMnthngReprtDetail.reprtSuj=Report Title +copSmtWmr.wikMnthngReprtDetail.reprtThswikCn=Report of the week +copSmtWmr.wikMnthngReprtDetail.reprtLesseeCn=Report of next week +copSmtWmr.wikMnthngReprtDetail.partclrMatter=Special note +copSmtWmr.wikMnthngReprtDetail.file=Attachments +copSmtWmr.wikMnthngReprtDetail.reprtSttus=Report status + +copSmtWmr.wikMnthngReprtUpdt.wikMnthngReprtUpdt=Weekly / monthly Report Update +copSmtWmr.wikMnthngReprtUpdt.bgnDe=Start date +copSmtWmr.wikMnthngReprtUpdt.endDe=End date +copSmtWmr.wikMnthngReprtUpdt.validate.searchDeAlert=The end date can not be earlier than the search date. +copSmtWmr.wikMnthngReprtUpdt.searchSe=Reporting type +copSmtWmr.wikMnthngReprtUpdt.WeeklyReport=Weekly Report +copSmtWmr.wikMnthngReprtUpdt.MonthlyReport=Monthly Report +copSmtWmr.wikMnthngReprtUpdt.reprtDe=Report Date +copSmtWmr.wikMnthngReprtUpdt.reprtBgnEndDe=The Date +copSmtWmr.wikMnthngReprtUpdt.wrterNm=Writer +copSmtWmr.wikMnthngReprtUpdt.reportrNm=Report target +copSmtWmr.wikMnthngReprtUpdt.reprtSuj=Report Title +copSmtWmr.wikMnthngReprtUpdt.reprtThswikCn=Report of the week +copSmtWmr.wikMnthngReprtUpdt.reprtLesseeCn=Report of next week +copSmtWmr.wikMnthngReprtUpdt.partclrMatter=Special note +copSmtWmr.wikMnthngReprtUpdt.file=File attachment +copSmtWmr.wikMnthngReprtUpdt.atchFile=Attachments +copSmtWmr.wikMnthngReprtUpdt.reprtSttus=Report status + +copSmtWmr.reportrList.reportrList=List of people to report +copSmtWmr.reportrList.selectReprt=Select reportee +copSmtWmr.reportrList.fnInit=List view +copSmtWmr.reportrList.searchCnd=Inquiry Condition +copSmtWmr.reportrList.orgnztNm=Department +copSmtWmr.reportrList.emplyrNm=Employee name +copSmtWmr.reportrList.ofcpsNm=Position +copSmtWmr.reportrList.emplNo=Employee number + +copSmtWmr.reportrListPopup.reportrList=List of people to report \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/smt/wmr/message_ko.properties b/src/main/resources/egovframework/message/com/cop/smt/wmr/message_ko.properties new file mode 100644 index 00000000..afafaf90 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/smt/wmr/message_ko.properties @@ -0,0 +1,78 @@ +#\uc8fc\uad00/\uc6d4\uac04\ubcf4\uace0 \uad00\ub9ac# +copSmtWmr.wikMnthngReprtList.wikMnthngReprtList=\uc8fc\uac04/\uc6d4\uac04\ubcf4\uace0 \ubaa9\ub85d +copSmtWmr.wikMnthngReprtList.searchSttus=\uc2b9\uc778\uc5ec\ubd80 +copSmtWmr.wikMnthngReprtList.unapproved=\ubbf8\uc2b9\uc778 +copSmtWmr.wikMnthngReprtList.approval=\uc2b9\uc778 +copSmtWmr.wikMnthngReprtList.searchDe=\uc77c\uc790 +copSmtWmr.wikMnthngReprtList.reprtDe=\ubcf4\uace0\uc77c\uc790 +copSmtWmr.wikMnthngReprtList.reprtBgnEndDe=\ud574\ub2f9\uc77c\uc790 +copSmtWmr.wikMnthngReprtList.searchSe=\ubcf4\uace0\uc720\ud615 +copSmtWmr.wikMnthngReprtList.WeeklyReport=\uc8fc\uac04\ubcf4\uace0 +copSmtWmr.wikMnthngReprtList.MonthlyReport=\uc6d4\uac04\ubcf4\uace0 +copSmtWmr.wikMnthngReprtList.searchCnd=\uc81c\ubaa9/\uc791\uc131\uc790 +copSmtWmr.wikMnthngReprtList.reprtSj=\uc81c\ubaa9 +copSmtWmr.wikMnthngReprtList.reprtSuj=\ubcf4\uace0\uc11c\uc81c\ubaa9 +copSmtWmr.wikMnthngReprtList.wrterNm=\uc791\uc131\uc790 +copSmtWmr.wikMnthngReprtList.searchBgnDe=\uac80\uc0c9\uc2dc\uc791\uc77c\uc790 +copSmtWmr.wikMnthngReprtList.searchEndDe=\uac80\uc0c9\uc885\ub8cc\uc77c\uc790 +copSmtWmr.wikMnthngReprtList.validate.searchDeAlert=\uac80\uc0c9\uc885\ub8cc\uc77c\uc790\uac00 \uac80\uc0c9\uc77c\uc790\ubcf4\ub2e4 \ube60\ub97c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +copSmtWmr.wikMnthngReprtRegist.wikMnthngReprtRegist=\uc8fc\uac04/\uc6d4\uac04\ubcf4\uace0 \ub4f1\ub85d +copSmtWmr.wikMnthngReprtRegist.bgnDe=\ud574\ub2f9\uc2dc\uc791\uc77c\uc790 +copSmtWmr.wikMnthngReprtRegist.endDe=\ud574\ub2f9\uc885\ub8cc\uc77c\uc790 +copSmtWmr.wikMnthngReprtRegist.validate.searchDeAlert=\ud574\ub2f9\uc885\ub8cc\uc77c\uc790\uac00 \uac80\uc0c9\uc77c\uc790\ubcf4\ub2e4 \ube60\ub97c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +copSmtWmr.wikMnthngReprtRegist.searchSe=\ubcf4\uace0\uc720\ud615 +copSmtWmr.wikMnthngReprtRegist.WeeklyReport=\uc8fc\uac04\ubcf4\uace0 +copSmtWmr.wikMnthngReprtRegist.MonthlyReport=\uc6d4\uac04\ubcf4\uace0 +copSmtWmr.wikMnthngReprtRegist.reprtDe=\ubcf4\uace0\uc77c\uc790 +copSmtWmr.wikMnthngReprtRegist.reprtBgnEndDe=\ud574\ub2f9\uc77c\uc790 +copSmtWmr.wikMnthngReprtRegist.wrterNm=\uc791\uc131\uc790 +copSmtWmr.wikMnthngReprtRegist.reportrNm=\ubcf4\uace0\ub300\uc0c1\uc790 +copSmtWmr.wikMnthngReprtRegist.reprtSuj=\ubcf4\uace0\uc11c\uc81c\ubaa9 +copSmtWmr.wikMnthngReprtRegist.reprtThswikCn=\uae08\uc8fc\ubcf4\uace0\ub0b4\uc6a9 +copSmtWmr.wikMnthngReprtRegist.reprtLesseeCn=\ucc28\uc8fc\ubcf4\uace0\ub0b4\uc6a9 +copSmtWmr.wikMnthngReprtRegist.partclrMatter=\ud2b9\uc774\uc0ac\ud56d +copSmtWmr.wikMnthngReprtRegist.file=\ud30c\uc77c\ucca8\ubd80 + +copSmtWmr.wikMnthngReprtDetail.wikMnthngReprtDetail=\uc8fc\uac04/\uc6d4\uac04\ubcf4\uace0 \uc0c1\uc138\ubcf4\uae30 +copSmtWmr.wikMnthngReprtDetail.reprtSeInfo=\ubcf4\uace0\uc720\ud615 +copSmtWmr.wikMnthngReprtDetail.reprtDe=\ubcf4\uace0\uc77c\uc790 +copSmtWmr.wikMnthngReprtDetail.reprtBgnEndDe=\ud574\ub2f9\uc77c\uc790 +copSmtWmr.wikMnthngReprtDetail.wrterNm=\uc791\uc131\uc790 +copSmtWmr.wikMnthngReprtDetail.reportrNm=\ubcf4\uace0\ub300\uc0c1\uc790 +copSmtWmr.wikMnthngReprtDetail.reprtSuj=\ubcf4\uace0\uc11c\uc81c\ubaa9 +copSmtWmr.wikMnthngReprtDetail.reprtThswikCn=\uae08\uc8fc\ubcf4\uace0\ub0b4\uc6a9 +copSmtWmr.wikMnthngReprtDetail.reprtLesseeCn=\ucc28\uc8fc\ubcf4\uace0\ub0b4\uc6a9 +copSmtWmr.wikMnthngReprtDetail.partclrMatter=\ud2b9\uc774\uc0ac\ud56d +copSmtWmr.wikMnthngReprtDetail.file=\ucca8\ubd80\ud30c\uc77c +copSmtWmr.wikMnthngReprtDetail.reprtSttus=\ubcf4\uace0\uc11c\uc0c1\ud0dc + +copSmtWmr.wikMnthngReprtUpdt.wikMnthngReprtUpdt=\uc8fc\uac04/\uc6d4\uac04\ubcf4\uace0 \uc218\uc815 +copSmtWmr.wikMnthngReprtUpdt.bgnDe=\ud574\ub2f9\uc2dc\uc791\uc77c\uc790 +copSmtWmr.wikMnthngReprtUpdt.endDe=\ud574\ub2f9\uc885\ub8cc\uc77c\uc790 +copSmtWmr.wikMnthngReprtUpdt.validate.searchDeAlert=\ud574\ub2f9\uc885\ub8cc\uc77c\uc790\uac00 \uac80\uc0c9\uc77c\uc790\ubcf4\ub2e4 \ube60\ub97c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +copSmtWmr.wikMnthngReprtUpdt.searchSe=\ubcf4\uace0\uc720\ud615 +copSmtWmr.wikMnthngReprtUpdt.WeeklyReport=\uc8fc\uac04\ubcf4\uace0 +copSmtWmr.wikMnthngReprtUpdt.MonthlyReport=\uc6d4\uac04\ubcf4\uace0 +copSmtWmr.wikMnthngReprtUpdt.reprtDe=\ubcf4\uace0\uc77c\uc790 +copSmtWmr.wikMnthngReprtUpdt.reprtBgnEndDe=\ud574\ub2f9\uc77c\uc790 +copSmtWmr.wikMnthngReprtUpdt.wrterNm=\uc791\uc131\uc790 +copSmtWmr.wikMnthngReprtUpdt.reportrNm=\ubcf4\uace0\ub300\uc0c1\uc790 +copSmtWmr.wikMnthngReprtUpdt.reprtSuj=\ubcf4\uace0\uc11c\uc81c\ubaa9 +copSmtWmr.wikMnthngReprtUpdt.reprtThswikCn=\uae08\uc8fc\ubcf4\uace0\ub0b4\uc6a9 +copSmtWmr.wikMnthngReprtUpdt.reprtLesseeCn=\ucc28\uc8fc\ubcf4\uace0\ub0b4\uc6a9 +copSmtWmr.wikMnthngReprtUpdt.partclrMatter=\ud2b9\uc774\uc0ac\ud56d +copSmtWmr.wikMnthngReprtUpdt.file=\ud30c\uc77c\ucca8\ubd80 +copSmtWmr.wikMnthngReprtUpdt.atchFile=\ucca8\ubd80\ud30c\uc77c +copSmtWmr.wikMnthngReprtUpdt.reprtSttus=\ubcf4\uace0\uc11c\uc0c1\ud0dc + +copSmtWmr.reportrList.reportrList=\ubcf4\uace0\ub300\uc0c1\uc790 \ubaa9\ub85d\uc870\ud68c +copSmtWmr.reportrList.selectReprt=\ubcf4\uace0\ub300\uc0c1\uc790 \uc120\ud0dd +copSmtWmr.reportrList.fnInit=\ubaa9\ub85d\uc870\ud68c +copSmtWmr.reportrList.searchCnd=\uc870\ud68c\uc870\uac74 +copSmtWmr.reportrList.orgnztNm=\ubd80\uc11c +copSmtWmr.reportrList.emplyrNm=\uc0ac\uc6d0\uba85 +copSmtWmr.reportrList.ofcpsNm=\uc9c1\uc704 +copSmtWmr.reportrList.emplNo=\uc0ac\ubc88 + +copSmtWmr.reportrListPopup.reportrList=\ubcf4\uace0\ub300\uc0c1\uc790 \ubaa9\ub85d \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/stf/message_en.properties b/src/main/resources/egovframework/message/com/cop/stf/message_en.properties new file mode 100644 index 00000000..63ddd898 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/stf/message_en.properties @@ -0,0 +1,11 @@ +#Article Satisfaction# +comCopCmt.articleSatisfactionVO.title=Satisfaction Survey +comCopCmt.articleSatisfactionVO.button=Satisfaction +comCopCmt.articleSatisfactionVO.level5=Very satisfied +comCopCmt.articleSatisfactionVO.level4=Satisfied +comCopCmt.articleSatisfactionVO.level3=Normal +comCopCmt.articleSatisfactionVO.level2=Unsatisfied +comCopCmt.articleSatisfactionVO.level1=Very unsatisfied +comCopCmt.articleSatisfactionVO.content=Content +comCopCmt.articleSatisfactionVO.password=Password +comCopCmt.articleSatisfactionVO.nodata=There is no data. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/stf/message_ko.properties b/src/main/resources/egovframework/message/com/cop/stf/message_ko.properties new file mode 100644 index 00000000..2387a233 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/stf/message_ko.properties @@ -0,0 +1,11 @@ +#\uac8c\uc2dc\uae00 \ub9cc\uc871\ub3c4# +comCopCmt.articleSatisfactionVO.title=\ub9cc\uc871\ub3c4\uc870\uc0ac +comCopCmt.articleSatisfactionVO.button=\ub9cc\uc871\ub3c4 +comCopCmt.articleSatisfactionVO.level5=\ub9e4\uc6b0\ub9cc\uc871 +comCopCmt.articleSatisfactionVO.level4=\ub9cc\uc871 +comCopCmt.articleSatisfactionVO.level3=\ubcf4\ud1b5 +comCopCmt.articleSatisfactionVO.level2=\ubd88\ub9cc\uc871 +comCopCmt.articleSatisfactionVO.level1=\ub9e4\uc6b0\ubd88\ub9cc\uc871 +comCopCmt.articleSatisfactionVO.content=\ub0b4\uc6a9 +comCopCmt.articleSatisfactionVO.password=\ud328\uc2a4\uc6cc\ub4dc +comCopCmt.articleSatisfactionVO.nodata=\ub9cc\uc871\ub3c4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/sym/ems/message_en.properties b/src/main/resources/egovframework/message/com/cop/sym/ems/message_en.properties new file mode 100644 index 00000000..219891af --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/sym/ems/message_en.properties @@ -0,0 +1,27 @@ +comCopSymEms.regist.title=Outgoing Mail +comCopSymEms.regist.summary={0} Posted typing the possible contents of registers by clicking the button. +comCopSymEms.regist.receiver = Receiver +comCopSymEms.regist.title2 = Title +comCopSymEms.regist.content = Send Content +comCopSymEms.regist.atch = Attach files + +comCopSymEms.inqire.sender = Sender +comCopSymEms.inqire.receiver = Receiver +comCopSymEms.inqire.title = Title +comCopSymEms.inqire.sendCn = Send Content +comCopSymEms.inqire.sendResult = Send Result +comCopSymEms.inqire.xml = XML Mail Inqire +comCopSymEms.inqire.atch = Attach files +comCopSymEms.inqire.summary=Print out {0} about a detail list. + +comCopSymEms.searchCondition.title = Title +comCopSymEms.searchCondition.cn = Contents +comCopSymEms.searchCondition.sender = Sender + +comCopSymEms.list.status = Status +comCopSymEms.list.receiver = Receiver +comCopSymEms.list.sender = Sender +comCopSymEms.list.title = Title +comCopSymEms.list.cn = Contents +comCopSymEms.list.regdate = Reg.Date +comCopSymEms.list.summary=Print out {0} about the list. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/sym/ems/message_ko.properties b/src/main/resources/egovframework/message/com/cop/sym/ems/message_ko.properties new file mode 100644 index 00000000..86ca835b --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/sym/ems/message_ko.properties @@ -0,0 +1,27 @@ +comCopSymEms.regist.title=\ubc1c\uc1a1\uba54\uc77c +comCopSymEms.regist.summary={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub4f1\ub85d\ud55c\ub2e4. +comCopSymEms.regist.receiver = \ubc1b\ub294\uc0ac\ub78c +comCopSymEms.regist.title2 = \uc81c\ubaa9 +comCopSymEms.regist.content = \ubc1c\uc2e0\ub0b4\uc6a9 +comCopSymEms.regist.atch = \ucca8\ubd80\ud30c\uc77c + +comCopSymEms.inqire.sender = \ubcf4\ub0b4\ub294\uc0ac\ub78c +comCopSymEms.inqire.receiver = \ubc1b\ub294\uc0ac\ub78c +comCopSymEms.inqire.title = \uc81c\ubaa9 +comCopSymEms.inqire.sendCn = \ubc1c\uc2e0\ub0b4\uc6a9 +comCopSymEms.inqire.sendResult = \ubc1c\uc2e0\uacb0\uacfc +comCopSymEms.inqire.xml = XML\uba54\uc77c\ubcf4\uae30 +comCopSymEms.inqire.atch = \ucca8\ubd80\ud30c\uc77c +comCopSymEms.inqire.summary={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \uc0c1\uc138\uc870\ud68c \ub0b4\uc5ed\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. + +comCopSymEms.searchCondition.title = \uc81c\ubaa9 +comCopSymEms.searchCondition.cn = \ub0b4\uc6a9 +comCopSymEms.searchCondition.sender = \ubcf4\ub0b8\uc774 + +comCopSymEms.list.status = \uc0c1\ud0dc +comCopSymEms.list.receiver = \uc218\uc2e0\uc790 +comCopSymEms.list.sender = \ubc1c\uc2e0\uc790 +comCopSymEms.list.title = \uc81c\ubaa9 +comCopSymEms.list.cn = \ub0b4\uc6a9 +comCopSymEms.list.regdate = \ub0a0\uc9dc +comCopSymEms.list.summary={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \ubaa9\ub85d\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/cop/tpl/message_en.properties b/src/main/resources/egovframework/message/com/cop/tpl/message_en.properties new file mode 100644 index 00000000..86c282f3 --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/tpl/message_en.properties @@ -0,0 +1,12 @@ +#\ud15c\ud50c\ub9bf +comCopTpl.template.title = Template + +comCopTpl.template.name = Template Name +comCopTpl.template.type = Template Type +comCopTpl.template.path = Template Path +comCopTpl.template.useYN = Use YN +comCopTpl.template.registDt = Regist Date +comCopTpl.template.preview = preview + +comCopTpl.template.tmplatCss = The board template is only CSS enabled. +comCopTpl.template.tmplatJsp = The template is only for JSP. diff --git a/src/main/resources/egovframework/message/com/cop/tpl/message_ko.properties b/src/main/resources/egovframework/message/com/cop/tpl/message_ko.properties new file mode 100644 index 00000000..fa7f990f --- /dev/null +++ b/src/main/resources/egovframework/message/com/cop/tpl/message_ko.properties @@ -0,0 +1,12 @@ +#\ud15c\ud50c\ub9bf +comCopTpl.template.title = \ud15c\ud50c\ub9bf + +comCopTpl.template.name = \ud15c\ud50c\ub9bf\uba85 +comCopTpl.template.type = \ud15c\ud50c\ub9bf\uad6c\ubd84 +comCopTpl.template.path = \ud15c\ube14\ub9bf\uacbd\ub85c +comCopTpl.template.useYN = \uc0ac\uc6a9\uc5ec\ubd80 +comCopTpl.template.registDt = \ub4f1\ub85d\uc77c\uc790 +comCopTpl.template.preview = \ubbf8\ub9ac\ubcf4\uae30 + +comCopTpl.template.tmplatCss = \uac8c\uc2dc\ud310 \ud15c\ud50c\ub9bf\uc740 CSS\ub9cc \uac00\ub2a5\ud569\ub2c8\ub2e4. +comCopTpl.template.tmplatJsp = \ud15c\ud50c\ub9bf\uc740 JSP\ub9cc \uac00\ub2a5\ud569\ub2c8\ub2e4. diff --git a/src/main/resources/egovframework/message/com/dam/app/message_en.properties b/src/main/resources/egovframework/message/com/dam/app/message_en.properties new file mode 100644 index 00000000..11c495af --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/app/message_en.properties @@ -0,0 +1,58 @@ +# EgovKnoAppraisal.xml +comDamApp.knoAppraisal.validate.orgnztId=Organization Name +comDamApp.knoAppraisal.validate.knoTypeCd=Knowledge Type Name +comDamApp.knoAppraisal.validate.knoNm=Knowledge Name +comDamApp.knoAppraisal.validate.knoCn=Knowledge Content +comDamApp.knoAppraisal.validate.appYmd=Evaluation Date +comDamApp.knoAppraisal.validate.knoAps=Evaluation Result + + +comDamApp.comDamAppraisalList.title=Knowledge Evaluation Management +comDamApp.comDamAppraisalList.pageTop.title=Knowledge Evaluation Management +comDamApp.comDamAppraisalList.knoId=No. +comDamApp.comDamAppraisalList.knoNm=Knowledge Name +comDamApp.comDamAppraisalList.knoTypeNm=Knowledge Type +comDamApp.comDamAppraisalList.userNm=Registrant Name +comDamApp.comDamAppraisalList.knoAps=Evaluation Result +comDamApp.comDamAppraisalList.appYmd=Evaluation Date +comDamApp.comDamAppraisalList.status.evaluating=Evaluating +comDamApp.comDamAppraisalList.status.approved=Approved +comDamApp.comDamAppraisalList.status.denied=Denied +comDamApp.comDamAppraisalList.status.proceeding=Proceeding + + +comDamApp.comDamAppraisalDetail.title=Knowledge Evaluation Detailed View +comDamApp.comDamAppraisalDetail.pageTop.title=Knowledge Evaluation Detailed View +comDamApp.comDamAppraisalDetail.knoId=No. +comDamApp.comDamAppraisalDetail.orgnztNm=Organization Name +comDamApp.comDamAppraisalDetail.knoTypeNm=Knowledge Type +comDamApp.comDamAppraisalDetail.knoNm=Knowledge Name +comDamApp.comDamAppraisalDetail.knoCn=Knowledge Content +comDamApp.comDamAppraisalDetail.atchFileList=Attachment File List +comDamApp.comDamAppraisalDetail.knoAps=Evaluation Result +comDamApp.comDamAppraisalDetail.appYmd=Evaluation Date +comDamApp.comDamAppraisalDetail.status.proceeding=Proceeding +comDamApp.comDamAppraisalDetail.status.evaluating=Evaluating +comDamApp.comDamAppraisalDetail.status.approved=Approved +comDamApp.comDamAppraisalDetail.status.denied=Denied +comDamApp.comDamAppraisalDetail.button.evaluation=evaluate + + +comDamApp.comDamAppraisalModify.title=Knowledge Evaluation Modification +comDamApp.comDamAppraisalModify.pageTop.title=Knowledge Evaluation Modification +comDamApp.comDamAppraisalModify.knoId=No. +comDamApp.comDamAppraisalModify.orgnztNm=Organization Name +comDamApp.comDamAppraisalModify.knoTypeNm=Knowledge Type +comDamApp.comDamAppraisalModify.knoNm=Knowledge Name +comDamApp.comDamAppraisalModify.knoCn=Knowledge Content +comDamApp.comDamAppraisalModify.atchFileList=Attachment File List +comDamApp.comDamAppraisalModify.knoAps=Evaluation Result +comDamApp.comDamAppraisalModify.appYmd=Evaluation Date +comDamApp.comDamAppraisalModify.status.proceeding=Proceeding +comDamApp.comDamAppraisalModify.status.evaluating=Evaluating +comDamApp.comDamAppraisalModify.status.approved=Approved +comDamApp.comDamAppraisalModify.status.denied=Denied +comDamApp.comDamAppraisalModify.button.evaluation=evaluate + + + diff --git a/src/main/resources/egovframework/message/com/dam/app/message_ko.properties b/src/main/resources/egovframework/message/com/dam/app/message_ko.properties new file mode 100644 index 00000000..4effb989 --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/app/message_ko.properties @@ -0,0 +1,57 @@ +# EgovKnoAppraisal.xml +comDamApp.knoAppraisal.validate.orgnztId=\uc870\uc9c1\uba85 +comDamApp.knoAppraisal.validate.knoTypeCd=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamApp.knoAppraisal.validate.knoNm=\uc9c0\uc2dd\uba85 +comDamApp.knoAppraisal.validate.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 +comDamApp.knoAppraisal.validate.appYmd=\ud3c9\uac00\uc77c\uc790 +comDamApp.knoAppraisal.validate.knoAps=\ud3c9\uac00\uacb0\uacfc + + +comDamApp.comDamAppraisalList.title=\uc9c0\uc2dd\ud3c9\uac00\uad00\ub9ac \ubaa9\ub85d +comDamApp.comDamAppraisalList.pageTop.title=\uc9c0\uc2dd\ud3c9\uac00\uad00\ub9ac \ubaa9\ub85d +comDamApp.comDamAppraisalList.knoId=\uc21c\ubc88 +comDamApp.comDamAppraisalList.knoNm=\uc9c0\uc2dd\uba85 +comDamApp.comDamAppraisalList.knoTypeNm=\uc9c0\uc2dd\uc720\ud615 +comDamApp.comDamAppraisalList.userNm=\ub4f1\ub85d\uc790\uba85 +comDamApp.comDamAppraisalList.knoAps=\ud3c9\uac00\uacb0\uacfc +comDamApp.comDamAppraisalList.appYmd=\ud3c9\uac00\uc77c\uc790 +comDamApp.comDamAppraisalList.status.evaluating=\ud3c9\uac00\uc911 +comDamApp.comDamAppraisalList.status.approved=\uc2b9\uc778 +comDamApp.comDamAppraisalList.status.denied=\ubc18\ub824 +comDamApp.comDamAppraisalList.status.proceeding=\uc9c4\ud589\uc911 + + +comDamApp.comDamAppraisalDetail.title=\uc9c0\uc2dd\ud3c9\uac00 \uc0c1\uc138\uc870\ud68c +comDamApp.comDamAppraisalDetail.pageTop.title=\uc9c0\uc2dd\ud3c9\uac00 \uc0c1\uc138\uc870\ud68c +comDamApp.comDamAppraisalDetail.knoId=\uc21c\ubc88 +comDamApp.comDamAppraisalDetail.orgnztNm=\uc870\uc9c1\uba85 +comDamApp.comDamAppraisalDetail.knoTypeNm=\uc9c0\uc2dd\uc720\ud615 +comDamApp.comDamAppraisalDetail.knoNm=\uc9c0\uc2dd\uba85 +comDamApp.comDamAppraisalDetail.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 +comDamApp.comDamAppraisalDetail.atchFileList=\ucca8\ubd80\ud30c\uc77c \ubaa9\ub85d +comDamApp.comDamAppraisalDetail.knoAps=\ud3c9\uac00\uacb0\uacfc +comDamApp.comDamAppraisalDetail.appYmd=\ud3c9\uac00\uc77c\uc790 +comDamApp.comDamAppraisalDetail.status.proceeding=\uc9c4\ud589\uc911 +comDamApp.comDamAppraisalDetail.status.evaluating=\ud3c9\uac00\uc911 +comDamApp.comDamAppraisalDetail.status.approved=\uc2b9\uc778 +comDamApp.comDamAppraisalDetail.status.denied=\ubc18\ub824 +comDamApp.comDamAppraisalDetail.button.evaluation=\ud3c9\uac00 + + +comDamApp.comDamAppraisalModify.title=\uc9c0\uc2dd\ud3c9\uac00 \uc218\uc815 +comDamApp.comDamAppraisalModify.pageTop.title=\uc9c0\uc2dd\ud3c9\uac00 \uc218\uc815 +comDamApp.comDamAppraisalModify.knoId=\uc21c\ubc88 +comDamApp.comDamAppraisalModify.orgnztNm=\uc870\uc9c1\uba85 +comDamApp.comDamAppraisalModify.knoTypeNm=\uc9c0\uc2dd\uc720\ud615 +comDamApp.comDamAppraisalModify.knoNm=\uc9c0\uc2dd\uba85 +comDamApp.comDamAppraisalModify.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 +comDamApp.comDamAppraisalModify.atchFileList=\ucca8\ubd80\ud30c\uc77c \ubaa9\ub85d +comDamApp.comDamAppraisalModify.knoAps=\ud3c9\uac00\uacb0\uacfc +comDamApp.comDamAppraisalModify.appYmd=\ud3c9\uac00\uc77c\uc790 +comDamApp.comDamAppraisalModify.status.proceeding=\uc9c4\ud589\uc911 +comDamApp.comDamAppraisalModify.status.evaluating=\ud3c9\uac00\uc911 +comDamApp.comDamAppraisalModify.status.approved=\uc2b9\uc778 +comDamApp.comDamAppraisalModify.status.denied=\ubc18\ub824 +comDamApp.comDamAppraisalModify.button.evaluation=\ud3c9\uac00 + + diff --git a/src/main/resources/egovframework/message/com/dam/map/mat/message_en.properties b/src/main/resources/egovframework/message/com/dam/map/mat/message_en.properties new file mode 100644 index 00000000..3d2b67fc --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/map/mat/message_en.properties @@ -0,0 +1,47 @@ +# EgovMapMaterial.xml +comDamMapMat.mapMaterial.validate.orgnztId=Organization ID +comDamMapMat.mapMaterial.validate.knoTypeCd=Knowledge Type Code +comDamMapMat.mapMaterial.validate.knoTypeNm=Knowledge Type Name +comDamMapMat.mapMaterial.validate.knoUrl=Knowledge URL +comDamMapMat.mapMaterial.validate.clYmd=Date of Classification + + +comDamMapMat.comDamMapMaterialList.title=Knowledge Map (by type) Management List +comDamMapMat.comDamMapMaterialList.pageTop.title=Knowledge Map (by type) Management List +comDamMapMat.comDamMapMaterialList.index=Index +comDamMapMat.comDamMapMaterialList.orgnztNm=Organization Name +comDamMapMat.comDamMapMaterialList.knoTypeNm=Knowledge Type Name +comDamMapMat.comDamMapMaterialList.knoUrl=Knowledge URL +comDamMapMat.comDamMapMaterialList.clYmd=Date of Classification + + +comDamMapMat.comDamMapMaterialDetail.title=Knowledge Map (by type) Detailed View +comDamMapMat.comDamMapMaterialDetail.pageTop.title=Knowledge Map (by type) Detailed View +comDamMapMat.comDamMapMaterialDetail.orgnztId=Organization ID +comDamMapMat.comDamMapMaterialDetail.orgnztNm=Organization Name +comDamMapMat.comDamMapMaterialDetail.knoTypeCd=Knowledge Type Code +comDamMapMat.comDamMapMaterialDetail.knoTypeNm=Knowledge Type Name +comDamMapMat.comDamMapMaterialDetail.knoUrl=Knowledge URL +comDamMapMat.comDamMapMaterialDetail.clYmd=Date of Classification + + +comDamMapMat.comDamMapMaterialModify.title=Knowledge Map (by type) Modification +comDamMapMat.comDamMapMaterialModify.pageTop.title=Knowledge Map (by type) Modification +comDamMapMat.comDamMapMaterialModify.orgnztId=Organization ID +comDamMapMat.comDamMapMaterialModify.orgnztNm=Organization Name +comDamMapMat.comDamMapMaterialModify.knoTypeCd=Knowledge Type Code +comDamMapMat.comDamMapMaterialModify.knoTypeNm=Knowledge Type Name +comDamMapMat.comDamMapMaterialModify.knoUrl=Knowledge URL +comDamMapMat.comDamMapMaterialModify.clYmd=Date of Classification + + +comDamMapMat.comDamMapMaterialRegist.title=Knowledge Map (by type) Registration +comDamMapMat.comDamMapMaterialRegist.pageTop.title=Knowledge Map (by type) Registration +comDamMapMat.comDamMapMaterialRegist.orgnztId=Organization ID +comDamMapMat.comDamMapMaterialRegist.orgnztNm=Organization Name +comDamMapMat.comDamMapMaterialRegist.knoTypeCd=Knowledge Type Code +comDamMapMat.comDamMapMaterialRegist.knoTypeNm=Knowledge Type Name +comDamMapMat.comDamMapMaterialRegist.knoUrl=Knowledge URL +comDamMapMat.comDamMapMaterialRegist.clYmd=Date of Classification + + diff --git a/src/main/resources/egovframework/message/com/dam/map/mat/message_ko.properties b/src/main/resources/egovframework/message/com/dam/map/mat/message_ko.properties new file mode 100644 index 00000000..7dee0a90 --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/map/mat/message_ko.properties @@ -0,0 +1,47 @@ +# EgovMapMaterial.xml +comDamMapMat.mapMaterial.validate.orgnztId=\uc870\uc9c1\uc544\uc774\ub514 +comDamMapMat.mapMaterial.validate.knoTypeCd=\uc9c0\uc2dd\uc720\ud615\ucf54\ub4dc +comDamMapMat.mapMaterial.validate.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamMapMat.mapMaterial.validate.knoUrl=\uc9c0\uc2ddURL +comDamMapMat.mapMaterial.validate.clYmd=\ubd84\ub958\uc77c\uc790 + + +comDamMapMat.comDamMapMaterialList.title=\uc9c0\uc2dd\ub9f5(\uc720\ud615\ubcc4)\uad00\ub9ac \ubaa9\ub85d +comDamMapMat.comDamMapMaterialList.pageTop.title=\uc9c0\uc2dd\ub9f5(\uc720\ud615\ubcc4)\uad00\ub9ac \ubaa9\ub85d +comDamMapMat.comDamMapMaterialList.index=\uc21c\ubc88 +comDamMapMat.comDamMapMaterialList.orgnztNm=\uc870\uc9c1\uba85 +comDamMapMat.comDamMapMaterialList.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamMapMat.comDamMapMaterialList.knoUrl=\uc9c0\uc2ddURL +comDamMapMat.comDamMapMaterialList.clYmd=\ubd84\ub958\uc77c\uc790 + + +comDamMapMat.comDamMapMaterialDetail.title=\uc9c0\uc2dd\ub9f5(\uc720\ud615\ubcc4) \uc0c1\uc138\uc870\ud68c +comDamMapMat.comDamMapMaterialDetail.pageTop.title=\uc9c0\uc2dd\ub9f5(\uc720\ud615\ubcc4) \uc0c1\uc138\uc870\ud68c +comDamMapMat.comDamMapMaterialDetail.orgnztId=\uc870\uc9c1ID +comDamMapMat.comDamMapMaterialDetail.orgnztNm=\uc870\uc9c1\uba85 +comDamMapMat.comDamMapMaterialDetail.knoTypeCd=\uc9c0\uc2dd\uc720\ud615\ucf54\ub4dc +comDamMapMat.comDamMapMaterialDetail.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamMapMat.comDamMapMaterialDetail.knoUrl=\uc9c0\uc2ddURL +comDamMapMat.comDamMapMaterialDetail.clYmd=\ubd84\ub958\uc77c\uc790 + + +comDamMapMat.comDamMapMaterialModify.title=\uc9c0\uc2dd\ub9f5(\uc720\ud615\ubcc4) \uc218\uc815 +comDamMapMat.comDamMapMaterialModify.pageTop.title=\uc9c0\uc2dd\ub9f5(\uc720\ud615\ubcc4) \uc218\uc815 +comDamMapMat.comDamMapMaterialModify.orgnztId=\uc870\uc9c1ID +comDamMapMat.comDamMapMaterialModify.orgnztNm=\uc870\uc9c1\uba85 +comDamMapMat.comDamMapMaterialModify.knoTypeCd=\uc9c0\uc2dd\uc720\ud615\ucf54\ub4dc +comDamMapMat.comDamMapMaterialModify.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamMapMat.comDamMapMaterialModify.knoUrl=\uc9c0\uc2ddURL +comDamMapMat.comDamMapMaterialModify.clYmd=\ubd84\ub958\uc77c\uc790 + + +comDamMapMat.comDamMapMaterialRegist.title=\uc9c0\uc2dd\ub9f5(\uc720\ud615\ubcc4) \ub4f1\ub85d +comDamMapMat.comDamMapMaterialRegist.pageTop.title=\uc9c0\uc2dd\ub9f5(\uc720\ud615\ubcc4) \ub4f1\ub85d +comDamMapMat.comDamMapMaterialRegist.orgnztId=\uc870\uc9c1ID +comDamMapMat.comDamMapMaterialRegist.orgnztNm=\uc870\uc9c1\uba85 +comDamMapMat.comDamMapMaterialRegist.knoTypeCd=\uc9c0\uc2dd\uc720\ud615\ucf54\ub4dc +comDamMapMat.comDamMapMaterialRegist.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamMapMat.comDamMapMaterialRegist.knoUrl=\uc9c0\uc2ddURL +comDamMapMat.comDamMapMaterialRegist.clYmd=\ubd84\ub958\uc77c\uc790 + + diff --git a/src/main/resources/egovframework/message/com/dam/map/tea/message_en.properties b/src/main/resources/egovframework/message/com/dam/map/tea/message_en.properties new file mode 100644 index 00000000..e3d0ea54 --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/map/tea/message_en.properties @@ -0,0 +1,38 @@ +# EgovMapMaterial.xml +comDamMapTea.mapTeam.validate.orgnztId=Organization ID +comDamMapTea.mapTeam.validate.orgnztNm=Organization Name +comDamMapTea.mapTeam.validate.knoUrl=Knowledge URL +comDamMapTea.mapTeam.validate.clYmd=Date of Classification + + +comDamMapTea.comDamMapTeamList.title=Knowledge Map (by organization) Management List +comDamMapTea.comDamMapTeamList.pageTop.title=Knowledge Map (by organization) Management List +comDamMapTea.comDamMapTeamList.index=Index +comDamMapTea.comDamMapTeamList.orgnztNm=Organization Name +comDamMapTea.comDamMapTeamList.orgnztId=Organization ID +comDamMapTea.comDamMapTeamList.knoUrl=Knowledge URL +comDamMapTea.comDamMapTeamList.clYmd=Date of Classification + + +comDamMapTea.comDamMapTeamDetail.title=Knowledge Map (by organization) Detailed View +comDamMapTea.comDamMapTeamDetail.pageTop.title=Knowledge Map (by organization) Detailed View +comDamMapTea.comDamMapTeamDetail.orgnztId=Organization ID +comDamMapTea.comDamMapTeamDetail.orgnztNm=Organization Name +comDamMapTea.comDamMapTeamDetail.knoUrl=Knowledge URL +comDamMapTea.comDamMapTeamDetail.clYmd=Date of Classification + + +comDamMapTea.comDamMapTeamModify.title=Knowledge Map (by organization) Modification +comDamMapTea.comDamMapTeamModify.pageTop.title=Knowledge Map (by organization) Modification +comDamMapTea.comDamMapTeamModify.orgnztId=Organization ID +comDamMapTea.comDamMapTeamModify.orgnztNm=Organization Name +comDamMapTea.comDamMapTeamModify.knoUrl=Knowledge URL +comDamMapTea.comDamMapTeamModify.clYmd=Date of Classification + + +comDamMapTea.comDamMapTeamRegist.title=Knowledge Map (by organization) Registration +comDamMapTea.comDamMapTeamRegist.pageTop.title=Knowledge Map (by organization) Registration +comDamMapTea.comDamMapTeamRegist.orgnztId=Organization ID +comDamMapTea.comDamMapTeamRegist.orgnztNm=Organization Name +comDamMapTea.comDamMapTeamRegist.knoUrl=Knowledge URL +comDamMapTea.comDamMapTeamRegist.clYmd=Date of Classification diff --git a/src/main/resources/egovframework/message/com/dam/map/tea/message_ko.properties b/src/main/resources/egovframework/message/com/dam/map/tea/message_ko.properties new file mode 100644 index 00000000..df252695 --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/map/tea/message_ko.properties @@ -0,0 +1,38 @@ +# EgovMapMaterial.xml +comDamMapTea.mapTeam.validate.orgnztId=\uc870\uc9c1\uc544\uc774\ub514 +comDamMapTea.mapTeam.validate.orgnztNm=\uc870\uc9c1\uba85 +comDamMapTea.mapTeam.validate.knoUrl=\uc9c0\uc2ddURL +comDamMapTea.mapTeam.validate.clYmd=\ubd84\ub958\uc77c\uc790 + + +comDamMapTea.comDamMapTeamList.title=\uc9c0\uc2dd\ub9f5(\uc870\uc9c1\ubcc4)\uad00\ub9ac \ubaa9\ub85d +comDamMapTea.comDamMapTeamList.pageTop.title=\uc9c0\uc2dd\ub9f5(\uc870\uc9c1\ubcc4)\uad00\ub9ac \ubaa9\ub85d +comDamMapTea.comDamMapTeamList.index=\uc21c\ubc88 +comDamMapTea.comDamMapTeamList.orgnztNm=\uc870\uc9c1\uba85 +comDamMapTea.comDamMapTeamList.orgnztId=\uc870\uc9c1 ID +comDamMapTea.comDamMapTeamList.knoUrl=\uc9c0\uc2ddURL +comDamMapTea.comDamMapTeamList.clYmd=\ubd84\ub958\uc77c\uc790 + + +comDamMapTea.comDamMapTeamDetail.title=\uc9c0\uc2dd\ub9f5(\uc870\uc9c1\ubcc4) \uc0c1\uc138\uc870\ud68c +comDamMapTea.comDamMapTeamDetail.pageTop.title=\uc9c0\uc2dd\ub9f5(\uc870\uc9c1\ubcc4) \uc0c1\uc138\uc870\ud68c +comDamMapTea.comDamMapTeamDetail.orgnztId=\uc870\uc9c1ID +comDamMapTea.comDamMapTeamDetail.orgnztNm=\uc870\uc9c1\uba85 +comDamMapTea.comDamMapTeamDetail.knoUrl=\uc9c0\uc2ddURL +comDamMapTea.comDamMapTeamDetail.clYmd=\ubd84\ub958\uc77c\uc790 + + +comDamMapTea.comDamMapTeamModify.title=\uc9c0\uc2dd\ub9f5(\uc870\uc9c1\ubcc4) \uc218\uc815 +comDamMapTea.comDamMapTeamModify.pageTop.title=\uc9c0\uc2dd\ub9f5(\uc870\uc9c1\ubcc4) \uc218\uc815 +comDamMapTea.comDamMapTeamModify.orgnztId=\uc870\uc9c1ID +comDamMapTea.comDamMapTeamModify.orgnztNm=\uc870\uc9c1\uba85 +comDamMapTea.comDamMapTeamModify.knoUrl=\uc9c0\uc2ddURL +comDamMapTea.comDamMapTeamModify.clYmd=\ubd84\ub958\uc77c\uc790 + + +comDamMapTea.comDamMapTeamRegist.title=\uc9c0\uc2dd\ub9f5(\uc870\uc9c1\ubcc4) \ub4f1\ub85d +comDamMapTea.comDamMapTeamRegist.pageTop.title=\uc9c0\uc2dd\ub9f5(\uc870\uc9c1\ubcc4) \ub4f1\ub85d +comDamMapTea.comDamMapTeamRegist.orgnztId=\uc870\uc9c1ID +comDamMapTea.comDamMapTeamRegist.orgnztNm=\uc870\uc9c1\uba85 +comDamMapTea.comDamMapTeamRegist.knoUrl=\uc9c0\uc2ddURL +comDamMapTea.comDamMapTeamRegist.clYmd=\ubd84\ub958\uc77c\uc790 diff --git a/src/main/resources/egovframework/message/com/dam/mgm/message_en.properties b/src/main/resources/egovframework/message/com/dam/mgm/message_en.properties new file mode 100644 index 00000000..c1628eb0 --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/mgm/message_en.properties @@ -0,0 +1,63 @@ +# KnoManagement.xml +comDamMgm.knoManagement.validate.knoAps=Knowledge Refining + + +comDamMgm.comDamManagementList.title=Knowledge Management List +comDamMgm.comDamManagementList.pageTop.title=Knowledge Management List +comDamMgm.comDamManagementList.index=No. +comDamMgm.comDamManagementList.orgnztNm=Organization Name +comDamMgm.comDamManagementList.knoTypeNm=Knowledge type +comDamMgm.comDamManagementList.knoNm=Knowledge Name +comDamMgm.comDamManagementList.userNm=Registrant Name +comDamMgm.comDamManagementList.appYmd=Evaluation Date + + +comDamMgm.comDamManagementDetail.title=Knowledge Management List +comDamMgm.comDamManagementDetail.pageTop.title=Knowledge Management List +comDamMgm.comDamManagementDetail.orgnztNm=Organization Name +comDamMgm.comDamManagementDetail.knoTypeNm=Knowledge Type Name +comDamMgm.comDamManagementDetail.frstRegisterPnttm=Registration Date +comDamMgm.comDamManagementDetail.userNm=Registrant Name +comDamMgm.comDamManagementDetail.knoNm=Knowledge Name +comDamMgm.comDamManagementDetail.knoCn=Knowledge Content +comDamMgm.comDamManagementDetail.othbcAt=Disclosure State +comDamMgm.comDamManagementDetail.public=public +comDamMgm.comDamManagementDetail.private=private +comDamMgm.comDamManagementDetail.appYmd=Evaluation Date +comDamMgm.comDamManagementDetail.speNm=Evaluator Name +comDamMgm.comDamManagementDetail.knoAps=Evaluation Result +comDamMgm.comDamManagementDetail.knoAps=Knowledge Refining +comDamMgm.comDamManagementDetail.junkYmd=Disposal Date +comDamMgm.comDamManagementDetail.atchFileList=Attachment List +comDamMgm.comDamManagementDetail.status.proceeding=Proceeding +comDamMgm.comDamManagementDetail.status.evaluating=Evaluating +comDamMgm.comDamManagementDetail.status.approved=Approved +comDamMgm.comDamManagementDetail.status.denied=Denied +comDamMgm.comDamManagementDetail.status.available=Available +comDamMgm.comDamManagementDetail.status.disposal=Disposal +comDamMgm.comDamManagementDetail.disposal=Disposal + + +comDamMgm.comDamManagementModify.title=Knowledge Management List +comDamMgm.comDamManagementModify.pageTop.title=Knowledge Management List +comDamMgm.comDamManagementModify.orgnztNm=Organization Name +comDamMgm.comDamManagementModify.knoTypeNm=Knowledge Type Name +comDamMgm.comDamManagementModify.frstRegisterPnttm=Registration Date +comDamMgm.comDamManagementModify.userNm=Registrant Name +comDamMgm.comDamManagementModify.knoNm=Knowledge Name +comDamMgm.comDamManagementModify.knoCn=Knowledge Content +comDamMgm.comDamManagementModify.othbcAt=Disclosure State +comDamMgm.comDamManagementModify.appYmd=Evaluation Date +comDamMgm.comDamManagementModify.speNm=Evaluator Name +comDamMgm.comDamManagementModify.knoAps=Evaluation Result +comDamMgm.comDamManagementModify.knoAps=Knowledge Refining +comDamMgm.comDamManagementModify.junkYmd=Disposal Date +comDamMgm.comDamManagementModify.atchFileList=Attachment List +comDamMgm.comDamManagementModify.status.proceeding=Proceeding +comDamMgm.comDamManagementModify.status.evaluating=Evaluating +comDamMgm.comDamManagementModify.status.approved=Approved +comDamMgm.comDamManagementModify.status.denied=Denied +comDamMgm.comDamManagementModify.status.available=Available +comDamMgm.comDamManagementModify.status.disposal=Disposal +comDamMgm.comDamManagementModify.disposal=Disposal + diff --git a/src/main/resources/egovframework/message/com/dam/mgm/message_ko.properties b/src/main/resources/egovframework/message/com/dam/mgm/message_ko.properties new file mode 100644 index 00000000..d6aa183d --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/mgm/message_ko.properties @@ -0,0 +1,62 @@ +# KnoManagement.xml +comDamMgm.knoManagement.validate.knoAps=\uc9c0\uc2dd\uc815\uc81c + + +comDamMgm.comDamManagementList.title=\uc9c0\uc2dd\uc815\ubcf4\uad00\ub9ac \ubaa9\ub85d +comDamMgm.comDamManagementList.pageTop.title=\uc9c0\uc2dd\uc815\ubcf4\uad00\ub9ac \ubaa9\ub85d +comDamMgm.comDamManagementList.index=\uc21c\ubc88 +comDamMgm.comDamManagementList.orgnztNm=\uc870\uc9c1\uba85 +comDamMgm.comDamManagementList.knoTypeNm=\uc9c0\uc2dd\uc720\ud615 +comDamMgm.comDamManagementList.knoNm=\uc9c0\uc2dd\uba85 +comDamMgm.comDamManagementList.userNm=\ub4f1\ub85d\uc790\uba85 +comDamMgm.comDamManagementList.appYmd=\ud3c9\uac00\uc77c\uc790 + + +comDamMgm.comDamManagementDetail.title=\uc9c0\uc2dd\uc815\ubcf4 \uc0c1\uc138\uc870\ud68c +comDamMgm.comDamManagementDetail.pageTop.title=\uc9c0\uc2dd\uc815\ubcf4 \uc0c1\uc138\uc870\ud68c +comDamMgm.comDamManagementDetail.orgnztNm=\uc870\uc9c1\uba85 +comDamMgm.comDamManagementDetail.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamMgm.comDamManagementDetail.frstRegisterPnttm=\ub4f1\ub85d\uc77c\uc790 +comDamMgm.comDamManagementDetail.userNm=\ub4f1\ub85d\uc790\uba85 +comDamMgm.comDamManagementDetail.knoNm=\uc9c0\uc2dd\uba85 +comDamMgm.comDamManagementDetail.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 +comDamMgm.comDamManagementDetail.othbcAt=\uacf5\uac1c\uc5ec\ubd80 +comDamMgm.comDamManagementDetail.public=\uacf5\uac1c +comDamMgm.comDamManagementDetail.private=\ube44\uacf5\uac1c +comDamMgm.comDamManagementDetail.appYmd=\ud3c9\uac00\uc77c\uc790 +comDamMgm.comDamManagementDetail.speNm=\ud3c9\uac00\uc790\uba85 +comDamMgm.comDamManagementDetail.knoAps=\ud3c9\uac00\uacb0\uacfc +comDamMgm.comDamManagementDetail.knoAps=\uc9c0\uc2dd\uc815\uc81c +comDamMgm.comDamManagementDetail.junkYmd=\ud3d0\uae30\uc77c\uc790 +comDamMgm.comDamManagementDetail.atchFileList=\ucca8\ubd80\ud30c\uc77c \ubaa9\ub85d +comDamMgm.comDamManagementDetail.status.proceeding=\uc9c4\ud589\uc911 +comDamMgm.comDamManagementDetail.status.evaluating=\ud3c9\uac00\uc911 +comDamMgm.comDamManagementDetail.status.approved=\uc2b9\uc778 +comDamMgm.comDamManagementDetail.status.denied=\ubc18\ub824 +comDamMgm.comDamManagementDetail.status.available=\uac00\uc6a9 +comDamMgm.comDamManagementDetail.status.disposal=\ud3d0\uae30 +comDamMgm.comDamManagementDetail.disposal=\ud3d0\uae30 + + +comDamMgm.comDamManagementModify.title=\uc9c0\uc2dd\uc815\ubcf4 \uc218\uc815 +comDamMgm.comDamManagementModify.pageTop.title=\uc9c0\uc2dd\uc815\ubcf4 \uc218\uc815 +comDamMgm.comDamManagementModify.orgnztNm=\uc870\uc9c1\uba85 +comDamMgm.comDamManagementModify.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamMgm.comDamManagementModify.frstRegisterPnttm=\ub4f1\ub85d\uc77c\uc790 +comDamMgm.comDamManagementModify.userNm=\ub4f1\ub85d\uc790\uba85 +comDamMgm.comDamManagementModify.knoNm=\uc9c0\uc2dd\uba85 +comDamMgm.comDamManagementModify.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 +comDamMgm.comDamManagementModify.othbcAt=\uacf5\uac1c\uc5ec\ubd80 +comDamMgm.comDamManagementModify.appYmd=\ud3c9\uac00\uc77c\uc790 +comDamMgm.comDamManagementModify.speNm=\ud3c9\uac00\uc790\uba85 +comDamMgm.comDamManagementModify.knoAps=\ud3c9\uac00\uacb0\uacfc +comDamMgm.comDamManagementModify.knoAps=\uc9c0\uc2dd\uc815\uc81c +comDamMgm.comDamManagementModify.junkYmd=\ud3d0\uae30\uc77c\uc790 +comDamMgm.comDamManagementModify.atchFileList=\ucca8\ubd80\ud30c\uc77c \ubaa9\ub85d +comDamMgm.comDamManagementModify.status.proceeding=\uc9c4\ud589\uc911 +comDamMgm.comDamManagementModify.status.evaluating=\ud3c9\uac00\uc911 +comDamMgm.comDamManagementModify.status.approved=\uc2b9\uc778 +comDamMgm.comDamManagementModify.status.denied=\ubc18\ub824 +comDamMgm.comDamManagementModify.status.available=\uac00\uc6a9 +comDamMgm.comDamManagementModify.status.disposal=\ud3d0\uae30 +comDamMgm.comDamManagementModify.disposal=\ud3d0\uae30 diff --git a/src/main/resources/egovframework/message/com/dam/per/message_en.properties b/src/main/resources/egovframework/message/com/dam/per/message_en.properties new file mode 100644 index 00000000..e4a6277c --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/per/message_en.properties @@ -0,0 +1,55 @@ +comDamPer.comDamPersonalList.title=Individual Knowledge Management List +comDamPer.comDamPersonalList.pageTop.title=Individual Knowledge Management List +comDamPer.comDamPersonalList.index=Index +comDamPer.comDamPersonalList.orgnztNm=Organization Name +comDamPer.comDamPersonalList.knoTypeNm=Knowledge Type +comDamPer.comDamPersonalList.knoNm=Knowledge Name +comDamPer.comDamPersonalList.userNm=Registrant +comDamPer.comDamPersonalList.colYmd=Collection Date +comDamPer.comDamPersonalList.othbcAt=Disclosure State +comDamPer.comDamPersonalList.public=Public +comDamPer.comDamPersonalList.private=Private + + +comDamPer.comDamPersonalDetail.title=Individual Knowledge Detailed View +comDamPer.comDamPersonalDetail.pageTop.title=Individual Knowledge Detailed View +comDamPer.comDamPersonalDetail.orgnztNm=Organization Name +comDamPer.comDamPersonalDetail.knoTypeNm=Knowledge Type +comDamPer.comDamPersonalDetail.knoNm=Knowledge Name +comDamPer.comDamPersonalDetail.knoCn=Knowledge Content +comDamPer.comDamPersonalDetail.colYmd=Collection Date +comDamPer.comDamPersonalDetail.othbcAt=Disclosure State +comDamPer.comDamPersonalDetail.public=Public +comDamPer.comDamPersonalDetail.private=Private +comDamPer.comDamPersonalDetail.atchFileId=Attachment List + + +comDamPer.comDamPersonalModify.title=Individual Knowledge Modification +comDamPer.comDamPersonalModify.pageTop.title=Individual Knowledge Modification +comDamPer.comDamPersonalModify.orgnztNm=Organization Name +comDamPer.comDamPersonalModify.knoTypeNm=Knowledge Type +comDamPer.comDamPersonalModify.knoNm=Knowledge Name +comDamPer.comDamPersonalModify.knoCn=Knowledge Content +comDamPer.comDamPersonalModify.colYmd=Collection Date +comDamPer.comDamPersonalModify.othbcAt=Disclosure State +comDamPer.comDamPersonalModify.public=Public +comDamPer.comDamPersonalModify.private=Private +comDamPer.comDamPersonalModify.atchFileId=Attachment List +comDamPer.comDamPersonalModify.fileUpload=File Attachments +comDamPer.comDamPersonalModify.colYmdCalendar=Collection Date Calendar + + +comDamPer.comDamPersonalRegist.title=Individual Knowledge Registration +comDamPer.comDamPersonalRegist.pageTop.title=Individual Knowledge Registration +comDamPer.comDamPersonalRegist.orgnztNm=Organization Name +comDamPer.comDamPersonalRegist.knoTypeNm=Knowledge Type +comDamPer.comDamPersonalRegist.knoNm=Knowledge Name +comDamPer.comDamPersonalRegist.knoCn=Knowledge Content +comDamPer.comDamPersonalRegist.colYmd=Collection Date +comDamPer.comDamPersonalRegist.othbcAt=Disclosure State +comDamPer.comDamPersonalRegist.public=Public +comDamPer.comDamPersonalRegist.private=Private +comDamPer.comDamPersonalRegist.atchFileId=Attachment List +comDamPer.comDamPersonalRegist.fileUpload=File Attachments +comDamPer.comDamPersonalRegist.colYmdCalendar=Collection Date Calendar + diff --git a/src/main/resources/egovframework/message/com/dam/per/message_ko.properties b/src/main/resources/egovframework/message/com/dam/per/message_ko.properties new file mode 100644 index 00000000..28ed0214 --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/per/message_ko.properties @@ -0,0 +1,56 @@ +comDamPer.comDamPersonalList.title=\uac1c\uc778\uc9c0\uc2dd\uad00\ub9ac \ubaa9\ub85d +comDamPer.comDamPersonalList.pageTop.title=\uac1c\uc778\uc9c0\uc2dd\uad00\ub9ac \ubaa9\ub85d +comDamPer.comDamPersonalList.index=\uc21c\ubc88 +comDamPer.comDamPersonalList.orgnztNm=\uc870\uc9c1\uba85 +comDamPer.comDamPersonalList.knoTypeNm=\uc9c0\uc2dd\uc720\ud615 +comDamPer.comDamPersonalList.knoNm=\uc9c0\uc2dd\uba85 +comDamPer.comDamPersonalList.userNm=\ub4f1\ub85d\uc790 +comDamPer.comDamPersonalList.colYmd=\uc218\uc9d1\uc77c\uc790 +comDamPer.comDamPersonalList.othbcAt=\uacf5\uac1c\uc5ec\ubd80 +comDamPer.comDamPersonalList.public=\uacf5\uac1c +comDamPer.comDamPersonalList.private=\ube44\uacf5\uac1c + + +comDamPer.comDamPersonalDetail.title=\uac1c\uc778\uc9c0\uc2dd \uc0c1\uc138\uc870\ud68c +comDamPer.comDamPersonalDetail.pageTop.title=\uac1c\uc778\uc9c0\uc2dd \uc0c1\uc138\uc870\ud68c +comDamPer.comDamPersonalDetail.orgnztNm=\uc870\uc9c1\uba85 +comDamPer.comDamPersonalDetail.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamPer.comDamPersonalDetail.knoNm=\uc9c0\uc2dd\uba85 +comDamPer.comDamPersonalDetail.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 +comDamPer.comDamPersonalDetail.colYmd=\uc218\uc9d1\uc77c\uc790 +comDamPer.comDamPersonalDetail.othbcAt=\uacf5\uac1c\uc5ec\ubd80 +comDamPer.comDamPersonalDetail.public=\uacf5\uac1c +comDamPer.comDamPersonalDetail.private=\ube44\uacf5\uac1c +comDamPer.comDamPersonalDetail.atchFileId=\ucca8\ubd80\ud30c\uc77c \ubaa9\ub85d + + +comDamPer.comDamPersonalModify.title=\uac1c\uc778\uc9c0\uc2dd \uc218\uc815 +comDamPer.comDamPersonalModify.pageTop.title=\uac1c\uc778\uc9c0\uc2dd \uc218\uc815 +comDamPer.comDamPersonalModify.orgnztNm=\uc870\uc9c1\uba85 +comDamPer.comDamPersonalModify.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamPer.comDamPersonalModify.knoNm=\uc9c0\uc2dd\uba85 +comDamPer.comDamPersonalModify.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 +comDamPer.comDamPersonalModify.colYmd=\uc218\uc9d1\uc77c\uc790 +comDamPer.comDamPersonalModify.othbcAt=\uacf5\uac1c\uc5ec\ubd80 +comDamPer.comDamPersonalModify.public=\uacf5\uac1c +comDamPer.comDamPersonalModify.private=\ube44\uacf5\uac1c +comDamPer.comDamPersonalModify.atchFileId=\ucca8\ubd80\ud30c\uc77c \ubaa9\ub85d +comDamPer.comDamPersonalModify.fileUpload=\ud30c\uc77c\ucca8\ubd80 +comDamPer.comDamPersonalModify.colYmdCalendar=\uc218\uc9d1\uc77c\ub2ec\ub825 + + +comDamPer.comDamPersonalRegist.title=\uac1c\uc778\uc9c0\uc2dd \ub4f1\ub85d +comDamPer.comDamPersonalRegist.pageTop.title=\uac1c\uc778\uc9c0\uc2dd \ub4f1\ub85d +comDamPer.comDamPersonalRegist.orgnztNm=\uc870\uc9c1\uba85 +comDamPer.comDamPersonalRegist.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamPer.comDamPersonalRegist.knoNm=\uc9c0\uc2dd\uba85 +comDamPer.comDamPersonalRegist.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 +comDamPer.comDamPersonalRegist.colYmd=\uc218\uc9d1\uc77c\uc790 +comDamPer.comDamPersonalRegist.othbcAt=\uacf5\uac1c\uc5ec\ubd80 +comDamPer.comDamPersonalRegist.public=\uacf5\uac1c +comDamPer.comDamPersonalRegist.private=\ube44\uacf5\uac1c +comDamPer.comDamPersonalRegist.atchFileId=\ucca8\ubd80\ud30c\uc77c \ubaa9\ub85d +comDamPer.comDamPersonalRegist.fileUpload=\ud30c\uc77c\ucca8\ubd80 +comDamPer.comDamPersonalRegist.colYmdCalendar=\uc218\uc9d1\uc77c\ub2ec\ub825 + + diff --git a/src/main/resources/egovframework/message/com/dam/spe/req/message_en.properties b/src/main/resources/egovframework/message/com/dam/spe/req/message_en.properties new file mode 100644 index 00000000..803fa758 --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/spe/req/message_en.properties @@ -0,0 +1,48 @@ +# EgovKnoRequestOffer.xml +comDamSpeReq.knoRequestOffer.validate.orgnztId=Organization Name +comDamSpeReq.knoRequestOffer.validate.knoTypeCd=Knowledge Type +comDamSpeReq.knoRequestOffer.validate.knoNm=Knowledge Name +comDamSpeReq.knoRequestOffer.validate.knoCn=Knowledge Content + + +comDamSpeReq.comDamRequestOfferList.title=Providing and requesting knowledge information +comDamSpeReq.comDamRequestOfferList.pageTop.title=Providing and requesting knowledge information +comDamSpeReq.comDamRequestOfferList.knoId=No. +comDamSpeReq.comDamRequestOfferList.orgnztNm=Organization Name +comDamSpeReq.comDamRequestOfferList.knoTypeNm=Knowledge Type +comDamSpeReq.comDamRequestOfferList.knoNm=Knowledge Name +comDamSpeReq.comDamRequestOfferList.frstRegisterNm=Registrant +comDamSpeReq.comDamRequestOfferList.frstRegistPnttm=Registration Date +comDamSpeReq.comDamRequestOfferList.knoCn=Knowledge Content + + +comDamSpeReq.comDamRequestOfferDetail.title=Providing and requesting knowledge information - Dedetailed View +comDamSpeReq.comDamRequestOfferDetail.pageTop.title=Providing and requesting knowledge information - Dedetailed View +comDamSpeReq.comDamRequestOfferDetail.orgnztNm=Organization Name +comDamSpeReq.comDamRequestOfferDetail.knoTypeNm=Knowledge Type +comDamSpeReq.comDamRequestOfferDetail.knoNm=Knowledge Name +comDamSpeReq.comDamRequestOfferDetail.knoCn=Knowledge Content +comDamSpeReq.comDamRequestOfferDetail.atchFile=Attach File + + +comDamSpeReq.comDamRequestOfferUpdt..title=Providing and requesting knowledge information - Modification +comDamSpeReq.comDamRequestOfferUpdt..pageTop.title=Providing and requesting knowledge information - Modification +comDamSpeReq.comDamRequestOfferUpdt.orgnztNm=Organization Name +comDamSpeReq.comDamRequestOfferUpdt.knoTypeNm=Knowledge Type +comDamSpeReq.comDamRequestOfferUpdt.knoNm=Knowledge Name +comDamSpeReq.comDamRequestOfferUpdt.knoCn=Knowledge Content +comDamSpeReq.comDamRequestOfferUpdt.atchFileList=Attached File List +comDamSpeReq.comDamRequestOfferUpdt.atchFile=Attach File + + +comDamSpeReq.comDamRequestOfferRegist..title=Providing and requesting knowledge information - Registration +comDamSpeReq.comDamRequestOfferRegist..pageTop.title=Providing and requesting knowledge information +comDamSpeReq.comDamRequestOfferRegist.orgnztNm=Organization Name +comDamSpeReq.comDamRequestOfferRegist.knoTypeNm=Knowledge Type +comDamSpeReq.comDamRequestOfferRegist.knoNm=Knowledge Name +comDamSpeReq.comDamRequestOfferRegist.knoCn=Knowledge Content +comDamSpeReq.comDamRequestOfferRegist.atchFile=Attach File +comDamSpeReq.comDamRequestOfferRegist.answer=answer +comDamSpeReq.comDamRequestOfferRegist.regist=regist + + diff --git a/src/main/resources/egovframework/message/com/dam/spe/req/message_ko.properties b/src/main/resources/egovframework/message/com/dam/spe/req/message_ko.properties new file mode 100644 index 00000000..04d9c594 --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/spe/req/message_ko.properties @@ -0,0 +1,46 @@ +# EgovKnoRequestOffer.xml +comDamSpeReq.knoRequestOffer.validate.orgnztId=\uc870\uc9c1\uba85 +comDamSpeReq.knoRequestOffer.validate.knoTypeCd=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamSpeReq.knoRequestOffer.validate.knoNm=\uc9c0\uc2dd\uba85 +comDamSpeReq.knoRequestOffer.validate.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 + + +comDamSpeReq.comDamRequestOfferList.title=\uc9c0\uc2dd \uc815\ubcf4\uc81c\uacf5/\uc815\ubcf4\uc694\uccad - \ubaa9\ub85d\uc870\ud68c +comDamSpeReq.comDamRequestOfferList.pageTop.title=\uc9c0\uc2dd \uc815\ubcf4\uc81c\uacf5/\uc815\ubcf4\uc694\uccad \ubaa9\ub85d +comDamSpeReq.comDamRequestOfferList.knoId=\uc21c\ubc88 +comDamSpeReq.comDamRequestOfferList.orgnztNm=\uc870\uc9c1\uba85 +comDamSpeReq.comDamRequestOfferList.knoTypeNm=\uc9c0\uc2dd\uc720\ud615 +comDamSpeReq.comDamRequestOfferList.knoNm=\uc9c0\uc2dd\uba85 +comDamSpeReq.comDamRequestOfferList.frstRegisterNm=\ub4f1\ub85d\uc790 +comDamSpeReq.comDamRequestOfferList.frstRegistPnttm=\ub4f1\ub85d\uc77c\uc790 +comDamSpeReq.comDamRequestOfferList.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 + + +comDamSpeReq.comDamRequestOfferDetail.title=\uc9c0\uc2dd \uc815\ubcf4\uc81c\uacf5/\uc815\ubcf4\uc694\uccad - \uc0c1\uc138\uc870\ud68c +comDamSpeReq.comDamRequestOfferDetail.pageTop.title=\uc9c0\uc2dd \uc815\ubcf4\uc81c\uacf5/\uc815\ubcf4\uc694\uccad \uc0c1\uc138\uc870\ud68c +comDamSpeReq.comDamRequestOfferDetail.orgnztNm=\uc870\uc9c1\uba85 +comDamSpeReq.comDamRequestOfferDetail.knoTypeNm=\uc9c0\uc2dd\uc720\ud615 +comDamSpeReq.comDamRequestOfferDetail.knoNm=\uc9c0\uc2dd\uba85 +comDamSpeReq.comDamRequestOfferDetail.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 +comDamSpeReq.comDamRequestOfferDetail.atchFile=\ud30c\uc77c\ucca8\ubd80 + + +comDamSpeReq.comDamRequestOfferUpdt..title=\uc9c0\uc2dd \uc815\ubcf4\uc81c\uacf5/\uc815\ubcf4\uc694\uccad-\uc218\uc815 +comDamSpeReq.comDamRequestOfferUpdt..pageTop.title=\uc9c0\uc2dd \uc815\ubcf4\uc81c\uacf5/\uc815\ubcf4\uc694\uccad \uc218\uc815 +comDamSpeReq.comDamRequestOfferUpdt.orgnztNm=\uc870\uc9c1\uba85 +comDamSpeReq.comDamRequestOfferUpdt.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamSpeReq.comDamRequestOfferUpdt.knoNm=\uc9c0\uc2dd\uba85 +comDamSpeReq.comDamRequestOfferUpdt.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 +comDamSpeReq.comDamRequestOfferUpdt.atchFileList=\ud30c\uc77c\ucca8\ubd80 \ubaa9\ub85d +comDamSpeReq.comDamRequestOfferUpdt.atchFile=\ud30c\uc77c\ucca8\ubd80 + + +comDamSpeReq.comDamRequestOfferRegist..title=\uc9c0\uc2dd \uc815\ubcf4\uc81c\uacf5/\uc815\ubcf4\uc694\uccad-\ub4f1\ub85d +comDamSpeReq.comDamRequestOfferRegist..pageTop.title=\uc9c0\uc2dd \uc815\ubcf4\uc81c\uacf5/\uc815\ubcf4\uc694\uccad +comDamSpeReq.comDamRequestOfferRegist.orgnztNm=\uc870\uc9c1\uba85 +comDamSpeReq.comDamRequestOfferRegist.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamSpeReq.comDamRequestOfferRegist.knoNm=\uc9c0\uc2dd\uba85 +comDamSpeReq.comDamRequestOfferRegist.knoCn=\uc9c0\uc2dd\ub0b4\uc6a9 +comDamSpeReq.comDamRequestOfferRegist.atchFile=\ud30c\uc77c\ucca8\ubd80 +comDamSpeReq.comDamRequestOfferRegist.answer=\ub2f5\ubcc0 +comDamSpeReq.comDamRequestOfferRegist.regist=\ub4f1\ub85d diff --git a/src/main/resources/egovframework/message/com/dam/spe/spe/message_en.properties b/src/main/resources/egovframework/message/com/dam/spe/spe/message_en.properties new file mode 100644 index 00000000..4ac9e22d --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/spe/spe/message_en.properties @@ -0,0 +1,60 @@ +# EgovKnoSpecialist.xml +comDamSpeSpe.knoSpecialist.validate.orgnztId=Organization Name +comDamSpeSpe.knoSpecialist.validate.knoTypeCd=Knowledge Type Name +comDamSpeSpe.knoSpecialist.validate.speId=Expert Name +comDamSpeSpe.knoSpecialist.validate.appTypeCd=Rank +comDamSpeSpe.knoSpecialist.validate.speExpCn=Expert Description +comDamSpeSpe.knoSpecialist.validate.speConfmDe=Approval Date + + +comDamSpeSpe.comDamSpecialistList.title=Knowledge Expert List +comDamSpeSpe.comDamSpecialistList.pageTop.title=Knowledge Expert List +comDamSpeSpe.comDamSpecialistList.index=Index +comDamSpeSpe.comDamSpecialistList.orgnztNm=Organization Name +comDamSpeSpe.comDamSpecialistList.knoTypeNm=Knowledge Type Name +comDamSpeSpe.comDamSpecialistList.expertNm=Expert Name +comDamSpeSpe.comDamSpecialistList.rank=Rank +comDamSpeSpe.comDamSpecialistList.speConfmDe=Approval Date +comDamSpeSpe.comDamSpecialistList.rankType1=Principle Research Engineer +comDamSpeSpe.comDamSpecialistList.rankType2=Senior Research Engineer +comDamSpeSpe.comDamSpecialistList.rankType3=Research Engineer + + +comDamSpeSpe.comDamSpecialistDetail.title=Knowledge Expert Detailed View +comDamSpeSpe.comDamSpecialistDetail.pageTop.title=Knowledge Expert Detailed View +comDamSpeSpe.comDamSpecialistDetail.orgnztNm=Organization Name +comDamSpeSpe.comDamSpecialistDetail.knoTypeNm=Knowledge Type Name +comDamSpeSpe.comDamSpecialistDetail.expertNm=Expert Name +comDamSpeSpe.comDamSpecialistDetail.rank=Rank +comDamSpeSpe.comDamSpecialistDetail.speExpCn=Expert Description +comDamSpeSpe.comDamSpecialistDetail.speConfmDe=Approval Date +comDamSpeSpe.comDamSpecialistDetail.rankType1=Principle Research Engineer +comDamSpeSpe.comDamSpecialistDetail.rankType2=Senior Research Engineer +comDamSpeSpe.comDamSpecialistDetail.rankType3=Research Engineer + + +comDamSpeSpe.comDamSpecialistModify.title=Knowledge Expert Detailed View +comDamSpeSpe.comDamSpecialistModify.pageTop.title=Knowledge Expert Detailed View +comDamSpeSpe.comDamSpecialistModify.orgnztNm=Organization Name +comDamSpeSpe.comDamSpecialistModify.knoTypeNm=Knowledge Type Name +comDamSpeSpe.comDamSpecialistModify.expertNm=Expert Name +comDamSpeSpe.comDamSpecialistModify.rank=Rank +comDamSpeSpe.comDamSpecialistModify.speExpCn=Expert Description +comDamSpeSpe.comDamSpecialistModify.speConfmDe=Approval Date +comDamSpeSpe.comDamSpecialistModify.rankType1=Principle Research Engineer +comDamSpeSpe.comDamSpecialistModify.rankType2=Senior Research Engineer +comDamSpeSpe.comDamSpecialistModify.rankType3=Research Engineer + + +comDamSpeSpe.comDamSpecialistRegist.title=Knowledge Expert Registration +comDamSpeSpe.comDamSpecialistRegist.pageTop.title=Knowledge Expert Registration +comDamSpeSpe.comDamSpecialistRegist.orgnztNm=Organization Name +comDamSpeSpe.comDamSpecialistRegist.knoTypeNm=Knowledge Type Name +comDamSpeSpe.comDamSpecialistRegist.expertNm=Expert Name +comDamSpeSpe.comDamSpecialistRegist.rank=Rank +comDamSpeSpe.comDamSpecialistRegist.speExpCn=Expert Description +comDamSpeSpe.comDamSpecialistRegist.speConfmDe=Approval Date +comDamSpeSpe.comDamSpecialistRegist.rankType1=Principle Research Engineer +comDamSpeSpe.comDamSpecialistRegist.rankType2=Senior Research Engineer +comDamSpeSpe.comDamSpecialistRegist.rankType3=Research Engineer + diff --git a/src/main/resources/egovframework/message/com/dam/spe/spe/message_ko.properties b/src/main/resources/egovframework/message/com/dam/spe/spe/message_ko.properties new file mode 100644 index 00000000..e3ee09e4 --- /dev/null +++ b/src/main/resources/egovframework/message/com/dam/spe/spe/message_ko.properties @@ -0,0 +1,59 @@ +# EgovKnoSpecialist.xml +comDamSpeSpe.knoSpecialist.validate.orgnztId=\uc870\uc9c1\uba85 +comDamSpeSpe.knoSpecialist.validate.knoTypeCd=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamSpeSpe.knoSpecialist.validate.speId=\uc804\ubb38\uac00\uba85 +comDamSpeSpe.knoSpecialist.validate.appTypeCd=\ub4f1\uae09 +comDamSpeSpe.knoSpecialist.validate.speExpCn=\uc804\ubb38\uac00\uc124\uba85 +comDamSpeSpe.knoSpecialist.validate.speConfmDe=\uc804\ubb38\uac00\uc2b9\uc778\uc77c + + +comDamSpeSpe.comDamSpecialistList.title=\uc9c0\uc2dd\uc804\ubb38\uac00 \ubaa9\ub85d +comDamSpeSpe.comDamSpecialistList.pageTop.title=\uc9c0\uc2dd\uc804\ubb38\uac00 \ubaa9\ub85d +comDamSpeSpe.comDamSpecialistList.index=\uc21c\ubc88 +comDamSpeSpe.comDamSpecialistList.orgnztNm=\uc870\uc9c1\uba85 +comDamSpeSpe.comDamSpecialistList.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamSpeSpe.comDamSpecialistList.expertNm=\uc804\ubb38\uac00\uc131\uba85 +comDamSpeSpe.comDamSpecialistList.rank=\ub4f1\uae09 +comDamSpeSpe.comDamSpecialistList.speConfmDe=\uc2b9\uc778\uc77c\uc790 +comDamSpeSpe.comDamSpecialistList.rankType1=\uc218\uc11d +comDamSpeSpe.comDamSpecialistList.rankType2=\ucc45\uc784 +comDamSpeSpe.comDamSpecialistList.rankType3=\uc120\uc784 + + +comDamSpeSpe.comDamSpecialistDetail.title=\uc9c0\uc2dd\uc804\ubb38\uac00 \uc0c1\uc138\uc870\ud68c +comDamSpeSpe.comDamSpecialistDetail.pageTop.title=\uc9c0\uc2dd\uc804\ubb38\uac00 \uc0c1\uc138\uc870\ud68c +comDamSpeSpe.comDamSpecialistDetail.orgnztNm=\uc870\uc9c1\uba85 +comDamSpeSpe.comDamSpecialistDetail.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamSpeSpe.comDamSpecialistDetail.expertNm=\uc804\ubb38\uac00\uc131\uba85 +comDamSpeSpe.comDamSpecialistDetail.rank=\ub4f1\uae09 +comDamSpeSpe.comDamSpecialistDetail.speExpCn=\uc804\ubb38\uac00\uc124\uba85 +comDamSpeSpe.comDamSpecialistDetail.speConfmDe=\uc2b9\uc778\uc77c\uc790 +comDamSpeSpe.comDamSpecialistDetail.rankType1=\uc218\uc11d +comDamSpeSpe.comDamSpecialistDetail.rankType2=\ucc45\uc784 +comDamSpeSpe.comDamSpecialistDetail.rankType3=\uc120\uc784 + + +comDamSpeSpe.comDamSpecialistModify.title=\uc9c0\uc2dd\uc804\ubb38\uac00 \uc218\uc815 +comDamSpeSpe.comDamSpecialistModify.pageTop.title=\uc9c0\uc2dd\uc804\ubb38\uac00 \uc218\uc815 +comDamSpeSpe.comDamSpecialistModify.orgnztNm=\uc870\uc9c1\uba85 +comDamSpeSpe.comDamSpecialistModify.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamSpeSpe.comDamSpecialistModify.expertNm=\uc804\ubb38\uac00\uc131\uba85 +comDamSpeSpe.comDamSpecialistModify.rank=\ub4f1\uae09 +comDamSpeSpe.comDamSpecialistModify.speExpCn=\uc804\ubb38\uac00\uc124\uba85 +comDamSpeSpe.comDamSpecialistModify.speConfmDe=\uc2b9\uc778\uc77c\uc790 +comDamSpeSpe.comDamSpecialistModify.rankType1=\uc218\uc11d +comDamSpeSpe.comDamSpecialistModify.rankType2=\ucc45\uc784 +comDamSpeSpe.comDamSpecialistModify.rankType3=\uc120\uc784 + + +comDamSpeSpe.comDamSpecialistRegist.title=\uc9c0\uc2dd\uc804\ubb38\uac00 \ub4f1\ub85d +comDamSpeSpe.comDamSpecialistRegist.pageTop.title=\uc9c0\uc2dd\uc804\ubb38\uac00 \ub4f1\ub85d +comDamSpeSpe.comDamSpecialistRegist.orgnztNm=\uc870\uc9c1\uba85 +comDamSpeSpe.comDamSpecialistRegist.knoTypeNm=\uc9c0\uc2dd\uc720\ud615\uba85 +comDamSpeSpe.comDamSpecialistRegist.expertNm=\uc804\ubb38\uac00\uc131\uba85 +comDamSpeSpe.comDamSpecialistRegist.rank=\ub4f1\uae09 +comDamSpeSpe.comDamSpecialistRegist.speExpCn=\uc804\ubb38\uac00\uc124\uba85 +comDamSpeSpe.comDamSpecialistRegist.speConfmDe=\uc2b9\uc778\uc77c\uc790 +comDamSpeSpe.comDamSpecialistRegist.rankType1=\uc218\uc11d +comDamSpeSpe.comDamSpecialistRegist.rankType2=\ucc45\uc784 +comDamSpeSpe.comDamSpecialistRegist.rankType3=\uc120\uc784 diff --git a/src/main/resources/egovframework/message/com/ext/ldapumt/dpt/message_en.properties b/src/main/resources/egovframework/message/com/ext/ldapumt/dpt/message_en.properties new file mode 100644 index 00000000..1f21bd03 --- /dev/null +++ b/src/main/resources/egovframework/message/com/ext/ldapumt/dpt/message_en.properties @@ -0,0 +1,29 @@ +#LDAP Org. Management, LDAP Org. Graph# +extLdapumtDpt.deptTree.Title=LDAP Org. Management +extLdapumtDpt.deptTree.rename=rename +extLdapumtDpt.deptTree.del=del +extLdapumtDpt.deptTree.add=add +extLdapumtDpt.deptTree.edit=edit +extLdapumtDpt.deptTree.deptMove=dept.move +extLdapumtDpt.deptTree.paste=paste +extLdapumtDpt.deptTree.dept=dept +extLdapumtDpt.deptTree.user=user + +extLdapumtDpt.user.name=name +extLdapumtDpt.user.dept=ou +extLdapumtDpt.user.deptCode=ou.code +extLdapumtDpt.user.deptOrg=company name +extLdapumtDpt.user.deptOrgCode=topou code +extLdapumtDpt.user.userFullName=user full name +extLdapumtDpt.user.orgFullName=org full name + +extLdapumtDpt.dept.dept=ou +extLdapumtDpt.dept.ouCode=ou.code +extLdapumtDpt.dept.ucChieftitle=uc.chieftitle +extLdapumtDpt.dept.ucOrgFullName=uc.org.full name +extLdapumtDpt.dept.parentouCode=parentou code +extLdapumtDpt.dept.repouCode=repou.code +extLdapumtDpt.dept.ouReceiveDocumentYN=receive document Yn +extLdapumtDpt.dept.ouSendOutDocumentYN=send out document Yn + +extLdapumtDpt.deptChart.Title=LDAP Org. Graph \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/ext/ldapumt/dpt/message_ko.properties b/src/main/resources/egovframework/message/com/ext/ldapumt/dpt/message_ko.properties new file mode 100644 index 00000000..7d16e89f --- /dev/null +++ b/src/main/resources/egovframework/message/com/ext/ldapumt/dpt/message_ko.properties @@ -0,0 +1,29 @@ +#LDAP \uc870\uc9c1\ub3c4 \ud2b8\ub9ac, LDAP \uc870\uc9c1\ub3c4 \uadf8\ub798\ud504# +extLdapumtDpt.deptTree.Title=LDAP \uc870\uc9c1\ub3c4 \ud2b8\ub9ac +extLdapumtDpt.deptTree.rename=\uc774\ub984\ubcc0\uacbd +extLdapumtDpt.deptTree.del=\uc0ad\uc81c +extLdapumtDpt.deptTree.add=\ucd94\uac00 +extLdapumtDpt.deptTree.edit=\ud3b8\uc9d1 +extLdapumtDpt.deptTree.deptMove=\uc774\ub3d9\ubd80\uc11c\uc120\ud0dd +extLdapumtDpt.deptTree.paste=\ubd99\uc5ec\ub123\uae30 +extLdapumtDpt.deptTree.dept=\ubd80\uc11c +extLdapumtDpt.deptTree.user=\uc0ac\uc6a9\uc790 + +extLdapumtDpt.user.name=\uc774\ub984 +extLdapumtDpt.user.dept=\uc18c\uc18d\ubd80\uc11c +extLdapumtDpt.user.deptCode=\ubd80\uc11c\ucf54\ub4dc +extLdapumtDpt.user.deptOrg=\uc18c\uc18d\uae30\uad00 +extLdapumtDpt.user.deptOrgCode=\uae30\uad00\ucf54\ub4dc +extLdapumtDpt.user.userFullName=\uc0ac\uc6a9\uc790\uc804\uccb4\uc774\ub984 +extLdapumtDpt.user.orgFullName=\uc870\uc9c1\uc804\uccb4\uc774\ub984 + +extLdapumtDpt.dept.dept=\ubd80\uc11c\uba85 +extLdapumtDpt.dept.ouCode=\ubd80\uc11c\ucf54\ub4dc +extLdapumtDpt.dept.ucChieftitle=\ubd80\uc11c\uc7a5 +extLdapumtDpt.dept.ucOrgFullName=\uc870\uc9c1\uba85(\uc804\uccb4) +extLdapumtDpt.dept.parentouCode=\uc0c1\uc704\ubd80\uc11c\ucf54\ub4dc +extLdapumtDpt.dept.repouCode=\uae30\uad00\ucf54\ub4dc +extLdapumtDpt.dept.ouReceiveDocumentYN=\ubb38\uc11c\uc218\uc2e0\uc5ec\ubd80 +extLdapumtDpt.dept.ouSendOutDocumentYN=\uad00\uc778\ubd80\uc11c\uc5ec\ubd80 + +extLdapumtDpt.deptChart.Title=LDAP \uc870\uc9c1\ub3c4 \uadf8\ub798\ud504 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/ext/msg/message_en.properties b/src/main/resources/egovframework/message/com/ext/msg/message_en.properties new file mode 100644 index 00000000..7e99a44a --- /dev/null +++ b/src/main/resources/egovframework/message/com/ext/msg/message_en.properties @@ -0,0 +1,12 @@ +#WebMessenger# +comExtMsg.webSocket.Title=Web Messenger +comExtMsg.webSocket.btnInto=messenger access + +comExtMsg.webSocketInto.msg1=on the messenger. +comExtMsg.webSocketInto.msg2=This menu is available after access. +comExtMsg.webSocketInto.msg3=Please log in and use it. + +comExtMsg.webSocketMain.msg=If you select a conversation status other than yourself, the dialog window opens. + +comExtMsg.webSocketChat.msg1=talking to. +comExtMsg.webSocketChat.msg2=No dialogs found. diff --git a/src/main/resources/egovframework/message/com/ext/msg/message_ko.properties b/src/main/resources/egovframework/message/com/ext/msg/message_ko.properties new file mode 100644 index 00000000..85373237 --- /dev/null +++ b/src/main/resources/egovframework/message/com/ext/msg/message_ko.properties @@ -0,0 +1,12 @@ +#\uc6f9\uc18c\ucf13 \uba54\uc2e0\uc800# +comExtMsg.webSocket.Title=\uc6f9\uc18c\ucf13 \uba54\uc2e0\uc800 +comExtMsg.webSocket.btnInto=\uba54\uc2e0\uc800 \uc811\uc18d + +comExtMsg.webSocketInto.msg1=\ub2d8, \uba54\uc2e0\uc800\uc5d0 \uc811\uc18d \ud569\ub2c8\ub2e4. +comExtMsg.webSocketInto.msg2=\uc811\uc18d \ud6c4 \uac00\ub2a5\ud55c \uba54\ub274\uc785\ub2c8\ub2e4. +comExtMsg.webSocketInto.msg3=\ub85c\uadf8\uc778 \ud6c4 \uc774\uc6a9\ud574\uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. + +comExtMsg.webSocketMain.msg=\ubcf8\uc778 \uc678\uc758 \ub300\ud654\uc0c1\ud0dc\ub97c \uc120\ud0dd\ud558\uba74 \ub300\ud654\ucc3d\uc774 \ub739\ub2c8\ub2e4. + +comExtMsg.webSocketChat.msg1=\ub2d8\uacfc \ub300\ud654\uc911\uc785\ub2c8\ub2e4. +comExtMsg.webSocketChat.msg2=\ub300\ud654\uc0c1\ub300\uac00 \uc544\ubb34\ub3c4 \uc5c6\uc2b5\ub2c8\ub2e4. diff --git a/src/main/resources/egovframework/message/com/message-common_en.properties b/src/main/resources/egovframework/message/com/message-common_en.properties new file mode 100644 index 00000000..f59686e2 --- /dev/null +++ b/src/main/resources/egovframework/message/com/message-common_en.properties @@ -0,0 +1,181 @@ +fail.common.msg=error ocurred! +fail.common.sql=sql error ocurred! error code: {0}, error msg: {1} +info.nodata.msg=no data found. + +#UI Common resource# +table.num=num. +table.regdate=reg.date +table.reger=registrant +table.select=select +title.html=egovframe common component +title.detail=Detail Inquiry +title.inquire=Inquire +title.update=Modify +title.create=Create +title.delete=Delete +title.save=Save +title.list=List +title.searchCondition=search condition +title.search=keyword +title.reply=reply +title.scrap=scrap +title.comment=comment +title.attachedFileSelect=attached file +title.attachedFileDelete=attached file delete +title.link=link +title.management=Management +title.all=All + +input.select=Select +input.cSelect=Select +input.input=input +input.button=button +input.selectAll.title=Checkbox select all +input.yes=Yes +input.no=No + +select.searchCondition=select condition select + +button.select=select +button.search=Search +button.use=use +button.notUsed=Not used +button.inquire=inquire +button.update=update +button.create=create +button.delete=delete +button.deleteDatabase=Wiping +button.close=close +button.save=save +button.list=list +button.reset=reset +button.passwordUpdate=password update +button.subscribe=subscribe +button.realname=realname confirm +button.moveToGpin=move to gpin confirm +button.moveToIhidnum=move to ihidnum confirm +button.agree=agree +button.disagree=disagree +button.possible=possible +button.impossible=impossible +button.qnaregist=Q&A create +button.cnsltregist=Counsel create +button.preview=preview +button.next=nexut +button.add=add it now +button.confirm=confirm +button.back =back +button.yes =yes +button.no =no +button.home =home +button.user =user support +button.cop =cooperation +button.wrkstart = work start +button.wrkend = work end +button.reply = reply +button.scrap = scrap +button.comment = comment +button.excel = excel +button.init=init +button.acknowledgment=acknowledgment +button.cancelAcknowledgment=cancel acknowledgment +button.bulkUpload=bulk upload +button.log = log +button.set = set +button.move = move + +#UI Common Message# +common.noScriptTitle.msg=I can't use all functions in browser JavaScript is not supported. +common.searchCondition.msg=This layout is a lower information searches made up of information. + +common.summary.list={0} A list of the details of the output. +common.summary.regist={0} Registered by typing the possible contents of registers by clicking the button. +common.summary.update={0} Registered by typing the possible content of modification by clicking the button. +common.summary.inqire={0} Full inquiry details about the details of the output. + +common.save.msg=confirm save? +common.regist.msg=confirm regist? +common.delete.msg=confirm delete? +common.update.msg=confirm update? +common.nodata.msg=There is no data. please choose another seach keyword +common.required.msg=is required field +common.acknowledgement.msg=confirm acknowledgement? +common.acknowledgementcancel.msg=confirm acknowledgement cancel? +common.nocomment.msg=There is no comment. +common.noguest.msg=There is no guest notice. + +success.request.msg=you're request successfully done +success.common.select=successfully selected +success.common.insert=successfully inserted +success.common.update=successfully updated +success.common.delete=successfully deleted + +common.imposbl.fileupload = cannot upload files +common.isConfmDe.msg=Please check the approval date box +common.isExist.msg = already exist + +fail.common.insert = fail to insert. +fail.common.update = fail to update +fail.common.delete = fail to delete +fail.common.delete.upperMenuExist = fail to delete[upperMenuId foreign key error] +fail.common.select = fail to select +fail.common.login = login information is not correct +fail.common.loginIncorrect = login in more than {0} account will be locked! +fail.common.login.password = password information is not correct(password digit should be 8 to 20) +fail.common.idsearch = can not find id +fail.common.pwsearch = can not find password +fail.request.msg = Failed to handle the request +fail.common.login.ip = Login is refused because it is not a registered IP. + +#UI User Message# +fail.user.passwordUpdate1=current password is not correct +fail.user.passwordUpdate2=password confirm is not correct +info.user.rlnmCnfirm=realname confirm ready +success.user.rlnmCnfirm=it is realname +fail.user.rlnmCnfirm=it is not realname +fail.user.connectFail=connection fail +info.user.rlnmPinCnfirm=Using the i-PIN ID, please check your real name +success.user.rlnmPinCnfirm=Consistent with the registration data of the i-PIN +fail.user.rlnmPinCnfirm=i-PIN does not match the registered data + +#Vlidator Errors# +errors.prefix=
    +errors.suffix=

    + +errors.required={0} is required. +errors.minlength={0} can not be less than {1} characters. +errors.maxlength={0} can not be greater than {1} characters. +errors.invalid={0} is invalid. + +errors.byte={0} must be a byte. +errors.short={0} must be a short. +errors.integer={0} must be an integer. +errors.long={0} must be a long. +errors.float={0} must be a float. +errors.double={0} must be a double. + +errors.date={0} is not a date. +errors.range={0} is not in the range {1} through {2}. +errors.creditcard={0} is an invalid credit card number. +errors.email={0} is an invalid e-mail address. + +errors.ihidnum=Is not a valid Social Security number +errors.korean={0} should be entered with their Korean +errors.ip=Invalid IP address. +errors.english={0}is an invalid English character. +errors.notKorean={0} should not be entered with their Korean + +errors.password1={0} must be entered within 8 to 20 characters. +errors.password2={0} is Korean, special characters, spaces are not allowed. +errors.password3={0} can not be used continuously for more than four sequential digits. +errors.password4={0} can not be used continuously for more than 4 letters or numbers that are repeated. + +error.security.runtime.error = error + +#Xss Errors# +errors.xss.checkerUser=There is no use and disposal authority for its capabilities. + +#File Upload / Download +errors.file.extension=It is not a supported file type. +errors.file.transfer=An error occurred during file transfer. +success.file.transfer=The file transfer is complete. diff --git a/src/main/resources/egovframework/message/com/message-common_ko.properties b/src/main/resources/egovframework/message/com/message-common_ko.properties new file mode 100644 index 00000000..2531c4e8 --- /dev/null +++ b/src/main/resources/egovframework/message/com/message-common_ko.properties @@ -0,0 +1,182 @@ +fail.common.msg=\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! +fail.common.sql=sql \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! error code: {0}, error msg: {1} +info.nodata.msg=\ud574\ub2f9 \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. + +#UI Common resource# +table.num=\ubc88\ud638 +table.regdate=\ub4f1\ub85d\uc77c +table.reger=\ub4f1\ub85d\uc790 +table.select=\uc120\ud0dd +title.html=egovframe common component +title.detail=\uc0c1\uc138\uc870\ud68c +title.inquire=\uc870\ud68c +title.update=\uc218\uc815 +title.create=\ub4f1\ub85d +title.delete=\uc0ad\uc81c +title.save=\uc800\uc7a5 +title.list=\ubaa9\ub85d +title.searchCondition=\uac80\uc0c9\uc870\uac74 +title.search=\uac80\uc0c9\uc5b4 +title.reply=\ub2f5\uae00 +title.scrap=\uc2a4\ud06c\ub7a9 +title.comment=\ub313\uae00 +title.attachedFileSelect=\ud30c\uc77c\uc120\ud0dd +title.attachedFileDelete=\ud30c\uc77c\uc0ad\uc81c +title.link=\ub9c1\ud06c +title.management=\uad00\ub9ac +title.all=\uc804\uccb4 + +input.select=\uc120\ud0dd\ud558\uc138\uc694 +input.cSelect=\uc120\ud0dd +input.input=\uc785\ub825 +input.button=\ubc84\ud2bc +input.selectAll.title=\uc804\uccb4\uc120\ud0dd\uccb4\ud06c\ubc15\uc2a4 +input.yes=\uc608 +input.no=\uc544\ub2c8\uc624 + +select.searchCondition=\uc870\ud68c\uc870\uac74 \uc120\ud0dd + +button.select=\uc120\ud0dd +button.search=\uac80\uc0c9 +button.use=\uc0ac\uc6a9 +button.notUsed=\uc0ac\uc6a9\uc911\uc9c0 +button.inquire=\uc870\ud68c +button.update=\uc218\uc815 +button.create=\ub4f1\ub85d +button.delete=\uc0ad\uc81c +button.deleteDatabase=\uc644\uc804\uc0ad\uc81c +button.close=\ub2eb\uae30 +button.save=\uc800\uc7a5 +button.list=\ubaa9\ub85d +button.reset=\ucde8\uc18c +button.passwordUpdate=\uc554\ud638\ubcc0\uacbd +button.subscribe=\uac00\uc785\uc2e0\uccad +button.realname=\uc2e4\uba85\ud655\uc778 +button.moveToGpin=GPIN\uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 +button.moveToIhidnum=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638 \uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 +button.agree=\ub3d9\uc758 +button.disagree=\ube44\ub3d9\uc758 +button.possible=\uac00\ub2a5 +button.impossible=\ubd88\uac00\ub2a5 +button.qnaregist=Q&A\ub4f1\ub85d +button.cnsltregist=\uc0c1\ub2f4\ub4f1\ub85d +button.preview=\ubbf8\ub9ac\ubcf4\uae30 +button.next=\ub2e4\uc74c +button.add=\ubc14\ub85c\ucd94\uac00 +button.confirm=\ud655\uc778 +button.back = \ub4a4\ub85c +button.yes = \uc608 +button.no = \uc544\ub2c8\uc624 +button.home = \ud648 +button.user = \uc0ac\uc6a9\uc790\uc9c0\uc6d0 +button.cop = \ud611\uc5c5 +button.wrkstart = \ucd9c\uadfc +button.wrkend = \ud1f4\uadfc +button.reply = \ub2f5\uae00 +button.scrap = \uc2a4\ud06c\ub7a9 +button.comment = \ub313\uae00 +button.excel = \uc5d1\uc140 +button.init=\ucd08\uae30\ud654 +button.acknowledgment=\uc2b9\uc778 +button.cancelAcknowledgment=\uc2b9\uc778\ucde8\uc18c +button.bulkUpload=\uc77c\uad04\ub4f1\ub85d +button.log = \ub85c\uadf8 +button.set = \uc124\uc815 +button.move = \uc774\ub3d9 + +#UI Common Message# +common.noScriptTitle.msg=\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c\ub294 \uc77c\ubd80 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uc2e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +common.searchCondition.msg=\uc774 \ub808\uc774\uc544\uc6c3\uc740 \ud558\ub2e8 \uc815\ubcf4\ub97c \ub300\ud55c \uac80\uc0c9 \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. + +common.summary.list={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \ubaa9\ub85d\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. +common.summary.regist={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub4f1\ub85d\ud55c\ub2e4. +common.summary.update={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \uc218\uc815\ud55c\ub2e4. +common.summary.inqire={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \uc0c1\uc138\uc870\ud68c \ub0b4\uc5ed\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4. + +common.save.msg=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.regist.msg=\ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.delete.msg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.update.msg=\uc218\uc815\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.nodata.msg=\uc790\ub8cc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694 +common.required.msg=(\uc740)\ub294 \ud544\uc218\uc785\ub825\ud56d\ubaa9\uc785\ub2c8\ub2e4. +common.acknowledgement.msg=\uc2b9\uc778\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.acknowledgementcancel.msg=\uc2b9\uc778\ucde8\uc18c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +common.nocomment.msg=\ub313\uae00\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +common.noguest.msg=\uc791\uc131\ub41c \ubc29\uba85\ub85d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +success.request.msg = \uc694\uccad\ucc98\ub9ac\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc218\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.select=\uc815\uc0c1\uc801\uc73c\ub85c \uc870\ud68c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.insert=\uc815\uc0c1\uc801\uc73c\ub85c \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.update=\uc815\uc0c1\uc801\uc73c\ub85c \uc218\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +success.common.delete=\uc815\uc0c1\uc801\uc73c\ub85c \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +common.imposbl.fileupload = \ub354 \uc774\uc0c1 \ud30c\uc77c\uc744 \ucca8\ubd80\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +common.isConfmDe.msg=\uc2b9\uc778\uc77c\uc790\ub97c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4. +common.isExist.msg = \uc774\ubbf8 \uc874\uc7ac\ud558\uac70\ub098 \uacfc\uac70\uc5d0 \ub4f1\ub85d\uc774 \ub418\uc5c8\ub358 \uc0c1\ud0dc\uc785\ub2c8\ub2e4. + +fail.common.insert = \uc0dd\uc131\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.update = \uc218\uc815\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.delete = \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.delete.upperMenuExist = \ucc38\uc870\ub418\ub294 \uba54\ub274\uac00 \uc788\uc5b4 \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.select = \uc870\ud68c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.login = \ub85c\uadf8\uc778 \uc815\ubcf4\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.common.loginIncorrect = {0}\ud68c \uc774\uc0c1 \ub85c\uadf8\uc778 \uc811\uc18d\uc774 \uc2dc\ub3c4 \ub418\uc5b4 \uacc4\uc815\uc774 \uc7a0\uaca8\uc2b5\ub2c8\ub2e4! +fail.common.login.password = \ud328\uc2a4\uc6cc\ub4dc \uc790\ub9ac \uc218\uac00 \uc77c\uce58 \ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.(8\uc790\ub9ac \uc774\uc0c1 20\uc790\ub9ac \uc774\ud558) +fail.common.idsearch = \uc544\uc774\ub514\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +fail.common.pwsearch = \ube44\ubc00\ubc88\ud638\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +fail.request.msg = \uc694\uccad\ucc98\ub9ac\ub97c \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. +fail.common.login.ip = \ub4f1\ub85d\ub41c IP\uac00 \uc544\ub2c8\ubbc0\ub85c \ub85c\uadf8\uc778\uc774 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + +#UI User Message# +fail.user.passwordUpdate1=\ud604\uc7ac \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.user.passwordUpdate2=\ube44\ubc00\ubc88\ud638\uc640 \ube44\ubc00\ubc88\ud638 \ud655\uc778\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +info.user.rlnmCnfirm=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624. +success.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4. +fail.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +fail.user.connectFail=\uc2dc\uc2a4\ud15c \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.(\uc778\uc99d\uc11c\ubc84 \uc5f0\uacb0 \uc2e4\ud328) +info.user.rlnmPinCnfirm=\uacf5\uacf5 \uc544\uc774\ud540 \uc544\uc774\ub514\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624. +success.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4. +fail.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. + +#Vlidator Errors# +errors.prefix=
    +errors.suffix=

    + +errors.required={0}\uc740(\ub294) \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +errors.minlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.maxlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.invalid={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12\uc785\ub2c8\ub2e4. +errors.minInteger={0}\uc740(\ub294) \uc720\ud6a8\ud55c \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4. 1 \uc774\uc0c1\uc758 \uac12\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.byte={0}\uc740(\ub294) byte\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.short={0}\uc740(\ub294) short\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.integer={0}\uc740(\ub294) integer \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.long={0}\uc740(\ub294) long \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.float={0}\uc740(\ub294) float \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.double={0}\uc740(\ub294) double \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. + +errors.date={0}\uc740(\ub294) \ub0a0\uc9dc \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. +errors.range={0}\uc740(\ub294) {1}\uacfc {2} \uc0ac\uc774\uc758 \uac12\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. +errors.creditcard={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc2e0\uc6a9\uce74\ub4dc \ubc88\ud638\uc785\ub2c8\ub2e4. +errors.email={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc774\uba54\uc77c \uc8fc\uc18c\uc785\ub2c8\ub2e4. + +errors.ihidnum=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\uc785\ub2c8\ub2e4. +errors.korean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc785\ub825\ud558\uc154\uc57c \ud569\ub2c8\ub2e4. +errors.ip=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 IP\uc8fc\uc18c\uc785\ub2c8\ub2e4. +errors.english={0}\uc740(\ub294) \uc601\ubb38\ub9cc \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc788\uc2b5\ub2c8\ub2e4. +errors.notKorean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +errors.password1={0}\uc740(\ub294) 8~20\uc790 \ub0b4\uc5d0\uc11c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. +errors.password2={0}\uc740(\ub294) \ud55c\uae00,\ud2b9\uc218\ubb38\uc790,\ub744\uc5b4\uc4f0\uae30\ub294 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +errors.password3={0}\uc740(\ub294) \uc21c\ucc28\uc801\uc778 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +errors.password4={0}\uc740(\ub294) \ubc18\ubcf5\ub418\ub294 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +error.security.runtime.error = error + +#Xss Errors# +errors.xss.checkerUser=\ud574\ub2f9 \uae30\ub2a5\uc5d0 \ub300\ud55c \uc0ac\uc6a9 \ubc0f \ucc98\ub9ac \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. + +#File Upload / Download +errors.file.extension=\uc9c0\uc6d0\ub418\ub294 \ud30c\uc77c\uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. +errors.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. +success.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. + diff --git a/src/main/resources/egovframework/message/com/sec/drm/message_en.properties b/src/main/resources/egovframework/message/com/sec/drm/message_en.properties new file mode 100644 index 00000000..c515e89c --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/drm/message_en.properties @@ -0,0 +1,26 @@ +comCopSecDrm.title=Department Authority Management + +comCopSecDrm.searchCondition.searchKeywordText=Department + +comCopSecDrm.btn.deptSelectPopup=Department Inquiry Popup + +comCopSecDrm.list.userId=User ID +comCopSecDrm.list.userNm=User Name +comCopSecDrm.list.author=Authority +comCopSecDrm.list.regAt=Available Options About Register +comCopSecDrm.list.deptCd=Department Code +comCopSecDrm.list.deptNm=Department Name +comCopSecDrm.list.searchDept=Department Search + +comCopSecDrm.validate.deptAuthorSelect=There is no selected user. +comCopSecDrm.validate.deptAuthorNoSelectResult=There is no viewed result. + +comCopSecDrm.validate.deptSelect=Please select the viewed department. + +comCopSecDrm.deptSearchPopup.title=Department Inquiry Popup +comCopSecDrm.deptSearchPopup.searchKeywordText=Department Name +comCopSecDrm.deptSearchPopupList.deptId=Department ID +comCopSecDrm.deptSearchPopupList.deptNm=Department Name +comCopSecDrm.deptSearchPopup.validate.alert.selectOne=Please select one department. +comCopSecDrm.deptSearchPopup.validate.alert.selectNothing=No items selected. +comCopSecDrm.deptSearchPopup.validate.alert.searchAfter=Please select after viewing. diff --git a/src/main/resources/egovframework/message/com/sec/drm/message_ko.properties b/src/main/resources/egovframework/message/com/sec/drm/message_ko.properties new file mode 100644 index 00000000..6a6a4334 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/drm/message_ko.properties @@ -0,0 +1,26 @@ +comCopSecDrm.title=\ubd80\uc11c\uad8c\ud55c\uad00\ub9ac + +comCopSecDrm.searchCondition.searchKeywordText=\ubd80\uc11c + +comCopSecDrm.btn.deptSelectPopup=\ubd80\uc11c\uc870\ud68c\ud31d\uc5c5 + +comCopSecDrm.list.userId=\uc0ac\uc6a9\uc790 ID +comCopSecDrm.list.userNm=\uc0ac\uc6a9\uc790 \uba85 +comCopSecDrm.list.author=\uad8c\ud55c +comCopSecDrm.list.regAt=\ub4f1\ub85d\uc5ec\ubd80 +comCopSecDrm.list.deptCd=\ubd80\uc11c \ucf54\ub4dc +comCopSecDrm.list.deptNm=\ubd80\uc11c \uba85 +comCopSecDrm.list.searchDept=\ubd80\uc11c\uac80\uc0c9 + +comCopSecDrm.validate.deptAuthorSelect=\uc120\ud0dd\ub41c \uc0ac\uc6a9\uc790\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSecDrm.validate.deptAuthorNoSelectResult=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. + +comCopSecDrm.validate.deptSelect=\uc870\ud68c\ub41c \ubd80\uc11c\ub97c \uc120\ud0dd\ud558\uc138\uc694. + +comCopSecDrm.deptSearchPopup.title=\ubd80\uc11c\uc870\ud68c\ud31d\uc5c5 +comCopSecDrm.deptSearchPopup.searchKeywordText=\ubd80\uc11c \uba85 +comCopSecDrm.deptSearchPopupList.deptId=\ubd80\uc11c ID +comCopSecDrm.deptSearchPopupList.deptNm=\ubd80\uc11c \uba85 +comCopSecDrm.deptSearchPopup.validate.alert.selectOne=\ud558\ub098\uc758 \ubd80\uc11c\ub97c \uc120\ud0dd\ud558\uc138\uc694. +comCopSecDrm.deptSearchPopup.validate.alert.selectNothing=\uc120\ud0dd\ub41c \ud56d\ubaa9\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSecDrm.deptSearchPopup.validate.alert.searchAfter=\uc870\ud68c \ud6c4 \uc120\ud0dd\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sec/gmt/message_en.properties b/src/main/resources/egovframework/message/com/sec/gmt/message_en.properties new file mode 100644 index 00000000..d4391d42 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/gmt/message_en.properties @@ -0,0 +1,21 @@ +comCopSecGmt.title=Group Management + +comCopSecGmt.searchCondition.searchKeywordText=Group Name + +comCopSecGmt.list.groupId=Group ID +comCopSecGmt.list.groupNm=Group Name +comCopSecGmt.list.groupDc=Group Description + +comCopSecGmt.validate.groupSelect=There is no selected group. +comCopSecGmt.validate.groupSelectResult=There is no viewed result. +comCopSecGmt.validate.groupOneSelect=One or more groups are selected. +comCopSecGmt.validate.confirm.delete=Are you sure you want to delete? + +comCopSecGmt.regist.groupId=Group ID +comCopSecGmt.regist.groupNm=Group Name +comCopSecGmt.regist.groupDc=Group Description + +comCopSecGmt.groupPopup.title=Group Inquiry Popup +comCopSecGmt.groupPopup.searchKeywordText=Group Name +comCopSecGmt.groupPopupList.groupId=Group ID +comCopSecGmt.groupPopupList.groupNm=Group Name \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sec/gmt/message_ko.properties b/src/main/resources/egovframework/message/com/sec/gmt/message_ko.properties new file mode 100644 index 00000000..b4afd534 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/gmt/message_ko.properties @@ -0,0 +1,22 @@ +comCopSecGmt.title=\uadf8\ub8f9\uad00\ub9ac + +comCopSecGmt.searchCondition.searchKeywordText=\uadf8\ub8f9 \uba85 + +comCopSecGmt.list.groupId=\uadf8\ub8f9 ID +comCopSecGmt.list.groupNm=\uadf8\ub8f9 \uba85 +comCopSecGmt.list.groupDc=\uc124\uba85 + + +comCopSecGmt.validate.groupSelect=\uc120\ud0dd\ub41c \uadf8\ub8f9\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSecGmt.validate.groupSelectResult=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSecGmt.validate.groupOneSelect=\ud558\ub098 \uc774\uc0c1\uc758 \uadf8\ub8f9\uc774 \uc120\ud0dd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comCopSecGmt.validate.confirm.delete=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + +comCopSecGmt.regist.groupId=\uadf8\ub8f9 ID +comCopSecGmt.regist.groupNm=\uadf8\ub8f9 \uba85 +comCopSecGmt.regist.groupDc=\uc124\uba85 + +comCopSecGmt.groupPopup.title=\uadf8\ub8f9 \uc870\ud68c \ud31d\uc5c5 +comCopSecGmt.groupPopup.searchKeywordText=\uadf8\ub8f9\uba85 +comCopSecGmt.groupPopupList.groupId=\uadf8\ub8f9 ID +comCopSecGmt.groupPopupList.groupNm=\uadf8\ub8f9 \uba85 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sec/pki/message_en.properties b/src/main/resources/egovframework/message/com/sec/pki/message_en.properties new file mode 100644 index 00000000..49351b8a --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/pki/message_en.properties @@ -0,0 +1,8 @@ +comSecPki.title=Encryption/Decryption +comSecPki.cryptoInfo.plainText=Source string +comSecPki.cryptoInfo.cryptoType=Encryption method +comSecPki.cryptoInfo.plainTextLen=Source string length +comSecPki.cryptoInfo.cryptText=Encryption string(Base64) +comSecPki.cryptoInfo.decryptText=Decryption string +comSecPki.cryptoInfo.decryptTextLen=Decryption string length +comSecPki.cryptoInfo.sampleText=Please enter a sample string for encryption/decryption. diff --git a/src/main/resources/egovframework/message/com/sec/pki/message_ko.properties b/src/main/resources/egovframework/message/com/sec/pki/message_ko.properties new file mode 100644 index 00000000..4aea51d4 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/pki/message_ko.properties @@ -0,0 +1,8 @@ +comSecPki.title=\uc554\ud638\ud654/\ubcf5\ud638\ud654 +comSecPki.cryptoInfo.plainText=\uc6d0\ubcf8 \ubb38\uc790\uc5f4 +comSecPki.cryptoInfo.cryptoType=\uc554\ud638\ud654 \ubc29\uc2dd +comSecPki.cryptoInfo.plainTextLen=\uc6d0\ubcf8 \ubb38\uc790\uc5f4 \uae38\uc774 +comSecPki.cryptoInfo.cryptText=\uc554\ud638\ud654 \ubb38\uc790\uc5f4(Base64) +comSecPki.cryptoInfo.decryptText=\ubcf5\ud638\ud654 \ubb38\uc790\uc5f4 +comSecPki.cryptoInfo.decryptTextLen=\ubcf5\ud638\ud654 \ubb38\uc790\uc5f4 \uae38\uc774 +comSecPki.cryptoInfo.sampleText=\uc554\ubcf5\ud638\ud654\ub97c \uc704\ud55c \uc0d8\ud50c \ubb38\uc790\uc5f4\uc744 \uc785\ub825\ud558\uc5ec \uc8fc\uc138\uc694. diff --git a/src/main/resources/egovframework/message/com/sec/ram/message_en.properties b/src/main/resources/egovframework/message/com/sec/ram/message_en.properties new file mode 100644 index 00000000..4e6a730e --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/ram/message_en.properties @@ -0,0 +1,29 @@ +comCopSecRam.title=Authority Management +comCopSecRam.list.searchKeywordText=Authority Name +comCopSecRam.list.authorRollId=Authority ID +comCopSecRam.list.authorNm=Authority Name +comCopSecRam.list.authorDc=Description +comCopSecRam.list.authorRoll=Roll Infomation + +comCopSecRam.regist.authorCode=Authority Code +comCopSecRam.regist.authorNm=Authority Name +comCopSecRam.regist.authorDc=Description + +comCopSecRam.validate.authorSelect=There is no selected authority. +comCopSecRam.validate.authorSelectResult=There is no viewed result. + +comCopSecRam.authorRoleList.title=Authority Roll management +comCopSecRam.authorRoleList.searchKeywordText=Authority Code +comCopSecRam.authorRoleList.allSelectBox=Select All Checkbox +comCopSecRam.authorRoleList.rollNm=Roll Name +comCopSecRam.authorRoleList.rollId=Roll ID +comCopSecRam.authorRoleList.rollType=Roll Type +comCopSecRam.authorRoleList.rollSort=Roll Sort +comCopSecRam.authorRoleList.rollDc=Roll Description +comCopSecRam.authorRoleList.regdate=Registration Date +comCopSecRam.authorRoleList.regYn=Available Options About Register +comCopSecRam.authorRoleList.regY=Registration +comCopSecRam.authorRoleList.regN=Unregistered +comCopSecRam.authorRoleList.validate.alert.noSelect=No roles selected. +comCopSecRam.authorRoleList.validate.alert.noResult=No query results found. +comCopSecRam.authorRoleList.validate.confirm.regist=Would you like to register? diff --git a/src/main/resources/egovframework/message/com/sec/ram/message_ko.properties b/src/main/resources/egovframework/message/com/sec/ram/message_ko.properties new file mode 100644 index 00000000..b044016d --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/ram/message_ko.properties @@ -0,0 +1,29 @@ +comCopSecRam.title=\uad8c\ud55c\uad00\ub9ac +comCopSecRam.list.searchKeywordText=\uad8c\ud55c\uba85 +comCopSecRam.list.authorRollId=\uad8c\ud55c ID +comCopSecRam.list.authorNm=\uad8c\ud55c\uba85 +comCopSecRam.list.authorDc=\uc124\uba85 +comCopSecRam.list.authorRoll=\ub864\uc815\ubcf4 + +comCopSecRam.regist.authorCode=\uad8c\ud55c\ucf54\ub4dc +comCopSecRam.regist.authorNm=\uad8c\ud55c\uba85 +comCopSecRam.regist.authorDc=\uc124\uba85 + +comCopSecRam.validate.authorSelect=\uc120\ud0dd\ub41c \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSecRam.validate.authorSelectResult=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. + +comCopSecRam.authorRoleList.title=\uad8c\ud55c\ub864\uad00\ub9ac +comCopSecRam.authorRoleList.searchKeywordText=\uad8c\ud55c\ucf54\ub4dc +comCopSecRam.authorRoleList.allSelectBox=\uc804\uccb4 \uc120\ud0dd \uccb4\ud06c\ubc15\uc2a4 +comCopSecRam.authorRoleList.rollNm=\ub864 \uba85 +comCopSecRam.authorRoleList.rollId=\ub864 ID +comCopSecRam.authorRoleList.rollType=\ub864 \ud0c0\uc785 +comCopSecRam.authorRoleList.rollSort=\ub864 Sort +comCopSecRam.authorRoleList.rollDc=\ub864 \uc124\uba85 +comCopSecRam.authorRoleList.regdate=\ub4f1\ub85d\uc77c +comCopSecRam.authorRoleList.regYn=\ub4f1\ub85d\uc5ec\ubd80 +comCopSecRam.authorRoleList.regY=\ub4f1\ub85d +comCopSecRam.authorRoleList.regN=\ubbf8\ub4f1\ub85d +comCopSecRam.authorRoleList.validate.alert.noSelect=\uc120\ud0dd\ub41c \ub864\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSecRam.authorRoleList.validate.alert.noResult=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSecRam.authorRoleList.validate.confirm.regist=\ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? diff --git a/src/main/resources/egovframework/message/com/sec/rgm/message_en.properties b/src/main/resources/egovframework/message/com/sec/rgm/message_en.properties new file mode 100644 index 00000000..675c7f62 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/rgm/message_en.properties @@ -0,0 +1,18 @@ +comCopSecRgm.title=Authority Group Management + +comCopSecRgm.searchCondition.userId=User ID +comCopSecRgm.searchCondition.userNm=User Name +comCopSecRgm.searchCondition.group=Group +comCopSecRgm.btn.groupInquire= Group Inquiry Popup + +comCopSecRgm.list.userId=User ID +comCopSecRgm.list.userNm=User Name +comCopSecRgm.list.userType=User Type +comCopSecRgm.list.author=Authority +comCopSecRgm.list.regYn=Available Options About Register +comCopSecRgm.list.authorManageCombo=Select Authority +comCopSecRgm.list.validate.alert.notSelect=No items selected. +comCopSecRgm.list.validate.alert.noResult=No query results found. +comCopSecRgm.list.validate.confirm.regist=Would you like to register? +comCopSecRgm.list.validate.confirm.delete=Are you sure you want to delete? +comCopSecRgm.list.validate.alert.selectGroup=Please select a group. diff --git a/src/main/resources/egovframework/message/com/sec/rgm/message_ko.properties b/src/main/resources/egovframework/message/com/sec/rgm/message_ko.properties new file mode 100644 index 00000000..c50c13ef --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/rgm/message_ko.properties @@ -0,0 +1,19 @@ +comCopSecRgm.title=\uad8c\ud55c\uadf8\ub8f9\uad00\ub9ac + +comCopSecRgm.searchCondition.userId = \uc0ac\uc6a9\uc790 ID +comCopSecRgm.searchCondition.userNm = \uc0ac\uc6a9\uc790 \uba85 +comCopSecRgm.searchCondition.group = \uadf8\ub8f9 +comCopSecRgm.btn.groupInquire = \uadf8\ub8f9\uc870\ud68c \ud31d\uc5c5 + +comCopSecRgm.list.userId=\uc0ac\uc6a9\uc790 ID +comCopSecRgm.list.userNm=\uc0ac\uc6a9\uc790 \uba85 +comCopSecRgm.list.userType=\uc0ac\uc6a9\uc790 \uc720\ud615 +comCopSecRgm.list.author=\uad8c\ud55c +comCopSecRgm.list.regYn=\ub4f1\ub85d\uc5ec\ubd80 +comCopSecRgm.list.authorManageCombo=\uad8c\ud55c\uc120\ud0dd +comCopSecRgm.list.validate.alert.notSelect=\uc120\ud0dd\ub41c \ud56d\ubaa9\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSecRgm.list.validate.alert.noResult=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSecRgm.list.validate.confirm.regist=\ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comCopSecRgm.list.validate.confirm.delete=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comCopSecRgm.list.validate.alert.selectGroup=\uadf8\ub8f9\uc744 \uc120\ud0dd\ud558\uc138\uc694. + diff --git a/src/main/resources/egovframework/message/com/sec/rmt/message_en.properties b/src/main/resources/egovframework/message/com/sec/rmt/message_en.properties new file mode 100644 index 00000000..15c1f877 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/rmt/message_en.properties @@ -0,0 +1,19 @@ +comCopSecRmt.title=Role Management For Each Authority + +comCopSecRmt.searchCondition.searchKeywordText=Roll Name + +comCopSecRmt.validate.groupSelect=There is no selected group. +comCopSecRmt.validate.groupSelectResult=There is no viewed result. + +comCopSecRam.list.rollId=Roll ID +comCopSecRam.list.rollNm=Roll Name +comCopSecRam.list.rollType=Roll Type +comCopSecRam.list.rollSort=Roll Sort +comCopSecRam.list.rollDc=Roll Description + +comCopSecRam.regist.rollId=Roll ID +comCopSecRam.regist.rollNm=Roll Name +comCopSecRam.regist.rollPtn=Roll Pattern +comCopSecRam.regist.rollDc=Roll Description +comCopSecRam.regist.rollType=Roll Type +comCopSecRam.regist.rollSort=Roll Sort diff --git a/src/main/resources/egovframework/message/com/sec/rmt/message_ko.properties b/src/main/resources/egovframework/message/com/sec/rmt/message_ko.properties new file mode 100644 index 00000000..c185c417 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sec/rmt/message_ko.properties @@ -0,0 +1,19 @@ +comCopSecRmt.title=\ub864\uad00\ub9ac + +comCopSecRmt.searchCondition.searchKeywordText=\ub864\uba85 + +comCopSecRmt.validate.groupSelect=\uc120\ud0dd\ub41c \uadf8\ub8f9\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +comCopSecRmt.validate.groupSelectResult=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. + +comCopSecRam.list.rollId=\ub864 ID +comCopSecRam.list.rollNm=\ub864 \uba85 +comCopSecRam.list.rollType=\ub864 \ud0c0\uc785 +comCopSecRam.list.rollSort=\ub864 Sort +comCopSecRam.list.rollDc=\ub864 \uc124\uba85 + +comCopSecRam.regist.rollId=\ub864 ID +comCopSecRam.regist.rollNm=\ub864 \uba85 +comCopSecRam.regist.rollPtn=\ub864 \ud328\ud134 +comCopSecRam.regist.rollDc=\ub864 \uc124\uba85 +comCopSecRam.regist.rollType=\ub864 \ud0c0\uc785 +comCopSecRam.regist.rollSort=\ub864 Sort diff --git a/src/main/resources/egovframework/message/com/ssi/syi/iis/message_en.properties b/src/main/resources/egovframework/message/com/ssi/syi/iis/message_en.properties new file mode 100644 index 00000000..eef57307 --- /dev/null +++ b/src/main/resources/egovframework/message/com/ssi/syi/iis/message_en.properties @@ -0,0 +1,90 @@ +# EgovCntcInstt.xml +comSsiSyiIis.cntcInstt.cntcInstt.validate.insttNm=Institution Name +comSsiSyiIis.cntcInstt.cntcSystem.validate.insttId=Institution ID +comSsiSyiIis.cntcInstt.cntcSystem.validate.sysNm=System Name +comSsiSyiIis.cntcInstt.cntcService.validate.insttId=Institution ID +comSsiSyiIis.cntcInstt.cntcService.validate.sysId=System ID +comSsiSyiIis.cntcInstt.cntcService.validate.svcNm=Service Name + + +comSsiSyiIis.cntcInsttList.title=Contact Institution List +comSsiSyiIis.cntcInsttList.pageTop.title=Contact Institution List +comSsiSyiIis.cntcInsttList.index=No. +comSsiSyiIis.cntcInsttList.insttId=Institution ID +comSsiSyiIis.cntcInsttList.insttNm=Institution Name + + +comSsiSyiIis.cntcInsttRegist.title=Contact Institution Registration +comSsiSyiIis.cntcInsttRegist.pageTop.title=Contact Institution Registration +comSsiSyiIis.cntcInsttRegist.insttId=Institution ID +comSsiSyiIis.cntcInsttRegist.insttNm=Institution Name + + +comSsiSyiIis.cntcInsttUpdt.title=Contact Institution Modification +comSsiSyiIis.cntcInsttUpdt.pageTop.title=Contact Institution Modification +comSsiSyiIis.cntcInsttUpdt.insttId=Institution ID +comSsiSyiIis.cntcInsttUpdt.insttNm=Institution Name + + +comSsiSyiIis.cntcInsttDetail.title=Contact Institution Detailed View +comSsiSyiIis.cntcInsttDetail.pageTop.title=Contact Institution Detailed View +comSsiSyiIis.cntcInsttDetail.pageSub.title=Institution System +comSsiSyiIis.cntcInsttDetail.insttId=Institution ID +comSsiSyiIis.cntcInsttDetail.insttNm=Institution Name +comSsiSyiIis.cntcInsttDetail.button.regContactSystem=regist contact system +comSsiSyiIis.cntcInsttDetail.contactSystem=Contact System +comSsiSyiIis.cntcInsttDetail.contactService=Contact Service +comSsiSyiIis.cntcInsttDetail.index=No. +comSsiSyiIis.cntcInsttDetail.sysId=System ID +comSsiSyiIis.cntcInsttDetail.sysNm=System Name +comSsiSyiIis.cntcInsttDetail.sysIp=System IP +comSsiSyiIis.cntcInsttDetail.button.regContactService=regist service +comSsiSyiIis.cntcInsttDetail.svcNm=Service Name +comSsiSyiIis.cntcInsttDetail.requestMessageNm=Request Message +comSsiSyiIis.cntcInsttDetail.rspnsMessageNm=Reponse Message +comSsiSyiIis.cntcInsttDetail.process=Process + + +comSsiSyiIis.cntcSystemRegist.title=Contact System Registration +comSsiSyiIis.cntcSystemRegist.pageTop.title=Contact System Registration +comSsiSyiIis.cntcSystemRegist.insttId=Institution +comSsiSyiIis.cntcSystemRegist.sysId=System ID +comSsiSyiIis.cntcSystemRegist.sysNm=System Name +comSsiSyiIis.cntcSystemRegist.sysIp=System IP + + +comSsiSyiIis.cntcSystemRegist.title=Contact System Registration +comSsiSyiIis.cntcSystemRegist.pageTop.title=Contact System Registration +comSsiSyiIis.cntcSystemRegist.insttId=Institution +comSsiSyiIis.cntcSystemRegist.sysId=System ID +comSsiSyiIis.cntcSystemRegist.sysNm=System Name +comSsiSyiIis.cntcSystemRegist.sysIp=System IP + + +comSsiSyiIis.cntcSystemUpdt.title=Contact System Modification +comSsiSyiIis.cntcSystemUpdt.pageTop.title=Contact System Modification +comSsiSyiIis.cntcSystemUpdt.insttId=Institution +comSsiSyiIis.cntcSystemUpdt.sysId=System ID +comSsiSyiIis.cntcSystemUpdt.sysNm=System Name +comSsiSyiIis.cntcSystemUpdt.sysIp=System IP + + +comSsiSyiIis.cntcServiceRegist.title=Contact Service Registration +comSsiSyiIis.cntcServiceRegist.pageTop.title=Contact Service Registration +comSsiSyiIis.cntcServiceRegist.insttId=Institution +comSsiSyiIis.cntcServiceRegist.sysId=System Name +comSsiSyiIis.cntcServiceRegist.svcId=Service ID +comSsiSyiIis.cntcServiceRegist.svcNm=Service Name +comSsiSyiIis.cntcServiceRegist.requestMessageId=Request Message ID +comSsiSyiIis.cntcServiceRegist.rspnsMessageId=Response Message ID + + +comSsiSyiIis.cntcServiceUpdt.title=Contact Service Modification +comSsiSyiIis.cntcServiceUpdt.pageTop.title=Contact Service Modification +comSsiSyiIis.cntcServiceUpdt.insttId=Institution +comSsiSyiIis.cntcServiceUpdt.sysId=System Name +comSsiSyiIis.cntcServiceUpdt.svcId=Service ID +comSsiSyiIis.cntcServiceUpdt.svcNm=Service Name +comSsiSyiIis.cntcServiceUpdt.requestMessageId=Request Message ID +comSsiSyiIis.cntcServiceUpdt.rspnsMessageId=Response Message ID + diff --git a/src/main/resources/egovframework/message/com/ssi/syi/iis/message_ko.properties b/src/main/resources/egovframework/message/com/ssi/syi/iis/message_ko.properties new file mode 100644 index 00000000..ffd54d74 --- /dev/null +++ b/src/main/resources/egovframework/message/com/ssi/syi/iis/message_ko.properties @@ -0,0 +1,89 @@ +# EgovCntcInstt.xml +comSsiSyiIis.cntcInstt.cntcInstt.validate.insttNm=\uae30\uad00\uba85 +comSsiSyiIis.cntcInstt.cntcSystem.validate.insttId=\uae30\uad00ID +comSsiSyiIis.cntcInstt.cntcSystem.validate.sysNm=\uc2dc\uc2a4\ud15c\uba85 +comSsiSyiIis.cntcInstt.cntcService.validate.insttId=\uae30\uad00ID +comSsiSyiIis.cntcInstt.cntcService.validate.sysId=\uc2dc\uc2a4\ud15cID +comSsiSyiIis.cntcInstt.cntcService.validate.svcNm=\uc11c\ube44\uc2a4\uba85 + + +comSsiSyiIis.cntcInsttList.title=\uc5f0\uacc4\uae30\uad00 \ubaa9\ub85d +comSsiSyiIis.cntcInsttList.pageTop.title=\uc5f0\uacc4\uae30\uad00 \ubaa9\ub85d +comSsiSyiIis.cntcInsttList.index=\uc21c\ubc88 +comSsiSyiIis.cntcInsttList.insttId=\uae30\uad00ID +comSsiSyiIis.cntcInsttList.insttNm=\uae30\uad00\uba85 + + +comSsiSyiIis.cntcInsttRegist.title=\uc5f0\uacc4\uae30\uad00 \ub4f1\ub85d +comSsiSyiIis.cntcInsttRegist.pageTop.title=\uc5f0\uacc4\uae30\uad00 \ub4f1\ub85d +comSsiSyiIis.cntcInsttRegist.insttId=\uae30\uad00ID +comSsiSyiIis.cntcInsttRegist.insttNm=\uae30\uad00\uba85 + + +comSsiSyiIis.cntcInsttUpdt.title=\uc5f0\uacc4\uae30\uad00 \uc218\uc815 +comSsiSyiIis.cntcInsttUpdt.pageTop.title=\uc5f0\uacc4\uae30\uad00 \uc218\uc815 +comSsiSyiIis.cntcInsttUpdt.insttId=\uae30\uad00ID +comSsiSyiIis.cntcInsttUpdt.insttNm=\uae30\uad00\uba85 + + +comSsiSyiIis.cntcInsttDetail.title=\uc5f0\uacc4\uae30\uad00 \uc0c1\uc138\uc870\ud68c +comSsiSyiIis.cntcInsttDetail.pageTop.title=\uc5f0\uacc4\uae30\uad00 \uc0c1\uc138\uc870\ud68c +comSsiSyiIis.cntcInsttDetail.pageSub.title=\uc5f0\uacc4\uc2dc\uc2a4\ud15c +comSsiSyiIis.cntcInsttDetail.insttId=\uc5f0\uacc4\uae30\uad00ID +comSsiSyiIis.cntcInsttDetail.insttNm=\uc5f0\uacc4\uae30\uad00\uba85 +comSsiSyiIis.cntcInsttDetail.button.regContactSystem=\uc5f0\uacc4\uc2dc\uc2a4\ud15c\ub4f1\ub85d +comSsiSyiIis.cntcInsttDetail.contactSystem=\uc5f0\uacc4\uc2dc\uc2a4\ud15c +comSsiSyiIis.cntcInsttDetail.contactService=\uc5f0\uacc4\uc11c\ube44\uc2a4 +comSsiSyiIis.cntcInsttDetail.index=\uc21c\ubc88 +comSsiSyiIis.cntcInsttDetail.sysId=\uc2dc\uc2a4\ud15cID +comSsiSyiIis.cntcInsttDetail.sysNm=\uc2dc\uc2a4\ud15c\uba85 +comSsiSyiIis.cntcInsttDetail.sysIp=\uc2dc\uc2a4\ud15cIP +comSsiSyiIis.cntcInsttDetail.button.regContactService=\uc5f0\uacc4\uc11c\ube44\uc2a4\ub4f1\ub85d +comSsiSyiIis.cntcInsttDetail.svcNm=\uc11c\ube44\uc2a4\uba85 +comSsiSyiIis.cntcInsttDetail.requestMessageNm=\uc694\uccad\uba54\uc2dc\uc9c0 +comSsiSyiIis.cntcInsttDetail.rspnsMessageNm=\uc751\ub2f5\uba54\uc2dc\uc9c0 +comSsiSyiIis.cntcInsttDetail.process=\ucc98\ub9ac + + +comSsiSyiIis.cntcSystemRegist.title=\uc5f0\uacc4\uc2dc\uc2a4\ud15c \ub4f1\ub85d +comSsiSyiIis.cntcSystemRegist.pageTop.title=\uc5f0\uacc4\uc2dc\uc2a4\ud15c \ub4f1\ub85d +comSsiSyiIis.cntcSystemRegist.insttId=\uae30\uad00 +comSsiSyiIis.cntcSystemRegist.sysId=\uc2dc\uc2a4\ud15cID +comSsiSyiIis.cntcSystemRegist.sysNm=\uc2dc\uc2a4\ud15c\uba85 +comSsiSyiIis.cntcSystemRegist.sysIp=\uc2dc\uc2a4\ud15cIP + + +comSsiSyiIis.cntcSystemRegist.title=\uc5f0\uacc4\uc2dc\uc2a4\ud15c \ub4f1\ub85d +comSsiSyiIis.cntcSystemRegist.pageTop.title=\uc5f0\uacc4\uc2dc\uc2a4\ud15c \ub4f1\ub85d +comSsiSyiIis.cntcSystemRegist.insttId=\uae30\uad00 +comSsiSyiIis.cntcSystemRegist.sysId=\uc2dc\uc2a4\ud15cID +comSsiSyiIis.cntcSystemRegist.sysNm=\uc2dc\uc2a4\ud15c\uba85 +comSsiSyiIis.cntcSystemRegist.sysIp=\uc2dc\uc2a4\ud15cIP + + +comSsiSyiIis.cntcSystemUpdt.title=\uc5f0\uacc4\uc2dc\uc2a4\ud15c \uc218\uc815 +comSsiSyiIis.cntcSystemUpdt.pageTop.title=\uc5f0\uacc4\uc2dc\uc2a4\ud15c \uc218\uc815 +comSsiSyiIis.cntcSystemUpdt.insttId=\uae30\uad00 +comSsiSyiIis.cntcSystemUpdt.sysId=\uc2dc\uc2a4\ud15cID +comSsiSyiIis.cntcSystemUpdt.sysNm=\uc2dc\uc2a4\ud15c\uba85 +comSsiSyiIis.cntcSystemUpdt.sysIp=\uc2dc\uc2a4\ud15cIP + + +comSsiSyiIis.cntcServiceRegist.title=\uc5f0\uacc4\uc11c\ube44\uc2a4 \ub4f1\ub85d +comSsiSyiIis.cntcServiceRegist.pageTop.title=\uc5f0\uacc4\uc11c\ube44\uc2a4 \ub4f1\ub85d +comSsiSyiIis.cntcServiceRegist.insttId=\uae30\uad00 +comSsiSyiIis.cntcServiceRegist.sysId=\uc2dc\uc2a4\ud15c +comSsiSyiIis.cntcServiceRegist.svcId=\uc11c\ube44\uc2a4ID +comSsiSyiIis.cntcServiceRegist.svcNm=\uc11c\ube44\uc2a4\uba85 +comSsiSyiIis.cntcServiceRegist.requestMessageId=\uc694\uccad\uba54\uc2dc\uc9c0ID +comSsiSyiIis.cntcServiceRegist.rspnsMessageId=\uc751\ub2f5\uba54\uc2dc\uc9c0ID + + +comSsiSyiIis.cntcServiceUpdt.title=\uc5f0\uacc4\uc11c\ube44\uc2a4 \uc218\uc815 +comSsiSyiIis.cntcServiceUpdt.pageTop.title=\uc5f0\uacc4\uc11c\ube44\uc2a4 \uc218\uc815 +comSsiSyiIis.cntcServiceUpdt.insttId=\uae30\uad00 +comSsiSyiIis.cntcServiceUpdt.sysId=\uc2dc\uc2a4\ud15c +comSsiSyiIis.cntcServiceUpdt.svcId=\uc11c\ube44\uc2a4ID +comSsiSyiIis.cntcServiceUpdt.svcNm=\uc11c\ube44\uc2a4\uba85 +comSsiSyiIis.cntcServiceUpdt.requestMessageId=\uc694\uccad\uba54\uc2dc\uc9c0ID +comSsiSyiIis.cntcServiceUpdt.rspnsMessageId=\uc751\ub2f5\uba54\uc2dc\uc9c0ID diff --git a/src/main/resources/egovframework/message/com/ssi/syi/ims/message_en.properties b/src/main/resources/egovframework/message/com/ssi/syi/ims/message_en.properties new file mode 100644 index 00000000..3d1f6d30 --- /dev/null +++ b/src/main/resources/egovframework/message/com/ssi/syi/ims/message_en.properties @@ -0,0 +1,59 @@ +# EgovCntcMessage.xml +comSsiSyiIms.cntcMessage.validate.cntcMessageNm=Contact Message Name +comSsiSyiIms.cntcMessage.validate.cntcMessageId=Contact Message ID +comSsiSyiIms.cntcMessage.validate.itemNm=Item Name +comSsiSyiIms.cntcMessage.validate.itemType=Item Type +comSsiSyiIms.cntcMessage.validate.itemLt=Item Length + + +comSsiSyiIms.cntcMessageList.title=Contact Message List +comSsiSyiIms.cntcMessageList.pageTop.title=Contact Message List +comSsiSyiIms.cntcMessageList.index=Index +comSsiSyiIms.cntcMessageList.cntcMessageId=Contact Message ID +comSsiSyiIms.cntcMessageList.cntcMessageNm=Contact Message Name + + +comSsiSyiIms.cntcMessageDetail.title=Contact Message Detailed View +comSsiSyiIms.cntcMessageDetail.pageTop.title=Contact Message Detailed View +comSsiSyiIms.cntcMessageDetail.pageTop.title.sub=Contact Message Item +comSsiSyiIms.cntcMessageDetail.cntcMessageId=Contact Message ID +comSsiSyiIms.cntcMessageDetail.cntcMessageNm=Contact Message Name +comSsiSyiIms.cntcMessageDetail.upperCntcMessageId=Upper Contact Message ID +comSsiSyiIms.cntcMessageDetail.itemIndex=Index +comSsiSyiIms.cntcMessageDetail.itemId=Item ID +comSsiSyiIms.cntcMessageDetail.itemNm=Item Name +comSsiSyiIms.cntcMessageDetail.itemType=Item Type +comSsiSyiIms.cntcMessageDetail.itemLt=Item Length +comSsiSyiIms.cntcMessageDetail.process=Process + + +comSsiSyiIms.cntcMessageUpdt.title=Contact Message Modification +comSsiSyiIms.cntcMessageUpdt.pageTop.title=Contact Message Modification +comSsiSyiIms.cntcMessageUpdt.cntcMessageId=Contact Message ID +comSsiSyiIms.cntcMessageUpdt.cntcMessageNm=Contact Message Name +comSsiSyiIms.cntcMessageUpdt.upperCntcMessageId=Upper Contact Message ID + + +comSsiSyiIms.cntcMessageRegist.title=Contact Message Registration +comSsiSyiIms.cntcMessageRegist.pageTop.title=Contact Message Registration +comSsiSyiIms.cntcMessageRegist.cntcMessageId=Contact Message ID +comSsiSyiIms.cntcMessageRegist.cntcMessageNm=Contact Message Name +comSsiSyiIms.cntcMessageRegist.upperCntcMessageId=Upper Contact Message ID + + +comSsiSyiIms.cntcMessageItemUpdt.title=Contact Message Item Modification +comSsiSyiIms.cntcMessageItemUpdt.pageTop.title=Contact Message Item Modification +comSsiSyiIms.cntcMessageItemUpdt.cntcMessageList=Contact Message +comSsiSyiIms.cntcMessageItemUpdt.itemId=Item ID +comSsiSyiIms.cntcMessageItemUpdt.itemNm=Item Name +comSsiSyiIms.cntcMessageItemUpdt.itemType=Item Type +comSsiSyiIms.cntcMessageItemUpdt.itemLt=Item Length + + +comSsiSyiIms.cntcMessageItemRegist.title=Contact Message Item Registration +comSsiSyiIms.cntcMessageItemRegist.pageTop.title=Contact Message Item Registration +comSsiSyiIms.cntcMessageItemRegist.cntcMessageList=Contact Message +comSsiSyiIms.cntcMessageItemRegist.itemId=Item ID +comSsiSyiIms.cntcMessageItemRegist.itemNm=Item Name +comSsiSyiIms.cntcMessageItemRegist.itemType=Item Type +comSsiSyiIms.cntcMessageItemRegist.itemLt=Item Length diff --git a/src/main/resources/egovframework/message/com/ssi/syi/ims/message_ko.properties b/src/main/resources/egovframework/message/com/ssi/syi/ims/message_ko.properties new file mode 100644 index 00000000..1ec18b64 --- /dev/null +++ b/src/main/resources/egovframework/message/com/ssi/syi/ims/message_ko.properties @@ -0,0 +1,59 @@ +# EgovCntcMessage.xml +comSsiSyiIms.cntcMessage.validate.cntcMessageNm=\uc5f0\uacc4\uba54\uc2dc\uc9c0\uba85 +comSsiSyiIms.cntcMessage.validate.cntcMessageId=\uc5f0\uacc4\uba54\uc2dc\uc9c0ID +comSsiSyiIms.cntcMessage.validate.itemNm=\ud56d\ubaa9\uba85 +comSsiSyiIms.cntcMessage.validate.itemType=\ud56d\ubaa9\ud0c0\uc785 +comSsiSyiIms.cntcMessage.validate.itemLt=\ud56d\ubaa9\uae38\uc774 + + +comSsiSyiIms.cntcMessageList.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0 \ubaa9\ub85d +comSsiSyiIms.cntcMessageList.pageTop.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0 \ubaa9\ub85d +comSsiSyiIms.cntcMessageList.index=\uc21c\ubc88 +comSsiSyiIms.cntcMessageList.cntcMessageId=\uc5f0\uacc4\uba54\uc2dc\uc9c0ID +comSsiSyiIms.cntcMessageList.cntcMessageNm=\uc5f0\uacc4\uba54\uc2dc\uc9c0\uba85 + + +comSsiSyiIms.cntcMessageDetail.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0 \uc0c1\uc138\uc870\ud68c +comSsiSyiIms.cntcMessageDetail.pageTop.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0 \uc0c1\uc138\uc870\ud68c +comSsiSyiIms.cntcMessageDetail.pageTop.title.sub=\uc5f0\uacc4\uba54\uc2dc\uc9c0\ud56d\ubaa9 +comSsiSyiIms.cntcMessageDetail.cntcMessageId=\uc5f0\uacc4\uba54\uc2dc\uc9c0ID +comSsiSyiIms.cntcMessageDetail.cntcMessageNm=\uc5f0\uacc4\uba54\uc2dc\uc9c0\uba85 +comSsiSyiIms.cntcMessageDetail.upperCntcMessageId=\uc0c1\uc704\uc5f0\uacc4\uba54\uc2dc\uc9c0ID +comSsiSyiIms.cntcMessageDetail.itemIndex=\uc21c\ubc88 +comSsiSyiIms.cntcMessageDetail.itemId=\ud56d\ubaa9ID +comSsiSyiIms.cntcMessageDetail.itemNm=\ud56d\ubaa9\uba85 +comSsiSyiIms.cntcMessageDetail.itemType=\ud56d\ubaa9\ud0c0\uc785 +comSsiSyiIms.cntcMessageDetail.itemLt=\ud56d\ubaa9\uae38\uc774 +comSsiSyiIms.cntcMessageDetail.process=\ucc98\ub9ac + + +comSsiSyiIms.cntcMessageUpdt.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0 \uc218\uc815 +comSsiSyiIms.cntcMessageUpdt.pageTop.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0 \uc218\uc815 +comSsiSyiIms.cntcMessageUpdt.cntcMessageId=\uc5f0\uacc4\uba54\uc2dc\uc9c0ID +comSsiSyiIms.cntcMessageUpdt.cntcMessageNm=\uc5f0\uacc4\uba54\uc2dc\uc9c0\uba85 +comSsiSyiIms.cntcMessageUpdt.upperCntcMessageId=\uc0c1\uc704\uc5f0\uacc4\uba54\uc2dc\uc9c0ID + + +comSsiSyiIms.cntcMessageRegist.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0 \ub4f1\ub85d +comSsiSyiIms.cntcMessageRegist.pageTop.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0 \ub4f1\ub85d +comSsiSyiIms.cntcMessageRegist.cntcMessageId=\uc5f0\uacc4\uba54\uc2dc\uc9c0ID +comSsiSyiIms.cntcMessageRegist.cntcMessageNm=\uc5f0\uacc4\uba54\uc2dc\uc9c0\uba85 +comSsiSyiIms.cntcMessageRegist.upperCntcMessageId=\uc0c1\uc704\uc5f0\uacc4\uba54\uc2dc\uc9c0ID + + +comSsiSyiIms.cntcMessageItemUpdt.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0\ud56d\ubaa9 \uc218\uc815 +comSsiSyiIms.cntcMessageItemUpdt.pageTop.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0\ud56d\ubaa9 \uc218\uc815 +comSsiSyiIms.cntcMessageItemUpdt.cntcMessageList=\uc5f0\uacc4\uba54\uc2dc\uc9c0 +comSsiSyiIms.cntcMessageItemUpdt.itemId=\ud56d\ubaa9ID +comSsiSyiIms.cntcMessageItemUpdt.itemNm=\ud56d\ubaa9\uba85 +comSsiSyiIms.cntcMessageItemUpdt.itemType=\ud56d\ubaa9\ud0c0\uc785 +comSsiSyiIms.cntcMessageItemUpdt.itemLt=\ud56d\ubaa9\uae38\uc774 + + +comSsiSyiIms.cntcMessageItemRegist.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0\ud56d\ubaa9 \ub4f1\ub85d +comSsiSyiIms.cntcMessageItemRegist.pageTop.title=\uc5f0\uacc4\uba54\uc2dc\uc9c0\ud56d\ubaa9 \ub4f1\ub85d +comSsiSyiIms.cntcMessageItemRegist.cntcMessageList=\uc5f0\uacc4\uba54\uc2dc\uc9c0 +comSsiSyiIms.cntcMessageItemRegist.itemId=\ud56d\ubaa9ID +comSsiSyiIms.cntcMessageItemRegist.itemNm=\ud56d\ubaa9\uba85 +comSsiSyiIms.cntcMessageItemRegist.itemType=\ud56d\ubaa9\ud0c0\uc785 +comSsiSyiIms.cntcMessageItemRegist.itemLt=\ud56d\ubaa9\uae38\uc774 diff --git a/src/main/resources/egovframework/message/com/ssi/syi/ist/message_en.properties b/src/main/resources/egovframework/message/com/ssi/syi/ist/message_en.properties new file mode 100644 index 00000000..c4f9ee2f --- /dev/null +++ b/src/main/resources/egovframework/message/com/ssi/syi/ist/message_en.properties @@ -0,0 +1,25 @@ +comSsiSyiIst.cntcSttusList.title=Contact Status List +comSsiSyiIst.cntcSttusList.pageTop.title=Contact Status List +comSsiSyiIst.cntcSttusList.index=Index +comSsiSyiIst.cntcSttusList.cntcNm=Contact Name +comSsiSyiIst.cntcSttusList.cntcType=Contact Type +comSsiSyiIst.cntcSttusList.provdInsttNm=Provider +comSsiSyiIst.cntcSttusList.provdSysNm=Providing System +comSsiSyiIst.cntcSttusList.provdSvcNm=Providing Service +comSsiSyiIst.cntcSttusList.requstInsttNm=Request Agency +comSsiSyiIst.cntcSttusList.requstSysNm=Request System + + +comSsiSyiIst.cntcSttusDetail.title=Contact Status Detailed View +comSsiSyiIst.cntcSttusDetail.pageTop.title=Contact Status Detailed View +comSsiSyiIst.cntcSttusDetail.cntcId=Contact ID +comSsiSyiIst.cntcSttusDetail.cntcNm=Contact Name +comSsiSyiIst.cntcSttusDetail.cntcType=Contact Type +comSsiSyiIst.cntcSttusDetail.provdInsttId=Provider +comSsiSyiIst.cntcSttusDetail.provdSysId=Providing System +comSsiSyiIst.cntcSttusDetail.provdSvcId=Providing Service +comSsiSyiIst.cntcSttusDetail.requstInsttId=Request Agency +comSsiSyiIst.cntcSttusDetail.requstSysId=Request System +comSsiSyiIst.cntcSttusDetail.cntAll=Total number of Contacts +comSsiSyiIst.cntcSttusDetail.cntSuccess=Number of Successes +comSsiSyiIst.cntcSttusDetail.successRate=Success Rate(%) diff --git a/src/main/resources/egovframework/message/com/ssi/syi/ist/message_ko.properties b/src/main/resources/egovframework/message/com/ssi/syi/ist/message_ko.properties new file mode 100644 index 00000000..1bb3ace2 --- /dev/null +++ b/src/main/resources/egovframework/message/com/ssi/syi/ist/message_ko.properties @@ -0,0 +1,26 @@ +comSsiSyiIst.cntcSttusList.title=\uc5f0\uacc4\ud604\ud669 \ubaa9\ub85d +comSsiSyiIst.cntcSttusList.pageTop.title=\uc5f0\uacc4\ud604\ud669 \ubaa9\ub85d +comSsiSyiIst.cntcSttusList.index=\uc21c\ubc88 +comSsiSyiIst.cntcSttusList.cntcNm=\uc5f0\uacc4\uba85 +comSsiSyiIst.cntcSttusList.cntcType=\uc5f0\uacc4\uc720\ud615 +comSsiSyiIst.cntcSttusList.provdInsttNm=\uc81c\uacf5\uae30\uad00 +comSsiSyiIst.cntcSttusList.provdSysNm=\uc81c\uacf5\uc2dc\uc2a4\ud15c +comSsiSyiIst.cntcSttusList.provdSvcNm=\uc81c\uacf5\uc11c\ube44\uc2a4 +comSsiSyiIst.cntcSttusList.requstInsttNm=\uc694\uccad\uae30\uad00 +comSsiSyiIst.cntcSttusList.requstSysNm=\uc694\uccad\uc2dc\uc2a4\ud15c + + +comSsiSyiIst.cntcSttusDetail.title=\uc5f0\uacc4\ud604\ud669 \uc0c1\uc138\uc870\ud68c +comSsiSyiIst.cntcSttusDetail.pageTop.title=\uc5f0\uacc4\ud604\ud669 \uc0c1\uc138\uc870\ud68c +comSsiSyiIst.cntcSttusDetail.cntcId=\uc5f0\uacc4ID +comSsiSyiIst.cntcSttusDetail.cntcNm=\uc5f0\uacc4\uba85 +comSsiSyiIst.cntcSttusDetail.cntcType=\uc5f0\uacc4\uc720\ud615 +comSsiSyiIst.cntcSttusDetail.provdInsttId=\uc81c\uacf5\uae30\uad00 +comSsiSyiIst.cntcSttusDetail.provdSysId=\uc81c\uacf5\uc2dc\uc2a4\ud15c +comSsiSyiIst.cntcSttusDetail.provdSvcId=\uc81c\uacf5\uc11c\ube44\uc2a4 +comSsiSyiIst.cntcSttusDetail.requstInsttId=\uc694\uccad\uae30\uad00 +comSsiSyiIst.cntcSttusDetail.requstSysId=\uc694\uccad\uc2dc\uc2a4\ud15c +comSsiSyiIst.cntcSttusDetail.cntAll=\ucd1d \uc5f0\uacc4 \uac74\uc218 +comSsiSyiIst.cntcSttusDetail.cntSuccess=\uc131\uacf5 \uac74\uc218 +comSsiSyiIst.cntcSttusDetail.successRate=\uc131\uacf5\uc728(%) + diff --git a/src/main/resources/egovframework/message/com/ssi/syi/sim/message_en.properties b/src/main/resources/egovframework/message/com/ssi/syi/sim/message_en.properties new file mode 100644 index 00000000..4af9fdac --- /dev/null +++ b/src/main/resources/egovframework/message/com/ssi/syi/sim/message_en.properties @@ -0,0 +1,93 @@ +# EgovSystemCntc.xml +comSsiSyiSim.systemCntc.validate.cntcNm=Contact Name +comSsiSyiSim.systemCntc.validate.cntcType=Contact Type +comSsiSyiSim.systemCntc.validate.provdInsttId=Provider +comSsiSyiSim.systemCntc.validate.provdSysId=Providing System +comSsiSyiSim.systemCntc.validate.provdSvcId=Providing Service +comSsiSyiSim.systemCntc.validate.requstInsttId=Request Agency +comSsiSyiSim.systemCntc.validate.requstSysId=Request System +comSsiSyiSim.systemCntc.validate.validBeginDe=Effective Start Date +comSsiSyiSim.systemCntc.validate.useAt=Select Usage Status + + +comSsiSyiSim.systemCntcList.title=System Contact List +comSsiSyiSim.systemCntcList.pageTop.title=System Contact List +comSsiSyiSim.systemCntcList.index=Index +comSsiSyiSim.systemCntcList.cntcId=System Contact ID +comSsiSyiSim.systemCntcList.cntcNm=System Contact Name +comSsiSyiSim.systemCntcList.confmAt=Approval Status +comSsiSyiSim.systemCntcList.confmAt.Y=Approved +comSsiSyiSim.systemCntcList.confmAt.N=Unapproved + + +comSsiSyiSim.systemCntcDetail.title=System Contact Detailed view +comSsiSyiSim.systemCntcDetail.pageTop.title=System Contact Detailed view +comSsiSyiSim.systemCntcDetail.cntcId=Contact ID +comSsiSyiSim.systemCntcDetail.cntcNm=Contact Name +comSsiSyiSim.systemCntcDetail.cntcType=Contact Type +comSsiSyiSim.systemCntcDetail.provdInsttId=Provider +comSsiSyiSim.systemCntcDetail.provdSysId=Providing System +comSsiSyiSim.systemCntcDetail.provdSvcId=Providing Service +comSsiSyiSim.systemCntcDetail.requstInsttId=Request Agency +comSsiSyiSim.systemCntcDetail.requstSysId=Request System +comSsiSyiSim.systemCntcDetail.validBeginDe=Effective Start Date +comSsiSyiSim.systemCntcDetail.validEndDe=Effective End Date +comSsiSyiSim.systemCntcDetail.useAt=Usage Status +comSsiSyiSim.systemCntcDetail.confmAt=Select Approval Status +comSsiSyiSim.systemCntcDetail.selectProvdInsttId=Select Provider +comSsiSyiSim.systemCntcDetail.selectProvdSysId=Select Providing System +comSsiSyiSim.systemCntcDetail.selectProvdSvcId=Select Providing Service +comSsiSyiSim.systemCntcDetail.selectRequstInsttId=Select Request Agency +comSsiSyiSim.systemCntcDetail.selectRequstSysId=Select Request System +comSsiSyiSim.systemCntcDetail.selectUseAt=Select Usage Status +comSsiSyiSim.systemCntcDetail.selectConfmAt=Select Approval Status + + +comSsiSyiSim.systemCntcUpdt.title=System Contact Modification +comSsiSyiSim.systemCntcUpdt.pageTop.title=System Contact Modification +comSsiSyiSim.systemCntcUpdt.cntcId=Contact ID +comSsiSyiSim.systemCntcUpdt.cntcNm=Contact Name +comSsiSyiSim.systemCntcUpdt.cntcType=Contact Type +comSsiSyiSim.systemCntcUpdt.provdInsttId=Provider +comSsiSyiSim.systemCntcUpdt.provdSysId=Providing System +comSsiSyiSim.systemCntcUpdt.provdSvcId=Providing Service +comSsiSyiSim.systemCntcUpdt.requstInsttId=Request Agency +comSsiSyiSim.systemCntcUpdt.requstSysId=Request System +comSsiSyiSim.systemCntcUpdt.validBeginDe=Effective Start Date +comSsiSyiSim.systemCntcUpdt.validEndDe=Effective End Date +comSsiSyiSim.systemCntcUpdt.useAt=Usage Status +comSsiSyiSim.systemCntcUpdt.confmAt=Select Approval Status +comSsiSyiSim.systemCntcUpdt.selectProvdInsttId=Select Provider +comSsiSyiSim.systemCntcUpdt.selectProvdSysId=Select Providing System +comSsiSyiSim.systemCntcUpdt.selectProvdSvcId=Select Providing Service +comSsiSyiSim.systemCntcUpdt.selectRequstInsttId=Select Request Agency +comSsiSyiSim.systemCntcUpdt.selectRequstSysId=Select Request System +comSsiSyiSim.systemCntcUpdt.selectUseAt=Select Usage Status +comSsiSyiSim.systemCntcUpdt.selectConfmAt=Select Approval Status +comSsiSyiSim.systemCntcUpdt.validate.checkValidDe=The valid start date can not be greater than the valid end date. + + +comSsiSyiSim.systemCntcRegist.title=System Contact Registration +comSsiSyiSim.systemCntcRegist.pageTop.title=System Contact Registration +comSsiSyiSim.systemCntcRegist.cntcId=Contact ID +comSsiSyiSim.systemCntcRegist.cntcNm=Contact Name +comSsiSyiSim.systemCntcRegist.cntcType=Contact Type +comSsiSyiSim.systemCntcRegist.provdInsttId=Provider +comSsiSyiSim.systemCntcRegist.provdSysId=Providing System +comSsiSyiSim.systemCntcRegist.provdSvcId=Providing Service +comSsiSyiSim.systemCntcRegist.requstInsttId=Request Agency +comSsiSyiSim.systemCntcRegist.requstSysId=Request System +comSsiSyiSim.systemCntcRegist.validBeginDe=Effective Start Date +comSsiSyiSim.systemCntcRegist.validEndDe=Effective End Date +comSsiSyiSim.systemCntcRegist.useAt=Usage Status +comSsiSyiSim.systemCntcRegist.confmAt=Select Approval Status +comSsiSyiSim.systemCntcRegist.selectProvdInsttId=Select Provider +comSsiSyiSim.systemCntcRegist.selectProvdSysId=Select Providing System +comSsiSyiSim.systemCntcRegist.selectProvdSvcId=Select Providing Service +comSsiSyiSim.systemCntcRegist.selectRequstInsttId=Select Request Agency +comSsiSyiSim.systemCntcRegist.selectRequstSysId=Select Request System +comSsiSyiSim.systemCntcRegist.selectUseAt=Select Usage Status +comSsiSyiSim.systemCntcRegist.selectConfmAt=Select Approval Status +comSsiSyiSim.systemCntcRegist.validate.checkValidDe=The valid start date can not be greater than the valid end date. + + diff --git a/src/main/resources/egovframework/message/com/ssi/syi/sim/message_ko.properties b/src/main/resources/egovframework/message/com/ssi/syi/sim/message_ko.properties new file mode 100644 index 00000000..d32d5a76 --- /dev/null +++ b/src/main/resources/egovframework/message/com/ssi/syi/sim/message_ko.properties @@ -0,0 +1,93 @@ +# EgovSystemCntc.xml +comSsiSyiSim.systemCntc.validate.cntcNm=\uc5f0\uacc4\uba85 +comSsiSyiSim.systemCntc.validate.cntcType=\uc5f0\uacc4\uc720\ud615 +comSsiSyiSim.systemCntc.validate.provdInsttId=\uc81c\uacf5\uae30\uad00 +comSsiSyiSim.systemCntc.validate.provdSysId=\uc81c\uacf5\uc2dc\uc2a4\ud15c +comSsiSyiSim.systemCntc.validate.provdSvcId=\uc81c\uacf5\uc11c\ube44\uc2a4 +comSsiSyiSim.systemCntc.validate.requstInsttId=\uc694\uccad\uae30\uad00 +comSsiSyiSim.systemCntc.validate.requstSysId=\uc694\uccad\uc2dc\uc2a4\ud15c +comSsiSyiSim.systemCntc.validate.validBeginDe=\uc720\ud6a8\uc2dc\uc791\uc77c\uc790 +comSsiSyiSim.systemCntc.validate.useAt=\uc0ac\uc6a9\uc5ec\ubd80 + + +comSsiSyiSim.systemCntcList.title=\uc2dc\uc2a4\ud15c\uc5f0\uacc4 \ubaa9\ub85d +comSsiSyiSim.systemCntcList.pageTop.title=\uc2dc\uc2a4\ud15c\uc5f0\uacc4 \ubaa9\ub85d +comSsiSyiSim.systemCntcList.index=\uc21c\ubc88 +comSsiSyiSim.systemCntcList.cntcId=\uc2dc\uc2a4\ud15c\uc5f0\uacc4ID +comSsiSyiSim.systemCntcList.cntcNm=\uc2dc\uc2a4\ud15c\uc5f0\uacc4\uba85 +comSsiSyiSim.systemCntcList.confmAt=\uc2b9\uc778\uc5ec\ubd80 +comSsiSyiSim.systemCntcList.confmAt.Y=\uc2b9\uc778 +comSsiSyiSim.systemCntcList.confmAt.N=\ubbf8\uc2b9\uc778 + + +comSsiSyiSim.systemCntcDetail.title=\uc2dc\uc2a4\ud15c\uc5f0\uacc4 \uc0c1\uc138\uc870\ud68c +comSsiSyiSim.systemCntcDetail.pageTop.title=\uc2dc\uc2a4\ud15c\uc5f0\uacc4 \uc0c1\uc138\uc870\ud68c +comSsiSyiSim.systemCntcDetail.cntcId=\uc5f0\uacc4ID +comSsiSyiSim.systemCntcDetail.cntcNm=\uc5f0\uacc4\uba85 +comSsiSyiSim.systemCntcDetail.cntcType=\uc5f0\uacc4\uc720\ud615 +comSsiSyiSim.systemCntcDetail.provdInsttId=\uc81c\uacf5\uae30\uad00 +comSsiSyiSim.systemCntcDetail.provdSysId=\uc81c\uacf5\uc2dc\uc2a4\ud15c +comSsiSyiSim.systemCntcDetail.provdSvcId=\uc81c\uacf5\uc11c\ube44\uc2a4 +comSsiSyiSim.systemCntcDetail.requstInsttId=\uc694\uccad\uae30\uad00 +comSsiSyiSim.systemCntcDetail.requstSysId=\uc694\uccad\uc2dc\uc2a4\ud15c +comSsiSyiSim.systemCntcDetail.validBeginDe=\uc720\ud6a8\uc2dc\uc791\uc77c\uc790 +comSsiSyiSim.systemCntcDetail.validEndDe=\uc720\ud6a8\uc885\ub8cc\uc77c\uc790 +comSsiSyiSim.systemCntcDetail.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comSsiSyiSim.systemCntcDetail.confmAt=\uc2b9\uc778\uc5ec\ubd80 +comSsiSyiSim.systemCntcDetail.selectProvdInsttId=\uc81c\uacf5\uae30\uad00\uc120\ud0dd +comSsiSyiSim.systemCntcDetail.selectProvdSysId=\uc81c\uacf5\uc2dc\uc2a4\ud15c\uc120\ud0dd +comSsiSyiSim.systemCntcDetail.selectProvdSvcId=\uc81c\uacf5\uc11c\ube44\uc2a4\uc120\ud0dd +comSsiSyiSim.systemCntcDetail.selectRequstInsttId=\uc694\uccad\uae30\uad00\uc120\ud0dd +comSsiSyiSim.systemCntcDetail.selectRequstSysId=\uc694\uccad\uc2dc\uc2a4\ud15c\uc120\ud0dd +comSsiSyiSim.systemCntcDetail.selectUseAt=\uc0ac\uc6a9\uc5ec\ubd80\uc120\ud0dd +comSsiSyiSim.systemCntcDetail.selectConfmAt=\uc2b9\uc778\uc5ec\ubd80\uc120\ud0dd + + +comSsiSyiSim.systemCntcUpdt.title=\uc2dc\uc2a4\ud15c\uc5f0\uacc4 \uc218\uc815 +comSsiSyiSim.systemCntcUpdt.pageTop.title=\uc2dc\uc2a4\ud15c\uc5f0\uacc4 \uc218\uc815 +comSsiSyiSim.systemCntcUpdt.cntcId=\uc5f0\uacc4ID +comSsiSyiSim.systemCntcUpdt.cntcNm=\uc5f0\uacc4\uba85 +comSsiSyiSim.systemCntcUpdt.cntcType=\uc5f0\uacc4\uc720\ud615 +comSsiSyiSim.systemCntcUpdt.provdInsttId=\uc81c\uacf5\uae30\uad00 +comSsiSyiSim.systemCntcUpdt.provdSysId=\uc81c\uacf5\uc2dc\uc2a4\ud15c +comSsiSyiSim.systemCntcUpdt.provdSvcId=\uc81c\uacf5\uc11c\ube44\uc2a4 +comSsiSyiSim.systemCntcUpdt.requstInsttId=\uc694\uccad\uae30\uad00 +comSsiSyiSim.systemCntcUpdt.requstSysId=\uc694\uccad\uc2dc\uc2a4\ud15c +comSsiSyiSim.systemCntcUpdt.validBeginDe=\uc720\ud6a8\uc2dc\uc791\uc77c\uc790 +comSsiSyiSim.systemCntcUpdt.validEndDe=\uc720\ud6a8\uc885\ub8cc\uc77c\uc790 +comSsiSyiSim.systemCntcUpdt.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comSsiSyiSim.systemCntcUpdt.confmAt=\uc2b9\uc778\uc5ec\ubd80 +comSsiSyiSim.systemCntcUpdt.selectProvdInsttId=\uc81c\uacf5\uae30\uad00\uc120\ud0dd +comSsiSyiSim.systemCntcUpdt.selectProvdSysId=\uc81c\uacf5\uc2dc\uc2a4\ud15c\uc120\ud0dd +comSsiSyiSim.systemCntcUpdt.selectProvdSvcId=\uc81c\uacf5\uc11c\ube44\uc2a4\uc120\ud0dd +comSsiSyiSim.systemCntcUpdt.selectRequstInsttId=\uc694\uccad\uae30\uad00\uc120\ud0dd +comSsiSyiSim.systemCntcUpdt.selectRequstSysId=\uc694\uccad\uc2dc\uc2a4\ud15c\uc120\ud0dd +comSsiSyiSim.systemCntcUpdt.selectUseAt=\uc0ac\uc6a9\uc5ec\ubd80\uc120\ud0dd +comSsiSyiSim.systemCntcUpdt.selectConfmAt=\uc2b9\uc778\uc5ec\ubd80\uc120\ud0dd +comSsiSyiSim.systemCntcUpdt.validate.checkValidDe=\uc720\ud6a8\uc2dc\uc791\uc77c\uc790\ub294 \uc720\ud6a8\uc885\ub8cc\uc77c\uc790 \ubcf4\ub2e4 \ud074\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + + +comSsiSyiSim.systemCntcRegist.title=\uc2dc\uc2a4\ud15c\uc5f0\uacc4 \ub4f1\ub85d +comSsiSyiSim.systemCntcRegist.pageTop.title=\uc2dc\uc2a4\ud15c\uc5f0\uacc4 \ub4f1\ub85d +comSsiSyiSim.systemCntcRegist.cntcId=\uc5f0\uacc4ID +comSsiSyiSim.systemCntcRegist.cntcNm=\uc5f0\uacc4\uba85 +comSsiSyiSim.systemCntcRegist.cntcType=\uc5f0\uacc4\uc720\ud615 +comSsiSyiSim.systemCntcRegist.provdInsttId=\uc81c\uacf5\uae30\uad00 +comSsiSyiSim.systemCntcRegist.provdSysId=\uc81c\uacf5\uc2dc\uc2a4\ud15c +comSsiSyiSim.systemCntcRegist.provdSvcId=\uc81c\uacf5\uc11c\ube44\uc2a4 +comSsiSyiSim.systemCntcRegist.requstInsttId=\uc694\uccad\uae30\uad00 +comSsiSyiSim.systemCntcRegist.requstSysId=\uc694\uccad\uc2dc\uc2a4\ud15c +comSsiSyiSim.systemCntcRegist.validBeginDe=\uc720\ud6a8\uc2dc\uc791\uc77c\uc790 +comSsiSyiSim.systemCntcRegist.validEndDe=\uc720\ud6a8\uc885\ub8cc\uc77c\uc790 +comSsiSyiSim.systemCntcRegist.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comSsiSyiSim.systemCntcRegist.confmAt=\uc2b9\uc778\uc5ec\ubd80 +comSsiSyiSim.systemCntcRegist.selectProvdInsttId=\uc81c\uacf5\uae30\uad00\uc120\ud0dd +comSsiSyiSim.systemCntcRegist.selectProvdSysId=\uc81c\uacf5\uc2dc\uc2a4\ud15c\uc120\ud0dd +comSsiSyiSim.systemCntcRegist.selectProvdSvcId=\uc81c\uacf5\uc11c\ube44\uc2a4\uc120\ud0dd +comSsiSyiSim.systemCntcRegist.selectRequstInsttId=\uc694\uccad\uae30\uad00\uc120\ud0dd +comSsiSyiSim.systemCntcRegist.selectRequstSysId=\uc694\uccad\uc2dc\uc2a4\ud15c\uc120\ud0dd +comSsiSyiSim.systemCntcRegist.selectUseAt=\uc0ac\uc6a9\uc5ec\ubd80\uc120\ud0dd +comSsiSyiSim.systemCntcRegist.selectConfmAt=\uc2b9\uc778\uc5ec\ubd80\uc120\ud0dd +comSsiSyiSim.systemCntcRegist.validate.checkValidDe=\uc720\ud6a8\uc2dc\uc791\uc77c\uc790\ub294 \uc720\ud6a8\uc885\ub8cc\uc77c\uc790 \ubcf4\ub2e4 \ud074\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + + diff --git a/src/main/resources/egovframework/message/com/sts/bst/message_en.properties b/src/main/resources/egovframework/message/com/sts/bst/message_en.properties new file mode 100644 index 00000000..af2a848f --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/bst/message_en.properties @@ -0,0 +1,46 @@ +# Statistics Bulletin Board +comStsBst.bbsStats.title = Statistics Bulletin Board +comStsBst.bbsStats.fromDate = Start Date +comStsBst.bbsStats.toDate = End Date +comStsBst.bbsStats.periodKind = Type of Period +comStsBst.bbsStats.select = Select +comStsBst.bbsStats.byYear = Yearly +comStsBst.bbsStats.byMonth = Monthly +comStsBst.bbsStats.byDay = Daily + +comStsBst.bbsStats.statKind = Type of Statistics +comStsBst.bbsStats.selectPlease = Please Select +comStsBst.bbsStats.statKind1 = By Type +comStsBst.bbsStats.statKind2 = By Template +comStsBst.bbsStats.statKind3 = By Property + +comStsBst.bbsStats.tab1 = Number os Posts +comStsBst.bbsStats.tab2 = Total Read Count +comStsBst.bbsStats.tab3 = Average of Read Count +comStsBst.bbsStats.tab4 = Top/Minimum View +comStsBst.bbsStats.tab5 = Top Publisher + +comStsBst.bbsStats.statResult = Statistical Results + +comStsBst.bbsStats.tab1.subTitle1 = Graph (Unit, Number) +comStsBst.bbsStats.tab1.subTitle2 = Text (Unit, Number) +comStsBst.bbsStats.tab2.subTitle1 = Graph (Unit, Times) +comStsBst.bbsStats.tab2.subTitle2 = Text (Unit, Times) +comStsBst.bbsStats.tab3.subTitle1 = Graph (Unit, Times) +comStsBst.bbsStats.tab3.subTitle2 = Text (Unit, Times) +comStsBst.bbsStats.tab4.subTitle1 = Top View +comStsBst.bbsStats.tab4.subTitle2 = Minimum View +comStsBst.bbsStats.tab4.createdDate = Created Date +comStsBst.bbsStats.tab4.number = Number +comStsBst.bbsStats.tab4.title = Title +comStsBst.bbsStats.tab4.readCount = Read Count +comStsBst.bbsStats.tab5.subTitle1 = Top Publisher Info +comStsBst.bbsStats.tab5.writerID = Publisher ID +comStsBst.bbsStats.tab5.count = Number of Publications +comStsBst.bbsStats.tab5.statDate = Aggregation Date + +comStsBst.validate.fromDateCheck = Enter period start date. +comStsBst.validate.toDateCheck = Enter period end date. +comStsBst.validate.periodKindCheck = Select period classification. +comStsBst.validate.statKindCheck = Select statistic classification. +comStsBst.validate.tabCheck = Search for top/minimum view, the top publisher information applies to daily searches only the top posters. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sts/bst/message_ko.properties b/src/main/resources/egovframework/message/com/sts/bst/message_ko.properties new file mode 100644 index 00000000..6d489a63 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/bst/message_ko.properties @@ -0,0 +1,46 @@ +# \uac8c\uc2dc\ubb3c \ud1b5\uacc4 \uac80\uc0c9 +comStsBst.bbsStats.title = \uac8c\uc2dc\ubb3c \ud1b5\uacc4 \uac80\uc0c9 +comStsBst.bbsStats.fromDate = \uc2dc\uc791\uc77c\uc790 +comStsBst.bbsStats.toDate = \uc885\ub8cc\uc77c\uc790 +comStsBst.bbsStats.periodKind = \uae30\uac04\uad6c\ubd84 +comStsBst.bbsStats.select = \uc120\ud0dd +comStsBst.bbsStats.byYear = \uc5f0\ub3c4\ubcc4 +comStsBst.bbsStats.byMonth = \uc6d4\ubcc4 +comStsBst.bbsStats.byDay = \uc77c\ubcc4 + +comStsBst.bbsStats.statKind = \ud1b5\uacc4\uad6c\ubd84 +comStsBst.bbsStats.selectPlease = \uc120\ud0dd\ud558\uc138\uc694 +comStsBst.bbsStats.statKind1 = \uac8c\uc2dc\ud310\uc720\ud615\ubcc4 +comStsBst.bbsStats.statKind2 = \uac8c\uc2dc\ud310\ud15c\ud50c\ub9bf\ubcc4 +comStsBst.bbsStats.statKind3 = \uac8c\uc2dc\ud310\uc18d\uc131\ubcc4 + +comStsBst.bbsStats.tab1 = \uc0dd\uc131\uae00\uc218 +comStsBst.bbsStats.tab2 = \ucd1d\uc870\ud68c\uc218 +comStsBst.bbsStats.tab3 = \ud3c9\uade0\uc870\ud68c\uc218 +comStsBst.bbsStats.tab4 = \ucd5c\uace0/\ucd5c\uc18c\uc870\ud68c\uc218 +comStsBst.bbsStats.tab5 = \ucd5c\uace0\uac8c\uc2dc\uc790 + +comStsBst.bbsStats.statResult = \ud1b5\uacc4 \uacb0\uacfc + +comStsBst.bbsStats.tab1.subTitle1 = \uadf8\ub798\ud504 (\ub2e8\uc704, \uac1c) +comStsBst.bbsStats.tab1.subTitle2 = \ud14d\uc2a4\ud2b8 (\ub2e8\uc704, \uac1c) +comStsBst.bbsStats.tab2.subTitle1 = \uadf8\ub798\ud504 (\ub2e8\uc704, \ud68c) +comStsBst.bbsStats.tab2.subTitle2 = \ud14d\uc2a4\ud2b8 (\ub2e8\uc704, \ud68c) +comStsBst.bbsStats.tab3.subTitle1 = \uadf8\ub798\ud504 (\ub2e8\uc704, \ud68c) +comStsBst.bbsStats.tab3.subTitle2 = \ud14d\uc2a4\ud2b8 (\ub2e8\uc704, \ud68c) +comStsBst.bbsStats.tab4.subTitle1 = \ucd5c\uace0 \uc870\ud68c \uac8c\uc2dc\ubb3c \uc815\ubcf4 +comStsBst.bbsStats.tab4.subTitle2 = \ucd5c\uc18c \uc870\ud68c \uac8c\uc2dc\ubb3c \uc815\ubcf4 +comStsBst.bbsStats.tab4.createdDate = \uac8c\uc2dc\uc77c\uc790 +comStsBst.bbsStats.tab4.number = \uac8c\uc2dc\ubc88\ud638 +comStsBst.bbsStats.tab4.title = \uc81c\ubaa9 +comStsBst.bbsStats.tab4.readCount = \uc870\ud68c\uc218 +comStsBst.bbsStats.tab5.subTitle1 = \ucd5c\uace0 \uac8c\uc2dc\uc790 \uc815\ubcf4 +comStsBst.bbsStats.tab5.writerID = \uac8c\uc2dc\uc790ID +comStsBst.bbsStats.tab5.count = \uac8c\uc2dc\uac74\uc218 +comStsBst.bbsStats.tab5.statDate = \uc9d1\uacc4\uc77c\uc790 + +comStsBst.validate.fromDateCheck = \uae30\uac04 \uc2dc\uc791\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694 +comStsBst.validate.toDateCheck = \uae30\uac04 \uc885\ub8cc\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694 +comStsBst.validate.periodKindCheck = \uae30\uac04 \uad6c\ubd84\uc744 \uc120\ud0dd\ud558\uc138\uc694 +comStsBst.validate.statKindCheck = \ud1b5\uacc4 \uad6c\ubd84\uc744 \uc120\ud0dd\ud558\uc138\uc694 +comStsBst.validate.tabCheck = \uac8c\uc2dc\ubb3c \ud1b5\uacc4\uac80\uc0c9 \ucd5c\uace0/\ucd5c\uc18c\uc870\ud68c\uc815\ubcf4, \ucd5c\uace0\uac8c\uc2dc\uc790 \uc815\ubcf4\ub294 \uc77c\ubcc4 \uac80\uc0c9\ub9cc \uc801\uc6a9\ub429\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sts/cst/message_en.properties b/src/main/resources/egovframework/message/com/sts/cst/message_en.properties new file mode 100644 index 00000000..21fa9190 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/cst/message_en.properties @@ -0,0 +1,34 @@ +# Statistics Connects +comStsCst.conectStats.title = Statistics Connects +comStsCst.conectStats.fromDate = Start Date +comStsCst.conectStats.toDate = End Date +comStsCst.conectStats.periodKind = Type of Period +comStsCst.conectStats.select = Select +comStsCst.conectStats.byYear = Yearly +comStsCst.conectStats.byMonth = Monthly +comStsCst.conectStats.byDay = Daily + +comStsCst.conectStats.statKind = Type of Statistics +comStsCst.conectStats.selectPlease = Please Select +comStsCst.conectStats.statKind1 = By Service +comStsCst.conectStats.statKind2 = By Personal + +comStsCst.conectStats.statResult = Statistical Results +comStsCst.conectStats.results.col1 = Date +comStsCst.conectStats.results.col2 = Method +comStsCst.conectStats.results.col3 = Create +comStsCst.conectStats.results.col4 = Modify +comStsCst.conectStats.results.col5 = Inquery +comStsCst.conectStats.results.col6 = Delete +comStsCst.conectStats.results.col7 = Print +comStsCst.conectStats.results.col8 = Error + +comStsCst.conectStats.results.unit = Times + +comStsCst.conectStats.subTitle1 = Graph (Unit, Times) +comStsCst.conectStats.subTitle2 = Text (Unit, Times) + +comStsCst.validate.fromDateCheck = Enter period start date. +comStsCst.validate.toDateCheck = Enter period end date. +comStsCst.validate.periodKindCheck = Select period classification. +comStsCst.validate.statKindCheck = Select statistic classification. diff --git a/src/main/resources/egovframework/message/com/sts/cst/message_ko.properties b/src/main/resources/egovframework/message/com/sts/cst/message_ko.properties new file mode 100644 index 00000000..ef55acfb --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/cst/message_ko.properties @@ -0,0 +1,34 @@ +# \uc811\uc18d \ud1b5\uacc4 \uac80\uc0c9 +comStsCst.conectStats.title = \uc811\uc18d \ud1b5\uacc4 \uac80\uc0c9 +comStsCst.conectStats.fromDate = \uc2dc\uc791\uc77c\uc790 +comStsCst.conectStats.toDate = \uc885\ub8cc\uc77c\uc790 +comStsCst.conectStats.periodKind = \uae30\uac04\uad6c\ubd84 +comStsCst.conectStats.select = \uc120\ud0dd +comStsCst.conectStats.byYear = \uc5f0\ub3c4\ubcc4 +comStsCst.conectStats.byMonth = \uc6d4\ubcc4 +comStsCst.conectStats.byDay = \uc77c\ubcc4 + +comStsCst.conectStats.statKind = \ud1b5\uacc4\uad6c\ubd84 +comStsCst.conectStats.selectPlease = \uc120\ud0dd\ud558\uc138\uc694 +comStsCst.conectStats.statKind1 = \uc11c\ube44\uc2a4\ubcc4 +comStsCst.conectStats.statKind2 = \uac1c\uc778\ubcc4 + +comStsCst.conectStats.statResult = \uc811\uc18d \ud1b5\uacc4 \uacb0\uacfc +comStsCst.conectStats.results.col1 = \uc77c\uc790 +comStsCst.conectStats.results.col2 = \uba54\uc18c\ub4dc\uba85 +comStsCst.conectStats.results.col3 = \uc0dd\uc131 +comStsCst.conectStats.results.col4 = \uc218\uc815 +comStsCst.conectStats.results.col5 = \uc870\ud68c +comStsCst.conectStats.results.col6 = \uc0ad\uc81c +comStsCst.conectStats.results.col7 = \ucd9c\ub825 +comStsCst.conectStats.results.col8 = \uc5d0\ub7ec + +comStsCst.conectStats.results.unit = \ud68c + +comStsCst.conectStats.subTitle1 = \uadf8\ub798\ud504 (\ub2e8\uc704, \ud69f\uc218) +comStsCst.conectStats.subTitle2 = \ud14d\uc2a4\ud2b8 (\ub2e8\uc704, \ud69f\uc218) + +comStsCst.validate.fromDateCheck = \uae30\uac04 \uc2dc\uc791\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694 +comStsCst.validate.toDateCheck = \uae30\uac04 \uc885\ub8cc\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694 +comStsCst.validate.periodKindCheck = \uae30\uac04 \uad6c\ubd84\uc744 \uc120\ud0dd\ud558\uc138\uc694 +comStsCst.validate.statKindCheck = \ud1b5\uacc4 \uad6c\ubd84\uc744 \uc120\ud0dd\ud558\uc138\uc694 diff --git a/src/main/resources/egovframework/message/com/sts/dst/message_en.properties b/src/main/resources/egovframework/message/com/sts/dst/message_en.properties new file mode 100644 index 00000000..b7106c65 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/dst/message_en.properties @@ -0,0 +1,29 @@ +# Statistics Data Usage +comStsDst.dtaUseStats.title = Statistics Data Usage + +comStsDst.dtaUseStats.boardName = Bulletin Name +comStsDst.dtaUseStats.periodKind = Type of Period +comStsDst.dtaUseStats.select = Select +comStsDst.dtaUseStats.byYear = Yearly +comStsDst.dtaUseStats.byMonth = Monthly +comStsDst.dtaUseStats.byDay = Daily + +comStsDst.dtaUseStats.period = Period +comStsDst.dtaUseStats.fromDate = Start Date +comStsDst.dtaUseStats.toDate = End Date + +comStsDst.dtaUseStats.subTitle1 = Statistics by Period + +comStsDst.dtaUseStats.results.col1 = Bulletin Name +comStsDst.dtaUseStats.results.col2 = Number +comStsDst.dtaUseStats.results.col3 = Title +comStsDst.dtaUseStats.results.col4 = Attachments +comStsDst.dtaUseStats.results.col5 = Download Count + +comStsDst.dtaUseStats.resultsDetail.col1 = Title +comStsDst.dtaUseStats.resultsDetail.col2 = Attachments +comStsDst.dtaUseStats.resultsDetail.col3 = User ID +comStsDst.dtaUseStats.resultsDetail.col4 = User Name +comStsDst.dtaUseStats.resultsDetail.col5 = Download Date + +comStsDst.dtaUseStats.results.unit = Items \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sts/dst/message_ko.properties b/src/main/resources/egovframework/message/com/sts/dst/message_ko.properties new file mode 100644 index 00000000..c21a9e91 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/dst/message_ko.properties @@ -0,0 +1,29 @@ +# \uc790\ub8cc\uc774\uc6a9 \ud1b5\uacc4 \uac80\uc0c9 +comStsDst.dtaUseStats.title = \uc790\ub8cc\uc774\uc6a9\ud604\ud669 \ud1b5\uacc4 + +comStsDst.dtaUseStats.boardName = \uac8c\uc2dc\ud310\uba85 +comStsDst.dtaUseStats.periodKind = \uae30\uac04\uad6c\ubd84 +comStsDst.dtaUseStats.select = \uc120\ud0dd +comStsDst.dtaUseStats.byYear = \uc5f0\ub3c4\ubcc4 +comStsDst.dtaUseStats.byMonth = \uc6d4\ubcc4 +comStsDst.dtaUseStats.byDay = \uc77c\ubcc4 + +comStsDst.dtaUseStats.period = \uae30\uac04 +comStsDst.dtaUseStats.fromDate = \uc2dc\uc791\uc77c\uc790 +comStsDst.dtaUseStats.toDate = \uc885\ub8cc\uc77c\uc790 + +comStsDst.dtaUseStats.subTitle1 = \uae30\uac04\ubcc4 \ud1b5\uacc4 \uacb0\uacfc + +comStsDst.dtaUseStats.results.col1 = \uac8c\uc2dc\ud310\uba85 +comStsDst.dtaUseStats.results.col2 = \uae00\ubc88\ud638 +comStsDst.dtaUseStats.results.col3 = \uae00\uc81c\ubaa9 +comStsDst.dtaUseStats.results.col4 = \ucca8\ubd80\ud30c\uc77c\uba85 +comStsDst.dtaUseStats.results.col5 = \ub2e4\uc6b4\ud69f\uc218 + +comStsDst.dtaUseStats.resultsDetail.col1 = \uae00\uc81c\ubaa9 +comStsDst.dtaUseStats.resultsDetail.col2 = \ucca8\ubd80\ud30c\uc77c\uba85 +comStsDst.dtaUseStats.resultsDetail.col3 = \uc0ac\uc6a9\uc790ID +comStsDst.dtaUseStats.resultsDetail.col4 = \uc0ac\uc6a9\uc790\uba85 +comStsDst.dtaUseStats.resultsDetail.col5 = \ub2e4\uc6b4\ub85c\ub4dc\uc77c\uc2dc + +comStsDst.dtaUseStats.results.unit = \uac1c \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sts/rst/message_en.properties b/src/main/resources/egovframework/message/com/sts/rst/message_en.properties new file mode 100644 index 00000000..ac83edb5 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/rst/message_en.properties @@ -0,0 +1,28 @@ +sts.reprtId = Report ID +sts.title = Report Title +sts.category = Report Category +sts.status = Report Status +sts.regDate = Registration Date + +comStsRst.reprtStats.title = Statistics Reposrts +comStsRst.reprtStats.statKind = Type of Statistics + +comStsRst.reprtStats.periodKind = Type of Period +comStsRst.reprtStats.select = Select +comStsRst.reprtStats.byYear = Yearly +comStsRst.reprtStats.byMonth = Monthly +comStsRst.reprtStats.byDay = Daily + +comStsRst.reprtStats.period = Period +comStsRst.reprtStats.fromDate = Start Date +comStsRst.reprtStats.toDate = End Date + +comStsRst.reprtStats.subTitle1 = Statistics by Period +comStsRst.reprtStats.subTitle2 = Statistics by report type +comStsRst.reprtStats.subTitle3 = Statistics by progress + +comStsRst.reprtStats.results.col1 = Report type +comStsRst.reprtStats.results.col2 = Progress +comStsRst.reprtStats.results.col3 = Number of cases + +comStsRst.reprtStats.results.unit = Times \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sts/rst/message_ko.properties b/src/main/resources/egovframework/message/com/sts/rst/message_ko.properties new file mode 100644 index 00000000..cf4a51c2 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/rst/message_ko.properties @@ -0,0 +1,29 @@ +# \ubcf4\uace0\uc11c \ud1b5\uacc4 \uac80\uc0c9 +sts.reprtId = \ubcf4\uace0\uc11cID +sts.title = \ubcf4\uace0\uc11c\uba85 +sts.category = \ubcf4\uace0\uc11c\uc720\ud615 +sts.status = \uc9c4\ud589\uc0c1\ud0dc +sts.regDate = \ub4f1\ub85d\uc77c\uc2dc + +comStsRst.reprtStats.title = \ubcf4\uace0\uc11c \ud1b5\uacc4 \uac80\uc0c9 +comStsRst.reprtStats.statKind = \uc720\ud615 + +comStsRst.reprtStats.periodKind = \uae30\uac04\uad6c\ubd84 +comStsRst.reprtStats.select = \uc120\ud0dd +comStsRst.reprtStats.byYear = \uc5f0\ub3c4\ubcc4 +comStsRst.reprtStats.byMonth = \uc6d4\ubcc4 +comStsRst.reprtStats.byDay = \uc77c\ubcc4 + +comStsRst.reprtStats.period = \uae30\uac04 +comStsRst.reprtStats.fromDate = \uc2dc\uc791\uc77c\uc790 +comStsRst.reprtStats.toDate = \uc885\ub8cc\uc77c\uc790 + +comStsRst.reprtStats.subTitle1 = \uae30\uac04\ubcc4 \ud1b5\uacc4 \uacb0\uacfc +comStsRst.reprtStats.subTitle2 = \ubcf4\uace0\uc11c\uc720\ud615\ubcc4 \ud1b5\uacc4 \uacb0\uacfc +comStsRst.reprtStats.subTitle3 = \uc9c4\ud589\uc0c1\ud0dc\ubcc4 \ud1b5\uacc4 \uacb0\uacfc + +comStsRst.reprtStats.results.col1 = \ubcf4\uace0\uc11c\uc720\ud615 +comStsRst.reprtStats.results.col2 = \uc9c4\ud589\uc0c1\ud0dc +comStsRst.reprtStats.results.col3 = \uac74\uc218 + +comStsRst.reprtStats.results.unit = \ud68c \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sts/sst/message_en.properties b/src/main/resources/egovframework/message/com/sts/sst/message_en.properties new file mode 100644 index 00000000..add4f249 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/sst/message_en.properties @@ -0,0 +1,22 @@ +# Statistics Screens +comStsSst.scrinStats.title = Statistics Screens +comStsSst.scrinStats.fromDate = Start Date +comStsSst.scrinStats.toDate = End Date +comStsSst.scrinStats.periodKind = Type of Period +comStsSst.scrinStats.select = Select +comStsSst.scrinStats.byYear = Yearly +comStsSst.scrinStats.byMonth = Monthly +comStsSst.scrinStats.byDay = Daily + +comStsSst.scrinStats.statResult = Statistical Results + +comStsSst.scrinStats.results.unit = Times + +comStsSst.scrinStats.subTitle1 = Graph (Unit, Times) +comStsSst.scrinStats.subTitle2 = Text (Unit, Times) + +comStsSst.validate.fromDateCheck = Enter period start date. +comStsSst.validate.toDateCheck = Enter period end date. +comStsSst.validate.periodKindCheck = Select period classification. +comStsSst.validate.menuCheck1 = Menu list data does not exist. +comStsSst.validate.menuCheck2 = Menu does not exist. Please use after registering the menu. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sts/sst/message_ko.properties b/src/main/resources/egovframework/message/com/sts/sst/message_ko.properties new file mode 100644 index 00000000..906e1be2 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/sst/message_ko.properties @@ -0,0 +1,22 @@ +# \ud654\uba74 \ud1b5\uacc4 \uac80\uc0c9 +comStsSst.scrinStats.title = \ud654\uba74 \ud1b5\uacc4 \uac80\uc0c9 +comStsSst.scrinStats.fromDate = \uc2dc\uc791\uc77c\uc790 +comStsSst.scrinStats.toDate = \uc885\ub8cc\uc77c\uc790 +comStsSst.scrinStats.periodKind = \uae30\uac04\uad6c\ubd84 +comStsSst.scrinStats.select = \uc120\ud0dd +comStsSst.scrinStats.byYear = \uc5f0\ub3c4\ubcc4 +comStsSst.scrinStats.byMonth = \uc6d4\ubcc4 +comStsSst.scrinStats.byDay = \uc77c\ubcc4 + +comStsSst.scrinStats.statResult = \ud654\uba74 \ud1b5\uacc4 \uacb0\uacfc + +comStsSst.scrinStats.results.unit = \ud68c + +comStsSst.scrinStats.subTitle1 = \uadf8\ub798\ud504 (\ub2e8\uc704, \ud69f\uc218) +comStsSst.scrinStats.subTitle2 = \ud14d\uc2a4\ud2b8 (\ub2e8\uc704, \ud69f\uc218) + +comStsSst.validate.fromDateCheck = \uae30\uac04 \uc2dc\uc791\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694 +comStsSst.validate.toDateCheck = \uae30\uac04 \uc885\ub8cc\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694 +comStsSst.validate.periodKindCheck = \uae30\uac04 \uad6c\ubd84\uc744 \uc120\ud0dd\ud558\uc138\uc694 +comStsSst.validate.menuCheck1 = \uba54\ub274 \ubaa9\ub85d \ub370\uc774\ud0c0\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comStsSst.validate.menuCheck2 = \uba54\ub274\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uba54\ub274 \ub4f1\ub85d \ud6c4 \uc0ac\uc6a9\ud558\uc138\uc694. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sts/ust/message_en.properties b/src/main/resources/egovframework/message/com/sts/ust/message_en.properties new file mode 100644 index 00000000..c1faa915 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/ust/message_en.properties @@ -0,0 +1,25 @@ +# Statistics Users +comStsUst.userStats.title = Statistics Users +comStsUst.userStats.fromDate = Start Date +comStsUst.userStats.toDate = End Date +comStsUst.userStats.periodKind = Type of Period +comStsUst.userStats.select = Select +comStsUst.userStats.byYear = Yearly +comStsUst.userStats.byMonth = Monthly +comStsUst.userStats.byDay = Daily + +comStsUst.userStats.statKind = Type of Statistics +comStsUst.userStats.selectPlease = Please Select +comStsUst.userStats.statKind1 = By Member Type +comStsUst.userStats.statKind2 = By Member Status +comStsUst.userStats.statKind3 = By Gender + +comStsUst.userStats.statResult = Statistical Results + +comStsUst.userStats.subTitle1 = Graph (Unit, Number) +comStsUst.userStats.subTitle2 = Text (Unit, Number) + +comStsUst.validate.fromDateCheck = Enter period start date. +comStsUst.validate.toDateCheck = Enter period end date. +comStsUst.validate.periodKindCheck = Select period classification. +comStsUst.validate.statKindCheck = Select statistic classification. diff --git a/src/main/resources/egovframework/message/com/sts/ust/message_ko.properties b/src/main/resources/egovframework/message/com/sts/ust/message_ko.properties new file mode 100644 index 00000000..294d86fa --- /dev/null +++ b/src/main/resources/egovframework/message/com/sts/ust/message_ko.properties @@ -0,0 +1,25 @@ +# \uc0ac\uc6a9\uc790 \ud1b5\uacc4 \uac80\uc0c9 +comStsUst.userStats.title = \uc0ac\uc6a9\uc790 \ud1b5\uacc4 \uac80\uc0c9 +comStsUst.userStats.fromDate = \uc2dc\uc791\uc77c\uc790 +comStsUst.userStats.toDate = \uc885\ub8cc\uc77c\uc790 +comStsUst.userStats.periodKind = \uae30\uac04\uad6c\ubd84 +comStsUst.userStats.select = \uc120\ud0dd +comStsUst.userStats.byYear = \uc5f0\ub3c4\ubcc4 +comStsUst.userStats.byMonth = \uc6d4\ubcc4 +comStsUst.userStats.byDay = \uc77c\ubcc4 + +comStsUst.userStats.statKind = \ud1b5\uacc4\uad6c\ubd84 +comStsUst.userStats.selectPlease = \uc120\ud0dd\ud558\uc138\uc694 +comStsUst.userStats.statKind1 = \ud68c\uc6d0\uc720\ud615\ubcc4 +comStsUst.userStats.statKind2 = \ud68c\uc6d0\uc0c1\ud0dc\ubcc4 +comStsUst.userStats.statKind3 = \uc131\ubcc4 + +comStsUst.userStats.statResult = \uc0ac\uc6a9\uc790 \ud1b5\uacc4 \uacb0\uacfc + +comStsUst.userStats.subTitle1 = \uadf8\ub798\ud504 (\ub2e8\uc704, \uba85) +comStsUst.userStats.subTitle2 = \ud14d\uc2a4\ud2b8 (\ub2e8\uc704, \uba85) + +comStsUst.validate.fromDateCheck = \uae30\uac04 \uc2dc\uc791\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694 +comStsUst.validate.toDateCheck = \uae30\uac04 \uc885\ub8cc\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694 +comStsUst.validate.periodKindCheck = \uae30\uac04 \uad6c\ubd84\uc744 \uc120\ud0dd\ud558\uc138\uc694 +comStsUst.validate.statKindCheck = \ud1b5\uacc4 \uad6c\ubd84\uc744 \uc120\ud0dd\ud558\uc138\uc694 diff --git a/src/main/resources/egovframework/message/com/sym/adr/message_en.properties b/src/main/resources/egovframework/message/com/sym/adr/message_en.properties new file mode 100644 index 00000000..81bf94d5 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/adr/message_en.properties @@ -0,0 +1,17 @@ +#Address Info Linkage# +symAdr.adressCntcList.Title=Address Info Linkage + +symAdr.adressCntcList.scCurrentPage=current page +symAdr.adressCntcList.scCountPerPage=current per page +symAdr.adressCntcList.scKeyword=keyword +symAdr.adressCntcList.scConfmKey=confm key + +symAdr.btn.addrLoc=address get(Controller) +symAdr.btn.addrjson=address get(JSON) + +symAdr.list.addrRoad=road.addr +symAdr.list.addrRoad1=road.addr(1) +symAdr.list.addrRoad2=road.addr(2) +symAdr.list.addrGibun=addr.lot number +symAdr.list.addrEng=addr.eng +symAdr.list.post=post.num diff --git a/src/main/resources/egovframework/message/com/sym/adr/message_ko.properties b/src/main/resources/egovframework/message/com/sym/adr/message_ko.properties new file mode 100644 index 00000000..5d278f8c --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/adr/message_ko.properties @@ -0,0 +1,17 @@ +#\uc8fc\uc18c\uc815\ubcf4\uc5f0\uacc4# +symAdr.adressCntcList.Title=\uc8fc\uc18c \uc815\ubcf4 \uc5f0\uacc4 + +symAdr.adressCntcList.scCurrentPage=\ud604\uc7ac \ud398\uc774\uc9c0 +symAdr.adressCntcList.scCountPerPage=\ud398\uc774\uc9c0 \uc0ac\uc774\uc988 +symAdr.adressCntcList.scKeyword=\uac80\uc0c9\uc5b4 +symAdr.adressCntcList.scConfmKey=\uc2b9\uc778\ud0a4 + +symAdr.btn.addrLoc=\uc8fc\uc18c\uac00\uc838\uc624\uae30(Controller) +symAdr.btn.addrjson=\uc8fc\uc18c\uac00\uc838\uc624\uae30(JSON) + +symAdr.list.addrRoad=\ub3c4\ub85c\uba85\uc8fc\uc18c +symAdr.list.addrRoad1=\ub3c4\ub85c\uba85\uc8fc\uc18c(1) +symAdr.list.addrRoad2=\ub3c4\ub85c\uba85\uc8fc\uc18c(2) +symAdr.list.addrGibun=\uc9c0\ubc88\uc8fc\uc18c +symAdr.list.addrEng=\uc601\ubb38\uc8fc\uc18c +symAdr.list.post=\uc6b0\ud3b8\ubc88\ud638 diff --git a/src/main/resources/egovframework/message/com/sym/bat/message_en.properties b/src/main/resources/egovframework/message/com/sym/bat/message_en.properties new file mode 100644 index 00000000..99736ee3 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/bat/message_en.properties @@ -0,0 +1,155 @@ +comSymBat.batchOpertList.title=View Batch Job Management List +comSymBat.batchOpertList.pageTop.title=Batch Job Management List +comSymBat.batchOpertList.batchOpertId=Batch Job ID +comSymBat.batchOpertList.batchOpertNm=Batch Job Name +comSymBat.batchOpertList.batchProgrm=Batch Program +comSymBat.batchOpertList.paramtr=Parameter +comSymBat.batchOpertList.validate.searchKeyword=Please select a search condition. +comSymBat.batchOpertList.searchKeyword=Search Keyword + + +comSymBat.batchOpertDetail.title=View Batch Job Details +comSymBat.BatchOpertDetail.pageTop.title=View Batch Job Details +comSymBat.batchOpertDetail.batchOpertId=Batch Job ID +comSymBat.batchOpertDetail.batchOpertNm=Batch Job Name +comSymBat.batchOpertDetail.batchProgrm=Batch Program +comSymBat.batchOpertDetail.paramtr=Parameter + + +comSymBat.batchOpertUpdt.title=Edit Batch Job +comSymBat.batchOpertUpdt.pageTop.title=Edit Batch Job +comSymBat.batchOpertUpdt.batchOpertId=Batch Job ID +comSymBat.batchOpertUpdt.batchOpertNm=Batch Job Name +comSymBat.batchOpertUpdt.batchProgrm=Batch Program +comSymBat.batchOpertUpdt.paramtr=Parameter + + +comSymBat.batchOpertRegist.title=Registration of Batch Jobs +comSymBat.batchOpertRegist.pageTop.title=Registration of Batch Jobs +comSymBat.batchOpertRegist.batchOpertNm=Batch Job Name +comSymBat.batchOpertRegist.batchProgrm=Batch Program +comSymBat.batchOpertRegist.paramtr=Parameter + + +comSymBat.batchResultList.title=View Batch Result Management List +comSymBat.batchResultList.pageTop.title=Batch Result List +comSymBat.batchResultList.searchCondition=Search Condition +comSymBat.batchResultList.sttus.value00=All +comSymBat.batchResultList.sttus.value01=Normal +comSymBat.batchResultList.sttus.value02=Abnormal +comSymBat.batchResultList.sttus.value03=Performing +comSymBat.batchResultList.batchResultId=Batch Result ID +comSymBat.batchResultList.batchSchdulId=Batch Schedule ID +comSymBat.batchResultList.batchOpertNm=Batch Job Name +comSymBat.batchResultList.sttusNm=Condition +comSymBat.batchResultList.executBeginTime=Execution Start Time +comSymBat.batchResultList.executEndTime=Execution End time +comSymBat.batchResultList.validate.searchCondition=Please select a search condition. +comSymBat.batchResultList.validate.inputSearchStartDate=Please enter search start date. +comSymBat.batchResultList.validate.inputSearchEndDate=Please enter search end date. +comSymBat.batchResultList.validate.searchStartDate=Start date +comSymBat.batchResultList.validate.searchEndDate=End date +comSymBat.batchResultList.validate.strTmpFromDate=The date format is invalid. +comSymBat.batchResultList.validate.strTmpFromEndDate=Start date can not be greater than end date. +comSymBat.batchResultList.searchKeyword=Search Keyword +comSymBat.batchResultList.searchStartDate=Search Start Date +comSymBat.batchResultList.searchEndDate=Search End Date + + +comSymBat.batchResultDetail.title=Detailed View Of Batch Result +comSymBat.batchResultDetail.pageTop.title=Detailed View Of Batch Result +comSymBat.batchResultDetail.batchResultId=Batch Result ID +comSymBat.batchResultDetail.batchSchdulId=Batch Schedule ID +comSymBat.batchResultDetail.batchOpertId=Batch Job ID +comSymBat.batchResultDetail.batchOpertNm=Batch Job Name +comSymBat.batchResultDetail.batchProgrm=Batch Program +comSymBat.batchResultDetail.paramtr=Parameter +comSymBat.batchResultDetail.sttusNm=Condition +comSymBat.batchResultDetail.errorInfo=Error information +comSymBat.batchResultDetail.executBeginTime=Start Execution Time +comSymBat.batchResultDetail.executEndTime=Execution End Time + + +comSymBat.batchSchdulList.title=Batch Schedule Management List +comSymBat.batchSchdulList.pageTop.title=Batch Schedule Management List +comSymBat.batchSchdulList.batchSchdulId=Batch Schedule ID +comSymBat.batchSchdulList.batchOpertNm=Batch Job Name +comSymBat.batchSchdulList.batchProgrm=Batch Program +comSymBat.batchSchdulList.executCycleNm=Execution Cycle +comSymBat.batchSchdulList.executSchdul=Execution Schedule +comSymBat.batchSchdulList.searchCondition=Search Condition +comSymBat.batchSchdulList.searchKeyword=Search Keyword + + +comSymBat.batchSchdulDetail.title=Batch Schedule Detailed View +comSymBat.batchSchdulDetail.pageTop.title=Batch Schedule Detailed View +comSymBat.batchSchdulDetail.batchSchdulId=Batch Schedule ID +comSymBat.batchSchdulDetail.batchOpertId=Batch Job ID +comSymBat.batchSchdulDetail.batchOpertNm=Batch Job Name +comSymBat.batchSchdulDetail.executCycleNm=Execution Cycle + + +comSymBat.batchSchdulUpdt.title=Modify Batch Schedule +comSymBat.batchSchdulUpdt.pageTop.title=Modify Batch Schedule +comSymBat.batchSchdulUpdt.validate.executSchdulDfkSes.length=The weekday is the required input value when the execution cycle is selected as weekly. +comSymBat.batchSchdulUpdt.validate.cycleMonth.executSchdulDay=When the execution cycle is monthly, the execution schedule (days) is a required input value. +comSymBat.batchSchdulUpdt.validate.cycleYear.executSchdulMonth=When the execution cycle is annually, the execution schedule (month) is a required input value. +comSymBat.batchSchdulUpdt.validate.cycleYear.executSchdulDay=When the execution cycle is annually, the execution schedule (days) is a mandatory input value. +comSymBat.batchSchdulUpdt.validate.checkDate=The execution schedule (month / day) is not valid. +comSymBat.batchSchdulUpdt.validate.executSchdulDeNm=The execution schedule (date) is a required input value when the execution cycle is only once. +comSymBat.batchSchdulUpdt.validate.executSchdulDeNm.isDate=The execution schedule (date) is invalid. +comSymBat.batchSchdulUpdt.batchSchdulId=Batch Schedule ID +comSymBat.batchSchdulUpdt.batchOpertId=Batch Job ID +comSymBat.batchSchdulUpdt.batchOpertNm=Batch Job Name +comSymBat.batchSchdulUpdt.executCycleNm=Execution Cycle +comSymBat.batchSchdulUpdt.executSchdulDeNm=Execution schedule(Date) +comSymBat.batchSchdulUpdt.executSchdulMonth=Execution schedule(Month) +comSymBat.batchSchdulUpdt.executSchdulDay=Execution schedule(Day) +comSymBat.batchSchdulUpdt.executSchdulHour=Execution schedule(Hour) +comSymBat.batchSchdulUpdt.executSchdulMnt=Execution schedule(Minute) +comSymBat.batchSchdulUpdt.executSchdulSecnd=Execution schedule(Second) +comSymBat.batchSchdulUpdt.spnMonth=Month +comSymBat.batchSchdulUpdt.spnDay=Day +comSymBat.batchSchdulUpdt.spnHH=Hour +comSymBat.batchSchdulUpdt.spnMM=Minute +comSymBat.batchSchdulUpdt.spnSS=Second + + +comSymBat.batchSchdulRegist.title=Registration Of Batch Schedule +comSymBat.batchSchdulRegist.pageTop.title=Registration Of Batch Schedule +comSymBat.batchSchdulRegist.validate.executSchdulDfkSes.length=The weekday is the required input value when the execution cycle is selected as weekly. +comSymBat.batchSchdulRegist.validate.cycleMonth.executSchdulDay=When the execution cycle is monthly, the execution schedule (days) is a required input value. +comSymBat.batchSchdulRegist.validate.cycleYear.executSchdulMonth=When the execution cycle is annually, the execution schedule (month) is a required input value. +comSymBat.batchSchdulRegist.validate.cycleYear.executSchdulDay=When the execution cycle is annually, the execution schedule (days) is a mandatory input value. +comSymBat.batchSchdulRegist.validate.checkDate=The execution schedule (month / day) is not valid. +comSymBat.batchSchdulRegist.validate.executSchdulDeNm=The execution schedule (date) is a required input value when the execution cycle is only once. +comSymBat.batchSchdulRegist.validate.executSchdulDeNm.isDate=The execution schedule (date) is invalid. +comSymBat.batchSchdulRegist.batchSchdulId=Batch Schedule ID +comSymBat.batchSchdulRegist.batchOpertId=Batch Job ID +comSymBat.batchSchdulRegist.batchOpertNm=Batch Job Name +comSymBat.batchSchdulRegist.executCycleNm=Execution Cycle +comSymBat.batchSchdulRegist.executSchdulDeNm=Execution schedule(Date) +comSymBat.batchSchdulRegist.executSchdulMonth=Execution schedule(Month) +comSymBat.batchSchdulRegist.executSchdulDay=Execution schedule(Day) +comSymBat.batchSchdulRegist.executSchdulHour=Execution schedule(Hour) +comSymBat.batchSchdulRegist.executSchdulMnt=Execution schedule(Minute) +comSymBat.batchSchdulRegist.executSchdulSecnd=Execution schedule(Second) +comSymBat.batchSchdulRegist.spnMonth=Month +comSymBat.batchSchdulRegist.spnDay=Day +comSymBat.batchSchdulRegist.spnHH=Hour +comSymBat.batchSchdulRegist.spnMM=Minute +comSymBat.batchSchdulRegist.spnSS=Second + + +comSymBat.batchOpertListPopup.title=View Batch Jobs +comSymBat.batchOpertListPopup.pageTop.title=View Batch Jobs +comSymBat.batchOpertListPopup.validate.searchKeyword=Please select a search condition. +comSymBat.batchOpertListPopup.searchCondition=Search Condition +comSymBat.batchOpertListPopup.batchOpertId=Batch Job ID +comSymBat.batchOpertListPopup.batchOpertNm=Batch Job Name +comSymBat.batchOpertListPopup.batchProgrm=Batch Program +comSymBat.batchOpertListPopup.paramtr=Parameter + + + + diff --git a/src/main/resources/egovframework/message/com/sym/bat/message_ko.properties b/src/main/resources/egovframework/message/com/sym/bat/message_ko.properties new file mode 100644 index 00000000..4109ace8 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/bat/message_ko.properties @@ -0,0 +1,156 @@ +comSymBat.batchOpertList.title=\ubc30\uce58\uc791\uc5c5\uad00\ub9ac \ubaa9\ub85d\uc870\ud68c +comSymBat.batchOpertList.pageTop.title=\ubc30\uce58\uc791\uc5c5\uad00\ub9ac \ubaa9\ub85d +comSymBat.batchOpertList.batchOpertId=\ubc30\uce58\uc791\uc5c5ID +comSymBat.batchOpertList.batchOpertNm=\ubc30\uce58\uc791\uc5c5\uba85 +comSymBat.batchOpertList.batchProgrm=\ubc30\uce58\ud504\ub85c\uadf8\ub7a8 +comSymBat.batchOpertList.paramtr=\ud30c\ub77c\ubbf8\ud130 +comSymBat.batchOpertList.validate.searchKeyword=\uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud558\uc138\uc694. +comSymBat.batchOpertList.searchKeyword=\uac80\uc0c9\ud0a4\uc6cc\ub4dc + + +comSymBat.batchOpertDetail.title=\ubc30\uce58\uc791\uc5c5 \uc0c1\uc138\uc870\ud68c +comSymBat.BatchOpertDetail.pageTop.title=\ubc30\uce58\uc791\uc5c5 \uc0c1\uc138\uc870\ud68c +comSymBat.batchOpertDetail.batchOpertId=\ubc30\uce58\uc791\uc5c5ID +comSymBat.batchOpertDetail.batchOpertNm=\ubc30\uce58\uc791\uc5c5\uba85 +comSymBat.batchOpertDetail.batchProgrm=\ubc30\uce58\ud504\ub85c\uadf8\ub7a8 +comSymBat.batchOpertDetail.paramtr=\ud30c\ub77c\ubbf8\ud130 + + +comSymBat.batchOpertUpdt.title=\ubc30\uce58\uc791\uc5c5 \uc218\uc815 +comSymBat.batchOpertUpdt.pageTop.title=\ubc30\uce58\uc791\uc5c5 \uc218\uc815 +comSymBat.batchOpertUpdt.batchOpertId=\ubc30\uce58\uc791\uc5c5ID +comSymBat.batchOpertUpdt.batchOpertNm=\ubc30\uce58\uc791\uc5c5\uba85 +comSymBat.batchOpertUpdt.batchProgrm=\ubc30\uce58\ud504\ub85c\uadf8\ub7a8 +comSymBat.batchOpertUpdt.paramtr=\ud30c\ub77c\ubbf8\ud130 + + +comSymBat.batchOpertRegist.title=\ubc30\uce58\uc791\uc5c5\ub4f1\ub85d +comSymBat.batchOpertRegist.pageTop.title=\ubc30\uce58\uc791\uc5c5 \ub4f1\ub85d +comSymBat.batchOpertRegist.batchOpertNm=\ubc30\uce58\uc791\uc5c5\uba85 +comSymBat.batchOpertRegist.batchProgrm=\ubc30\uce58\ud504\ub85c\uadf8\ub7a8 +comSymBat.batchOpertRegist.paramtr=\ud30c\ub77c\ubbf8\ud130 + + +comSymBat.batchResultList.title=\ubc30\uce58\uacb0\uacfc\uad00\ub9ac \ubaa9\ub85d\uc870\ud68c +comSymBat.batchResultList.pageTop.title=\ubc30\uce58\uacb0\uacfc \ubaa9\ub85d +comSymBat.batchResultList.searchCondition=\uac80\uc0c9\uc870\uac74\uad6c\ubd84 +comSymBat.batchResultList.sttus.value00=\uc804\uccb4 +comSymBat.batchResultList.sttus.value01=\uc815\uc0c1 +comSymBat.batchResultList.sttus.value02=\ube44\uc815\uc0c1 +comSymBat.batchResultList.sttus.value03=\uc218\ud589\uc911 +comSymBat.batchResultList.batchResultId=\ubc30\uce58\uacb0\uacfcID +comSymBat.batchResultList.batchSchdulId=\ubc30\uce58\uc2a4\ucf00\uc904ID +comSymBat.batchResultList.batchOpertNm=\ubc30\uce58\uc791\uc5c5\uba85 +comSymBat.batchResultList.sttusNm=\uc0c1\ud0dc +comSymBat.batchResultList.executBeginTime=\uc2e4\ud589\uc2dc\uc791\uc2dc\uac01 +comSymBat.batchResultList.executEndTime=\uc2e4\ud589\uc885\ub8cc\uc2dc\uac01 +comSymBat.batchResultList.validate.searchCondition=\uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud558\uc138\uc694. +comSymBat.batchResultList.validate.inputSearchStartDate=\uac80\uc0c9\uc2dc\uc791\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694. +comSymBat.batchResultList.validate.inputSearchEndDate=\uac80\uc0c9\uc885\ub8cc\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694. +comSymBat.batchResultList.validate.searchStartDate=\uc870\ud68c\uc2dc\uc791\uc77c\uc790 +comSymBat.batchResultList.validate.searchEndDate=\uc870\ud68c\uc885\ub8cc\uc77c\uc790 +comSymBat.batchResultList.validate.strTmpFromDate=\ub0a0\uc9dc \ud615\uc2dd\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comSymBat.batchResultList.validate.strTmpFromEndDate=\uc2dc\uc791\uc77c\uc790\ub294 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ud074 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comSymBat.batchResultList.searchKeyword=\uac80\uc0c9\ud0a4\uc6cc\ub4dc +comSymBat.batchResultList.searchStartDate=\uac80\uc0c9\uc2dc\uc791\uc77c\uc790 +comSymBat.batchResultList.searchEndDate=\uac80\uc0c9\uc885\ub8cc\uc77c\uc790 + + +comSymBat.batchResultDetail.title=\ubc30\uce58\uacb0\uacfc \uc0c1\uc138\uc870\ud68c +comSymBat.batchResultDetail.pageTop.title=\ubc30\uce58\uacb0\uacfc \uc0c1\uc138\uc870\ud68c +comSymBat.batchResultDetail.batchResultId=\ubc30\uce58\uacb0\uacfcID +comSymBat.batchResultDetail.batchSchdulId=\ubc30\uce58\uc2a4\ucf00\uc904ID +comSymBat.batchResultDetail.batchOpertId=\ubc30\uce58\uc791\uc5c5ID +comSymBat.batchResultDetail.batchOpertNm=\ubc30\uce58\uc791\uc5c5\uba85 +comSymBat.batchResultDetail.batchProgrm=\ubc30\uce58\ud504\ub85c\uadf8\ub7a8 +comSymBat.batchResultDetail.paramtr=\ud30c\ub77c\ubbf8\ud130 +comSymBat.batchResultDetail.sttusNm=\uc0c1\ud0dc +comSymBat.batchResultDetail.errorInfo=\uc5d0\ub7ec\uc815\ubcf4 +comSymBat.batchResultDetail.executBeginTime=\uc2e4\ud589\uc2dc\uc791\uc2dc\uac01 +comSymBat.batchResultDetail.executEndTime=\uc2e4\ud589\uc885\ub8cc\uc2dc\uac01 + + +comSymBat.batchSchdulList.title=\ubc30\uce58\uc2a4\ucf00\uc904\uad00\ub9ac \ubaa9\ub85d\uc870\ud68c +comSymBat.batchSchdulList.pageTop.title=\ubc30\uce58\uc2a4\ucf00\uc904\uad00\ub9ac \ubaa9\ub85d +comSymBat.batchSchdulList.batchSchdulId=\ubc30\uce58\uc2a4\ucf00\uc904ID +comSymBat.batchSchdulList.batchOpertNm=\ubc30\uce58\uc791\uc5c5\uba85 +comSymBat.batchSchdulList.batchProgrm=\ubc30\uce58\ud504\ub85c\uadf8\ub7a8 +comSymBat.batchSchdulList.executCycleNm=\uc2e4\ud589\uc8fc\uae30 +comSymBat.batchSchdulList.executSchdul=\uc2e4\ud589\uc2a4\ucf00\uc904 +comSymBat.batchSchdulList.searchCondition=\uac80\uc0c9\uc870\uac74\uad6c\ubd84 +comSymBat.batchSchdulList.searchKeyword=\uac80\uc0c9\ud0a4\uc6cc\ub4dc + + +comSymBat.batchSchdulDetail.title=\ubc30\uce58\uc2a4\ucf00\uc904 \uc0c1\uc138\uc870\ud68c +comSymBat.batchSchdulDetail.pageTop.title=\ubc30\uce58\uc2a4\ucf00\uc904 \uc0c1\uc138\uc870\ud68c +comSymBat.batchSchdulDetail.batchSchdulId=\ubc30\uce58\uc2a4\ucf00\uc904ID +comSymBat.batchSchdulDetail.batchOpertId=\ubc30\uce58\uc791\uc5c5ID +comSymBat.batchSchdulDetail.batchOpertNm=\ubc30\uce58\uc791\uc5c5\uba85 +comSymBat.batchSchdulDetail.executCycleNm=\uc2e4\ud589\uc8fc\uae30 + + +comSymBat.batchSchdulUpdt.title=\ubc30\uce58\uc2a4\ucf00\uc904 \uc218\uc815 +comSymBat.batchSchdulUpdt.pageTop.title=\ubc30\uce58\uc2a4\ucf00\uc904 \uc218\uc815 +comSymBat.batchSchdulUpdt.validate.executSchdulDfkSes.length=\uc2e4\ud589\uc8fc\uae30\ub97c \ub9e4\uc8fc\ub85c \uc120\ud0dd\ud588\uc744 \ub54c \uc694\uc77c\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymBat.batchSchdulUpdt.validate.cycleMonth.executSchdulDay=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\uc6d4\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymBat.batchSchdulUpdt.validate.cycleYear.executSchdulMonth=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\ub144\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc6d4)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymBat.batchSchdulUpdt.validate.cycleYear.executSchdulDay=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\ub144\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymBat.batchSchdulUpdt.validate.checkDate=\uc2e4\ud589\uc2a4\ucf00\uc904 (\uc6d4/\uc77c)\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymBat.batchSchdulUpdt.validate.executSchdulDeNm=\uc2e4\ud589\uc8fc\uae30\uac00 \ud55c\ubc88\ub9cc\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c\uc790)\ub294 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymBat.batchSchdulUpdt.validate.executSchdulDeNm.isDate=\uc2e4\ud589\uc2a4\ucf00\uc904 (\uc77c\uc790)\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymBat.batchSchdulUpdt.batchSchdulId=\ubc30\uce58\uc2a4\ucf00\uc904ID +comSymBat.batchSchdulUpdt.batchOpertId=\ubc30\uce58\uc791\uc5c5ID +comSymBat.batchSchdulUpdt.batchOpertNm=\ubc30\uce58\uc791\uc5c5\uba85 +comSymBat.batchSchdulUpdt.executCycleNm=\uc2e4\ud589\uc8fc\uae30 +comSymBat.batchSchdulUpdt.executSchdulDeNm=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c\uc790) +comSymBat.batchSchdulUpdt.executSchdulMonth=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc6d4) +comSymBat.batchSchdulUpdt.executSchdulDay=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c) +comSymBat.batchSchdulUpdt.executSchdulHour=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc2dc) +comSymBat.batchSchdulUpdt.executSchdulMnt=\uc2e4\ud589\uc2a4\ucf00\uc904(\ubd84) +comSymBat.batchSchdulUpdt.executSchdulSecnd=\uc2e4\ud589\uc2a4\ucf00\uc904(\ucd08) +comSymBat.batchSchdulUpdt.spnMonth=\uc6d4 +comSymBat.batchSchdulUpdt.spnDay=\uc77c +comSymBat.batchSchdulUpdt.spnHH=\uc2dc +comSymBat.batchSchdulUpdt.spnMM=\ubd84 +comSymBat.batchSchdulUpdt.spnSS=\ucd08 + + +comSymBat.batchSchdulRegist.title=\ubc30\uce58\uc2a4\ucf00\uc904 \ub4f1\ub85d +comSymBat.batchSchdulRegist.pageTop.title=\ubc30\uce58\uc2a4\ucf00\uc904 \ub4f1\ub85d +comSymBat.batchSchdulRegist.validate.executSchdulDfkSes.length=\uc2e4\ud589\uc8fc\uae30\ub97c \ub9e4\uc8fc\ub85c \uc120\ud0dd\ud588\uc744 \ub54c \uc694\uc77c\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymBat.batchSchdulRegist.validate.cycleMonth.executSchdulDay=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\uc6d4\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymBat.batchSchdulRegist.validate.cycleYear.executSchdulMonth=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\ub144\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc6d4)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymBat.batchSchdulRegist.validate.cycleYear.executSchdulDay=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\ub144\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymBat.batchSchdulRegist.validate.checkDate=\uc2e4\ud589\uc2a4\ucf00\uc904 (\uc6d4/\uc77c)\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymBat.batchSchdulRegist.validate.executSchdulDeNm=\uc2e4\ud589\uc8fc\uae30\uac00 \ud55c\ubc88\ub9cc\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c\uc790)\ub294 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymBat.batchSchdulRegist.validate.executSchdulDeNm.isDate=\uc2e4\ud589\uc2a4\ucf00\uc904 (\uc77c\uc790)\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymBat.batchSchdulRegist.batchSchdulId=\ubc30\uce58\uc2a4\ucf00\uc904ID +comSymBat.batchSchdulRegist.batchOpertId=\ubc30\uce58\uc791\uc5c5ID +comSymBat.batchSchdulRegist.batchOpertNm=\ubc30\uce58\uc791\uc5c5\uba85 +comSymBat.batchSchdulRegist.executCycleNm=\uc2e4\ud589\uc8fc\uae30 +comSymBat.batchSchdulRegist.executSchdulDeNm=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c\uc790) +comSymBat.batchSchdulRegist.executSchdulMonth=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc6d4) +comSymBat.batchSchdulRegist.executSchdulDay=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c) +comSymBat.batchSchdulRegist.executSchdulHour=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc2dc) +comSymBat.batchSchdulRegist.executSchdulMnt=\uc2e4\ud589\uc2a4\ucf00\uc904(\ubd84) +comSymBat.batchSchdulRegist.executSchdulSecnd=\uc2e4\ud589\uc2a4\ucf00\uc904(\ucd08) +comSymBat.batchSchdulRegist.spnMonth=\uc6d4 +comSymBat.batchSchdulRegist.spnDay=\uc77c +comSymBat.batchSchdulRegist.spnHH=\uc2dc +comSymBat.batchSchdulRegist.spnMM=\ubd84 +comSymBat.batchSchdulRegist.spnSS=\ucd08 + + +comSymBat.batchOpertListPopup.title=\ubc30\uce58\uc791\uc5c5 \uc870\ud68c +comSymBat.batchOpertListPopup.pageTop.title=\ubc30\uce58\uc791\uc5c5 \uc870\ud68c +comSymBat.batchOpertListPopup.validate.searchKeyword=\uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud558\uc138\uc694. +comSymBat.batchOpertListPopup.searchCondition=\uac80\uc0c9\uc870\uac74\uad6c\ubd84 +comSymBat.batchOpertListPopup.batchOpertId=\ubc30\uce58\uc791\uc5c5ID +comSymBat.batchOpertListPopup.batchOpertNm=\ubc30\uce58\uc791\uc5c5\uba85 +comSymBat.batchOpertListPopup.batchProgrm=\ubc30\uce58\ud504\ub85c\uadf8\ub7a8 +comSymBat.batchOpertListPopup.paramtr=\ud30c\ub77c\ubbf8\ud130 + + + + + diff --git a/src/main/resources/egovframework/message/com/sym/cal/message_en.properties b/src/main/resources/egovframework/message/com/sym/cal/message_en.properties new file mode 100644 index 00000000..78f75da9 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/cal/message_en.properties @@ -0,0 +1,22 @@ +#Rest day messages# +sym.cal.restDay = Holiday Date +sym.cal.restName = Holiday Name +sym.cal.restDetail = Holiday Detail +sym.cal.restCategory = Holiday Category + + +#Rest day messages# +sym.cal.title = Holiday List +sym.cal.select = --Select-- +sym.cal.restDay = Holiday Date +sym.cal.restName = Holiday Name +sym.cal.restDetail = Holiday Detail +sym.cal.restCategory = Holiday Category +sym.cal.column1 = No +sym.cal.column2 = Holiday Date +sym.cal.column3 = Holiday Name +sym.cal.column4 = Holiday Category + +sym.cal.detail.title = Holiday Detail Inquiry +sym.cal.modify.title = Holiday Modify +sym.cal.regist.title = Holiday Create \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/cal/message_ko.properties b/src/main/resources/egovframework/message/com/sym/cal/message_ko.properties new file mode 100644 index 00000000..62186857 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/cal/message_ko.properties @@ -0,0 +1,15 @@ +#Rest day messages# +sym.cal.title = \ud734\uc77c \ubaa9\ub85d +sym.cal.select = --\uc120\ud0dd\ud558\uc138\uc694-- +sym.cal.restDay = \ud734\uc77c\uc77c\uc790 +sym.cal.restName = \ud734\uc77c\uba85 +sym.cal.restDetail = \ud734\uc77c\uc124\uba85 +sym.cal.restCategory = \ud734\uc77c\uad6c\ubd84 +sym.cal.column1 = \uc21c\ubc88 +sym.cal.column2 = \ud734\uc77c\uc77c\uc790 +sym.cal.column3 = \ud734\uc77c\uba85 +sym.cal.column4 = \ud734\uc77c\uad6c\ubd84 + +sym.cal.detail.title = \ud734\uc77c \uc0c1\uc138\uc870\ud68c +sym.cal.modify.title = \ud734\uc77c \uc218\uc815 +sym.cal.regist.title = \ud734\uc77c \ub4f1\ub85d \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/ccm/adc/message_en.properties b/src/main/resources/egovframework/message/com/sym/ccm/adc/message_en.properties new file mode 100644 index 00000000..a2825f0e --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/adc/message_en.properties @@ -0,0 +1,16 @@ +#Administrative bureau# +comSymCcmAdc.ccmAdministCode.title = Administrative bureau + +comSymCcmAdc.ccmAdministCode.cls = Classification +comSymCcmAdc.ccmAdministCode.administCode = Administrative district Code +comSymCcmAdc.ccmAdministCode.administName = Administrative district +comSymCcmAdc.ccmAdministCode.useAt = UseYN +comSymCcmAdc.ccmAdministCode.use = Use +comSymCcmAdc.ccmAdministCode.notUse = NotUse +comSymCcmAdc.ccmAdministCode.lawAddr = Address +comSymCcmAdc.ccmAdministCode.admAddr = Administrative bureau +comSymCcmAdc.ccmAdministCode.lawAddrName = Full Address +comSymCcmAdc.ccmAdministCode.admAddrName = Administrative bureau adress +comSymCcmAdc.ccmAdministCode.createDate = Created Datetime +comSymCcmAdc.ccmAdministCode.deleteDate = Deleted Datetime +comSymCcmAdc.ccmAdministCode.upperCode = Upper Code \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/ccm/adc/message_ko.properties b/src/main/resources/egovframework/message/com/sym/ccm/adc/message_ko.properties new file mode 100644 index 00000000..6cfb292f --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/adc/message_ko.properties @@ -0,0 +1,18 @@ +#\ud589\uc815\ucf54\ub4dc# +comSymCcmAdc.ccmAdministCode.title = \ud589\uc815\ucf54\ub4dc + +comSymCcmAdc.ccmAdministCode.cls = \ud589\uc815\uad6c\uc5ed\uad6c\ubd84 +comSymCcmAdc.ccmAdministCode.administCode = \ud589\uc815\uad6c\uc5ed\ucf54\ub4dc +comSymCcmAdc.ccmAdministCode.administName = \ud589\uc815\uad6c\uc5ed\uba85 +comSymCcmAdc.ccmAdministCode.useAt = \uc0ac\uc6a9\uc5ec\ubd80 +comSymCcmAdc.ccmAdministCode.use = \uc0ac\uc6a9 +comSymCcmAdc.ccmAdministCode.notUse = \ubbf8\uc0ac\uc6a9 +comSymCcmAdc.ccmAdministCode.lawAddr = \ubc95\uc815\ub3d9 +comSymCcmAdc.ccmAdministCode.admAddr = \ud589\uc815\ub3d9 +comSymCcmAdc.ccmAdministCode.lawAddrName = \ubc95\uc815\ub3d9 \uc9c0\uc5ed\uba85 +comSymCcmAdc.ccmAdministCode.admAddrName = \ud589\uc815\ub3d9 \uc9c0\uc5ed\uba85 +comSymCcmAdc.ccmAdministCode.createDate = \uc0dd\uc131\uc77c\uc790 +comSymCcmAdc.ccmAdministCode.deleteDate = \ud3d0\uae30\uc77c\uc790 +comSymCcmAdc.ccmAdministCode.upperCode = \uc0c1\uc704\ud589\uc815\uad6c\uc5ed\ucf54\ub4dc + +comSymCcmAdc.seachWrd.searchAddress = \uc9c0\uc5ed\uba85\uac80\uc0c9 diff --git a/src/main/resources/egovframework/message/com/sym/ccm/cca/message_en.properties b/src/main/resources/egovframework/message/com/sym/ccm/cca/message_en.properties new file mode 100644 index 00000000..88bb56f1 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/cca/message_en.properties @@ -0,0 +1,11 @@ +#\uacf5\ud1b5\ucf54\ub4dc# +comSymCcmCca.cmmnCodeVO.title = Common Code + +comSymCcmCca.cmmnCodeVO.clCode = Classification Code +comSymCcmCca.cmmnCodeVO.clCodeNm = Classification Code Name +comSymCcmCca.cmmnCodeVO.codeId = Code ID +comSymCcmCca.cmmnCodeVO.codeIdNm = Code ID Name +comSymCcmCca.cmmnCodeVO.codeIdDc = Code ID Description +comSymCcmCca.cmmnCodeVO.useAt = Available Options + +comSymCcmCca.validate.codeCheck = The already registered common code exists. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/ccm/cca/message_ko.properties b/src/main/resources/egovframework/message/com/sym/ccm/cca/message_ko.properties new file mode 100644 index 00000000..15d05735 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/cca/message_ko.properties @@ -0,0 +1,11 @@ +#\uacf5\ud1b5\ucf54\ub4dc# +comSymCcmCca.cmmnCodeVO.title = \uacf5\ud1b5\ucf54\ub4dc + +comSymCcmCca.cmmnCodeVO.clCode = \ubd84\ub958\ucf54\ub4dc +comSymCcmCca.cmmnCodeVO.clCodeNm = \ubd84\ub958\ucf54\ub4dc\uba85 +comSymCcmCca.cmmnCodeVO.codeId = \ucf54\ub4dcID +comSymCcmCca.cmmnCodeVO.codeIdNm = \ucf54\ub4dcID\uba85 +comSymCcmCca.cmmnCodeVO.codeIdDc = \ucf54\ub4dcID\uc124\uba85 +comSymCcmCca.cmmnCodeVO.useAt = \uc0ac\uc6a9\uc5ec\ubd80 + +comSymCcmCca.validate.codeCheck = \uc774\ubbf8 \ub4f1\ub85d\ub41c \uacf5\ud1b5\ucf54\ub4dc\uac00 \uc874\uc7ac\ud569\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/ccm/ccc/message_en.properties b/src/main/resources/egovframework/message/com/sym/ccm/ccc/message_en.properties new file mode 100644 index 00000000..c77a823c --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/ccc/message_en.properties @@ -0,0 +1,9 @@ +#\uacf5\ud1b5\ucf54\ub4dc \ubd84\ub958# +comSymCcmCcc.cmmnClCodeVO.title = Common Classification Code + +comSymCcmCcc.cmmnClCodeVO.clCode = Classification Code +comSymCcmCcc.cmmnClCodeVO.clCodeNm = Classification Code Name +comSymCcmCcc.cmmnClCodeVO.clCodeDc = Classification Code Description +comSymCcmCcc.cmmnClCodeVO.useAt = Available Options + +comSymCcmCcc.validate.codeCheck = The already registered Classification code exists. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/ccm/ccc/message_ko.properties b/src/main/resources/egovframework/message/com/sym/ccm/ccc/message_ko.properties new file mode 100644 index 00000000..91871ac2 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/ccc/message_ko.properties @@ -0,0 +1,9 @@ +#\uacf5\ud1b5\ucf54\ub4dc \ubd84\ub958# +comSymCcmCcc.cmmnClCodeVO.title = \uacf5\ud1b5\ubd84\ub958\ucf54\ub4dc + +comSymCcmCcc.cmmnClCodeVO.clCode = \ubd84\ub958\ucf54\ub4dc +comSymCcmCcc.cmmnClCodeVO.clCodeNm = \ubd84\ub958\ucf54\ub4dc\uba85 +comSymCcmCcc.cmmnClCodeVO.clCodeDc = \ubd84\ub958\ucf54\ub4dc \uc124\uba85 +comSymCcmCcc.cmmnClCodeVO.useAt = \uc0ac\uc6a9\uc5ec\ubd80 + +comSymCcmCcc.validate.codeCheck = \uc774\ubbf8 \ub4f1\ub85d\ub41c \uacf5\ud1b5\ubd84\ub958\ucf54\ub4dc\uac00 \uc874\uc7ac\ud569\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/ccm/cde/message_en.properties b/src/main/resources/egovframework/message/com/sym/ccm/cde/message_en.properties new file mode 100644 index 00000000..92b383c6 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/cde/message_en.properties @@ -0,0 +1,11 @@ +#\uacf5\ud1b5\uc0c1\uc138\ucf54\ub4dc# +comSymCcmCde.cmmnDetailCodeVO.title = Common Detail Code + +comSymCcmCde.cmmnDetailCodeVO.codeId = Code ID +comSymCcmCde.cmmnDetailCodeVO.codeIdNm = Code ID Name +comSymCcmCde.cmmnDetailCodeVO.code = Detail Code +comSymCcmCde.cmmnDetailCodeVO.codeNm = Detail Code Name +comSymCcmCde.cmmnDetailCodeVO.codeDc = Detail Code Description +comSymCcmCde.cmmnDetailCodeVO.useAt = Available Options + +comSymCcmCde.validate.codeCheck = The already registered detail code exists. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/ccm/cde/message_ko.properties b/src/main/resources/egovframework/message/com/sym/ccm/cde/message_ko.properties new file mode 100644 index 00000000..eab83cb6 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/cde/message_ko.properties @@ -0,0 +1,11 @@ +#\uacf5\ud1b5\uc0c1\uc138\ucf54\ub4dc# +comSymCcmCde.cmmnDetailCodeVO.title = \uacf5\ud1b5\uc0c1\uc138\ucf54\ub4dc + +comSymCcmCde.cmmnDetailCodeVO.codeId = \ucf54\ub4dcID +comSymCcmCde.cmmnDetailCodeVO.codeIdNm = \ucf54\ub4dcID\uba85 +comSymCcmCde.cmmnDetailCodeVO.code = \uc0c1\uc138\ucf54\ub4dc +comSymCcmCde.cmmnDetailCodeVO.codeNm = \uc0c1\uc138\ucf54\ub4dc\uba85 +comSymCcmCde.cmmnDetailCodeVO.codeDc = \uc0c1\uc138\ucf54\ub4dc\uc124\uba85 +comSymCcmCde.cmmnDetailCodeVO.useAt = \uc0ac\uc6a9\uc5ec\ubd80 + +comSymCcmCde.validate.codeCheck = \uc774\ubbf8 \ub4f1\ub85d\ub41c \uc0c1\uc138\ucf54\ub4dc\uac00 \uc874\uc7ac\ud569\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/ccm/icr/message_en.properties b/src/main/resources/egovframework/message/com/sym/ccm/icr/message_en.properties new file mode 100644 index 00000000..fcce009b --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/icr/message_en.properties @@ -0,0 +1,32 @@ +#\uae30\uad00\ucf54\ub4dc\uc218\uc2e0 \ubaa9\ub85d +comSymCcmIcr.insttCodeRecptn.title = List of Institution Received + +comSymCcmIcr.insttCodeRecptn.select = Please Select +comSymCcmIcr.insttCodeRecptn.orgNm = Institution + +comSymCcmIcr.insttCodeRecptn.results.col1 = No +comSymCcmIcr.insttCodeRecptn.results.col2 = Code +comSymCcmIcr.insttCodeRecptn.results.col3 = Instatution + +comSymCcmIcr.insttCodeRecptnDetail.title = Institution Details +comSymCcmIcr.insttCodeRecptnDetail.insttCode = Institution Code +comSymCcmIcr.insttCodeRecptnDetail.allInsttNm = Institution Full Name +comSymCcmIcr.insttCodeRecptnDetail.changede = Changed Date +comSymCcmIcr.insttCodeRecptnDetail.changeTime = Changed Time +comSymCcmIcr.insttCodeRecptnDetail.ablEnnc = Abolition Status +comSymCcmIcr.insttCodeRecptnDetail.ablEnnc0 = Use +comSymCcmIcr.insttCodeRecptnDetail.ablEnnc1 = Abolished + +comSymCcmIcr.insttCodeRecptnDetail.subTitle = Institution Received History +comSymCcmIcr.insttCodeRecptnDetail.results.col1 = No +comSymCcmIcr.insttCodeRecptnDetail.results.col2 = Occurred Date +comSymCcmIcr.insttCodeRecptnDetail.results.col3 = Lowest Institution Name +comSymCcmIcr.insttCodeRecptnDetail.results.col4 = Change Classification +comSymCcmIcr.insttCodeRecptnDetail.results.col5 = Processing Classification +comSymCcmIcr.insttCodeRecptnDetail.results.col6 = Created Date +comSymCcmIcr.insttCodeRecptnDetail.results.col7 = Changed Date +comSymCcmIcr.insttCodeRecptnDetail.results.col8 = Abolition Status +comSymCcmIcr.insttCodeRecptnDetail.results.col9 = Abolished Date + +comSymCcmIcr.insttCodeRecptnDetail.results.changeSeCode = Change Classification +comSymCcmIcr.insttCodeRecptnDetail.results.processSe = Processing Classification \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/ccm/icr/message_ko.properties b/src/main/resources/egovframework/message/com/sym/ccm/icr/message_ko.properties new file mode 100644 index 00000000..0244a89a --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/icr/message_ko.properties @@ -0,0 +1,32 @@ +#\uae30\uad00\ucf54\ub4dc\uc218\uc2e0 \ubaa9\ub85d +comSymCcmIcr.insttCodeRecptn.title = \uae30\uad00\ucf54\ub4dc\uc218\uc2e0 \ubaa9\ub85d + +comSymCcmIcr.insttCodeRecptn.select = \uc120\ud0dd\ud558\uc138\uc694 +comSymCcmIcr.insttCodeRecptn.orgNm = \uae30\uad00\uba85 + +comSymCcmIcr.insttCodeRecptn.results.col1 = \uc21c\ubc88 +comSymCcmIcr.insttCodeRecptn.results.col2 = \uae30\uad00\ucf54\ub4dc +comSymCcmIcr.insttCodeRecptn.results.col3 = \uae30\uad00\uba85 + +comSymCcmIcr.insttCodeRecptnDetail.title = \uae30\uad00\ucf54\ub4dc\uc218\uc2e0 \uc0c1\uc138\uc870\ud68c +comSymCcmIcr.insttCodeRecptnDetail.insttCode = \uae30\uad00\ucf54\ub4dc +comSymCcmIcr.insttCodeRecptnDetail.allInsttNm = \uc804\uccb4\uae30\uad00\uba85 +comSymCcmIcr.insttCodeRecptnDetail.changede = \ubcc0\uacbd\uc77c\uc790 +comSymCcmIcr.insttCodeRecptnDetail.changeTime = \ubcc0\uacbd\uc2dc\uac04 +comSymCcmIcr.insttCodeRecptnDetail.ablEnnc = \ud3d0\uc9c0\uc720\ubb34 +comSymCcmIcr.insttCodeRecptnDetail.ablEnnc0 = \uc0ac\uc6a9 +comSymCcmIcr.insttCodeRecptnDetail.ablEnnc1 = \ub9d0\uc18c + +comSymCcmIcr.insttCodeRecptnDetail.subTitle = \uae30\uad00\ucf54\ub4dc\uc218\uc2e0 \uc774\ub825 +comSymCcmIcr.insttCodeRecptnDetail.results.col1 = \uc21c\ubc88 +comSymCcmIcr.insttCodeRecptnDetail.results.col2 = \ubc1c\uc0dd\uc77c\uc790 +comSymCcmIcr.insttCodeRecptnDetail.results.col3 = \ucd5c\ud558\uc704\uae30\uad00\uba85 +comSymCcmIcr.insttCodeRecptnDetail.results.col4 = \ubcc0\uacbd\uad6c\ubd84 +comSymCcmIcr.insttCodeRecptnDetail.results.col5 = \ucc98\ub9ac\uad6c\ubd84 +comSymCcmIcr.insttCodeRecptnDetail.results.col6 = \uc0dd\uc131\uc77c\uc790 +comSymCcmIcr.insttCodeRecptnDetail.results.col7 = \ubcc0\uacbd\uc77c\uc790 +comSymCcmIcr.insttCodeRecptnDetail.results.col8 = \ud3d0\uc9c0\uc720\ubb34 +comSymCcmIcr.insttCodeRecptnDetail.results.col9 = \ud3d0\uc9c0\uc77c\uc790 + +comSymCcmIcr.insttCodeRecptnDetail.results.changeSeCode = \ubcc0\uacbd\uad6c\ubd84 +comSymCcmIcr.insttCodeRecptnDetail.results.processSe = \ucc98\ub9ac\uad6c\ubd84 diff --git a/src/main/resources/egovframework/message/com/sym/ccm/zip/message_en.properties b/src/main/resources/egovframework/message/com/sym/ccm/zip/message_en.properties new file mode 100644 index 00000000..a0305649 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/zip/message_en.properties @@ -0,0 +1,45 @@ +# Postal code management # + +comSymCcmZip.zipVO.title = Zip code + +comSymCcmZip.zipVO.zip = Postal code +comSymCcmZip.zipVO.rdmnCode = Road name code +comSymCcmZip.zipVO.ctprvnNm = attempt name +comSymCcmZip.zipVO.signguNm = city or district name +comSymCcmZip.zipVO.emdNm = Name of the village +comSymCcmZip.zipVO.liBuldNm = Lee building name +comSymCcmZip.zipVO.lnbrDongHo = Address Dongho +comSymCcmZip.zipVO.rdmn = Road name +comSymCcmZip.zipVO.bdnbrMnnm = building number main number +comSymCcmZip.zipVO.bdnbrSlno = Building number subscription +comSymCcmZip.zipVO.buldNm = Building name +comSymCcmZip.zipVO.detailBuldNm = Detailed building name +comSymCcmZip.zipVO.zipCreate = Zip code General address registration +comSymCcmZip.zipVO.rdmnCreate = Zip code Road name Address registration +comSymCcmZip.zipVO.zipUpdate = Edit postal code generic address +comSymCcmZip.zipVO.rdmnUpdate = Edit postal code street name address +comSymCcmZip.zipVO.rdmnSearch = Address Search +comSymCcmZip.zipVO.SearchAddr = Address +comSymCcmZip.zipVO.SearchAddrr = Regular address +comSymCcmZip.zipVO.SearchRdmn = street name address +comSymCcmZip.zipVO.Snum = Number +comSymCcmZip.zipVO.excelFile = Excel file +comSymCcmZip.zipVO.fileSelect = Select File + +# Message # +comSymCcmZip.zipVO.zipMessage = Please exclude '-' in the postal code. +comSymCcmZip.zipVO.summaryList = A list of zip code lists that print zip codes and addresses. +comSymCcmZip.zipVO.summaryInsert = This is a postal code registration table for entering zip codes, trial names, city / town / village names, +comSymCcmZip.zipVO.summaryModify = This is a zip code modification table that corrects the name of the building and address of the house. +comSymCcmZip.zipVO.summaryDetail = This is a detailed lookup table of postal codes with zip codes, trial names, city and district names, town and village names, residential buildings, and street numbers. +comSymCcmZip.zipVO.summaryExcel = Zip Code This is a registration table where you can attach an Excel file. + +# alt # +comSymCcmZip.zipVO.altImg = Image of title icon +comSymCcmZip.zipVO.altPilsu = Show required + +# EgovCcmZipSearchList.jsp # +comSymCcmZip.ccmZipSearchList.title = Find Postal Code +comSymCcmZip.ccmZipSearchList.address = Address +comSymCcmZip.ccmZipSearchList.stNameAddress = Street name address +comSymCcmZip.ccmZipSearchList.inputText = Input \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/ccm/zip/message_ko.properties b/src/main/resources/egovframework/message/com/sym/ccm/zip/message_ko.properties new file mode 100644 index 00000000..3c8a65f1 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/ccm/zip/message_ko.properties @@ -0,0 +1,45 @@ +#\uc6b0\ud3b8\ubc88\ud638 \uad00\ub9ac# + +comSymCcmZip.zipVO.title = \uc6b0\ud3b8\ubc88\ud638 + +comSymCcmZip.zipVO.zip = \uc6b0\ud3b8\ubc88\ud638 +comSymCcmZip.zipVO.rdmnCode = \ub3c4\ub85c\uba85\ucf54\ub4dc +comSymCcmZip.zipVO.ctprvnNm = \uc2dc\ub3c4\uba85 +comSymCcmZip.zipVO.signguNm = \uc2dc\uad70\uad6c\uba85 +comSymCcmZip.zipVO.emdNm = \uc74d\uba74\ub3d9\uba85 +comSymCcmZip.zipVO.liBuldNm = \ub9ac\uac74\ubb3c\uba85 +comSymCcmZip.zipVO.lnbrDongHo = \ubc88\uc9c0\ub3d9\ud638 +comSymCcmZip.zipVO.rdmn = \ub3c4\ub85c\uba85 +comSymCcmZip.zipVO.bdnbrMnnm = \uac74\ubb3c\ubc88\ud638\ubcf8\ubc88 +comSymCcmZip.zipVO.bdnbrSlno = \uac74\ubb3c\ubc88\ud638\ubd80\ubc88 +comSymCcmZip.zipVO.buldNm = \uac74\ubb3c\uba85 +comSymCcmZip.zipVO.detailBuldNm = \uc0c1\uc138\uac74\ubb3c\uba85 +comSymCcmZip.zipVO.zipCreate = \uc6b0\ud3b8\ubc88\ud638 \uc77c\ubc18\uc8fc\uc18c \ub4f1\ub85d +comSymCcmZip.zipVO.rdmnCreate = \uc6b0\ud3b8\ubc88\ud638 \ub3c4\ub85c\uba85\uc8fc\uc18c \ub4f1\ub85d +comSymCcmZip.zipVO.zipUpdate = \uc6b0\ud3b8\ubc88\ud638 \uc77c\ubc18\uc8fc\uc18c \uc218\uc815 +comSymCcmZip.zipVO.rdmnUpdate = \uc6b0\ud3b8\ubc88\ud638 \ub3c4\ub85c\uba85\uc8fc\uc18c \uc218\uc815 +comSymCcmZip.zipVO.rdmnSearch = \uc8fc\uc18c\uac80\uc0c9 +comSymCcmZip.zipVO.SearchAddr = \uc8fc\uc18c +comSymCcmZip.zipVO.SearchAddrr = \uc77c\ubc18\uc8fc\uc18c +comSymCcmZip.zipVO.SearchRdmn = \ub3c4\ub85c\uba85\uc8fc\uc18c +comSymCcmZip.zipVO.Snum = \uc21c\ubc88 +comSymCcmZip.zipVO.excelFile = \uc5d1\uc140\ud30c\uc77c +comSymCcmZip.zipVO.fileSelect = \ud30c\uc77c\uc120\ud0dd + +#Message# +comSymCcmZip.zipVO.zipMessage = \uc6b0\ud3b8\ubc88\ud638\uc758 '-'\ub97c \uc81c\uc678\ud558\uace0 \uc785\ub825\ud558\uc2dc\uc624. +comSymCcmZip.zipVO.summaryList = \uc6b0\ud3b8\ubc88\ud638\uc640 \uc8fc\uc18c\ub97c \ucd9c\ub825\ud558\ub294 \uc6b0\ud3b8\ubc88\ud638 \ubaa9\ub85d \ud14c\uc774\ube14\uc785\ub2c8\ub2e4. +comSymCcmZip.zipVO.summaryInsert = \uc6b0\ud3b8\ubc88\ud638, \uc2dc\ub3c4\uba85, \uc2dc\uad70\uad6c\uba85, \uc74d\uba74\ub3d9\uba85, \ub9ac\uac74\ubb3c\uba85, \ubc88\uc9c0\ub3d9\ud638\ub97c \uc785\ub825\ud558\ub294 \uc6b0\ud3b8\ubc88\ud638 \ub4f1\ub85d \ud14c\uc774\ube14\uc785\ub2c8\ub2e4. +comSymCcmZip.zipVO.summaryModify = \ub9ac\uac74\ubb3c\uba85\uacfc \ubc88\uc9c0\ub3d9\ud638\ub97c \uc218\uc815\ud558\ub294 \uc6b0\ud3b8\ubc88\ud638 \uc218\uc815 \ud14c\uc774\ube14\uc785\ub2c8\ub2e4. +comSymCcmZip.zipVO.summaryDetail = \uc6b0\ud3b8\ubc88\ud638, \uc2dc\ub3c4\uba85, \uc2dc\uad70\uad6c\uba85, \uc74d\uba74\ub3d9\uba85, \ub9ac\uac74\ubb3c\uba85, \ubc88\uc9c0\ub3d9\ud638\ub97c \uac00\uc9c0\uace0 \uc788\ub294 \uc6b0\ud3b8\ubc88\ud638 \uc0c1\uc138\uc870\ud68c \ud14c\uc774\ube14\uc785\ub2c8\ub2e4. +comSymCcmZip.zipVO.summaryExcel = \uc6b0\ud3b8\ubc88\ud638 \uc5d1\uc140\ud30c\uc77c\uc744 \ucca8\ubd80\ud560 \uc218 \uc788\ub294 \ub4f1\ub85d \ud14c\uc774\ube14\uc785\ub2c8\ub2e4. + +#alt# +comSymCcmZip.zipVO.altImg = \uc81c\ubaa9\uc544\uc774\ucf58\uc774\ubbf8\uc9c0 +comSymCcmZip.zipVO.altPilsu = \ud544\uc218\uc785\ub825\ud45c\uc2dc + +#EgovCcmZipSearchList.jsp# +comSymCcmZip.ccmZipSearchList.title=\uc6b0\ud3b8\ubc88\ud638 \ucc3e\uae30 +comSymCcmZip.ccmZipSearchList.address=\uc8fc\uc18c +comSymCcmZip.ccmZipSearchList.stNameAddress=\ub3c4\ub85c\uba85\uc8fc\uc18c +comSymCcmZip.ccmZipSearchList.inputText=\uc785\ub825\ucc3d \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/log/clg/message_en.properties b/src/main/resources/egovframework/message/com/sym/log/clg/message_en.properties new file mode 100644 index 00000000..def77587 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/clg/message_en.properties @@ -0,0 +1,13 @@ +#Access Log Management# +comSymLogClg.loginLog.title = Access Log + +comSymLogClg.loginLog.logId = Log ID +comSymLogClg.loginLog.occrrncDe = Occurence Day +comSymLogClg.seachWrd.searchBgnDe = Search Begin Date +comSymLogClg.seachWrd.searchEndDe = Search End Date +comSymLogClg.loginLog.loginMthd = Log Type +comSymLogClg.loginLog.loginNm = User Name +comSymLogClg.loginLog.loginIp = Connection IP +comSymLogClg.loginLog.detail = Detail + +comSymLogClg.validate.dateCheck = The start date of the search condition is later than the end date. Please check the search condition date! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/log/clg/message_ko.properties b/src/main/resources/egovframework/message/com/sym/log/clg/message_ko.properties new file mode 100644 index 00000000..1cc4672b --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/clg/message_ko.properties @@ -0,0 +1,13 @@ +#\uc811\uc18d\ub85c\uadf8\uad00\ub9ac# +comSymLogClg.loginLog.title = \uc811\uc18d\ub85c\uadf8 + +comSymLogClg.loginLog.logId = \ub85c\uadf8ID +comSymLogClg.loginLog.occrrncDe = \ubc1c\uc0dd\uc77c\uc790 +comSymLogClg.seachWrd.searchBgnDe = \uac80\uc0c9\uc2dc\uc791\uc77c +comSymLogClg.seachWrd.searchEndDe = \uac80\uc0c9\uc885\ub8cc\uc77c +comSymLogClg.loginLog.loginMthd = \uc811\uc18d\ubc29\uc2dd +comSymLogClg.loginLog.loginNm = \uc0ac\uc6a9\uc790\uba85 +comSymLogClg.loginLog.loginIp = \uc811\uc18dIP +comSymLogClg.loginLog.detail = \uc0c1\uc138\ubcf4\uae30 + +comSymLogClg.validate.dateCheck = \uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \uac80\uc0c9\uc870\uac74 \ub0a0\uc9dc\ub97c \ud655\uc778\ud558\uc138\uc694! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/log/lgm/message_en.properties b/src/main/resources/egovframework/message/com/sym/log/lgm/message_en.properties new file mode 100644 index 00000000..4b1ecba2 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/lgm/message_en.properties @@ -0,0 +1,16 @@ +#Log Management# +comSymLogLgm.sysLog.title = Log + +comSymLogLgm.sysLog.reqId = Request ID +comSymLogLgm.seachWrd.searchBgnDe = Search Begin Date +comSymLogLgm.seachWrd.searchEndDe = Search End Date +comSymLogLgm.sysLog.occrrncDe = Occurence Day +comSymLogLgm.sysLog.serviceNm = Service Name +comSymLogLgm.sysLog.methodNm = Method Name +comSymLogLgm.sysLog.processSeCode = Processing Classification +comSymLogLgm.sysLog.processTime = Processing Time +comSymLogLgm.sysLog.rqesterId = Requester +comSymLogLgm.sysLog.rqesterIp = Requester IP +comSymLogLgm.sysLog.detail = Detail + +comSymLogLgm.validate.dateCheck = The start date of the search condition is later than the end date. Please check the search condition date! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/log/lgm/message_ko.properties b/src/main/resources/egovframework/message/com/sym/log/lgm/message_ko.properties new file mode 100644 index 00000000..992ac596 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/lgm/message_ko.properties @@ -0,0 +1,16 @@ +#\ub85c\uadf8\uad00\ub9ac# +comSymLogLgm.sysLog.title = \ub85c\uadf8 + +comSymLogLgm.sysLog.reqId = \uc694\uccadID +comSymLogLgm.seachWrd.searchBgnDe = \uac80\uc0c9\uc2dc\uc791\uc77c +comSymLogLgm.seachWrd.searchEndDe = \uac80\uc0c9\uc885\ub8cc\uc77c +comSymLogLgm.sysLog.occrrncDe = \ubc1c\uc0dd\uc77c\uc790 +comSymLogLgm.sysLog.serviceNm = \uc11c\ube44\uc2a4\uba85 +comSymLogLgm.sysLog.methodNm = \uba54\uc18c\ub4dc\uba85 +comSymLogLgm.sysLog.processSeCode = \ucc98\ub9ac\uad6c\ubd84 +comSymLogLgm.sysLog.processTime = \ucc98\ub9ac\uc2dc\uac04 +comSymLogLgm.sysLog.rqesterId = \uc694\uccad\uc790 +comSymLogLgm.sysLog.rqesterIp = \uc694\uccad\uc790IP +comSymLogLgm.sysLog.detail = \uc0c1\uc138\ubcf4\uae30 + +comSymLogLgm.validate.dateCheck = \uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \uac80\uc0c9\uc870\uac74 \ub0a0\uc9dc\ub97c \ud655\uc778\ud558\uc138\uc694! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/log/plg/message_en.properties b/src/main/resources/egovframework/message/com/sym/log/plg/message_en.properties new file mode 100644 index 00000000..08a1654d --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/plg/message_en.properties @@ -0,0 +1,14 @@ +#Privacy Log Management# +comSymLogPlg.privacyLog.title = Privacy Log + +comSymLogPlg.privacyLog.inquiryDatetime = Inquiry Datetime +comSymLogPlg.seachWrd.searchBeginDate = Search Begin Date +comSymLogPlg.seachWrd.searchEndDate = Serach End Date +comSymLogPlg.privacyLog.serviceName = Service Name +comSymLogPlg.privacyLog.inquiryInfo = Inquiry Info +comSymLogPlg.privacyLog.requesterName = Requester IP +comSymLogPlg.privacyLog.requesterId = Requester ID +comSymLogPlg.privacyLog.requesterIp = Requester IP +comSymLogPlg.privacyLog.detail = Detail + +comSymLogPlg.validate.dateCheck = The start date of the search condition is later than the end date. Please check the search condition date! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/log/plg/message_ko.properties b/src/main/resources/egovframework/message/com/sym/log/plg/message_ko.properties new file mode 100644 index 00000000..fb1bc713 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/plg/message_ko.properties @@ -0,0 +1,14 @@ +#\uac1c\uc778\uc815\ubcf4\ub85c\uadf8\uad00\ub9ac# +comSymLogPlg.privacyLog.title = \uac1c\uc778\uc815\ubcf4\ub85c\uadf8 + +comSymLogPlg.privacyLog.inquiryDatetime = \uc870\ud68c\uc77c\uc2dc +comSymLogPlg.seachWrd.searchBeginDate = \uac80\uc0c9\uc2dc\uc791\uc77c +comSymLogPlg.seachWrd.searchEndDate = \uac80\uc0c9\uc885\ub8cc\uc77c +comSymLogPlg.privacyLog.serviceName = \uc11c\ube44\uc2a4\uba85 +comSymLogPlg.privacyLog.inquiryInfo = \uc870\ud68c\uc815\ubcf4 +comSymLogPlg.privacyLog.requesterName = \uc694\uccad\uc790 +comSymLogPlg.privacyLog.requesterId = \uc694\uccadID +comSymLogPlg.privacyLog.requesterIp = \uc694\uccad\uc790IP +comSymLogPlg.privacyLog.detail = \uc0c1\uc138\ubcf4\uae30 + +comSymLogPlg.validate.dateCheck = \uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \uac80\uc0c9\uc870\uac74 \ub0a0\uc9dc\ub97c \ud655\uc778\ud558\uc138\uc694! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/log/slg/message_en.properties b/src/main/resources/egovframework/message/com/sym/log/slg/message_en.properties new file mode 100644 index 00000000..b98a1492 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/slg/message_en.properties @@ -0,0 +1,45 @@ +# 1060. System History Management +# EgovSysHistManage.xml +comSymLogSlg.sysHistManage.validate.sysNm=System Name +comSymLogSlg.sysHistManage.validate.histCn=History Contents +comSymLogSlg.sysHistManage.validate.histSeCode=History Classification + + +comSymLogSlg.sysHistList.title=System History List +comSymLogSlg.sysHistList.pageTop.title=System History Inquiry +comSymLogSlg.sysHistList.index=Index +comSymLogSlg.sysHistList.histId=History ID +comSymLogSlg.sysHistList.sysNm=System Name +comSymLogSlg.sysHistList.histSeCodeNm=History Classification +comSymLogSlg.sysHistList.frstRegisterNm=Registrant +comSymLogSlg.sysHistList.frstRegisterPnttm=Registration Date +comSymLogSlg.sysHistList.fnEgovInqireSysHist=View Details + + +comSymLogSlg.sysHistInqire.title=System History View Details +comSymLogSlg.sysHistInqire.pageTop.title=System History View Details +comSymLogSlg.sysHistInqire.histSeCodeNm=History Classification +comSymLogSlg.sysHistInqire.sysNm=System Name +comSymLogSlg.sysHistInqire.histCn=History Contents +comSymLogSlg.sysHistInqire.frstRegisterPnttm=Registration Date +comSymLogSlg.sysHistInqire.atchFileList=File List +comSymLogSlg.sysHistInqire.atchFile=Attach files + + +comSymLogSlg.sysHistUpdt.title=System History Modification +comSymLogSlg.sysHistUpdt.pageTop.title=System History Modification +comSymLogSlg.sysHistUpdt.histSeCodeNm=History Classification +comSymLogSlg.sysHistUpdt.sysNm=System Name +comSymLogSlg.sysHistUpdt.histCn=History Contents +comSymLogSlg.sysHistUpdt.frstRegisterPnttm=Registration Date +comSymLogSlg.sysHistUpdt.atchFileList=File List +comSymLogSlg.sysHistUpdt.atchFile=Attach files + + +comSymLogSlg.sysHistRegist.title=System History Registration +comSymLogSlg.sysHistRegist.pageTop.title=System History Registration +comSymLogSlg.sysHistRegist.histSeCodeNm=History Classification +comSymLogSlg.sysHistRegist.sysNm=System Name +comSymLogSlg.sysHistRegist.histCn=History Contents +comSymLogSlg.sysHistRegist.atchFile=Attach files + diff --git a/src/main/resources/egovframework/message/com/sym/log/slg/message_ko.properties b/src/main/resources/egovframework/message/com/sym/log/slg/message_ko.properties new file mode 100644 index 00000000..361e5666 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/slg/message_ko.properties @@ -0,0 +1,44 @@ +# 1060. \uc2dc\uc2a4\ud15c\uc774\ub825\uad00\ub9ac +# EgovSysHistManage.xml +comSymLogSlg.sysHistManage.validate.sysNm=\uc2dc\uc2a4\ud15c\uba85 +comSymLogSlg.sysHistManage.validate.histCn=\uc774\ub825\ub0b4\uc6a9 +comSymLogSlg.sysHistManage.validate.histSeCode=\uc774\ub825\uad6c\ubd84 + + +comSymLogSlg.sysHistList.title=\uc2dc\uc2a4\ud15c \uc774\ub825 \ubaa9\ub85d +comSymLogSlg.sysHistList.pageTop.title=\uc2dc\uc2a4\ud15c\uc774\ub825 \uc870\ud68c +comSymLogSlg.sysHistList.index=\ubc88\ud638 +comSymLogSlg.sysHistList.histId=\uc774\ub825ID +comSymLogSlg.sysHistList.sysNm=\uc2dc\uc2a4\ud15c\uba85 +comSymLogSlg.sysHistList.histSeCodeNm=\uc774\ub825\uad6c\ubd84 +comSymLogSlg.sysHistList.frstRegisterNm=\ub4f1\ub85d\uc790 +comSymLogSlg.sysHistList.frstRegisterPnttm=\ub4f1\ub85d\uc77c\uc790 +comSymLogSlg.sysHistList.fnEgovInqireSysHist=\uc0c1\uc138\ubcf4\uae30 + + +comSymLogSlg.sysHistInqire.title=\uc2dc\uc2a4\ud15c \uc774\ub825 \uc0c1\uc138\ubcf4\uae30 +comSymLogSlg.sysHistInqire.pageTop.title=\uc2dc\uc2a4\ud15c \uc774\ub825 \uc0c1\uc138\ubcf4\uae30 +comSymLogSlg.sysHistInqire.histSeCodeNm=\uc774\ub825\uad6c\ubd84 +comSymLogSlg.sysHistInqire.sysNm=\uc2dc\uc2a4\ud15c\uba85 +comSymLogSlg.sysHistInqire.histCn=\uc774\ub825\ub0b4\uc6a9 +comSymLogSlg.sysHistInqire.frstRegisterPnttm=\ub4f1\ub85d\uc77c\uc790 +comSymLogSlg.sysHistInqire.atchFileList=\ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d +comSymLogSlg.sysHistInqire.atchFile=\ucca8\ubd80\ud30c\uc77c + + +comSymLogSlg.sysHistUpdt.title=\uc2dc\uc2a4\ud15c \uc774\ub825 \uc0c1\uc138\ubcf4\uae30 +comSymLogSlg.sysHistUpdt.pageTop.title=\uc2dc\uc2a4\ud15c \uc774\ub825 \uc0c1\uc138\ubcf4\uae30 +comSymLogSlg.sysHistUpdt.histSeCodeNm=\uc774\ub825\uad6c\ubd84 +comSymLogSlg.sysHistUpdt.sysNm=\uc2dc\uc2a4\ud15c\uba85 +comSymLogSlg.sysHistUpdt.histCn=\uc774\ub825\ub0b4\uc6a9 +comSymLogSlg.sysHistUpdt.frstRegisterPnttm=\ub4f1\ub85d\uc77c\uc790 +comSymLogSlg.sysHistUpdt.atchFileList=\ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d +comSymLogSlg.sysHistUpdt.atchFile=\ucca8\ubd80\ud30c\uc77c + + +comSymLogSlg.sysHistRegist.title=\uc2dc\uc2a4\ud15c \uc774\ub825\ub4f1\ub85d +comSymLogSlg.sysHistRegist.pageTop.title=\uc2dc\uc2a4\ud15c \uc774\ub825\ub4f1\ub85d +comSymLogSlg.sysHistRegist.histSeCodeNm=\uc774\ub825\uad6c\ubd84 +comSymLogSlg.sysHistRegist.sysNm=\uc2dc\uc2a4\ud15c\uba85 +comSymLogSlg.sysHistRegist.histCn=\uc774\ub825\ub0b4\uc6a9 +comSymLogSlg.sysHistRegist.atchFile=\ucca8\ubd80\ud30c\uc77c diff --git a/src/main/resources/egovframework/message/com/sym/log/tlg/message_en.properties b/src/main/resources/egovframework/message/com/sym/log/tlg/message_en.properties new file mode 100644 index 00000000..c810da2b --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/tlg/message_en.properties @@ -0,0 +1,25 @@ +#Transmission Log +comSymLogTlg.trsmrcvLog.title = Transmission Log + +comSymLogTlg.trsmrcvLog.occrrncDe = Occurence Day +comSymLogTlg.seachWrd.searchBgnDe = Search Begin Date +comSymLogTlg.seachWrd.searchEndDe = Serach End Date +comSymLogTlg.trsmrcvLog.requestId = Request ID +comSymLogTlg.trsmrcvLog.trsmrcvType = Transmission Type +comSymLogTlg.trsmrcvLog.linkId = Link ID +comSymLogTlg.trsmrcvLog.providerId = Vendor ID +comSymLogTlg.trsmrcvLog.providerSystemId = Vendor System ID +comSymLogTlg.trsmrcvLog.providerServiceId = Vendor Service ID +comSymLogTlg.trsmrcvLog.requestOrgId = Requester ID +comSymLogTlg.trsmrcvLog.requestSystemId = Requester System ID +comSymLogTlg.trsmrcvLog.requestNm = Requester +comSymLogTlg.trsmrcvLog.detail = Detail + +comSymLogTlg.validate.dateCheck = The start date of the search condition is later than the end date. Please check the search condition date! + +comSymLogTlg.trsmrcvLog.transferRequest = Trnasefer Request +comSymLogTlg.trsmrcvLog.transferComplete = Transfer Complete +comSymLogTlg.trsmrcvLog.transferFailed = Transfer Failed +comSymLogTlg.trsmrcvLog.receiveRequest = Receive Request +comSymLogTlg.trsmrcvLog.receiveComplete = Receive Complete +comSymLogTlg.trsmrcvLog.receiveFailed = Receive Failed diff --git a/src/main/resources/egovframework/message/com/sym/log/tlg/message_ko.properties b/src/main/resources/egovframework/message/com/sym/log/tlg/message_ko.properties new file mode 100644 index 00000000..60568d98 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/tlg/message_ko.properties @@ -0,0 +1,26 @@ +#\uc1a1\uc218\uc2e0 \ub85c\uadf8\uc870\ud68c +comSymLogTlg.trsmrcvLog.title = \uc1a1\uc218\uc2e0 \ub85c\uadf8 + +comSymLogTlg.trsmrcvLog.occrrncDe = \ubc1c\uc0dd\uc77c\uc790 +comSymLogTlg.seachWrd.searchBgnDe = \uac80\uc0c9\uc2dc\uc791\uc77c +comSymLogTlg.seachWrd.searchEndDe = \uac80\uc0c9\uc885\ub8cc\uc77c +comSymLogTlg.trsmrcvLog.requestId = \uc694\uccadID +comSymLogTlg.trsmrcvLog.trsmrcvType = \uc1a1\uc218\uc2e0\uad6c\ubd84 +comSymLogTlg.trsmrcvLog.linkId = \uc5f0\uacc4ID +comSymLogTlg.trsmrcvLog.providerId = \uc81c\uacf5\uae30\uad00ID +comSymLogTlg.trsmrcvLog.providerSystemId = \uc81c\uacf5\uc2dc\uc2a4\ud15cID +comSymLogTlg.trsmrcvLog.providerServiceId = \uc81c\uacf5\uc11c\ube44\uc2a4ID +comSymLogTlg.trsmrcvLog.requestOrgId = \uc694\uccad\uae30\uad00ID +comSymLogTlg.trsmrcvLog.requestSystemId = \uc694\uccad\uc2dc\uc2a4\ud15cID +comSymLogTlg.trsmrcvLog.requestNm = \uc694\uccad\uc790 +comSymLogTlg.trsmrcvLog.detail = \uc0c1\uc138\ubcf4\uae30 +comSymLogTlg.trsmrcvLog.test = \uc1a1\uc218\uc2e0\ud14c\uc2a4\ud2b8 + +comSymLogTlg.validate.dateCheck = \uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \uac80\uc0c9\uc870\uac74 \ub0a0\uc9dc\ub97c \ud655\uc778\ud558\uc138\uc694! + +comSymLogTlg.trsmrcvLog.transferRequest = \uc804\uc1a1\uc694\uccad +comSymLogTlg.trsmrcvLog.transferComplete = \uc804\uc1a1\uc644\ub8cc +comSymLogTlg.trsmrcvLog.transferFailed = \uc804\uc1a1\uc2e4\ud328 +comSymLogTlg.trsmrcvLog.receiveRequest = \uc218\uc2e0\uc694\uccad +comSymLogTlg.trsmrcvLog.receiveComplete = \uc218\uc2e0\uc644\ub8cc +comSymLogTlg.trsmrcvLog.receiveFailed = \uc218\uc2e0\uc2e4\ud328 diff --git a/src/main/resources/egovframework/message/com/sym/log/ulg/message_en.properties b/src/main/resources/egovframework/message/com/sym/log/ulg/message_en.properties new file mode 100644 index 00000000..b9b16a4e --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/ulg/message_en.properties @@ -0,0 +1,20 @@ +#User Log Management# +comSymLogUlg.userLog.title = User Log + +comSymLogUlg.userLog.occrrncDe = Occurence Day +comSymLogUlg.seachWrd.searchBgnDe = Search Begin Date +comSymLogUlg.seachWrd.searchEndDe = Serach End Date +comSymLogUlg.userLog.user = User +comSymLogUlg.userLog.methodNm = Method Name +comSymLogUlg.userLog.serviceNm = Service Name +comSymLogUlg.userLog.create = Create +comSymLogUlg.userLog.modify = Modify +comSymLogUlg.userLog.view = View +comSymLogUlg.userLog.delete = Delete +comSymLogUlg.userLog.detail = Detail + +comSymLogUlg.validate.dateCheck = The start date of the search condition is later than the end date. Please check the search condition date! + + + + diff --git a/src/main/resources/egovframework/message/com/sym/log/ulg/message_ko.properties b/src/main/resources/egovframework/message/com/sym/log/ulg/message_ko.properties new file mode 100644 index 00000000..e5ba8867 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/ulg/message_ko.properties @@ -0,0 +1,16 @@ +#\uc0ac\uc6a9\uc790\ub85c\uadf8\uad00\ub9ac# +comSymLogUlg.userLog.title = \uc0ac\uc6a9\uc790 \ub85c\uadf8 + +comSymLogUlg.userLog.occrrncDe = \ubc1c\uc0dd\uc77c\uc790 +comSymLogUlg.seachWrd.searchBgnDe = \uac80\uc0c9\uc2dc\uc791\uc77c +comSymLogUlg.seachWrd.searchEndDe = \uac80\uc0c9\uc885\ub8cc\uc77c +comSymLogUlg.userLog.user = \uc0ac\uc6a9\uc790 +comSymLogUlg.userLog.methodNm = \uba54\uc18c\ub4dc\uba85 +comSymLogUlg.userLog.serviceNm = \uc11c\ube44\uc2a4\uba85 +comSymLogUlg.userLog.create = \uc0dd\uc131 +comSymLogUlg.userLog.modify = \uc218\uc815 +comSymLogUlg.userLog.view = \uc870\ud68c +comSymLogUlg.userLog.delete = \uc0ad\uc81c +comSymLogUlg.userLog.detail = \uc0c1\uc138\ubcf4\uae30 + +comSymLogUlg.validate.dateCheck = \uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \uac80\uc0c9\uc870\uac74 \ub0a0\uc9dc\ub97c \ud655\uc778\ud558\uc138\uc694! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/log/wlg/message_en.properties b/src/main/resources/egovframework/message/com/sym/log/wlg/message_en.properties new file mode 100644 index 00000000..e958458b --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/wlg/message_en.properties @@ -0,0 +1,13 @@ +#Web Log Management# +comSymLogWlg.webLog.title = Web Log + +comSymLogWlg.webLog.requestId = Request ID +comSymLogWlg.webLog.occrrncDe = Occurence Day +comSymLogWlg.seachWrd.searchBgnDe = Search Begin Date +comSymLogWlg.seachWrd.searchEndDe = Serach End Date +comSymLogWlg.webLog.url = URL +comSymLogWlg.webLog.requester = Requester +comSymLogWlg.webLog.requesterIp = Requester IP +comSymLogWlg.webLog.detail = Detail + +comSymLogWlg.validate.dateCheck = The start date of the search condition is later than the end date. Please check the search condition date! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/log/wlg/message_ko.properties b/src/main/resources/egovframework/message/com/sym/log/wlg/message_ko.properties new file mode 100644 index 00000000..cb09c611 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/log/wlg/message_ko.properties @@ -0,0 +1,13 @@ +#\uc6f9\ub85c\uadf8\uad00\ub9ac# +comSymLogWlg.webLog.title = \uc6f9\ub85c\uadf8 + +comSymLogWlg.webLog.requestId = \uc694\uccadID +comSymLogWlg.webLog.occrrncDe = \ubc1c\uc0dd\uc77c\uc790 +comSymLogWlg.seachWrd.searchBgnDe = \uac80\uc0c9\uc2dc\uc791\uc77c +comSymLogWlg.seachWrd.searchEndDe = \uac80\uc0c9\uc885\ub8cc\uc77c +comSymLogWlg.webLog.url = URL +comSymLogWlg.webLog.requester = \uc694\uccad\uc790 +comSymLogWlg.webLog.requesterIp = \uc694\uccad\uc790IP +comSymLogWlg.webLog.detail = \uc0c1\uc138\ubcf4\uae30 + +comSymLogWlg.validate.dateCheck = \uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \uac80\uc0c9\uc870\uac74 \ub0a0\uc9dc\ub97c \ud655\uc778\ud558\uc138\uc694! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/mnu/bmm/message_en.properties b/src/main/resources/egovframework/message/com/sym/mnu/bmm/message_en.properties new file mode 100644 index 00000000..f60e35a1 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/mnu/bmm/message_en.properties @@ -0,0 +1,33 @@ +comSymMnuBmm.bkmkMenuManageList.title=Short Cut Menu Management +comSymMnuBmm.bkmkMenuManageList.pageTop.title=Short Cut Menu Management + +comSymMnuBmm.bkmkMenuManageList.menuName=Menu Name +comSymMnuBmm.bkmkMenuManageList.enterSearchName=Enter Search Words +comSymMnuBmm.bkmkMenuManageList.newWindow=New Window +comSymMnuBmm.bkmkMenuManageList.preview=Preview +comSymMnuBmm.bkmkMenuManageList.menuURL=Menu URL + + +comSymMnuBmm.bkmkMenuManageRegist.title=Register Shortcut Menu +comSymMnuBmm.bkmkMenuManageRegist.pageTop.title=Register Shortcut Menu +comSymMnuBmm.bkmkMenuManageRegist.menuName=Menu Name +comSymMnuBmm.bkmkMenuManageRegist.menuURL=Menu URL +comSymMnuBmm.bkmkMenuManageRegist.selectMenu=Select Menu +comSymMnuBmm.bkmkMenuManageRegist.enterMenuName=Enter Menu Name +comSymMnuBmm.bkmkMenuManageRegist.enterMenuURL=Enter Menu URL +comSymMnuBmm.bkmkMenuManageRegist.validate.confirm.regist=Would you like to register? + + +comSymMnuBmm.BookMarkMenuPopup.title=Shortcut Menu Preview +comSymMnuBmm.BookMarkMenuPopup.pageTop.title=Manage Shortcut Menu +comSymMnuBmm.BookMarkMenuPopup.shortCut=Shortcuts + + +comSymMnuBmm.BkmkMenuPopup.title=Menu List +comSymMnuBmm.BkmkMenuPopup.pageTop.title=Menu List +comSymMnuBmm.bkmkMenuManageRegist.menuName=MenuName +comSymMnuBmm.bkmkMenuManageList.enterSearchName=Enter Search Words +comSymMnuBmm.bkmkMenuManageList.No=No. +comSymMnuBmm.bkmkMenuManageList.menuDC=Menu DC +comSymMnuBmm.bkmkMenuManageList.select=Select + diff --git a/src/main/resources/egovframework/message/com/sym/mnu/bmm/message_ko.properties b/src/main/resources/egovframework/message/com/sym/mnu/bmm/message_ko.properties new file mode 100644 index 00000000..9687de53 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/mnu/bmm/message_ko.properties @@ -0,0 +1,33 @@ +comSymMnuBmm.bkmkMenuManageList.title=\ubc14\ub85c\uac00\uae30 \uba54\ub274\uad00\ub9ac +comSymMnuBmm.bkmkMenuManageList.pageTop.title=\ubc14\ub85c\uac00\uae30 \uba54\ub274\uad00\ub9ac + +comSymMnuBmm.bkmkMenuManageList.menuName=\uba54\ub274\uba85 +comSymMnuBmm.bkmkMenuManageList.enterSearchName=\uac80\uc0c9\ub2e8\uc5b4\uc785\ub825 +comSymMnuBmm.bkmkMenuManageList.newWindow=\uc0c8\ucc3d +comSymMnuBmm.bkmkMenuManageList.preview=\ubbf8\ub9ac\ubcf4\uae30 +comSymMnuBmm.bkmkMenuManageList.menuURL=\uba54\ub274URL + + +comSymMnuBmm.bkmkMenuManageRegist.title=\ubc14\ub85c\uac00\uae30\uba54\ub274 \ub4f1\ub85d +comSymMnuBmm.bkmkMenuManageRegist.pageTop.title=\ubc14\ub85c\uac00\uae30\uba54\ub274 \ub4f1\ub85d +comSymMnuBmm.bkmkMenuManageRegist.menuName=\uba54\ub274\uba85 +comSymMnuBmm.bkmkMenuManageRegist.menuURL=\uba54\ub274URL +comSymMnuBmm.bkmkMenuManageRegist.selectMenu=\uba54\ub274\uc120\ud0dd +comSymMnuBmm.bkmkMenuManageRegist.enterMenuName=\uba54\ub274\uba85\uc785\ub825 +comSymMnuBmm.bkmkMenuManageRegist.enterMenuURL=\uba54\ub274URL\uc785\ub825 +comSymMnuBmm.bkmkMenuManageRegist.validate.confirm.regist=\ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + + +comSymMnuBmm.BookMarkMenuPopup.title=\ubc14\ub85c\uac00\uae30\uba54\ub274\ubbf8\ub9ac\ubcf4\uae30 +comSymMnuBmm.BookMarkMenuPopup.pageTop.title=\ubc14\ub85c\uac00\uae30 \uba54\ub274\uad00\ub9ac +comSymMnuBmm.BookMarkMenuPopup.shortCut=\ubc14\ub85c\uac00\uae30 + + +comSymMnuBmm.BkmkMenuPopup.title=\uba54\ub274\ubaa9\ub85d +comSymMnuBmm.BkmkMenuPopup.pageTop.title=\uba54\ub274\ubaa9\ub85d +comSymMnuBmm.bkmkMenuManageRegist.menuName=\uba54\ub274\uba85 +comSymMnuBmm.bkmkMenuManageList.enterSearchName=\uac80\uc0c9\ub2e8\uc5b4\uc785\ub825 +comSymMnuBmm.bkmkMenuManageList.No=\ubc88\ud638 +comSymMnuBmm.bkmkMenuManageList.menuDC=\uba54\ub274DC +comSymMnuBmm.bkmkMenuManageList.select=\uc120\ud0dd + diff --git a/src/main/resources/egovframework/message/com/sym/mnu/mcm/message_en.properties b/src/main/resources/egovframework/message/com/sym/mnu/mcm/message_en.properties new file mode 100644 index 00000000..d1768ede --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/mnu/mcm/message_en.properties @@ -0,0 +1,32 @@ +comSymMnuMpm.menuCreatManage.title=Menu Creation Management +comSymMnuMpm.menuCreatManage.pageTop.title=Menu Creation Management + +comSymMnuMpm.menuCreatManage.targetID=Security settings target ID +comSymMnuMpm.menuCreatManage.authCode=Authorization code +comSymMnuMpm.menuCreatManage.authName=Authority name +comSymMnuMpm.menuCreatManage.authDesc=Authorization Description +comSymMnuMpm.menuCreatManage.creationStatus=Menu Creation Status +comSymMnuMpm.menuCreatManage.createMenu=Create Menu + + +comSymMnuMpm.MenuCreat.title=Create Menu +comSymMnuMpm.MenuCreat.pageTop.title=Create Menu +comSymMnuMpm.MenuCreat.authCode=Authorization Code +comSymMnuMpm.MenuCreat.createMenu=Create Menu +comSymMnuMpm.MenuCreat.createSiteMap=Create Sitemap + +comSymMnuMpm.MenuCreat.validate.menuNmVal.none1=Menu list data does not exist. +comSymMnuMpm.MenuCreat.validate.menuNmVal.none2=The menu does not exist. Please register after menu. + + +comSymMnuMpm.MenuCreatSiteMap.title=Create Menu Sitemap +comSymMnuMpm.MenuCreatSiteMap.pageTop.title=Create Menu Sitemap +comSymMnuMpm.MenuCreatSiteMap.send=Send +comSymMnuMpm.MenuCreatSiteMap.authCode=Authorization Code +comSymMnuMpm.MenuCreatSiteMap.createSitemap=Create Sitemap +comSymMnuMpm.MenuCreatSiteMap.authName=Authority Name + +comSymMnuMpm.MenuCreatSiteMap.validate.menuNmVal.none1=\uba54\ub274 \ubaa9\ub85d \ub370\uc774\ud0c0\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymMnuMpm.MenuCreatSiteMap.validate.menuNmVal.none2=\uc0ac\uc774\ud2b8\ub9f5 \uc0dd\uc131 \ub370\uc774\ud0c0\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \\n \uba54\ub274\ub97c \uc0dd\uc131\ud558\uc2e0 \ud6c4 \uc791\uc5c5\ud558\uc138\uc694. + + diff --git a/src/main/resources/egovframework/message/com/sym/mnu/mcm/message_ko.properties b/src/main/resources/egovframework/message/com/sym/mnu/mcm/message_ko.properties new file mode 100644 index 00000000..86a5ece7 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/mnu/mcm/message_ko.properties @@ -0,0 +1,31 @@ +comSymMnuMpm.menuCreatManage.title=\uba54\ub274\uc0dd\uc131\uad00\ub9ac +comSymMnuMpm.menuCreatManage.pageTop.title=\uba54\ub274\uc0dd\uc131\uad00\ub9ac + +comSymMnuMpm.menuCreatManage.targetID=\ubcf4\uc548\uc124\uc815\ub300\uc0c1ID +comSymMnuMpm.menuCreatManage.authCode=\uad8c\ud55c\ucf54\ub4dc +comSymMnuMpm.menuCreatManage.authName=\uad8c\ud55c\uba85 +comSymMnuMpm.menuCreatManage.authDesc=\uad8c\ud55c \uc124\uba85 +comSymMnuMpm.menuCreatManage.creationStatus=\uba54\ub274\uc0dd\uc131\uc5ec\ubd80 +comSymMnuMpm.menuCreatManage.createMenu=\uba54\ub274\uc0dd\uc131 + + +comSymMnuMpm.MenuCreat.title=\uba54\ub274\uc0dd\uc131 +comSymMnuMpm.MenuCreat.pageTop.title=\uba54\ub274\uc0dd\uc131 +comSymMnuMpm.MenuCreat.authCode=\uad8c\ud55c\ucf54\ub4dc +comSymMnuMpm.MenuCreat.createMenu=\uba54\ub274\uc0dd\uc131 +comSymMnuMpm.MenuCreat.createSiteMap=\uc0ac\uc774\ud2b8\ub9f5\uc0dd\uc131 + +comSymMnuMpm.MenuCreat.validate.menuNmVal.none1=\uba54\ub274 \ubaa9\ub85d \ub370\uc774\ud0c0\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymMnuMpm.MenuCreat.validate.menuNmVal.none2=\uba54\ub274\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uba54\ub274 \ub4f1\ub85d \ud6c4 \uc0ac\uc6a9\ud558\uc138\uc694. + + +comSymMnuMpm.MenuCreatSiteMap.title=\uba54\ub274\uc0ac\uc774\ud2b8\ub9f5\uc0dd\uc131 +comSymMnuMpm.MenuCreatSiteMap.pageTop.title=\uba54\ub274\uc0ac\uc774\ud2b8\ub9f5\uc0dd\uc131 +comSymMnuMpm.MenuCreatSiteMap.send=\uc804\uc1a1 +comSymMnuMpm.MenuCreatSiteMap.authCode=\uad8c\ud55c\ucf54\ub4dc +comSymMnuMpm.MenuCreatSiteMap.createSitemap=\uc0ac\uc774\ud2b8\ub9f5\uc0dd\uc131 +comSymMnuMpm.MenuCreatSiteMap.authName=\uad8c\ud55c\uba85 + +comSymMnuMpm.MenuCreatSiteMap.validate.menuNmVal.none1=\uba54\ub274 \ubaa9\ub85d \ub370\uc774\ud0c0\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymMnuMpm.MenuCreatSiteMap.validate.menuNmVal.none2=\uc0ac\uc774\ud2b8\ub9f5 \uc0dd\uc131 \ub370\uc774\ud0c0\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \\n \uba54\ub274\ub97c \uc0dd\uc131\ud558\uc2e0 \ud6c4 \uc791\uc5c5\ud558\uc138\uc694. + diff --git a/src/main/resources/egovframework/message/com/sym/mnu/mpm/message_en.properties b/src/main/resources/egovframework/message/com/sym/mnu/mpm/message_en.properties new file mode 100644 index 00000000..4933d056 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/mnu/mpm/message_en.properties @@ -0,0 +1,109 @@ +# EgovMenuManage.xml +comSymMnuMpm.menuManage.validate.menuNo=Menu No. +comSymMnuMpm.menuManage.validate.menuOrdr=Menu Order +comSymMnuMpm.menuManage.validate.menuNm=Menu Name +comSymMnuMpm.menuManage.validate.upperMenuId=Upper Menu No. +comSymMnuMpm.menuManage.validate.progrmFileNm=Program File Name +comSymMnuMpm.menuManage.validate.menuDc=Menu Description +comSymMnuMpm.menuManage.validate.relateImagePath=Related Image Path +comSymMnuMpm.menuManage.validate.relateImageNm=Related Image Name + + +comSymMnuMpm.menuList.title=Menu Information Registration +comSymMnuMpm.menuList.pageTop.title=Menu List + +comSymMnuMpm.menuList.menuNo=Menu No. +comSymMnuMpm.menuList.menuOrdr=Menu Order +comSymMnuMpm.menuList.menuNm=Menu Name +comSymMnuMpm.menuList.upperMenuId=Upper Menu No. +comSymMnuMpm.menuList.progrmFileNm=File Name +comSymMnuMpm.menuList.relateImageNm=Related Image Name +comSymMnuMpm.menuList.relateImagePath=Related Image Path +comSymMnuMpm.menuList.menuDc=Menu Description + +comSymMnuMpm.menuList.newWindow=New Window +comSymMnuMpm.menuList.mvmnMenuList=Search Menu +comSymMnuMpm.menuList.searchFileNm=Program File Name Search + +comSymMnuMpm.menuList.validate.checkVal=You can only modify or delete the detail view. +comSymMnuMpm.menuList.validate.checkVal.update=You can only modify or delete the detail view. Please reset and register. + +comSymMnuMpm.menuList.validate.menuNo.notNull=Menu number are required. +comSymMnuMpm.menuList.validate.menuNo.onlyNumber=You can only enter numbers for menu numbers. +comSymMnuMpm.menuList.validate.menuOrdr.notNull=Menu order is required.. +comSymMnuMpm.menuList.validate.menuOrdr.onlyNumber=Only numbers can be entered in menu order. +comSymMnuMpm.menuList.validate.upperMenuId.notNull=The upper menu number is required. +comSymMnuMpm.menuList.validate.upperMenuId.onlyNumber=Upper menu numbers can only be entered in numbers. +comSymMnuMpm.menuList.validate.progrmFileNm.notNull=Program file name is required. +comSymMnuMpm.menuList.validate.menuNm.notNull=Menu name is required. + +comSymMnuMpm.menuList.validate.chkBrowse=Menu list data does not exist. +comSymMnuMpm.menuList.validate.chkObject=The menu does not exist. Please register after menu. + + +comSymMnuMpm.menuManage.title=Menu Management List +comSymMnuMpm.menuManage.pageTop.title=Menu Management List +comSymMnuMpm.menuManage.menuNo=Menu No. +comSymMnuMpm.menuManage.menuNmHn=Menu Name +comSymMnuMpm.menuManage.progrmFileNm=Program File Name +comSymMnuMpm.menuManage.menuDc=Menu Description +comSymMnuMpm.menuManage.upperMenuId=Upper Menu No. +comSymMnuMpm.menuManage.menuNm=Menu Name + + +comSymMnuMpm.menuDetailSelectUpdt.title=Menu Detailed View and Edit +comSymMnuMpm.menuDetailSelectUpdt.pageTop.title=Menu Detailed View and Edit +comSymMnuMpm.menuDetailSelectUpdt.menuNo=Menu No. +comSymMnuMpm.menuDetailSelectUpdt.menuOrder=Menu Order +comSymMnuMpm.menuDetailSelectUpdt.menuNm=Menu Name +comSymMnuMpm.menuDetailSelectUpdt.upperMenuId=Upper Menu No. +comSymMnuMpm.menuDetailSelectUpdt.progrmFileNm=Menu Name +comSymMnuMpm.menuDetailSelectUpdt.relateImageNm=Related Image Name +comSymMnuMpm.menuDetailSelectUpdt.relateImagePath=Related Image Path +comSymMnuMpm.menuDetailSelectUpdt.menuDc=Menu Description +comSymMnuMpm.menuDetailSelectUpdt.selectMenuSearch=Select Menu Search +comSymMnuMpm.menuDetailSelectUpdt.programFileNameSearch=Program File Name Search +comSymMnuMpm.menuDetailSelectUpdt.newWindow=New Window + + +comSymMnuMpm.menuRegist.title=Menu Information Registration +comSymMnuMpm.menuRegist.pageTop.title=Menu Information Registration +comSymMnuMpm.menuRegist.menuNo=Menu No. +comSymMnuMpm.menuRegist.menuOrder=Menu Order +comSymMnuMpm.menuRegist.menuNm=Menu Name +comSymMnuMpm.menuRegist.upperMenuId=Upper Menu No. +comSymMnuMpm.menuRegist.progrmFileNm=Menu Name +comSymMnuMpm.menuRegist.relateImageNm=Related Image Name +comSymMnuMpm.menuRegist.relateImagePath=Related Image Path +comSymMnuMpm.menuRegist.menuDc=Menu Description +comSymMnuMpm.menuRegist.selectMenuSearch=Select Menu Search +comSymMnuMpm.menuRegist.programFileNameSearch=Program File Name Search +comSymMnuMpm.menuRegist.newWindow=New Window + + +comSymMnuMpm.menuBndeRegist.title=Bulk Registration of Menu +comSymMnuMpm.menuBndeRegist.pageTop.title=Bulk Registration of Menu +comSymMnuMpm.menuBndeRegist.menuNo=Bulk List File +comSymMnuMpm.menuBndeRegist.validate.confirm.insert=Would you like to register the menu in bulk? \\nYou can not delete menu information, program list, program change history. +comSymMnuMpm.menuBndeRegist.validate.confirm.delete=Do you want to delete the menu in bulk? \\nThe menu information, program list, and program change history data are all deleted. +comSymMnuMpm.menuBndeRegist.validate.alert.checkFile=Please specify a file to upload. +comSymMnuMpm.menuBndeRegist.validate.checkFile=The file format is incorrect. \\nYou can upload only xls, xlsx! + + +comSymMnuMpm.menuMvmn.title=Move menu +comSymMnuMpm.menuMvmn.pageTop.title=Move menu +comSymMnuMpm.menuMvmn.menuNo=Menu Name to Move +comSymMnuMpm.menuMvmn.validate.alert.menu=The menu does not exist. Please register after using menu! + + +comSymMnuMpm.head.head=Common service test site +comSymMnuMpm.mainView.mainViewTitle=Ministry of the Interior and Safety Common service test site +comSymMnuMpm.mainView.selectBBSListPortlet=List of generated boards +comSymMnuMpm.mainView.selectCommuMasterListPortlet=List of generated Community boards +comSymMnuMpm.mainView.selectBlogListPortlet=List of generated Blogs +comSymMnuMpm.mainView.deptSchdulManageMainList=Department schedule management +comSymMnuMpm.mainView.indvdlSchdulManageMainList=My schedule +comSymMnuMpm.mainView.exchangeRateInformation=Exchange Rate Information +comSymMnuMpm.mainView.getBannerImage=Banner +comSymMnuMpm.main_bottom.mainBottomTitle=Bottom main +comSymMnuMpm.main_bottom.address=03171 Sejong Daero 209 (Government Seoul Government Office), Jongno-gu, Seoul / 30128 Sejong Special Self-Governing Province Government 2 Government Office 13 (Government Sejong Government Office) \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/mnu/mpm/message_ko.properties b/src/main/resources/egovframework/message/com/sym/mnu/mpm/message_ko.properties new file mode 100644 index 00000000..0da93737 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/mnu/mpm/message_ko.properties @@ -0,0 +1,109 @@ +# EgovMenuManage.xml +comSymMnuMpm.menuManage.validate.menuNo=\uba54\ub274\ubc88\ud638 +comSymMnuMpm.menuManage.validate.menuOrdr=\uba54\ub274\uc21c\uc11c +comSymMnuMpm.menuManage.validate.menuNm=\uba54\ub274\uba85 +comSymMnuMpm.menuManage.validate.upperMenuId=\uba54\ub274\uc0c1\uc704\ubc88\ud638 +comSymMnuMpm.menuManage.validate.progrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymMnuMpm.menuManage.validate.menuDc=\uba54\ub274\uc124\uba85 +comSymMnuMpm.menuManage.validate.relateImagePath=\uad00\ub828\uc774\ubbf8\uc9c0\uacbd\ub85c +comSymMnuMpm.menuManage.validate.relateImageNm=\uad00\ub828\uc774\ubbf8\uc9c0\uba85 + + +comSymMnuMpm.menuList.title=\uba54\ub274\uc815\ubcf4\ub4f1\ub85d +comSymMnuMpm.menuList.pageTop.title=\uba54\ub274 \ubaa9\ub85d + +comSymMnuMpm.menuList.menuNo=\uba54\ub274No +comSymMnuMpm.menuList.menuOrdr=\uba54\ub274\uc21c\uc11c +comSymMnuMpm.menuList.menuNm=\uba54\ub274\uba85 +comSymMnuMpm.menuList.upperMenuId=\uc0c1\uc704\uba54\ub274No +comSymMnuMpm.menuList.progrmFileNm=\ud30c\uc77c\uba85 +comSymMnuMpm.menuList.relateImageNm=\uad00\ub828\uc774\ubbf8\uc9c0\uba85 +comSymMnuMpm.menuList.relateImagePath=\uad00\ub828\uc774\ubbf8\uc9c0\uacbd\ub85c +comSymMnuMpm.menuList.menuDc=\uba54\ub274\uc124\uba85 + +comSymMnuMpm.menuList.newWindow=\uc0c8\ucc3d\uc73c\ub85c +comSymMnuMpm.menuList.mvmnMenuList=\uba54\ub274\uc120\ud0dd \uac80\uc0c9 +comSymMnuMpm.menuList.searchFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 \uac80\uc0c9 + +comSymMnuMpm.menuList.validate.checkVal=\uc0c1\uc138\uc870\ud68c\uc2dc\ub294 \uc218\uc815\ud639\uc740 \uc0ad\uc81c\ub9cc \uac00\ub2a5\ud569\ub2c8\ub2e4. +comSymMnuMpm.menuList.validate.checkVal.update=\uc0c1\uc138\uc870\ud68c\uc2dc\ub294 \uc218\uc815\ud639\uc740 \uc0ad\uc81c\ub9cc \uac00\ub2a5\ud569\ub2c8\ub2e4. \ucd08\uae30\ud654 \ud558\uc2e0 \ud6c4 \ub4f1\ub85d\ud558\uc138\uc694. + +comSymMnuMpm.menuList.validate.menuNo.notNull=\uba54\ub274\ubc88\ud638\ub294 \ud544\uc218 \ud56d\ubaa9\uc785\ub2c8\ub2e4. +comSymMnuMpm.menuList.validate.menuNo.onlyNumber=\uba54\ub274\ubc88\ud638\ub294 \uc22b\uc790\ub9cc \uc785\ub825 \uac00\ub2a5\ud569\ub2c8\ub2e4. +comSymMnuMpm.menuList.validate.menuOrdr.notNull=\uba54\ub274\uc21c\uc11c\ub294 \ud544\uc218 \ud56d\ubaa9\uc785\ub2c8\ub2e4. +comSymMnuMpm.menuList.validate.menuOrdr.onlyNumber=\uba54\ub274\uc21c\uc11c\ub294 \uc22b\uc790\ub9cc \uc785\ub825 \uac00\ub2a5\ud569\ub2c8\ub2e4. +comSymMnuMpm.menuList.validate.upperMenuId.notNull=\uc0c1\uc704\uba54\ub274\ubc88\ud638\ub294 \ud544\uc218 \ud56d\ubaa9\uc785\ub2c8\ub2e4. +comSymMnuMpm.menuList.validate.upperMenuId.onlyNumber=\uc0c1\uc704\uba54\ub274\ubc88\ud638\ub294 \uc22b\uc790\ub9cc \uc785\ub825 \uac00\ub2a5\ud569\ub2c8\ub2e4. +comSymMnuMpm.menuList.validate.progrmFileNm.notNull=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85\uc740 \ud544\uc218 \ud56d\ubaa9\uc785\ub2c8\ub2e4. +comSymMnuMpm.menuList.validate.menuNm.notNull=\uba54\ub274\uba85\uc740 \ud544\uc218 \ud56d\ubaa9\uc785\ub2c8\ub2e4. + +comSymMnuMpm.menuList.validate.chkBrowse=\uba54\ub274 \ubaa9\ub85d \ub370\uc774\ud0c0\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymMnuMpm.menuList.validate.chkObject=\uba54\ub274\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uba54\ub274 \ub4f1\ub85d \ud6c4 \uc0ac\uc6a9\ud558\uc138\uc694. + + +comSymMnuMpm.menuManage.title=\uba54\ub274\uad00\ub9ac\ub9ac\uc2a4\ud2b8 +comSymMnuMpm.menuManage.pageTop.title=\uba54\ub274\uad00\ub9ac\ub9ac\uc2a4\ud2b8 +comSymMnuMpm.menuManage.menuNo=\uba54\ub274No +comSymMnuMpm.menuManage.menuNmHn=\uba54\ub274\ud55c\uae00\uba85 +comSymMnuMpm.menuManage.progrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymMnuMpm.menuManage.menuDc=\uba54\ub274\uc124\uba85 +comSymMnuMpm.menuManage.upperMenuId=\uc0c1\uc704\uba54\ub274No +comSymMnuMpm.menuManage.menuNm=\uba54\ub274\uba85 + + +comSymMnuMpm.menuDetailSelectUpdt.title=\uba54\ub274\uc0c1\uc138\uc870\ud68c\ubc0f \uc218\uc815 +comSymMnuMpm.menuDetailSelectUpdt.pageTop.title=\uba54\ub274\uc0c1\uc138\uc870\ud68c\ubc0f \uc218\uc815 +comSymMnuMpm.menuDetailSelectUpdt.menuNo=\uba54\ub274No +comSymMnuMpm.menuDetailSelectUpdt.menuOrder=\uba54\ub274\uc21c\uc11c +comSymMnuMpm.menuDetailSelectUpdt.menuNm=\uba54\ub274\uba85 +comSymMnuMpm.menuDetailSelectUpdt.upperMenuId=\uc0c1\uc704\uba54\ub274No +comSymMnuMpm.menuDetailSelectUpdt.progrmFileNm=\ud30c\uc77c\uba85 +comSymMnuMpm.menuDetailSelectUpdt.relateImageNm=\uad00\ub828\uc774\ubbf8\uc9c0\uba85 +comSymMnuMpm.menuDetailSelectUpdt.relateImagePath=\uad00\ub828\uc774\ubbf8\uc9c0\uacbd\ub85c +comSymMnuMpm.menuDetailSelectUpdt.menuDc=\uba54\ub274\uc124\uba85 +comSymMnuMpm.menuDetailSelectUpdt.selectMenuSearch=\uba54\ub274\uc120\ud0dd \uac80\uc0c9 +comSymMnuMpm.menuDetailSelectUpdt.programFileNameSearch=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 \uac80\uc0c9 +comSymMnuMpm.menuDetailSelectUpdt.newWindow=\uc0c8\ucc3d\uc73c\ub85c + + +comSymMnuMpm.menuRegist.title=\uba54\ub274\uc815\ubcf4\ub4f1\ub85d +comSymMnuMpm.menuRegist.pageTop.title=\uba54\ub274\uc815\ubcf4\ub4f1\ub85d +comSymMnuMpm.menuRegist.menuNo=\uba54\ub274No +comSymMnuMpm.menuRegist.menuOrder=\uba54\ub274\uc21c\uc11c +comSymMnuMpm.menuRegist.menuNm=\uba54\ub274\uba85 +comSymMnuMpm.menuRegist.upperMenuId=\uc0c1\uc704\uba54\ub274No +comSymMnuMpm.menuRegist.progrmFileNm=\ud30c\uc77c\uba85 +comSymMnuMpm.menuRegist.relateImageNm=\uad00\ub828\uc774\ubbf8\uc9c0\uba85 +comSymMnuMpm.menuRegist.relateImagePath=\uad00\ub828\uc774\ubbf8\uc9c0\uacbd\ub85c +comSymMnuMpm.menuRegist.menuDc=\uba54\ub274\uc124\uba85 +comSymMnuMpm.menuRegist.selectMenuSearch=\uba54\ub274\uc120\ud0dd \uac80\uc0c9 +comSymMnuMpm.menuRegist.programFileNameSearch=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 \uac80\uc0c9 +comSymMnuMpm.menuRegist.newWindow=\uc0c8\ucc3d\uc73c\ub85c + + +comSymMnuMpm.menuBndeRegist.title=\uba54\ub274\uc77c\uad04\ub4f1\ub85d +comSymMnuMpm.menuBndeRegist.pageTop.title=\uba54\ub274\uc77c\uad04\ub4f1\ub85d +comSymMnuMpm.menuBndeRegist.menuNo=\uc77c\uad04\ud30c\uc77c +comSymMnuMpm.menuBndeRegist.validate.confirm.insert=\uba54\ub274\uc77c\uad04\ub4f1\ub85d\uc744 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? \\n \uba54\ub274\uc815\ubcf4\uc640 \ud504\ub85c\uadf8\ub7a8\ubaa9\ub85d, \ud504\ub85c\uadf8\ub7a8 \ubcc0\uacbd\ub0b4\uc5ed \uc874\uc7ac\uc2dc \uc0ad\uc81c \ud558\uc2e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comSymMnuMpm.menuBndeRegist.validate.confirm.delete=\uba54\ub274\uc77c\uad04\uc0ad\uc81c\ub97c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? \\n \uba54\ub274\uc815\ubcf4\uc640 \ud504\ub85c\uadf8\ub7a8\ubaa9\ub85d, \ud504\ub85c\uadf8\ub7a8 \ubcc0\uacbd\ub0b4\uc5ed \ub370\uc774\ud0c0 \ubaa8\ub450 \uc0ad\uc81c\ucc98\ub9ac \ub429\ub2c8\ub2e4. +comSymMnuMpm.menuBndeRegist.validate.alert.checkFile=\uc5c5\ub85c\ub4dc \ud560 \ud30c\uc77c\uc744 \uc9c0\uc815\ud574 \uc8fc\uc138\uc694. +comSymMnuMpm.menuBndeRegist.validate.checkFile=\ud30c\uc77c \ud615\uc2dd\uc774 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\\n xls,xlsx\ub9cc \uc5c5\ub85c\ub4dc\uac00 \uac00\ub2a5\ud569\ub2c8\ub2e4! + + +comSymMnuMpm.menuMvmn.title=\uba54\ub274\uc774\ub3d9 +comSymMnuMpm.menuMvmn.pageTop.title=\uba54\ub274\uc774\ub3d9 +comSymMnuMpm.menuMvmn.menuNo=\uc774\ub3d9\ud560\uba54\ub274\uba85 +comSymMnuMpm.menuMvmn.validate.alert.menu=\uba54\ub274\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uba54\ub274 \ub4f1\ub85d \ud6c4 \uc0ac\uc6a9\ud558\uc138\uc694! + + +comSymMnuMpm.head.head=\uacf5\ud1b5\uc11c\ube44\uc2a4 \ud14c\uc2a4\ud2b8 \uc0ac\uc774\ud2b8 +comSymMnuMpm.mainView.mainViewTitle=\ud589\uc815\uc548\uc804\ubd80 \uacf5\ud1b5\uc11c\ube44\uc2a4 \ud14c\uc2a4\ud2b8 \uc0ac\uc774\ud2b8 +comSymMnuMpm.mainView.selectBBSListPortlet=\uc0dd\uc131\ub41c \uac8c\uc2dc\ud310 \ubaa9\ub85d +comSymMnuMpm.mainView.selectCommuMasterListPortlet=\uc0dd\uc131\ub41c \ucee4\ubba4\ub2c8\ud2f0 \ubaa9\ub85d +comSymMnuMpm.mainView.selectBlogListPortlet=\uc0dd\uc131\ub41c \ube14\ub85c\uadf8 \ubaa9\ub85d +comSymMnuMpm.mainView.deptSchdulManageMainList=\ubd80\uc11c\uc77c\uc815\uad00\ub9ac +comSymMnuMpm.mainView.indvdlSchdulManageMainList=\ub098\uc758\uc77c\uc815\uad00\ub9ac +comSymMnuMpm.mainView.exchangeRateInformation=\ud658\uc728\uc815\ubcf4 +comSymMnuMpm.mainView.getBannerImage=\ubc30\ub108 +comSymMnuMpm.main_bottom.mainBottomTitle=\uc544\ub798\uba54\uc778 +comSymMnuMpm.main_bottom.address=03171 \uc11c\uc6b8\ud2b9\ubcc4\uc2dc \uc885\ub85c\uad6c \uc138\uc885\ub300\ub85c 209 (\uc815\ubd80\uc11c\uc6b8\uccad\uc0ac) / 30128 \uc138\uc885\ud2b9\ubcc4\uc790\uce58\uc2dc \uc815\ubd802\uccad\uc0ac\ub85c 13 (\uc815\ubd80\uc138\uc885\uccad\uc0ac) \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/mnu/stm/message_en.properties b/src/main/resources/egovframework/message/com/sym/mnu/stm/message_en.properties new file mode 100644 index 00000000..41d5c274 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/mnu/stm/message_en.properties @@ -0,0 +1,4 @@ +#Site Map# +comSymMnuStm.siteMapng.siteMap=Site Map +comSymMnuStm.siteMapng.emptySiteMap=1100. Sitemap creation is performed after menu creation management> [menu creation] click> check selection from list> [menu creation] click> [create sitemap] click> click [create sitemap] from popup. +comSymMnuStm.siteMapng.validate.siteMap=Please create a sitemap. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/mnu/stm/message_ko.properties b/src/main/resources/egovframework/message/com/sym/mnu/stm/message_ko.properties new file mode 100644 index 00000000..f44457e7 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/mnu/stm/message_ko.properties @@ -0,0 +1,4 @@ +#\uc0ac\uc774\ud2b8\ub9f5# +comSymMnuStm.siteMapng.siteMap=\uc0ac\uc774\ud2b8\ub9f5 +comSymMnuStm.siteMapng.emptySiteMap=1100.\uba54\ub274\uc0dd\uc131\uad00\ub9ac > [\uba54\ub274\uc0dd\uc131]\ud074\ub9ad > \ubaa9\ub85d\uc5d0\uc11c \uccb4\ud06c\uc120\ud0dd > [\uba54\ub274\uc0dd\uc131]\ud074\ub9ad > [\uc0ac\uc774\ud2b8\ub9f5\uc0dd\uc131] \ud074\ub9ad > \ud31d\uc5c5\uc5d0\uc11c [\uc0ac\uc774\ud2b8\ub9f5\uc0dd\uc131]\ud074\ub9ad \uacfc\uc815\uc744 \uac70\uccd0\uc57c \uc0ac\uc774\ud2b8\ub9f5 \uc0dd\uc131\uc774 \ub429\ub2c8\ub2e4. +comSymMnuStm.siteMapng.validate.siteMap=\uc0ac\uc774\ud2b8\ub9f5\uc744 \uc0dd\uc131\ud574 \uc8fc\uc138\uc694. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/sym/prm/message_en.properties b/src/main/resources/egovframework/message/com/sym/prm/message_en.properties new file mode 100644 index 00000000..94bba4a6 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/prm/message_en.properties @@ -0,0 +1,160 @@ +comSymPrm.programListManage.title=Program List +comSymPrm.programListManage.pageTop.title=Program List + +comSymPrm.programListManage.programName=Program Name +comSymPrm.programListManage.programFileName=Program File Name +comSymPrm.programListManage.ProgramDescription=Program Description + + +comSymPrm.programListRegist.title=Register Program List +comSymPrm.programListRegist.pageTop.title=Register Program List +comSymPrm.programListRegist.progrmFileNm=Program File Name +comSymPrm.programListRegist.progrmStrePath=Storage path +comSymPrm.programListRegist.progrmKoreanNm=Program Name +comSymPrm.programListRegist.progrmDc=Program Description +comSymPrm.programListRegist.url=URL + + +comSymPrm.programListDetailSelectUpdt.title=View / Edit Program List +comSymPrm.programListDetailSelectUpdt.pageTop.title=View / Edit Program List +comSymPrm.programListDetailSelectUpdt.progrmFileNm=Program File Name +comSymPrm.programListDetailSelectUpdt.progrmStrePath=Storage path +comSymPrm.programListDetailSelectUpdt.progrmKoreanNm=Program Name +comSymPrm.programListDetailSelectUpdt.progrmDc=Program Description +comSymPrm.programListDetailSelectUpdt.url=URL + + +comSymPrm.programChangeRequst.title=Program Change Request +comSymPrm.programChangeRequst.pageTop.title=Program Change Request +comSymPrm.programChangeRequst.progrmFileNm=Program File Name +comSymPrm.programChangeRequst.rqesterNo=Request Number +comSymPrm.programChangeRequst.rqesterSj=Request Title +comSymPrm.programChangeRequst.rqesterPersonId=Requester +comSymPrm.programChangeRequst.rqesterDe=Request Date +comSymPrm.programChangeRequst.processSttus=Processing Status +comSymPrm.programChangeRequst.processSttusA=Applying +comSymPrm.programChangeRequst.processSttusP=Proceeding +comSymPrm.programChangeRequst.processSttusR=Companion +comSymPrm.programChangeRequst.processSttusC=Completed + + +comSymPrm.programChangRequstDetailSelectUpdt.title=Program Change Request +comSymPrm.programChangRequstDetailSelectUpdt.pageTop.title=View / Modify Program Change Request Details +comSymPrm.programChangRequstDetailSelectUpdt.title.sub1=Change Request History +comSymPrm.programChangRequstDetailSelectUpdt.title.sub2=Change Processing History +comSymPrm.programChangRequstDetailSelectUpdt.rqesterNo=Request Number +comSymPrm.programChangRequstDetailSelectUpdt.progrmFileNm=Program File Name +comSymPrm.programChangRequstDetailSelectUpdt.rqesterPersonId=Requester ID +comSymPrm.programChangRequstDetailSelectUpdt.rqesterDe=Request Date +comSymPrm.programChangRequstDetailSelectUpdt.rqesterSj=Request Title +comSymPrm.programChangRequstDetailSelectUpdt.changerqesterCn=Change Request Contents +comSymPrm.programChangRequstDetailSelectUpdt.processDe=Change Processing Date +comSymPrm.programChangRequstDetailSelectUpdt.opetrId=Change Handler +comSymPrm.programChangRequstDetailSelectUpdt.processSttus=Change Processing Status +comSymPrm.programChangRequstDetailSelectUpdt.processSttusA=Applying +comSymPrm.programChangRequstDetailSelectUpdt.processSttusP=Proceeding +comSymPrm.programChangRequstDetailSelectUpdt.processSttusR=Companion +comSymPrm.programChangRequstDetailSelectUpdt.processSttusC=Completed +comSymPrm.programChangRequstDetailSelectUpdt.rqesterProcessCn=Change Processing Contents + + +comSymPrm.programChangRequstStre.title=Program Change Request Registration +comSymPrm.programChangRequstStre.pageTop.title=Program Change Request Registration +comSymPrm.programChangRequstStre.rqesterNo=Request Number +comSymPrm.programChangRequstStre.progrmFileNm=Program File Name +comSymPrm.programChangRequstStre.searchProgrmFileNm=Program File Name Search +comSymPrm.programChangRequstStre.rqesterPersonId=Requester +comSymPrm.programChangRequstStre.rqesterDe=Request Date +comSymPrm.programChangRequstStre.rqesterSj=Request Title +comSymPrm.programChangRequstStre.changerqesterCn=Change Request Contents + + +comSymPrm.fileNmSearch.title=Program File Name Search +comSymPrm.fileNmSearch.pageTop.title=Program File Name Search +comSymPrm.fileNmSearch.progrmFileNm=Program File Name +comSymPrm.fileNmSearch.progrmNm=Program Name + + +comSymPrm.programChangeRequstProcess.title=Processing Program Change Requests +comSymPrm.programChangeRequstProcess.pageTop.title=Processing Program Change Requests +comSymPrm.programChangeRequstProcess.searchCondition.opt1=All +comSymPrm.programChangeRequstProcess.searchCondition.opt2=Processing Status +comSymPrm.programChangeRequstProcess.searchCondition.opt3=Request Date +comSymPrm.programChangeRequstProcess.searchCondition.opt4=Requester +comSymPrm.programChangeRequstProcess.searchKeyword.value=Search Condition Value +comSymPrm.programChangeRequstProcess.searchKeyword.all=All Views +comSymPrm.programChangeRequstProcess.rqesterNo=Request Number +comSymPrm.programChangeRequstProcess.progrmNm=Program File Name +comSymPrm.programChangeRequstProcess.processSttus=Processing Status +comSymPrm.programChangeRequstProcess.rqesterSj=Request Title +comSymPrm.programChangeRequstProcess.rqesterPersonId=Requester +comSymPrm.programChangeRequstProcess.rqesterDe=Request Date +comSymPrm.programChangeRequstProcess.processSttusA=Applying +comSymPrm.programChangeRequstProcess.processSttusP=Proceeding +comSymPrm.programChangeRequstProcess.processSttusR=Companion +comSymPrm.programChangeRequstProcess.processSttusC=Completed + + +comSymPrm.programChangRequstProcessDetailSelectUpdt.title=View / Modify Program Change Request Processing Details +comSymPrm.programChangRequstProcessDetailSelectUpdt.pageTop.title=View / Modify Program Change Request Processing Details +comSymPrm.programChangRequstProcessDetailSelectUpdt.title.sub1=Change Processing History +comSymPrm.programChangRequstProcessDetailSelectUpdt.title.sub2=Change Request History +comSymPrm.programChangRequstProcessDetailSelectUpdt.processDe=Change Processing Date +comSymPrm.programChangRequstProcessDetailSelectUpdt.opetrId=Change Handler +comSymPrm.programChangRequstProcessDetailSelectUpdt.processSttus=Change Processing Status +comSymPrm.programChangRequstProcessDetailSelectUpdt.rqesterProcessCn=Change Processing Contents +comSymPrm.programChangRequstProcessDetailSelectUpdt.processSttusA=Applying +comSymPrm.programChangRequstProcessDetailSelectUpdt.processSttusP=Proceeding +comSymPrm.programChangRequstProcessDetailSelectUpdt.processSttusR=Companion +comSymPrm.programChangRequstProcessDetailSelectUpdt.processSttusC=Completed +comSymPrm.programChangRequstProcessDetailSelectUpdt.rqesterNo=Request number +comSymPrm.programChangRequstProcessDetailSelectUpdt.progrmFileNm=Program File Name +comSymPrm.programChangRequstProcessDetailSelectUpdt.rqesterPersonId=Requestor ID +comSymPrm.programChangRequstProcessDetailSelectUpdt.rqesterDe=Request Date +comSymPrm.programChangRequstProcessDetailSelectUpdt.rqesterSj=Request Title +comSymPrm.programChangRequstProcessDetailSelectUpdt.changerqesterCn=Change Request Contents + + +comSymPrm.programChgHst.title=Program Change History +comSymPrm.programChgHst.pageTop.title=Program Change History +comSymPrm.programChgHst.searchKeyword=Program Name +comSymPrm.programChgHst.progrmFileNm=Program File Name +comSymPrm.programChgHst.processSttus=Processing Status +comSymPrm.programChgHst.rqesterProcessCn=Processing Contents +comSymPrm.programChgHst.rqesterPersonId=Change Requestor +comSymPrm.programChgHst.rqesterDe=Change Request Date +comSymPrm.programChgHst.processDe=Change Completed Date +comSymPrm.programChgHst.processSttusA=Applying +comSymPrm.programChgHst.processSttusP=Proceeding +comSymPrm.programChgHst.processSttusR=Companion +comSymPrm.programChgHst.processSttusC=Completed + + +comSymPrm.programChgHstDetail.title=Program Change History Details +comSymPrm.programChgHstDetail.pageTop.title=View Program Change History Details +comSymPrm.programChgHstDetail.title.sub1=Change Request History +comSymPrm.programChgHstDetail.title.sub2=Change Processing History +comSymPrm.programChgHstDetail.rqesterNo=Request Number +comSymPrm.programChgHstDetail.progrmFileNm=Program File Name +comSymPrm.programChgHstDetail.rqesterPersonId=Requestor ID +comSymPrm.programChgHstDetail.rqesterDe=Request Date +comSymPrm.programChgHstDetail.rqesterSj=Request Title +comSymPrm.programChgHstDetail.changerqesterCn=Change Processing Contents +comSymPrm.programChgHstDetail.processDe=Change Processing Date +comSymPrm.programChgHstDetail.opetrId=Change Handler +comSymPrm.programChgHstDetail.processSttus=Change Processing Status +comSymPrm.programChgHstDetail.rqesterProcessCn=Change Processing Contents +comSymPrm.programChgHstDetail.processSttusA=Applying +comSymPrm.programChgHstDetail.processSttusP=Proceeding +comSymPrm.programChgHstDetail.processSttusR=Companion +comSymPrm.programChgHstDetail.processSttusC=Completed + + +comSymPrm.progrmManageController.processSttusA=Applying +comSymPrm.progrmManageController.processSttusP=Proceeding +comSymPrm.progrmManageController.processSttusR=Companion +comSymPrm.progrmManageController.processSttusC=Completed +comSymPrm.progrmManageController.email.Sj=Processing Program Change Requests +comSymPrm.progrmManageController.email.emailCn=Your program change request has been processed. +comSymPrm.progrmManageController.updateProgrmChangRequstProcess.fail=Modification failed. Change Request Handling Modifications can only be processed by the person in charge of the change. +comSymPrm.progrmManageController.checkRqesterPersonId=Failed to delete. Only the change requester can be deleted. diff --git a/src/main/resources/egovframework/message/com/sym/prm/message_ko.properties b/src/main/resources/egovframework/message/com/sym/prm/message_ko.properties new file mode 100644 index 00000000..aa97020b --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/prm/message_ko.properties @@ -0,0 +1,162 @@ +comSymPrm.programListManage.title=\ud504\ub85c\uadf8\ub7a8\ubaa9\ub85d\ub9ac\uc2a4\ud2b8 +comSymPrm.programListManage.pageTop.title=\ud504\ub85c\uadf8\ub7a8\ubaa9\ub85d\uad00\ub9ac + +comSymPrm.programListManage.programName=\ud504\ub85c\uadf8\ub7a8\uba85 +comSymPrm.programListManage.programFileName=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymPrm.programListManage.ProgramDescription=\ud504\ub85c\uadf8\ub7a8\uc124\uba85 + + +comSymPrm.programListRegist.title=\ud504\ub85c\uadf8\ub7a8\ubaa9\ub85d\ub4f1\ub85d +comSymPrm.programListRegist.pageTop.title=\ud504\ub85c\uadf8\ub7a8\ubaa9\ub85d \ub4f1\ub85d +comSymPrm.programListRegist.progrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymPrm.programListRegist.progrmStrePath=\uc800\uc7a5\uacbd\ub85c +comSymPrm.programListRegist.progrmKoreanNm=\ud55c\uae00\uba85 +comSymPrm.programListRegist.progrmDc=\ud504\ub85c\uadf8\ub7a8\uc124\uba85 +comSymPrm.programListRegist.url=URL + + +comSymPrm.programListDetailSelectUpdt.title=\ud504\ub85c\uadf8\ub7a8\ubaa9\ub85d \uc0c1\uc138\uc870\ud68c /\uc218\uc815 +comSymPrm.programListDetailSelectUpdt.pageTop.title=\ud504\ub85c\uadf8\ub7a8\ubaa9\ub85d \uc0c1\uc138\uc870\ud68c /\uc218\uc815 +comSymPrm.programListDetailSelectUpdt.progrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymPrm.programListDetailSelectUpdt.progrmStrePath=\uc800\uc7a5\uacbd\ub85c +comSymPrm.programListDetailSelectUpdt.progrmKoreanNm=\ud55c\uae00\uba85 +comSymPrm.programListDetailSelectUpdt.progrmDc=\ud504\ub85c\uadf8\ub7a8\uc124\uba85 +comSymPrm.programListDetailSelectUpdt.url=URL + + +comSymPrm.programChangeRequst.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad +comSymPrm.programChangeRequst.pageTop.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad +comSymPrm.programChangeRequst.progrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymPrm.programChangeRequst.rqesterNo=\uc694\uccad\ubc88\ud638 +comSymPrm.programChangeRequst.rqesterSj=\uc694\uccad\uc81c\ubaa9 +comSymPrm.programChangeRequst.rqesterPersonId=\uc694\uccad\uc790 +comSymPrm.programChangeRequst.rqesterDe=\uc694\uccad\uc77c\uc790 +comSymPrm.programChangeRequst.processSttus=\ucc98\ub9ac\uc5ec\ubd80 +comSymPrm.programChangeRequst.processSttusA=\uc2e0\uccad\uc911 +comSymPrm.programChangeRequst.processSttusP=\uc9c4\ud589\uc911 +comSymPrm.programChangeRequst.processSttusR=\ubc18\ub824 +comSymPrm.programChangeRequst.processSttusC=\ucc98\ub9ac\uc644\ub8cc + + +comSymPrm.programChangRequstDetailSelectUpdt.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad +comSymPrm.programChangRequstDetailSelectUpdt.pageTop.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad \uc0c1\uc138\uc870\ud68c /\uc218\uc815 +comSymPrm.programChangRequstDetailSelectUpdt.title.sub1=\ubcc0\uacbd\uc694\uccad\ub0b4\uc5ed +comSymPrm.programChangRequstDetailSelectUpdt.title.sub2=\ubcc0\uacbd\ucc98\ub9ac\ub0b4\uc5ed +comSymPrm.programChangRequstDetailSelectUpdt.rqesterNo=\uc694\uccad\ubc88\ud638 +comSymPrm.programChangRequstDetailSelectUpdt.progrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymPrm.programChangRequstDetailSelectUpdt.rqesterPersonId=\uc694\uccad\uc790ID +comSymPrm.programChangRequstDetailSelectUpdt.rqesterDe=\uc694\uccad\uc77c\uc790 +comSymPrm.programChangRequstDetailSelectUpdt.rqesterSj=\uc694\uccad\uc81c\ubaa9 +comSymPrm.programChangRequstDetailSelectUpdt.changerqesterCn=\ubcc0\uacbd\uc694\uccad\ub0b4\uc6a9 +comSymPrm.programChangRequstDetailSelectUpdt.processDe=\ubcc0\uacbd\ucc98\ub9ac\uc77c\uc790 +comSymPrm.programChangRequstDetailSelectUpdt.opetrId=\ubcc0\uacbd\ucc98\ub9ac\uc790 +comSymPrm.programChangRequstDetailSelectUpdt.processSttus=\ubcc0\uacbd\ucc98\ub9ac\uc0c1\ud0dc +comSymPrm.programChangRequstDetailSelectUpdt.processSttusA=\uc2e0\uccad\uc911 +comSymPrm.programChangRequstDetailSelectUpdt.processSttusP=\uc9c4\ud589\uc911 +comSymPrm.programChangRequstDetailSelectUpdt.processSttusR=\ubc18\ub824 +comSymPrm.programChangRequstDetailSelectUpdt.processSttusC=\ucc98\ub9ac\uc644\ub8cc +comSymPrm.programChangRequstDetailSelectUpdt.rqesterProcessCn=\ubcc0\uacbd\ucc98\ub9ac\ub0b4\uc6a9 + + +comSymPrm.programChangRequstStre.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad \ub4f1\ub85d +comSymPrm.programChangRequstStre.pageTop.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad \ub4f1\ub85d +comSymPrm.programChangRequstStre.rqesterNo=\uc694\uccad\ubc88\ud638 +comSymPrm.programChangRequstStre.progrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymPrm.programChangRequstStre.searchProgrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 \uac80\uc0c9 +comSymPrm.programChangRequstStre.rqesterPersonId=\uc694\uccad\uc790 +comSymPrm.programChangRequstStre.rqesterDe=\uc694\uccad\uc77c\uc790 +comSymPrm.programChangRequstStre.rqesterSj=\uc694\uccad\uc81c\ubaa9 +comSymPrm.programChangRequstStre.changerqesterCn=\ubcc0\uacbd\uc694\uccad\ub0b4\uc6a9 + + +comSymPrm.fileNmSearch.title=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 \uac80\uc0c9 +comSymPrm.fileNmSearch.pageTop.title=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 \uac80\uc0c9 +comSymPrm.fileNmSearch.progrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymPrm.fileNmSearch.progrmNm=\ud504\ub85c\uadf8\ub7a8\uba85 + + +comSymPrm.programChangeRequstProcess.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\ucc98\ub9ac +comSymPrm.programChangeRequstProcess.pageTop.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\ucc98\ub9ac +comSymPrm.programChangeRequstProcess.searchCondition.opt1=\uc804\uccb4 +comSymPrm.programChangeRequstProcess.searchCondition.opt2=\ucc98\ub9ac\uc0c1\ud0dc +comSymPrm.programChangeRequstProcess.searchCondition.opt3=\uc694\uccad\uc77c\uc790 +comSymPrm.programChangeRequstProcess.searchCondition.opt4=\uc694\uccad\uc790 +comSymPrm.programChangeRequstProcess.searchKeyword.value=\uac80\uc0c9\uc870\uac74\uac12 +comSymPrm.programChangeRequstProcess.searchKeyword.all=\uc804\uccb4\uc870\ud68c +comSymPrm.programChangeRequstProcess.rqesterNo=\uc694\uccad\ubc88\ud638 +comSymPrm.programChangeRequstProcess.progrmNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymPrm.programChangeRequstProcess.processSttus=\ucc98\ub9ac\uc0c1\ud0dc +comSymPrm.programChangeRequstProcess.rqesterSj=\uc694\uccad\uc81c\ubaa9 +comSymPrm.programChangeRequstProcess.rqesterPersonId=\uc694\uccad\uc790 +comSymPrm.programChangeRequstProcess.rqesterDe=\uc694\uccad\uc77c\uc790 +comSymPrm.programChangeRequstProcess.processSttusA=\uc2e0\uccad\uc911 +comSymPrm.programChangeRequstProcess.processSttusP=\uc9c4\ud589\uc911 +comSymPrm.programChangeRequstProcess.processSttusR=\ubc18\ub824 +comSymPrm.programChangeRequstProcess.processSttusC=\ucc98\ub9ac\uc644\ub8cc + + +comSymPrm.programChangRequstProcessDetailSelectUpdt.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\ucc98\ub9ac\uc0c1\uc138\uc870\ud68c/\uc218\uc815 +comSymPrm.programChangRequstProcessDetailSelectUpdt.pageTop.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad\ucc98\ub9ac\uc0c1\uc138\uc870\ud68c/\uc218\uc815 +comSymPrm.programChangRequstProcessDetailSelectUpdt.title.sub1=\ubcc0\uacbd\ucc98\ub9ac\ub0b4\uc5ed +comSymPrm.programChangRequstProcessDetailSelectUpdt.title.sub2=\ubcc0\uacbd\uc694\uccad\ub0b4\uc5ed +comSymPrm.programChangRequstProcessDetailSelectUpdt.processDe=\ubcc0\uacbd\ucc98\ub9ac\uc77c\uc790 +comSymPrm.programChangRequstProcessDetailSelectUpdt.opetrId=\ubcc0\uacbd\ucc98\ub9ac\uc790 +comSymPrm.programChangRequstProcessDetailSelectUpdt.processSttus=\ubcc0\uacbd\ucc98\ub9ac\uc0c1\ud0dc +comSymPrm.programChangRequstProcessDetailSelectUpdt.rqesterProcessCn=\ubcc0\uacbd\ucc98\ub9ac\ub0b4\uc6a9 +comSymPrm.programChangRequstProcessDetailSelectUpdt.processSttusA=\uc2e0\uccad\uc911 +comSymPrm.programChangRequstProcessDetailSelectUpdt.processSttusP=\uc9c4\ud589\uc911 +comSymPrm.programChangRequstProcessDetailSelectUpdt.processSttusR=\ubc18\ub824 +comSymPrm.programChangRequstProcessDetailSelectUpdt.processSttusC=\ucc98\ub9ac\uc644\ub8cc +comSymPrm.programChangRequstProcessDetailSelectUpdt.rqesterNo=\uc694\uccad\ubc88\ud638 +comSymPrm.programChangRequstProcessDetailSelectUpdt.progrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymPrm.programChangRequstProcessDetailSelectUpdt.rqesterPersonId=\uc694\uccad\uc790ID +comSymPrm.programChangRequstProcessDetailSelectUpdt.rqesterDe=\uc694\uccad\uc77c\uc790 +comSymPrm.programChangRequstProcessDetailSelectUpdt.rqesterSj=\uc694\uccad\uc81c\ubaa9 +comSymPrm.programChangRequstProcessDetailSelectUpdt.changerqesterCn=\ubcc0\uacbd\uc694\uccad\ub0b4\uc6a9 + + +comSymPrm.programChgHst.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc774\ub825 +comSymPrm.programChgHst.pageTop.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc774\ub825 +comSymPrm.programChgHst.searchKeyword=\ud504\ub85c\uadf8\ub7a8\uba85 +comSymPrm.programChgHst.progrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymPrm.programChgHst.processSttus=\ucc98\ub9ac\uc0c1\ud0dc +comSymPrm.programChgHst.rqesterProcessCn=\ucc98\ub9ac\ub0b4\uc6a9 +comSymPrm.programChgHst.rqesterPersonId=\ubcc0\uacbd\uc694\uccad\uc790 +comSymPrm.programChgHst.rqesterDe=\ubcc0\uacbd\uc694\uccad\uc77c\uc790 +comSymPrm.programChgHst.processDe=\ubcc0\uacbd\uc644\ub8cc\uc77c\uc790 +comSymPrm.programChgHst.processSttusA=\uc2e0\uccad\uc911 +comSymPrm.programChgHst.processSttusP=\uc9c4\ud589\uc911 +comSymPrm.programChgHst.processSttusR=\ubc18\ub824 +comSymPrm.programChgHst.processSttusC=\ucc98\ub9ac\uc644\ub8cc + + +comSymPrm.programChgHstDetail.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc774\ub825\uc0c1\uc138 +comSymPrm.programChgHstDetail.pageTop.title=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc774\ub825\uc0c1\uc138\uc870\ud68c +comSymPrm.programChgHstDetail.title.sub1=\ubcc0\uacbd\uc694\uccad\ub0b4\uc5ed +comSymPrm.programChgHstDetail.title.sub2=\ubcc0\uacbd\ucc98\ub9ac\ub0b4\uc5ed +comSymPrm.programChgHstDetail.rqesterNo=\uc694\uccad\ubc88\ud638 +comSymPrm.programChgHstDetail.progrmFileNm=\ud504\ub85c\uadf8\ub7a8\ud30c\uc77c\uba85 +comSymPrm.programChgHstDetail.rqesterPersonId=\uc694\uccad\uc790ID +comSymPrm.programChgHstDetail.rqesterDe=\uc694\uccad\uc77c\uc790 +comSymPrm.programChgHstDetail.rqesterSj=\uc694\uccad\uc81c\ubaa9 +comSymPrm.programChgHstDetail.changerqesterCn=\ubcc0\uacbd\uc694\uccad\ub0b4\uc6a9 +comSymPrm.programChgHstDetail.processDe=\ubcc0\uacbd\ucc98\ub9ac\uc77c\uc790 +comSymPrm.programChgHstDetail.opetrId=\ubcc0\uacbd\ucc98\ub9ac\uc790 +comSymPrm.programChgHstDetail.processSttus=\ubcc0\uacbd\ucc98\ub9ac\uc0c1\ud0dc +comSymPrm.programChgHstDetail.rqesterProcessCn=\ubcc0\uacbd\ucc98\ub9ac\ub0b4\uc6a9 +comSymPrm.programChgHstDetail.processSttusA=\uc2e0\uccad\uc911 +comSymPrm.programChgHstDetail.processSttusP=\uc9c4\ud589\uc911 +comSymPrm.programChgHstDetail.processSttusR=\ubc18\ub824 +comSymPrm.programChgHstDetail.processSttusC=\ucc98\ub9ac\uc644\ub8cc + + +comSymPrm.progrmManageController.processSttusA=\uc2e0\uccad\uc911 +comSymPrm.progrmManageController.processSttusP=\uc9c4\ud589\uc911 +comSymPrm.progrmManageController.processSttusR=\ubc18\ub824 +comSymPrm.progrmManageController.processSttusC=\ucc98\ub9ac\uc644\ub8cc +comSymPrm.progrmManageController.email.Sj=\ud504\ub85c\uadf8\ub7a8\ubcc0\uacbd\uc694\uccad \ucc98\ub9ac +comSymPrm.progrmManageController.email.emailCn=\ud504\ub85c\uadf8\ub7a8 \ubcc0\uacbd\uc694\uccad \uc0ac\ud56d\uc774 \ucc98\ub9ac \ub418\uc5c8\uc2b5\ub2c8\ub2e4. +comSymPrm.progrmManageController.updateProgrmChangRequstProcess.fail=\uc218\uc815\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. \ubcc0\uacbd\uc694\uccad\ucc98\ub9ac \uc218\uc815\uc740 \ubcc0\uacbd\ucc98\ub9ac\ud574\ub2f9 \ub2f4\ub2f9\uc790\ub9cc \ucc98\ub9ac\uac00\ub2a5\ud569\ub2c8\ub2e4. +comSymPrm.progrmManageController.checkRqesterPersonId=\uc0ad\uc81c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4. \ubcc0\uacbd\uc694\uccad\uc790\ub9cc \uc0ad\uc81c\uac00\ub2a5\ud569\ub2c8\ub2e4. + + diff --git a/src/main/resources/egovframework/message/com/sym/sym/bak/message_en.properties b/src/main/resources/egovframework/message/com/sym/sym/bak/message_en.properties new file mode 100644 index 00000000..748f2ba2 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/sym/bak/message_en.properties @@ -0,0 +1,120 @@ +comSymSymBak.backupOpertList.title=Backup Job Management List +comSymSymBak.backupOpertList.pageTop.title=Backup Job Management List +comSymSymBak.backupOpertList.caption=Backup Job Management List +comSymSymBak.backupOpertList.validate.searchKeyword=Please select a search condition. +comSymSymBak.backupOpertList.searchCondition=Search Condition +comSymSymBak.backupOpertList.backupOpertId=Backup Job ID +comSymSymBak.backupOpertList.backupOpertNm=Backup Job Name +comSymSymBak.backupOpertList.backupOrginlDrctry=Backup Source Directory +comSymSymBak.backupOpertList.backupStreDrctry=Backup Storage Directory +comSymSymBak.backupOpertList.executCycleNm=Execution Cycle +comSymSymBak.backupOpertList.executSchdul=Execution Schedule +comSymSymBak.backupOpertList.searchKeyword=Search Keyword + + +comSymSymBak.backupOpertDetail.title=Backup Job Details +comSymSymBak.backupOpertDetail.pageTop.title=Backup Job Details +comSymSymBak.backupOpertDetail.backupOpertId=Backup Job ID +comSymSymBak.backupOpertDetail.backupOpertNm=Backup Job Name +comSymSymBak.backupOpertDetail.backupOrginlDrctry=Backup Source Directory +comSymSymBak.backupOpertDetail.backupStreDrctry=Backup Storage Directory +comSymSymBak.backupOpertDetail.executCycleNm=Execution Cycle +comSymSymBak.backupOpertDetail.cmprsSeNm=Compression Classification + + +comSymSymBak.backupOpertUpdt.title=Modifying Backup Jobs +comSymSymBak.backupOpertUpdt.pageTop.title=Modifying Backup Jobs +comSymSymBak.backupOpertUpdt.validate.executSchdulDfkSes.length=The weekday is the required input value when the execution cycle is selected as weekly. +comSymSymBak.backupOpertUpdt.validate.cycleMonth.executSchdulDay=When the execution cycle is monthly, the execution schedule (days) is a required input value. +comSymSymBak.backupOpertUpdt.validate.cycleYear.executSchdulMonth=When the execution cycle is annually, the execution schedule (month) is a required input value. +comSymSymBak.backupOpertUpdt.validate.cycleYear.executSchdulDay=When the execution cycle is annually, the execution schedule (days) is a mandatory input value. +comSymSymBak.backupOpertUpdt.validate.checkDate=The execution schedule (month / day) is not valid. +comSymSymBak.backupOpertUpdt.validate.executSchdulDeNm=The execution schedule (date) is a required input value when the execution cycle is only once. +comSymSymBak.backupOpertUpdt.validate.executSchdulDeNm.isDate=The execution schedule (date) is invalid. +comSymSymBak.backupOpertUpdt.backupOpertId=Backup Job ID +comSymSymBak.backupOpertUpdt.backupOpertNm=Backup Job Name +comSymSymBak.backupOpertUpdt.backupOrginlDrctry=Backup Source Directory +comSymSymBak.backupOpertUpdt.backupStreDrctry=Backup Storage Directory +comSymSymBak.backupOpertUpdt.executCycleNm=Execution Cycle +comSymSymBak.backupOpertUpdt.cmprsSeNm=Compression Classification +comSymSymBak.backupOpertUpdt.executSchdulDeNm=Execution schedule(Date) +comSymSymBak.backupOpertUpdt.executSchdulMonth=Execution schedule(Month) +comSymSymBak.backupOpertUpdt.executSchdulDay=Execution schedule(Day) +comSymSymBak.backupOpertUpdt.executSchdulHour=Execution schedule(Hour) +comSymSymBak.backupOpertUpdt.executSchdulMnt=Execution schedule(Minute) +comSymSymBak.backupOpertUpdt.executSchdulSecnd=Execution schedule(Second) +comSymSymBak.backupOpertUpdt.spnMonth=Month +comSymSymBak.backupOpertUpdt.spnDay=Day +comSymSymBak.backupOpertUpdt.spnHH=Hour +comSymSymBak.backupOpertUpdt.spnMM=Minute +comSymSymBak.backupOpertUpdt.spnSS=Second + + +comSymSymBak.backupOpertRegist.title=Registering Backup Jobs +comSymSymBak.backupOpertRegist.pageTop.title=Registering Backup Jobs +comSymSymBak.backupOpertRegist.validate.executSchdulDfkSes.length=The weekday is the required input value when the execution cycle is selected as weekly. +comSymSymBak.backupOpertRegist.validate.cycleMonth.executSchdulDay=When the execution cycle is monthly, the execution schedule (days) is a required input value. +comSymSymBak.backupOpertRegist.validate.cycleYear.executSchdulMonth=When the execution cycle is annually, the execution schedule (month) is a required input value. +comSymSymBak.backupOpertRegist.validate.cycleYear.executSchdulDay=When the execution cycle is annually, the execution schedule (days) is a mandatory input value. +comSymSymBak.backupOpertRegist.validate.checkDate=The execution schedule (month / day) is not valid. +comSymSymBak.backupOpertRegist.validate.executSchdulDeNm=The execution schedule (date) is a required input value when the execution cycle is only once. +comSymSymBak.backupOpertRegist.validate.executSchdulDeNm.isDate=The execution schedule (date) is invalid. +comSymSymBak.backupOpertRegist.backupOpertNm=Backup Job Name +comSymSymBak.backupOpertRegist.backupOrginlDrctry=Backup Source Directory +comSymSymBak.backupOpertRegist.backupStreDrctry=Backup Storage Directory +comSymSymBak.backupOpertRegist.executCycleNm=Execution Cycle +comSymSymBak.backupOpertRegist.cmprsSeNm=Compression Classification +comSymSymBak.backupOpertRegist.executSchdulDeNm=Execution schedule(Date) +comSymSymBak.backupOpertRegist.executSchdulMonth=Execution schedule(Month) +comSymSymBak.backupOpertRegist.executSchdulDay=Execution schedule(Day) +comSymSymBak.backupOpertRegist.executSchdulHour=Execution schedule(Hour) +comSymSymBak.backupOpertRegist.executSchdulMnt=Execution schedule(Minute) +comSymSymBak.backupOpertRegist.executSchdulSecnd=Execution schedule(Second) +comSymSymBak.backupOpertRegist.spnMonth=Month +comSymSymBak.backupOpertRegist.spnDay=Day +comSymSymBak.backupOpertRegist.spnHH=Hour +comSymSymBak.backupOpertRegist.spnMM=Minute +comSymSymBak.backupOpertRegist.spnSS=Second + + +comSymSymBak.backupResultList.title=List Of Backup Results +comSymSymBak.backupResultList.pageTop.title=List Of Backup Results +comSymSymBak.backupResultList.caption=List Of Backup Results +comSymSymBak.backupResultList.validate.searchKeyword=Please select a search condition. +comSymSymBak.backupResultList.validate.searchStartDate=Please enter search start date. +comSymSymBak.backupResultList.validate.searchEndDate=Please enter search end date. +comSymSymBak.backupResultList.validate.searchStartDate.name=Search start date +comSymSymBak.backupResultList.validate.searchEndDate.name=Search end date +comSymSymBak.backupResultList.validate.searchKeywordFromTo=The search end time can not be earlier than the search start time. +comSymSymBak.backupResultList.searchKeyword=Search Keyword +comSymSymBak.backupResultList.execStartDate=Execution Start Date +comSymSymBak.backupResultList.searchStartDate=Start Date +comSymSymBak.backupResultList.searchEndDate=End Date +comSymSymBak.backupResultList.searchCondition=Search Condition +comSymSymBak.backupResultList.sttusAll=All +comSymSymBak.backupResultList.sttusNormal=Normal +comSymSymBak.backupResultList.sttusAbnormal=Abnormal +comSymSymBak.backupResultList.sttusPerforming=Performing +comSymSymBak.backupResultList.backupResultId=Backup Result ID +comSymSymBak.backupResultList.backupOpertId=Backup Job ID +comSymSymBak.backupResultList.backupOpertNm=Backup Job Name +comSymSymBak.backupResultList.sttusNm=Condition +comSymSymBak.backupResultList.executBeginTime=Start Execution Time +comSymSymBak.backupResultList.executEndTime=Execution End Time + + +comSymSymBak.backupResultDetail.title=Detailed View Of Backup Result +comSymSymBak.backupResultDetail.pageTop.title=Detailed View Of Backup Result +comSymSymBak.backupResultDetail.backupResultId=Backup Result ID +comSymSymBak.backupResultDetail.backupOpertId=Backup Job ID +comSymSymBak.backupResultDetail.backupOpertNm=Backup Job Name +comSymSymBak.backupResultDetail.backupOrginlDrctry=Backup Source Directory +comSymSymBak.backupResultDetail.backupStreDrctry=Backup Storage Directory +comSymSymBak.backupResultDetail.backupFile=Backup File +comSymSymBak.backupResultDetail.sttusNm=Condition +comSymSymBak.backupResultDetail.errorInfo=Error Information +comSymSymBak.backupResultDetail.executBeginTime=Start Execution Time +comSymSymBak.backupResultDetail.executEndTime=End Execution Time + + + diff --git a/src/main/resources/egovframework/message/com/sym/sym/bak/message_ko.properties b/src/main/resources/egovframework/message/com/sym/sym/bak/message_ko.properties new file mode 100644 index 00000000..278cc5ab --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/sym/bak/message_ko.properties @@ -0,0 +1,120 @@ +comSymSymBak.backupOpertList.title=\ubc31\uc5c5\uc791\uc5c5\uad00\ub9ac \ubaa9\ub85d\uc870\ud68c +comSymSymBak.backupOpertList.pageTop.title=\ubc31\uc5c5\uc791\uc5c5\uad00\ub9ac \ubaa9\ub85d\uc870\ud68c +comSymSymBak.backupOpertList.caption=\ubc31\uc5c5\uc791\uc5c5\uad00\ub9ac \ubaa9\ub85d +comSymSymBak.backupOpertList.validate.searchKeyword=\uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud558\uc138\uc694. +comSymSymBak.backupOpertList.searchCondition=\uac80\uc0c9\uc870\uac74\uad6c\ubd84 +comSymSymBak.backupOpertList.backupOpertId=\ubc31\uc5c5\uc791\uc5c5ID +comSymSymBak.backupOpertList.backupOpertNm=\ubc31\uc5c5\uc791\uc5c5\uba85 +comSymSymBak.backupOpertList.backupOrginlDrctry=\ubc31\uc5c5\uc6d0\ubcf8\ub514\ub809\ud1a0\ub9ac +comSymSymBak.backupOpertList.backupStreDrctry=\ubc31\uc5c5\uc800\uc7a5\ub514\ub809\ud1a0\ub9ac +comSymSymBak.backupOpertList.executCycleNm=\uc2e4\ud589\uc8fc\uae30 +comSymSymBak.backupOpertList.executSchdul=\uc2e4\ud589\uc2a4\ucf00\uc904 +comSymSymBak.backupOpertList.searchKeyword=\uac80\uc0c9\ud0a4\uc6cc\ub4dc + + +comSymSymBak.backupOpertDetail.title=\ubc31\uc5c5\uc791\uc5c5 \uc0c1\uc138\uc870\ud68c +comSymSymBak.backupOpertDetail.pageTop.title=\ubc31\uc5c5\uc791\uc5c5 \uc0c1\uc138\uc870\ud68c +comSymSymBak.backupOpertDetail.backupOpertId=\ubc31\uc5c5\uc791\uc5c5ID +comSymSymBak.backupOpertDetail.backupOpertNm=\ubc31\uc5c5\uc791\uc5c5\uba85 +comSymSymBak.backupOpertDetail.backupOrginlDrctry=\ubc31\uc5c5\uc6d0\ubcf8\ub514\ub809\ud1a0\ub9ac +comSymSymBak.backupOpertDetail.backupStreDrctry=\ubc31\uc5c5\uc800\uc7a5\ub514\ub809\ud1a0\ub9ac +comSymSymBak.backupOpertDetail.executCycleNm=\uc2e4\ud589\uc8fc\uae30 +comSymSymBak.backupOpertDetail.cmprsSeNm=\uc555\ucd95\uad6c\ubd84 + + +comSymSymBak.backupOpertUpdt.title=\ubc31\uc5c5\uc791\uc5c5\uc218\uc815 +comSymSymBak.backupOpertUpdt.pageTop.title=\ubc31\uc5c5\uc791\uc5c5 \uc218\uc815 +comSymSymBak.backupOpertUpdt.validate.executSchdulDfkSes.length=\uc2e4\ud589\uc8fc\uae30\ub97c \ub9e4\uc8fc\ub85c \uc120\ud0dd\ud588\uc744 \ub54c \uc694\uc77c\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymSymBak.backupOpertUpdt.validate.cycleMonth.executSchdulDay=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\uc6d4\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymSymBak.backupOpertUpdt.validate.cycleYear.executSchdulMonth=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\ub144\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc6d4)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymSymBak.backupOpertUpdt.validate.cycleYear.executSchdulDay=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\ub144\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymSymBak.backupOpertUpdt.validate.checkDate=\uc2e4\ud589\uc2a4\ucf00\uc904 (\uc6d4/\uc77c)\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymSymBak.backupOpertUpdt.validate.executSchdulDeNm=\uc2e4\ud589\uc8fc\uae30\uac00 \ud55c\ubc88\ub9cc\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c\uc790)\ub294 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymSymBak.backupOpertUpdt.validate.executSchdulDeNm.isDate=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c\uc790)\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymSymBak.backupOpertUpdt.backupOpertId=\ubc31\uc5c5\uc791\uc5c5ID +comSymSymBak.backupOpertUpdt.backupOpertNm=\ubc31\uc5c5\uc791\uc5c5\uba85 +comSymSymBak.backupOpertUpdt.backupOrginlDrctry=\ubc31\uc5c5\uc6d0\ubcf8\ub514\ub809\ud1a0\ub9ac +comSymSymBak.backupOpertUpdt.backupStreDrctry=\ubc31\uc5c5\uc800\uc7a5\ub514\ub809\ud1a0\ub9ac +comSymSymBak.backupOpertUpdt.executCycleNm=\uc2e4\ud589\uc8fc\uae30 +comSymSymBak.backupOpertUpdt.cmprsSeNm=\uc555\ucd95\uad6c\ubd84 +comSymSymBak.backupOpertUpdt.executSchdulDeNm=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c\uc790) +comSymSymBak.backupOpertUpdt.executSchdulMonth=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc6d4) +comSymSymBak.backupOpertUpdt.executSchdulDay=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c) +comSymSymBak.backupOpertUpdt.executSchdulHour=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc2dc) +comSymSymBak.backupOpertUpdt.executSchdulMnt=\uc2e4\ud589\uc2a4\ucf00\uc904(\ubd84) +comSymSymBak.backupOpertUpdt.executSchdulSecnd=\uc2e4\ud589\uc2a4\ucf00\uc904(\ucd08) +comSymSymBak.backupOpertUpdt.spnMonth=\uc6d4 +comSymSymBak.backupOpertUpdt.spnDay=\uc77c +comSymSymBak.backupOpertUpdt.spnHH=\uc2dc +comSymSymBak.backupOpertUpdt.spnMM=\ubd84 +comSymSymBak.backupOpertUpdt.spnSS=\ucd08 + + +comSymSymBak.backupOpertRegist.title=\ubc31\uc5c5\uc791\uc5c5 \ub4f1\ub85d +comSymSymBak.backupOpertRegist.pageTop.title=\ubc31\uc5c5\uc791\uc5c5 \ub4f1\ub85d +comSymSymBak.backupOpertRegist.validate.executSchdulDfkSes.length=\uc2e4\ud589\uc8fc\uae30\ub97c \ub9e4\uc8fc\ub85c \uc120\ud0dd\ud588\uc744 \ub54c \uc694\uc77c\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymSymBak.backupOpertRegist.validate.cycleMonth.executSchdulDay=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\uc6d4\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymSymBak.backupOpertRegist.validate.cycleYear.executSchdulMonth=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\ub144\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc6d4)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymSymBak.backupOpertRegist.validate.cycleYear.executSchdulDay=\uc2e4\ud589\uc8fc\uae30\uac00 \ub9e4\ub144\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c)\uc740 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymSymBak.backupOpertRegist.validate.checkDate=\uc2e4\ud589\uc2a4\ucf00\uc904 (\uc6d4/\uc77c)\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymSymBak.backupOpertRegist.validate.executSchdulDeNm=\uc2e4\ud589\uc8fc\uae30\uac00 \ud55c\ubc88\ub9cc\uc77c\ub54c \uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c\uc790)\ub294 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +comSymSymBak.backupOpertRegist.validate.executSchdulDeNm.isDate=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c\uc790)\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comSymSymBak.backupOpertRegist.backupOpertNm=\ubc31\uc5c5\uc791\uc5c5\uba85 +comSymSymBak.backupOpertRegist.backupOrginlDrctry=\ubc31\uc5c5\uc6d0\ubcf8\ub514\ub809\ud1a0\ub9ac +comSymSymBak.backupOpertRegist.backupStreDrctry=\ubc31\uc5c5\uc800\uc7a5\ub514\ub809\ud1a0\ub9ac +comSymSymBak.backupOpertRegist.executCycleNm=\uc2e4\ud589\uc8fc\uae30 +comSymSymBak.backupOpertRegist.cmprsSeNm=\uc555\ucd95\uad6c\ubd84 +comSymSymBak.backupOpertRegist.executSchdulDeNm=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c\uc790) +comSymSymBak.backupOpertRegist.executSchdulMonth=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc6d4) +comSymSymBak.backupOpertRegist.executSchdulDay=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc77c) +comSymSymBak.backupOpertRegist.executSchdulHour=\uc2e4\ud589\uc2a4\ucf00\uc904(\uc2dc) +comSymSymBak.backupOpertRegist.executSchdulMnt=\uc2e4\ud589\uc2a4\ucf00\uc904(\ubd84) +comSymSymBak.backupOpertRegist.executSchdulSecnd=\uc2e4\ud589\uc2a4\ucf00\uc904(\ucd08) +comSymSymBak.backupOpertRegist.spnMonth=\uc6d4 +comSymSymBak.backupOpertRegist.spnDay=\uc77c +comSymSymBak.backupOpertRegist.spnHH=\uc2dc +comSymSymBak.backupOpertRegist.spnMM=\ubd84 +comSymSymBak.backupOpertRegist.spnSS=\ucd08 + + +comSymSymBak.backupResultList.title=\ubc31\uc5c5\uacb0\uacfc\uad00\ub9ac \ubaa9\ub85d\uc870\ud68c +comSymSymBak.backupResultList.pageTop.title=\ubc31\uc5c5\uacb0\uacfc \ubaa9\ub85d +comSymSymBak.backupResultList.caption=\ubc31\uc5c5\uacb0\uacfc \ubaa9\ub85d +comSymSymBak.backupResultList.validate.searchKeyword=\uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud558\uc138\uc694. +comSymSymBak.backupResultList.validate.searchStartDate=\uac80\uc0c9\uc2dc\uc791\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694. +comSymSymBak.backupResultList.validate.searchEndDate=\uac80\uc0c9\uc885\ub8cc\uc77c\uc790\ub97c \uc785\ub825\ud558\uc138\uc694. +comSymSymBak.backupResultList.validate.searchStartDate.name=\uc870\ud68c\uc2dc\uc791\uc77c\uc790 +comSymSymBak.backupResultList.validate.searchEndDate.name=\uc870\ud68c\uc885\ub8cc\uc77c\uc790 +comSymSymBak.backupResultList.validate.searchKeywordFromTo=\uac80\uc0c9\uc885\ub8cc\uc2dc\uac01\uc774 \uac80\uc0c9\uc2dc\uc791\uc2dc\uac01\ubcf4\ub2e4 \ube60\ub97c\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comSymSymBak.backupResultList.searchKeyword=\uac80\uc0c9\ud0a4\uc6cc\ub4dc +comSymSymBak.backupResultList.execStartDate=\uc2e4\ud589\uc2dc\uc791\uc77c\uc790 +comSymSymBak.backupResultList.searchStartDate=\uac80\uc0c9\uc2dc\uc791\uc77c\uc790 +comSymSymBak.backupResultList.searchEndDate=\uac80\uc0c9\uc885\ub8cc\uc77c\uc790 +comSymSymBak.backupResultList.searchCondition=\uac80\uc0c9\uc870\uac74\uad6c\ubd84 +comSymSymBak.backupResultList.sttusAll=\uc804\uccb4 +comSymSymBak.backupResultList.sttusNormal=\uc815\uc0c1 +comSymSymBak.backupResultList.sttusAbnormal=\ube44\uc815\uc0c1 +comSymSymBak.backupResultList.sttusPerforming=\uc218\ud589\uc911 +comSymSymBak.backupResultList.backupResultId=\ubc31\uc5c5\uacb0\uacfcID +comSymSymBak.backupResultList.backupOpertId=\ubc31\uc5c5\uc791\uc5c5ID +comSymSymBak.backupResultList.backupOpertNm=\ubc31\uc5c5\uc791\uc5c5\uba85 +comSymSymBak.backupResultList.sttusNm=\uc0c1\ud0dc +comSymSymBak.backupResultList.executBeginTime=\uc2e4\ud589\uc2dc\uc791\uc2dc\uac01 +comSymSymBak.backupResultList.executEndTime=\uc2e4\ud589\uc885\ub8cc\uc2dc\uac01 + + +comSymSymBak.backupResultDetail.title=\ubc31\uc5c5\uacb0\uacfc \uc0c1\uc138\uc870\ud68c +comSymSymBak.backupResultDetail.pageTop.title=\ubc31\uc5c5\uacb0\uacfc \uc0c1\uc138\uc870\ud68c +comSymSymBak.backupResultDetail.backupResultId=\ubc31\uc5c5\uacb0\uacfcID +comSymSymBak.backupResultDetail.backupOpertId=\ubc31\uc5c5\uc791\uc5c5ID +comSymSymBak.backupResultDetail.backupOpertNm=\ubc31\uc5c5\uc791\uc5c5\uba85 +comSymSymBak.backupResultDetail.backupOrginlDrctry=\ubc31\uc5c5\uc6d0\ubcf8\ub514\ub809\ud1a0\ub9ac +comSymSymBak.backupResultDetail.backupStreDrctry=\ubc31\uc5c5\uc800\uc7a5\ub514\ub809\ud1a0\ub9ac +comSymSymBak.backupResultDetail.backupFile=\ubc31\uc5c5\ud30c\uc77c +comSymSymBak.backupResultDetail.sttusNm=\uc0c1\ud0dc +comSymSymBak.backupResultDetail.errorInfo=\uc5d0\ub7ec\uc815\ubcf4 +comSymSymBak.backupResultDetail.executBeginTime=\uc2e4\ud589\uc2dc\uc791\uc2dc\uac01 +comSymSymBak.backupResultDetail.executEndTime=\uc2e4\ud589\uc885\ub8cc\uc2dc\uac01 + + + diff --git a/src/main/resources/egovframework/message/com/sym/sym/nwk/message_en.properties b/src/main/resources/egovframework/message/com/sym/sym/nwk/message_en.properties new file mode 100644 index 00000000..64bd66e0 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/sym/nwk/message_en.properties @@ -0,0 +1,69 @@ +# EgovNtwrk.xml +comSymSymNwk.ntwrk.validate.gtwy=Gateway +comSymSymNwk.ntwrk.validate.subnet=Subnet +comSymSymNwk.ntwrk.validate.domnServer=DNS +comSymSymNwk.ntwrk.validate.userNm=User Name +comSymSymNwk.ntwrk.validate.regstYmd=Registration Date +comSymSymNwk.ntwrk.validate.ntwrkIp=IP + + +comSymSymNwk.ntwrkList.title=Network Management +comSymSymNwk.NtwrkList.pageTop.title=Network Management +comSymSymNwk.NtwrkList.strManageIem.all=All +comSymSymNwk.NtwrkList.strUserNm=User Name +comSymSymNwk.NtwrkList.ntwrkId=Network ID +comSymSymNwk.NtwrkList.ntwrkIp=IP +comSymSymNwk.NtwrkList.manageIem=Management Topics +comSymSymNwk.NtwrkList.userNm=User +comSymSymNwk.NtwrkList.useAt=Usage Status +comSymSymNwk.NtwrkList.regstYmd=Registration Date + + +comSymSymNwk.ntwrkDetail.title=View Network Details +comSymSymNwk.ntwrkDetail.pageTop.title=View Network Details +comSymSymNwk.ntwrkDetail.ntwrkId=Network ID +comSymSymNwk.ntwrkDetail.ntwrkIp=IP +comSymSymNwk.ntwrkDetail.gtwy=Gateway +comSymSymNwk.ntwrkDetail.subnet=Subnet +comSymSymNwk.ntwrkDetail.domnServer=DNS +comSymSymNwk.ntwrkDetail.manageIem=Management Topics +comSymSymNwk.ntwrkDetail.userNm=User Name +comSymSymNwk.ntwrkDetail.useAt=Usage Status +comSymSymNwk.ntwrkDetail.regstYmd=Registration Date + + +comSymSymNwk.ntwrkUpdt.title=Modify network +comSymSymNwk.ntwrkUpdt.pageTop.title=Modify network +comSymSymNwk.ntwrkUpdt.ntwrkId=Network ID +comSymSymNwk.ntwrkUpdt.ntwrkIp=IP +comSymSymNwk.ntwrkUpdt.gtwy=Gateway +comSymSymNwk.ntwrkUpdt.subnet=Subnet +comSymSymNwk.ntwrkUpdt.domnServer=DNS +comSymSymNwk.ntwrkUpdt.manageIem=Management Topics +comSymSymNwk.ntwrkUpdt.userNm=User Name +comSymSymNwk.ntwrkUpdt.useAt=Usage Status +comSymSymNwk.ntwrkUpdt.regstYmd=Registration Date +comSymSymNwk.ntwrkUpdt.validate.save=Do you want to save it? +comSymSymNwk.ntwrkUpdt.validate.delete=Are you sure you want to delete? +comSymSymNwk.ntwrkUpdt.validate.ip.notAllowed=The exception is the IP address. +comSymSymNwk.ntwrkUpdt.validate.ip.formatMismatch=IP format mismatch. + + +comSymSymNwk.ntwrkRegist.title=Network Registration +comSymSymNwk.ntwrkRegist.pageTop.title=Network Registration +comSymSymNwk.ntwrkRegist.ntwrkId=Network ID +comSymSymNwk.ntwrkRegist.ntwrkIp=IP +comSymSymNwk.ntwrkRegist.gtwy=Gateway +comSymSymNwk.ntwrkRegist.subnet=Subnet +comSymSymNwk.ntwrkRegist.domnServer=DNS +comSymSymNwk.ntwrkRegist.manageIem=Management Topics +comSymSymNwk.ntwrkRegist.userNm=User Name +comSymSymNwk.ntwrkRegist.useAt=Usage Status +comSymSymNwk.ntwrkRegist.regstYmd=Registration Date +comSymSymNwk.ntwrkRegist.validate.save=Do you want to save it? +comSymSymNwk.ntwrkRegist.validate.delete=Are you sure you want to delete? +comSymSymNwk.ntwrkRegist.validate.ip.notAllowed=The exception is the IP address. +comSymSymNwk.ntwrkRegist.validate.ip.formatMismatch=IP format mismatch. + + + diff --git a/src/main/resources/egovframework/message/com/sym/sym/nwk/message_ko.properties b/src/main/resources/egovframework/message/com/sym/sym/nwk/message_ko.properties new file mode 100644 index 00000000..7855755b --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/sym/nwk/message_ko.properties @@ -0,0 +1,71 @@ +# EgovNtwrk.xml +comSymSymNwk.ntwrk.validate.gtwy=\uac8c\uc774\ud2b8\uc6e8\uc774 +comSymSymNwk.ntwrk.validate.subnet=\uc11c\ube0c\ub137 +comSymSymNwk.ntwrk.validate.domnServer=DNS +comSymSymNwk.ntwrk.validate.userNm=\uc0ac\uc6a9\uc790\uba85 +comSymSymNwk.ntwrk.validate.regstYmd=\ub4f1\ub85d\uc77c\uc790 +comSymSymNwk.ntwrk.validate.ntwrkIp=IP + + +comSymSymNwk.ntwrkList.title=\ub124\ud2b8\uc6cc\ud06c \ubaa9\ub85d\uc870\ud68c +comSymSymNwk.NtwrkList.pageTop.title=\ub124\ud2b8\uc6cc\ud06c \uad00\ub9ac +comSymSymNwk.NtwrkList.strManageIem.all=\uc804\uccb4 +comSymSymNwk.NtwrkList.strUserNm=\uc0ac\uc6a9\uc790 \uba85 +comSymSymNwk.NtwrkList.ntwrkId=\ub124\ud2b8\uc6cc\ud06cID +comSymSymNwk.NtwrkList.ntwrkIp=IP +comSymSymNwk.NtwrkList.manageIem=\uad00\ub9ac\ud56d\ubaa9 +comSymSymNwk.NtwrkList.userNm=\uc0ac\uc6a9\uc790 +comSymSymNwk.NtwrkList.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comSymSymNwk.NtwrkList.regstYmd=\ub4f1\ub85d\uc77c\uc790 + + +comSymSymNwk.ntwrkDetail.title=\ub124\ud2b8\uc6cc\ud06c \uc0c1\uc138\uc870\ud68c +comSymSymNwk.ntwrkDetail.pageTop.title=\ub124\ud2b8\uc6cc\ud06c \uc0c1\uc138\uc870\ud68c +comSymSymNwk.ntwrkDetail.ntwrkId=\ub124\ud2b8\uc6cc\ud06cID +comSymSymNwk.ntwrkDetail.ntwrkIp=IP +comSymSymNwk.ntwrkDetail.gtwy=\uac8c\uc774\ud2b8\uc6e8\uc774 +comSymSymNwk.ntwrkDetail.subnet=\uc11c\ube0c\ub137 +comSymSymNwk.ntwrkDetail.domnServer=DNS +comSymSymNwk.ntwrkDetail.manageIem=\uad00\ub9ac\ud56d\ubaa9 +comSymSymNwk.ntwrkDetail.userNm=\uc0ac\uc6a9\uc790\uba85 +comSymSymNwk.ntwrkDetail.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comSymSymNwk.ntwrkDetail.regstYmd=\ub4f1\ub85d\uc77c\uc790 + + +comSymSymNwk.ntwrkUpdt.title=\ub124\ud2b8\uc6cc\ud06c \uc218\uc815 +comSymSymNwk.ntwrkUpdt.pageTop.title=\ub124\ud2b8\uc6cc\ud06c \uc218\uc815 +comSymSymNwk.ntwrkUpdt.ntwrkId=\ub124\ud2b8\uc6cc\ud06cID +comSymSymNwk.ntwrkUpdt.ntwrkIp=IP +comSymSymNwk.ntwrkUpdt.gtwy=\uac8c\uc774\ud2b8\uc6e8\uc774 +comSymSymNwk.ntwrkUpdt.subnet=\uc11c\ube0c\ub137 +comSymSymNwk.ntwrkUpdt.domnServer=DNS +comSymSymNwk.ntwrkUpdt.manageIem=\uad00\ub9ac\ud56d\ubaa9 +comSymSymNwk.ntwrkUpdt.userNm=\uc0ac\uc6a9\uc790\uba85 +comSymSymNwk.ntwrkUpdt.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comSymSymNwk.ntwrkUpdt.regstYmd=\ub4f1\ub85d\uc77c\uc790 +comSymSymNwk.ntwrkUpdt.validate.save=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymSymNwk.ntwrkUpdt.validate.delete=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymSymNwk.ntwrkUpdt.validate.ip.notAllowed=\uc608\uc678 \uc544\uc774\ud53c \uc785\ub2c8\ub2e4. +comSymSymNwk.ntwrkUpdt.validate.ip.formatMismatch=IP \ud615\uc2dd\uc774 \uc77c\uce58 \ud558\uc9c0\uc54a\uc2b5\ub2c8\ub2e4. + + +comSymSymNwk.ntwrkRegist.title=\ub124\ud2b8\uc6cc\ud06c \ub4f1\ub85d +comSymSymNwk.ntwrkRegist.pageTop.title=\ub124\ud2b8\uc6cc\ud06c \ub4f1\ub85d +comSymSymNwk.ntwrkRegist.ntwrkId=\ub124\ud2b8\uc6cc\ud06cID +comSymSymNwk.ntwrkRegist.ntwrkIp=IP +comSymSymNwk.ntwrkRegist.gtwy=\uac8c\uc774\ud2b8\uc6e8\uc774 +comSymSymNwk.ntwrkRegist.subnet=\uc11c\ube0c\ub137 +comSymSymNwk.ntwrkRegist.domnServer=DNS +comSymSymNwk.ntwrkRegist.manageIem=\uad00\ub9ac\ud56d\ubaa9 +comSymSymNwk.ntwrkRegist.userNm=\uc0ac\uc6a9\uc790\uba85 +comSymSymNwk.ntwrkRegist.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comSymSymNwk.ntwrkRegist.regstYmd=\ub4f1\ub85d\uc77c\uc790 +comSymSymNwk.ntwrkRegist.validate.save=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymSymNwk.ntwrkRegist.validate.delete=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymSymNwk.ntwrkRegist.validate.ip.notAllowed=\uc608\uc678 \uc544\uc774\ud53c \uc785\ub2c8\ub2e4. +comSymSymNwk.ntwrkRegist.validate.ip.formatMismatch=IP \ud615\uc2dd\uc774 \uc77c\uce58 \ud558\uc9c0\uc54a\uc2b5\ub2c8\ub2e4. + + + + + diff --git a/src/main/resources/egovframework/message/com/sym/sym/srv/message_en.properties b/src/main/resources/egovframework/message/com/sym/sym/srv/message_en.properties new file mode 100644 index 00000000..419629df --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/sym/srv/message_en.properties @@ -0,0 +1,138 @@ +# EgovServer.xml +comSymSymSrv.server.validate.serverNm=Server Name +comSymSymSrv.server.validate.regstYmd=Registration Date + +# EgovServerEqpmn.xml +comSymSymSrv.serverEqpmn.validate.serverEqpmnNm=Name of server equipment +comSymSymSrv.serverEqpmn.validate.serverEqpmnIp=Server Equipment IP +comSymSymSrv.serverEqpmn.validate.serverEqpmnMngrNm=Manager +comSymSymSrv.serverEqpmn.validate.mngrEmailAddr=Admin email address +comSymSymSrv.serverEqpmn.validate.opersysmInfo=OS information +comSymSymSrv.serverEqpmn.validate.cpuInfo=CPU Information +comSymSymSrv.serverEqpmn.validate.moryInfo=Memory information +comSymSymSrv.serverEqpmn.validate.hdDisk=Hard disk +comSymSymSrv.serverEqpmn.validate.regstYmd=Registration Date + + +comSymSymSrv.serverEqpmnList.title=Server Equipment List +comSymSymSrv.serverEqpmnList.pageTop.title=Server H/W Management +comSymSymSrv.serverEqpmnList.caption=Server H/W Management +comSymSymSrv.serverEqpmnList.serverEqpmnId=Server H/W ID +comSymSymSrv.serverEqpmnList.serverEqpmnNm=Server H/W Name +comSymSymSrv.serverEqpmnList.serverEqpmnIp=Server H/W IP +comSymSymSrv.serverEqpmnList.serverEqpmnMngrNm=Manager +comSymSymSrv.serverEqpmnList.regstYmd=Registration Date + + +comSymSymSrv.serverEqpmnDetail.title=Detailed View Of Server Equipment +comSymSymSrv.serverEqpmnDetail.pageTop.title=Detailed View Of Server H/W +comSymSymSrv.serverEqpmnDetail.serverEqpmnId=Server H/W ID +comSymSymSrv.serverEqpmnDetail.serverEqpmnNm=Server H/W Name +comSymSymSrv.serverEqpmnDetail.serverEqpmnIp=Server H/W IP +comSymSymSrv.serverEqpmnDetail.serverEqpmnMngrNm=Manager +comSymSymSrv.serverEqpmnDetail.mngrEmailAddr=Manager email +comSymSymSrv.serverEqpmnDetail.opersysmInfo=OS Information +comSymSymSrv.serverEqpmnDetail.cpuInfo=CPU Information +comSymSymSrv.serverEqpmnDetail.moryInfo=Memory Information +comSymSymSrv.serverEqpmnDetail.hdDisk=Hard Disk +comSymSymSrv.serverEqpmnDetail.etcInfo=Other information +comSymSymSrv.serverEqpmnDetail.regstYmd=Registration Date + + +comSymSymSrv.serverEqpmnUpdt.title=Modify Server Equipment +comSymSymSrv.serverEqpmnUpdt.pageTop.title=Modify Server H/W +comSymSymSrv.serverEqpmnUpdt.serverEqpmnId=Server H/W ID +comSymSymSrv.serverEqpmnUpdt.serverEqpmnNm=Server H/W Name +comSymSymSrv.serverEqpmnUpdt.serverEqpmnIp=Server H/W IP +comSymSymSrv.serverEqpmnUpdt.serverEqpmnMngrNm=Manager +comSymSymSrv.serverEqpmnUpdt.mngrEmailAddr=Manager email +comSymSymSrv.serverEqpmnUpdt.opersysmInfo=OS Information +comSymSymSrv.serverEqpmnUpdt.cpuInfo=CPU Information +comSymSymSrv.serverEqpmnUpdt.moryInfo=Memory Information +comSymSymSrv.serverEqpmnUpdt.hdDisk=Hard Disk +comSymSymSrv.serverEqpmnUpdt.etcInfo=Other information +comSymSymSrv.serverEqpmnUpdt.regstYmd=Registration Date +comSymSymSrv.serverEqpmnUpdt.validate.ip.notAllowed=An unacceptable ip. +comSymSymSrv.serverEqpmnUpdt.validate.save=Do you want to save it? +comSymSymSrv.serverEqpmnUpdt.validate.delete=Are you sure you want to delete? +comSymSymSrv.serverEqpmnUpdt.validate.ip.formatMismatch=IP format mismatch. + + +comSymSymSrv.serverEqpmnRegist.title=Register Server Equipment +comSymSymSrv.serverEqpmnRegist.pageTop.title=Register Server H/W +comSymSymSrv.serverEqpmnRegist.serverEqpmnNm=Server H/W Name +comSymSymSrv.serverEqpmnRegist.serverEqpmnIp=Server H/W IP +comSymSymSrv.serverEqpmnRegist.serverEqpmnMngrNm=Manager +comSymSymSrv.serverEqpmnRegist.mngrEmailAddr=Manager email +comSymSymSrv.serverEqpmnRegist.opersysmInfo=OS Information +comSymSymSrv.serverEqpmnRegist.cpuInfo=CPU Information +comSymSymSrv.serverEqpmnRegist.moryInfo=Memory Information +comSymSymSrv.serverEqpmnRegist.hdDisk=Hard Disk +comSymSymSrv.serverEqpmnRegist.etcInfo=Other information +comSymSymSrv.serverEqpmnRegist.regstYmd=Registration Date +comSymSymSrv.serverEqpmnRegist.validate.save=Do you want to save it? +comSymSymSrv.serverEqpmnRegist.validate.ip.notAllowed=The exception is the IP address. +comSymSymSrv.serverEqpmnRegist.validate.ip.formatMismatch=IP format mismatch. +comSymSymSrv.serverEqpmnRegist.validate.email.formatMismatch=Invalid email address. + + +comSymSymSrv.serverList.title=View Server List +comSymSymSrv.serverList.pageTop.title=Server S/W Management +comSymSymSrv.serverList.serverId=Server S/W ID +comSymSymSrv.serverList.serverNm=Server S/W Name +comSymSymSrv.serverList.serverKndNm=Server S/W Type +comSymSymSrv.serverList.regstYmd=Registration Date +comSymSymSrv.serverList.regServerHW=Server H/W Registration + + +comSymSymSrv.serverEqpmnRelateRegist.title=Server H/W Relationship Registration +comSymSymSrv.serverEqpmnRelateRegist.pageTop.title=Server H/W Registration +comSymSymSrv.serverEqpmnRelateRegist.validate.noServer=There is no changed server H/W. +comSymSymSrv.serverEqpmnRelateRegist.validate.noResults=No query results found. +comSymSymSrv.serverEqpmnRelateRegist.validate.save=Do you want to save it? +comSymSymSrv.serverEqpmnRelateRegist.serverEqpmnId=Server H/W ID +comSymSymSrv.serverEqpmnRelateRegist.serverEqpmnNm=Server H/W Name +comSymSymSrv.serverEqpmnRelateRegist.serverEqpmnIp=Server H/W IP +comSymSymSrv.serverEqpmnRelateRegist.serverEqpmnMngrNm=Manager +comSymSymSrv.serverEqpmnRelateRegist.regYn=Registration Status +comSymSymSrv.serverEqpmnRelateRegist.regYn.Y=Registered +comSymSymSrv.serverEqpmnRelateRegist.regYn.N=Unregistered + + +comSymSymSrv.serverDetail.title=Detailed Information Of Server Information +comSymSymSrv.serverDetail.pageTop.title1=Detailed View Of S/W +comSymSymSrv.serverDetail.serverId=Server S/W ID +comSymSymSrv.serverDetail.serverNm=Server S/W Name +comSymSymSrv.serverDetail.serverKndNm=Server S/W Type +comSymSymSrv.serverDetail.regstYmd=Registration Date +comSymSymSrv.serverDetail.pageTop.title2=Server H/W List +comSymSymSrv.serverDetail.serverEqpmnNm=Server H/W Name +comSymSymSrv.serverDetail.serverEqpmnIp=Server H/W IP +comSymSymSrv.serverDetail.cpuInfo=CPU Information +comSymSymSrv.serverDetail.moryInfo=Memory Information +comSymSymSrv.serverDetail.serverEqpmnMngrNm=Manager +comSymSymSrv.serverDetail.opersysmInfo=OS Information +comSymSymSrv.serverDetail.hdDisk=Hard Disk +comSymSymSrv.serverDetail.etcInfo=Other information + + +comSymSymSrv.serverUpdt.title=Edit Server Information +comSymSymSrv.serverUpdt.pageTop.title=Modify Server Software +comSymSymSrv.serverUpdt.validate.save=Do you want to save it? +comSymSymSrv.serverUpdt.validate.delete=Are you sure you want to delete? +comSymSymSrv.serverUpdt.serverId=Server S/W ID +comSymSymSrv.serverUpdt.serverNm=Server S/W Name +comSymSymSrv.serverUpdt.serverKndNm=Server S/W Type +comSymSymSrv.serverUpdt.regstYmd=Registration Date + + +comSymSymSrv.serverRegist.title=Server Information Registration +comSymSymSrv.serverRegist.pageTop.title=Server Software Registration +comSymSymSrv.serverRegist.serverNm=Server S/W Name +comSymSymSrv.serverRegist.serverKndNm=Server S/W Type +comSymSymSrv.serverRegist.regstYmd=Registration Date +comSymSymSrv.serverRegist.validate.save=Do you want to save it? + + + + diff --git a/src/main/resources/egovframework/message/com/sym/sym/srv/message_ko.properties b/src/main/resources/egovframework/message/com/sym/sym/srv/message_ko.properties new file mode 100644 index 00000000..763e1420 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/sym/srv/message_ko.properties @@ -0,0 +1,138 @@ +# EgovServer.xml +comSymSymSrv.server.validate.serverNm=\uc11c\ubc84\uba85 +comSymSymSrv.server.validate.regstYmd=\ub4f1\ub85d\uc77c\uc790 + +# EgovServerEqpmn.xml +comSymSymSrv.serverEqpmn.validate.serverEqpmnNm=\uc11c\ubc84\uc7a5\ube44\uba85 +comSymSymSrv.serverEqpmn.validate.serverEqpmnIp=\uc11c\ubc84\uc7a5\ube44IP +comSymSymSrv.serverEqpmn.validate.serverEqpmnMngrNm=\uad00\ub9ac\uc790 +comSymSymSrv.serverEqpmn.validate.mngrEmailAddr=\uad00\ub9ac\uc790\uc774\uba54\uc77c\uc8fc\uc18c +comSymSymSrv.serverEqpmn.validate.opersysmInfo=OS\uc815\ubcf4 +comSymSymSrv.serverEqpmn.validate.cpuInfo=CPU\uc815\ubcf4 +comSymSymSrv.serverEqpmn.validate.moryInfo=\uba54\ubaa8\ub9ac\uc815\ubcf4 +comSymSymSrv.serverEqpmn.validate.hdDisk=\ud558\ub4dc\ub514\uc2a4\ud06c +comSymSymSrv.serverEqpmn.validate.regstYmd=\ub4f1\ub85d\uc77c\uc790 + + +comSymSymSrv.serverEqpmnList.title=\uc11c\ubc84\uc7a5\ube44 \ubaa9\ub85d\uc870\ud68c +comSymSymSrv.serverEqpmnList.pageTop.title=\uc11c\ubc84H/W \uad00\ub9ac +comSymSymSrv.serverEqpmnList.caption=\uc11c\ubc84H/W \uad00\ub9ac +comSymSymSrv.serverEqpmnList.serverEqpmnId=\uc11c\ubc84H/W ID +comSymSymSrv.serverEqpmnList.serverEqpmnNm=\uc11c\ubc84H/W \uba85 +comSymSymSrv.serverEqpmnList.serverEqpmnIp=\uc11c\ubc84H/W IP +comSymSymSrv.serverEqpmnList.serverEqpmnMngrNm=\uad00\ub9ac\uc790 +comSymSymSrv.serverEqpmnList.regstYmd=\ub4f1\ub85d\uc77c\uc790 + + +comSymSymSrv.serverEqpmnDetail.title=\uc11c\ubc84\uc7a5\ube44 \uc0c1\uc138\uc870\ud68c +comSymSymSrv.serverEqpmnDetail.pageTop.title=\uc11c\ubc84H/W \uc0c1\uc138\uc870\ud68c +comSymSymSrv.serverEqpmnDetail.serverEqpmnId=\uc11c\ubc84H/W ID +comSymSymSrv.serverEqpmnDetail.serverEqpmnNm=\uc11c\ubc84H/W \uba85 +comSymSymSrv.serverEqpmnDetail.serverEqpmnIp=\uc11c\ubc84H/W IP +comSymSymSrv.serverEqpmnDetail.serverEqpmnMngrNm=\uad00\ub9ac\uc790 +comSymSymSrv.serverEqpmnDetail.mngrEmailAddr=\uad00\ub9ac\uc790\uc774\uba54\uc77c\uc8fc\uc18c +comSymSymSrv.serverEqpmnDetail.opersysmInfo=OS\uc815\ubcf4 +comSymSymSrv.serverEqpmnDetail.cpuInfo=CPU\uc815\ubcf4 +comSymSymSrv.serverEqpmnDetail.moryInfo=\uba54\ubaa8\ub9ac\uc815\ubcf4 +comSymSymSrv.serverEqpmnDetail.hdDisk=\ud558\ub4dc\ub514\uc2a4\ud06c +comSymSymSrv.serverEqpmnDetail.etcInfo=\uae30\ud0c0\uc815\ubcf4 +comSymSymSrv.serverEqpmnDetail.regstYmd=\ub4f1\ub85d\uc77c\uc790 + + +comSymSymSrv.serverEqpmnUpdt.title=\uc11c\ubc84\uc7a5\ube44 \uc218\uc815 +comSymSymSrv.serverEqpmnUpdt.pageTop.title=\uc11c\ubc84H/W \uc218\uc815 +comSymSymSrv.serverEqpmnUpdt.serverEqpmnId=\uc11c\ubc84H/W ID +comSymSymSrv.serverEqpmnUpdt.serverEqpmnNm=\uc11c\ubc84H/W \uba85 +comSymSymSrv.serverEqpmnUpdt.serverEqpmnIp=\uc11c\ubc84H/W IP +comSymSymSrv.serverEqpmnUpdt.serverEqpmnMngrNm=\uad00\ub9ac\uc790 +comSymSymSrv.serverEqpmnUpdt.mngrEmailAddr=\uad00\ub9ac\uc790\uc774\uba54\uc77c\uc8fc\uc18c +comSymSymSrv.serverEqpmnUpdt.opersysmInfo=OS\uc815\ubcf4 +comSymSymSrv.serverEqpmnUpdt.cpuInfo=CPU\uc815\ubcf4 +comSymSymSrv.serverEqpmnUpdt.moryInfo=\uba54\ubaa8\ub9ac\uc815\ubcf4 +comSymSymSrv.serverEqpmnUpdt.hdDisk=\ud558\ub4dc\ub514\uc2a4\ud06c +comSymSymSrv.serverEqpmnUpdt.etcInfo=\uae30\ud0c0\uc815\ubcf4 +comSymSymSrv.serverEqpmnUpdt.regstYmd=\ub4f1\ub85d\uc77c\uc790 +comSymSymSrv.serverEqpmnUpdt.validate.ip.notAllowed=\uc608\uc678 \uc544\uc774\ud53c \uc785\ub2c8\ub2e4. +comSymSymSrv.serverEqpmnUpdt.validate.save=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymSymSrv.serverEqpmnUpdt.validate.delete=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymSymSrv.serverEqpmnUpdt.validate.ip.formatMismatch=IP \ud615\uc2dd\uc774 \uc77c\uce58 \ud558\uc9c0\uc54a\uc2b5\ub2c8\ub2e4. + + +comSymSymSrv.serverEqpmnRegist.title=\uc11c\ubc84\uc7a5\ube44 \ub4f1\ub85d +comSymSymSrv.serverEqpmnRegist.pageTop.title=\uc11c\ubc84H/W \ub4f1\ub85d +comSymSymSrv.serverEqpmnRegist.serverEqpmnNm=\uc11c\ubc84H/W \uba85 +comSymSymSrv.serverEqpmnRegist.serverEqpmnIp=\uc11c\ubc84H/W IP +comSymSymSrv.serverEqpmnRegist.serverEqpmnMngrNm=\uad00\ub9ac\uc790 +comSymSymSrv.serverEqpmnRegist.mngrEmailAddr=\uad00\ub9ac\uc790\uc774\uba54\uc77c\uc8fc\uc18c +comSymSymSrv.serverEqpmnRegist.opersysmInfo=OS\uc815\ubcf4 +comSymSymSrv.serverEqpmnRegist.cpuInfo=CPU\uc815\ubcf4 +comSymSymSrv.serverEqpmnRegist.moryInfo=\uba54\ubaa8\ub9ac\uc815\ubcf4 +comSymSymSrv.serverEqpmnRegist.hdDisk=\ud558\ub4dc\ub514\uc2a4\ud06c +comSymSymSrv.serverEqpmnRegist.etcInfo=\uae30\ud0c0\uc815\ubcf4 +comSymSymSrv.serverEqpmnRegist.regstYmd=\ub4f1\ub85d\uc77c\uc790 +comSymSymSrv.serverEqpmnRegist.validate.save=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymSymSrv.serverEqpmnRegist.validate.ip.notAllowed=\uc608\uc678 \uc544\uc774\ud53c \uc785\ub2c8\ub2e4. +comSymSymSrv.serverEqpmnRegist.validate.ip.formatMismatch=IP \ud615\uc2dd\uc774 \uc77c\uce58 \ud558\uc9c0\uc54a\uc2b5\ub2c8\ub2e4. +comSymSymSrv.serverEqpmnRegist.validate.email.formatMismatch=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc774\uba54\uc77c \uc8fc\uc18c\uc785\ub2c8\ub2e4. + + +comSymSymSrv.serverList.title=\uc11c\ubc84 \ubaa9\ub85d\uc870\ud68c +comSymSymSrv.serverList.pageTop.title=\uc11c\ubc84S/W \uad00\ub9ac +comSymSymSrv.serverList.serverId=\uc11c\ubc84S/W ID +comSymSymSrv.serverList.serverNm=\uc11c\ubc84S/W \uba85 +comSymSymSrv.serverList.serverKndNm=\uc11c\ubc84S/W \uc885\ub958 +comSymSymSrv.serverList.regstYmd=\ub4f1\ub85d\uc77c\uc790 +comSymSymSrv.serverList.regServerHW=\uc11c\ubc84H/W \ub4f1\ub85d + + +comSymSymSrv.serverEqpmnRelateRegist.title=\uc11c\ubc84H/W\uad00\uacc4 \ub4f1\ub85d +comSymSymSrv.serverEqpmnRelateRegist.pageTop.title=\uc11c\ubc84H/W \ub4f1\ub85d +comSymSymSrv.serverEqpmnRelateRegist.validate.noServer=\ubcc0\uacbd\ub41c \uc11c\ubc84H/W\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +comSymSymSrv.serverEqpmnRelateRegist.validate.noResults=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +comSymSymSrv.serverEqpmnRelateRegist.validate.save=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymSymSrv.serverEqpmnRelateRegist.serverEqpmnId=\uc11c\ubc84H/W ID +comSymSymSrv.serverEqpmnRelateRegist.serverEqpmnNm=\uc11c\ubc84H/W \uba85 +comSymSymSrv.serverEqpmnRelateRegist.serverEqpmnIp=\uc11c\ubc84H/W IP +comSymSymSrv.serverEqpmnRelateRegist.serverEqpmnMngrNm=\uad00\ub9ac\uc790 +comSymSymSrv.serverEqpmnRelateRegist.regYn=\ub4f1\ub85d\uc5ec\ubd80 +comSymSymSrv.serverEqpmnRelateRegist.regYn.Y=\ub4f1\ub85d +comSymSymSrv.serverEqpmnRelateRegist.regYn.N=\ubbf8\ub4f1\ub85d + + +comSymSymSrv.serverDetail.title=\uc11c\ubc84\uc815\ubcf4 \uc0c1\uc138\uc870\ud68c +comSymSymSrv.serverDetail.pageTop.title1=\uc11c\ubc84S/W \uc0c1\uc138\uc870\ud68c +comSymSymSrv.serverDetail.serverId=\uc11c\ubc84S/W ID +comSymSymSrv.serverDetail.serverNm=\uc11c\ubc84S/W \uba85 +comSymSymSrv.serverDetail.serverKndNm=\uc11c\ubc84S/W \uc885\ub958 +comSymSymSrv.serverDetail.regstYmd=\ub4f1\ub85d\uc77c\uc790 +comSymSymSrv.serverDetail.pageTop.title2=\uc11c\ubc84H/W \ubaa9\ub85d +comSymSymSrv.serverDetail.serverEqpmnNm=\uc11c\ubc84H/W \uba85 +comSymSymSrv.serverDetail.serverEqpmnIp=\uc11c\ubc84H/W IP +comSymSymSrv.serverDetail.cpuInfo=CPU\uc815\ubcf4 +comSymSymSrv.serverDetail.moryInfo=\uba54\ubaa8\ub9ac\uc815\ubcf4 +comSymSymSrv.serverDetail.serverEqpmnMngrNm=\uad00\ub9ac\uc790 +comSymSymSrv.serverDetail.opersysmInfo=OS\uc815\ubcf4 +comSymSymSrv.serverDetail.hdDisk=\ud558\ub4dc\ub514\uc2a4\ud06c +comSymSymSrv.serverDetail.etcInfo=\uae30\ud0c0\uc815\ubcf4 + + +comSymSymSrv.serverUpdt.title=\uc11c\ubc84\uc815\ubcf4 \uc218\uc815 +comSymSymSrv.serverUpdt.pageTop.title=\uc11c\ubc84S/W \uc218\uc815 +comSymSymSrv.serverUpdt.validate.save=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymSymSrv.serverUpdt.validate.delete=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymSymSrv.serverUpdt.serverId=\uc11c\ubc84S/W ID +comSymSymSrv.serverUpdt.serverNm=\uc11c\ubc84S/W \uba85 +comSymSymSrv.serverUpdt.serverKndNm=\uc11c\ubc84S/W \uc885\ub958 +comSymSymSrv.serverUpdt.regstYmd=\ub4f1\ub85d\uc77c\uc790 + + +comSymSymSrv.serverRegist.title=\uc11c\ubc84\uc815\ubcf4 \ub4f1\ub85d +comSymSymSrv.serverRegist.pageTop.title=\uc11c\ubc84S/W \ub4f1\ub85d +comSymSymSrv.serverRegist.serverNm=\uc11c\ubc84S/W \uba85 +comSymSymSrv.serverRegist.serverKndNm=\uc11c\ubc84S/W \uc885\ub958 +comSymSymSrv.serverRegist.regstYmd=\ub4f1\ub85d\uc77c\uc790 +comSymSymSrv.serverRegist.validate.save=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + + + + diff --git a/src/main/resources/egovframework/message/com/sym/tbm/tbp/message_en.properties b/src/main/resources/egovframework/message/com/sym/tbm/tbp/message_en.properties new file mode 100644 index 00000000..f1169adf --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/tbm/tbp/message_en.properties @@ -0,0 +1,34 @@ + +comSymTbmTbp.troblProcessList.title=Trouble Processing Management +comSymTbmTbp.troblProcessList.pageTop.title=Trouble Processing Management +comSymTbmTbp.troblProcessList.caption=Trouble Processing Management List +comSymTbmTbp.troblProcessList.strTroblKnd.all=All +comSymTbmTbp.troblProcessList.troblId=Trouble ID +comSymTbmTbp.troblProcessList.troblNm=Trouble Name +comSymTbmTbp.troblProcessList.troblKndNm=Trouble Type +comSymTbmTbp.troblProcessList.troblOccrrncTime=Occurrence Time +comSymTbmTbp.troblProcessList.troblRqesterNm=Registrant +comSymTbmTbp.troblProcessList.processSttusNm=Processing Status + + +comSymTbmTbp.troblProcessRegist.title=Trouble processing result registration +comSymTbmTbp.troblProcessRegist.pageTop.title=Trouble processing result registration +comSymTbmTbp.troblProcessRegist.validate.infoTime=The processing time must be set after the failure request time. +comSymTbmTbp.troblProcessRegist.validate.save=Do you want to save it? +comSymTbmTbp.troblProcessRegist.validate.delete=Are you sure you want to delete? +comSymTbmTbp.troblProcessRegist.troblId=Trouble ID +comSymTbmTbp.troblProcessRegist.troblNm=Trouble Name +comSymTbmTbp.troblProcessRegist.troblKndNm=Trouble Type +comSymTbmTbp.troblProcessRegist.troblDc=Trouble Description +comSymTbmTbp.troblProcessRegist.troblOccrrncTime=Occurrence Time +comSymTbmTbp.troblProcessRegist.troblRqesterNm=Registrant +comSymTbmTbp.troblProcessRegist.troblRequstTime=Trouble Processing Request Time +comSymTbmTbp.troblProcessRegist.processSttusNm=Processing Status +comSymTbmTbp.troblProcessRegist.troblProcessResult=Processing Result +comSymTbmTbp.troblProcessRegist.troblProcessD=Processing Time +comSymTbmTbp.troblProcessRegist.troblOpetrNm=Handler +comSymTbmTbp.troblProcessRegist.hour=Hour +comSymTbmTbp.troblProcessRegist.minute=Minute +comSymTbmTbp.troblProcessRegist.second=Second + + diff --git a/src/main/resources/egovframework/message/com/sym/tbm/tbp/message_ko.properties b/src/main/resources/egovframework/message/com/sym/tbm/tbp/message_ko.properties new file mode 100644 index 00000000..f4f3e865 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/tbm/tbp/message_ko.properties @@ -0,0 +1,34 @@ + +comSymTbmTbp.troblProcessList.title=\uc7a5\uc560\ucc98\ub9ac \uad00\ub9ac +comSymTbmTbp.troblProcessList.pageTop.title=\uc7a5\uc560\ucc98\ub9ac \uad00\ub9ac +comSymTbmTbp.troblProcessList.caption=\uc7a5\uc560\ucc98\ub9ac \uad00\ub9ac \ubaa9\ub85d +comSymTbmTbp.troblProcessList.strTroblKnd.all=\uc804\uccb4 +comSymTbmTbp.troblProcessList.troblId=\uc7a5\uc560ID +comSymTbmTbp.troblProcessList.troblNm=\uc7a5\uc560\uba85 +comSymTbmTbp.troblProcessList.troblKndNm=\uc7a5\uc560\uc885\ub958 +comSymTbmTbp.troblProcessList.troblOccrrncTime=\uc7a5\uc560\ubc1c\uc0dd\uc2dc\uac04 +comSymTbmTbp.troblProcessList.troblRqesterNm=\ub4f1\ub85d\uc790 +comSymTbmTbp.troblProcessList.processSttusNm=\ucc98\ub9ac\uc0c1\ud0dc + + +comSymTbmTbp.troblProcessRegist.title=\uc7a5\uc560\ucc98\ub9ac\uacb0\uacfc \ub4f1\ub85d +comSymTbmTbp.troblProcessRegist.pageTop.title=\uc7a5\uc560\ucc98\ub9ac\uacb0\uacfc \ub4f1\ub85d +comSymTbmTbp.troblProcessRegist.validate.infoTime=\ucc98\ub9ac\uc2dc\uac04\uc740 \uc7a5\uc560\uc694\uccad\uc2dc\uac04 \uc774\ud6c4\ub85c \uc124\uc815\ud558\uc154\uc57c \ud569\ub2c8\ub2e4. +comSymTbmTbp.troblProcessRegist.validate.save=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymTbmTbp.troblProcessRegist.validate.delete=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymTbmTbp.troblProcessRegist.troblId=\uc7a5\uc560ID +comSymTbmTbp.troblProcessRegist.troblNm=\uc7a5\uc560\uba85 +comSymTbmTbp.troblProcessRegist.troblKndNm=\uc7a5\uc560\uc885\ub958 +comSymTbmTbp.troblProcessRegist.troblDc=\uc7a5\uc560\uc124\uba85 +comSymTbmTbp.troblProcessRegist.troblOccrrncTime=\uc7a5\uc560\ubc1c\uc0dd\uc2dc\uac04 +comSymTbmTbp.troblProcessRegist.troblRqesterNm=\uc7a5\uc560\ub4f1\ub85d\uc790 +comSymTbmTbp.troblProcessRegist.troblRequstTime=\uc7a5\uc560\uc694\uccad\uc2dc\uac04 +comSymTbmTbp.troblProcessRegist.processSttusNm=\ucc98\ub9ac\uc0c1\ud0dc +comSymTbmTbp.troblProcessRegist.troblProcessResult=\ucc98\ub9ac\uacb0\uacfc +comSymTbmTbp.troblProcessRegist.troblProcessD=\ucc98\ub9ac\uc2dc\uac04 +comSymTbmTbp.troblProcessRegist.troblOpetrNm=\ucc98\ub9ac\uc790 +comSymTbmTbp.troblProcessRegist.hour=\uc2dc +comSymTbmTbp.troblProcessRegist.minute=\ubd84 +comSymTbmTbp.troblProcessRegist.second=\ucd08 + + diff --git a/src/main/resources/egovframework/message/com/sym/tbm/tbr/message_en.properties b/src/main/resources/egovframework/message/com/sym/tbm/tbr/message_en.properties new file mode 100644 index 00000000..68617aaa --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/tbm/tbr/message_en.properties @@ -0,0 +1,65 @@ + +comSymTbmTbr.troblReqstList.title=Trouble Application List +comSymTbmTbr.troblReqstList.pageTop.title=Trouble Application Management +comSymTbmTbr.troblReqstList.troblId=Trouble ID +comSymTbmTbr.troblReqstList.troblNm=Trouble Name +comSymTbmTbr.troblReqstList.troblKndNm=Trouble Type +comSymTbmTbr.troblReqstList.troblOccrrncTime=Trouble Time +comSymTbmTbr.troblReqstList.troblRqesterNm=Registrant +comSymTbmTbr.troblReqstList.processSttusNm=Processing Status +comSymTbmTbr.troblReqstList.selectAll=All + + +comSymTbmTbr.troblReqstDetail.title=Detailed View Of Trouble Application +comSymTbmTbr.troblReqstDetail.pageTop.title=Detailed View Of Trouble Application +comSymTbmTbr.troblReqstDetail.validate.=Can not edit. +comSymTbmTbr.troblReqstDetail.validate.=It can not be deleted. +comSymTbmTbr.troblReqstDetail.validate.=Are you sure you want to delete? +comSymTbmTbr.troblReqstDetail.validate.=This is not a request. +comSymTbmTbr.troblReqstDetail.validate.request=Would you like to request it? +comSymTbmTbr.troblReqstDetail.validate.=This request is not subject to cancellation. +comSymTbmTbr.troblReqstDetail.validate.=Are you sure you want to cancel the request? +comSymTbmTbr.troblReqstDetail.troblId=Trouble ID +comSymTbmTbr.troblReqstDetail.troblNm=Trouble Name +comSymTbmTbr.troblReqstDetail.troblKndNm=Trouble Type +comSymTbmTbr.troblReqstDetail.troblDc=Trouble Description +comSymTbmTbr.troblReqstDetail.troblOccrrncTime=Trouble Time +comSymTbmTbr.troblReqstDetail.troblRqesterNm=Trouble Registrant +comSymTbmTbr.troblReqstDetail.troblRequstTime=Trouble Processing Request Time +comSymTbmTbr.troblReqstDetail.processSttusNm=Processing Status +comSymTbmTbr.troblReqstDetail.troblProcessResult=Processing Result +comSymTbmTbr.troblReqstDetail.troblProcessTime=Processing Time +comSymTbmTbr.troblReqstDetail.troblOpetrNm=Failback Processor +comSymTbmTbr.troblReqstDetail.request=Request +comSymTbmTbr.troblReqstDetail.cancelRequest=Cancel request + + +comSymTbmTbr.troblReqstUpdt.title=Modify Trouble Application +comSymTbmTbr.troblReqstUpdt.pageTop.title=Modify Trouble Application +comSymTbmTbr.troblReqstUpdt.validate.info=Trouble time must be set before the current time. +comSymTbmTbr.troblReqstUpdt.validate.save=Do you want to save it? +comSymTbmTbr.troblReqstUpdt.validate.delete=Are you sure you want to delete? +comSymTbmTbr.troblReqstUpdt.troblId=Trouble ID +comSymTbmTbr.troblReqstUpdt.troblNm=Trouble Name +comSymTbmTbr.troblReqstUpdt.troblKnd=Trouble Type +comSymTbmTbr.troblReqstUpdt.troblDc=Trouble Description +comSymTbmTbr.troblReqstUpdt.troblOccrrncTime=Trouble Time +comSymTbmTbr.troblReqstUpdt.troblRqesterNm=Trouble Registrant +comSymTbmTbr.troblReqstUpdt.hour=Hour +comSymTbmTbr.troblReqstUpdt.minute=Minute +comSymTbmTbr.troblReqstUpdt.second=Second + + +comSymTbmTbr.troblReqstRegist.title=Modify Trouble Application +comSymTbmTbr.troblReqstRegist.pageTop.title=Modify Trouble Application +comSymTbmTbr.troblReqstRegist.validate.info=Trouble time must be set before the current time. +comSymTbmTbr.troblReqstRegist.validate.save=Do you want to save it? +comSymTbmTbr.troblReqstRegist.troblId=Trouble ID +comSymTbmTbr.troblReqstRegist.troblNm=Trouble Name +comSymTbmTbr.troblReqstRegist.troblKnd=Trouble Type +comSymTbmTbr.troblReqstRegist.troblDc=Trouble Description +comSymTbmTbr.troblReqstRegist.troblOccrrncTime=Trouble Time +comSymTbmTbr.troblReqstRegist.troblRqesterNm=Trouble Registrant +comSymTbmTbr.troblReqstRegist.hour=Hour +comSymTbmTbr.troblReqstRegist.minute=Minute +comSymTbmTbr.troblReqstRegist.second=Second diff --git a/src/main/resources/egovframework/message/com/sym/tbm/tbr/message_ko.properties b/src/main/resources/egovframework/message/com/sym/tbm/tbr/message_ko.properties new file mode 100644 index 00000000..005c7696 --- /dev/null +++ b/src/main/resources/egovframework/message/com/sym/tbm/tbr/message_ko.properties @@ -0,0 +1,81 @@ + +comSymTbmTbr.troblReqstList.title=\uc7a5\uc560\uc2e0\uccad \ubaa9\ub85d\uc870\ud68c +comSymTbmTbr.troblReqstList.pageTop.title=\uc7a5\uc560\uc2e0\uccad \uad00\ub9ac +comSymTbmTbr.troblReqstList.troblId=\uc7a5\uc560ID +comSymTbmTbr.troblReqstList.troblNm=\uc7a5\uc560\uba85 +comSymTbmTbr.troblReqstList.troblKndNm=\uc7a5\uc560\uc885\ub958 +comSymTbmTbr.troblReqstList.troblOccrrncTime=\uc7a5\uc560\ubc1c\uc0dd\uc2dc\uac04 +comSymTbmTbr.troblReqstList.troblRqesterNm=\ub4f1\ub85d\uc790 +comSymTbmTbr.troblReqstList.processSttusNm=\ucc98\ub9ac\uc0c1\ud0dc +comSymTbmTbr.troblReqstList.selectAll=\uc804\uccb4 + + +comSymTbmTbr.troblReqstDetail.title=\uc7a5\uc560\uc2e0\uccad \uc0c1\uc138\uc870\ud68c +comSymTbmTbr.troblReqstDetail.pageTop.title=\uc7a5\uc560\uc2e0\uccad \uc0c1\uc138\uc870\ud68c +comSymTbmTbr.troblReqstDetail.validate.=\uc218\uc815\ud560 \uc218 \uc5c6\ub294 \uc0c1\ud0dc\uc785\ub2c8\ub2e4. +comSymTbmTbr.troblReqstDetail.validate.=\uc0ad\uc81c\ud560 \uc218 \uc5c6\ub294 \uc0c1\ud0dc\uc785\ub2c8\ub2e4. +comSymTbmTbr.troblReqstDetail.validate.=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymTbmTbr.troblReqstDetail.validate.=\uc694\uccad \ub300\uc0c1\uc774 \uc544\ub2d9\ub2c8\ub2e4. +comSymTbmTbr.troblReqstDetail.validate.request=\uc694\uccad \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymTbmTbr.troblReqstDetail.validate.=\uc694\uccad\ucde8\uc18c \ub300\uc0c1\uc774 \uc544\ub2d9\ub2c8\ub2e4. +comSymTbmTbr.troblReqstDetail.validate.=\uc694\uccad\ucde8\uc18c\ub97c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymTbmTbr.troblReqstDetail.troblId=\uc7a5\uc560ID +comSymTbmTbr.troblReqstDetail.troblNm=\uc7a5\uc560\uba85 +comSymTbmTbr.troblReqstDetail.troblKndNm=\uc7a5\uc560\uc885\ub958 +comSymTbmTbr.troblReqstDetail.troblDc=\uc7a5\uc560\uc124\uba85 +comSymTbmTbr.troblReqstDetail.troblOccrrncTime=\uc7a5\uc560\ubc1c\uc0dd\uc2dc\uac04 +comSymTbmTbr.troblReqstDetail.troblRqesterNm=\uc7a5\uc560\ub4f1\ub85d\uc790 +comSymTbmTbr.troblReqstDetail.troblRequstTime=\uc7a5\uc560\uc694\uccad\uc2dc\uac04 +comSymTbmTbr.troblReqstDetail.processSttusNm=\ucc98\ub9ac\uc0c1\ud0dc +comSymTbmTbr.troblReqstDetail.troblProcessResult=\ucc98\ub9ac\uacb0\uacfc +comSymTbmTbr.troblReqstDetail.troblProcessTime=\ucc98\ub9ac\uc2dc\uac04 +comSymTbmTbr.troblReqstDetail.troblOpetrNm=\ucc98\ub9ac\uc790 +comSymTbmTbr.troblReqstDetail.request=\uc694\uccad +comSymTbmTbr.troblReqstDetail.cancelRequest=\uc694\uccad\ucde8\uc18c + + +comSymTbmTbr.troblReqstUpdt.title=\uc7a5\uc560\uc2e0\uccad \uc218\uc815 +comSymTbmTbr.troblReqstUpdt.pageTop.title=\uc7a5\uc560\uc2e0\uccad \uc218\uc815 +comSymTbmTbr.troblReqstUpdt.validate.=\uc7a5\uc560\ubc1c\uc0dd\uc2dc\uac04\uc740 \ud604\uc7ac\uc2dc\uac04 \uc774\uc804\uc73c\ub85c \uc124\uc815\ud558\uc154\uc57c \ud569\ub2c8\ub2e4. +comSymTbmTbr.troblReqstUpdt.validate.=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymTbmTbr.troblReqstUpdt.validate.=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymTbmTbr.troblReqstUpdt.troblId=\uc7a5\uc560ID +comSymTbmTbr.troblReqstUpdt.troblNm=\uc7a5\uc560\uba85 +comSymTbmTbr.troblReqstUpdt.troblKnd=\uc7a5\uc560\uc885\ub958 +comSymTbmTbr.troblReqstUpdt.troblDc=\uc7a5\uc560\uc124\uba85 +comSymTbmTbr.troblReqstUpdt.troblOccrrncTime=\uc7a5\uc560\ubc1c\uc0dd\uc2dc\uac04 +comSymTbmTbr.troblReqstUpdt.troblRqesterNm=\uc7a5\uc560\ub4f1\ub85d\uc790 +comSymTbmTbr.troblReqstUpdt.hour=\uc2dc +comSymTbmTbr.troblReqstUpdt.minute=\ubd84 +comSymTbmTbr.troblReqstUpdt.second=\ucd08 + + +comSymTbmTbr.troblReqstUpdt.title=\uc7a5\uc560\uc2e0\uccad \uc218\uc815 +comSymTbmTbr.troblReqstUpdt.pageTop.title=\uc7a5\uc560\uc2e0\uccad \uc218\uc815 +comSymTbmTbr.troblReqstUpdt.validate.info=\uc7a5\uc560\ubc1c\uc0dd\uc2dc\uac04\uc740 \ud604\uc7ac\uc2dc\uac04 \uc774\uc804\uc73c\ub85c \uc124\uc815\ud558\uc154\uc57c \ud569\ub2c8\ub2e4. +comSymTbmTbr.troblReqstUpdt.validate.save=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymTbmTbr.troblReqstUpdt.validate.delete=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymTbmTbr.troblReqstUpdt.troblId=\uc7a5\uc560ID +comSymTbmTbr.troblReqstUpdt.troblNm=\uc7a5\uc560\uba85 +comSymTbmTbr.troblReqstUpdt.troblKnd=\uc7a5\uc560\uc885\ub958 +comSymTbmTbr.troblReqstUpdt.troblDc=\uc7a5\uc560\uc124\uba85 +comSymTbmTbr.troblReqstUpdt.troblOccrrncTime=\uc7a5\uc560\ubc1c\uc0dd\uc2dc\uac04 +comSymTbmTbr.troblReqstUpdt.troblRqesterNm=\uc7a5\uc560\ub4f1\ub85d\uc790 +comSymTbmTbr.troblReqstUpdt.hour=\uc2dc +comSymTbmTbr.troblReqstUpdt.minute=\ubd84 +comSymTbmTbr.troblReqstUpdt.second=\ucd08 + + +comSymTbmTbr.troblReqstRegist.title=\uc7a5\uc560\uc2e0\uccad \ub4f1\ub85d +comSymTbmTbr.troblReqstRegist.pageTop.title=\uc7a5\uc560\uc2e0\uccad \ub4f1\ub85d +comSymTbmTbr.troblReqstRegist.validate.info=\uc7a5\uc560\ubc1c\uc0dd\uc2dc\uac04\uc740 \ud604\uc7ac\uc2dc\uac04 \uc774\uc804\uc73c\ub85c \uc124\uc815\ud558\uc154\uc57c \ud569\ub2c8\ub2e4. +comSymTbmTbr.troblReqstRegist.validate.save=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comSymTbmTbr.troblReqstRegist.troblId=\uc7a5\uc560ID +comSymTbmTbr.troblReqstRegist.troblNm=\uc7a5\uc560\uba85 +comSymTbmTbr.troblReqstRegist.troblKnd=\uc7a5\uc560\uc885\ub958 +comSymTbmTbr.troblReqstRegist.troblDc=\uc7a5\uc560\uc124\uba85 +comSymTbmTbr.troblReqstRegist.troblOccrrncTime=\uc7a5\uc560\ubc1c\uc0dd\uc2dc\uac04 +comSymTbmTbr.troblReqstRegist.troblRqesterNm=\uc7a5\uc560\ub4f1\ub85d\uc790 +comSymTbmTbr.troblReqstRegist.hour=\uc2dc +comSymTbmTbr.troblReqstRegist.minute=\ubd84 +comSymTbmTbr.troblReqstRegist.second=\ucd08 diff --git a/src/main/resources/egovframework/message/com/uat/uap/message_en.properties b/src/main/resources/egovframework/message/com/uat/uap/message_en.properties new file mode 100644 index 00000000..17cead77 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uat/uap/message_en.properties @@ -0,0 +1,45 @@ +# EgovLoginPolicy.xml +comUatUap.loginPolicy.validate.ipInfo=IP Information +comUatUap.loginPolicy.validate.lmttAt=IP Restricted + + +comUatUap.LoginPolicyList.title=Login Policy Management +comUatUap.LoginPolicyList.caption=Login Policy Management +comUatUap.LoginPolicyList.userName=User Name +comUatUap.LoginPolicyList.userNameSearch=User Name Search +comUatUap.LoginPolicyList.userId=User ID +comUatUap.LoginPolicyList.ipInfo=IP Infomation +comUatUap.LoginPolicyList.restricted=Restricted +comUatUap.LoginPolicyList.validate.checkCount=No login policies selected. +comUatUap.LoginPolicyList.validate.checkField=No query results found. +comUatUap.LoginPolicyList.validate.checkIds=Please register after viewing. +comUatUap.LoginPolicyList.validate.checkReg=You already have a sign-in policy. +comUatUap.LoginPolicyList.validate.checkedCounter.onlyOne=Please select only one to register. +comUatUap.LoginPolicyList.validate.checkedCounter.none=No registration target selected. +comUatUap.LoginPolicyList.validate.delete=Are you sure you want to delete? + + +comUatUap.loginPolicyUpdt.title=Login policy Modification +comUatUap.loginPolicyUpdt.pageTop.title=Login policy Modification +comUatUap.loginPolicyUpdt.emplyrId=User ID +comUatUap.loginPolicyUpdt.emplyrNm=User Name +comUatUap.loginPolicyUpdt.ipInfo=IP Information +comUatUap.loginPolicyUpdt.lmttAt=IP Restricted +comUatUap.loginPolicyUpdt.regDate=Registration Date +comUatUap.loginPolicyUpdt.validate.confirm.save=Do you want to save it? +comUatUap.loginPolicyUpdt.validate.confirm.delete=Are you sure you want to delete? +comUatUap.loginPolicyUpdt.validate.info.exceptionIP=The exception is the IP address. +comUatUap.loginPolicyUpdt.validate.info.invalidForm=The input format is not appropriate. + + +comUatUap.loginPolicyRegist.title=Login policy Registration +comUatUap.loginPolicyRegist.pageTop.title=Login policy Registration +comUatUap.loginPolicyRegist.emplyrId=User ID +comUatUap.loginPolicyRegist.emplyrNm=User Name +comUatUap.loginPolicyRegist.ipInfo=IP Information +comUatUap.loginPolicyRegist.lmttAt=IP Restricted +comUatUap.loginPolicyRegist.regDate=Registration Date +comUatUap.loginPolicyRegist.validate.confirm.save=Do you want to save it? +comUatUap.loginPolicyRegist.validate.confirm.delete=Are you sure you want to delete? +comUatUap.loginPolicyRegist.validate.info.exceptionIP=The exception is the IP address. +comUatUap.loginPolicyRegist.validate.info.invalidForm=The input format is not appropriate. diff --git a/src/main/resources/egovframework/message/com/uat/uap/message_ko.properties b/src/main/resources/egovframework/message/com/uat/uap/message_ko.properties new file mode 100644 index 00000000..770020c9 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uat/uap/message_ko.properties @@ -0,0 +1,46 @@ +# EgovLoginPolicy.xml +comUatUap.loginPolicy.validate.ipInfo=IP\uc815\ubcf4 +comUatUap.loginPolicy.validate.lmttAt=IP\uc81c\ud55c\uc5ec\ubd80 + + +comUatUap.LoginPolicyList.title=\ub85c\uadf8\uc778\uc815\ucc45 \ubaa9\ub85d\uc870\ud68c +comUatUap.LoginPolicyList.caption=\ub85c\uadf8\uc778\uc815\ucc45 \uad00\ub9ac +comUatUap.LoginPolicyList.userName=\uc0ac\uc6a9\uc790 \uba85 +comUatUap.LoginPolicyList.userNameSearch=\uc0ac\uc6a9\uc790\uba85\uac80\uc0c9 +comUatUap.LoginPolicyList.userId=\uc0ac\uc6a9\uc790 ID +comUatUap.LoginPolicyList.ipInfo=IP \uc815\ubcf4 +comUatUap.LoginPolicyList.restricted=\uc81c\ud55c\uc5ec\ubd80 +comUatUap.LoginPolicyList.validate.checkCount=\uc120\ud0dd\ub41c \ub85c\uadf8\uc778\uc815\ucc45\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +comUatUap.LoginPolicyList.validate.checkField=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +comUatUap.LoginPolicyList.validate.checkIds=\uc870\ud68c \ud6c4 \ub4f1\ub85d\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. +comUatUap.LoginPolicyList.validate.checkReg=\uc774\ubbf8 \ub85c\uadf8\uc778\uc815\ucc45\uc774 \ub4f1\ub85d\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. +comUatUap.LoginPolicyList.validate.checkedCounter.onlyOne=\ub4f1\ub85d\ub300\uc0c1 \ud558\ub098\ub9cc \uc120\ud0dd\ud558\uc2ed\uc2dc\uc624. +comUatUap.LoginPolicyList.validate.checkedCounter.none=\uc120\ud0dd\ub41c \ub4f1\ub85d\ub300\uc0c1\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +comUatUap.LoginPolicyList.validate.delete=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + + +comUatUap.loginPolicyUpdt.title=\ub85c\uadf8\uc778\uc815\ucc45 \uc218\uc815 +comUatUap.loginPolicyUpdt.pageTop.title=\ub85c\uadf8\uc778\uc815\ucc45 \uc218\uc815 +comUatUap.loginPolicyUpdt.emplyrId=\uc0ac\uc6a9\uc790ID +comUatUap.loginPolicyUpdt.emplyrNm=\uc0ac\uc6a9\uc790\uba85 +comUatUap.loginPolicyUpdt.ipInfo=IP\uc815\ubcf4 +comUatUap.loginPolicyUpdt.lmttAt=IP\uc81c\ud55c\uc5ec\ubd80 +comUatUap.loginPolicyUpdt.regDate=\ub4f1\ub85d\uc77c\uc2dc +comUatUap.loginPolicyUpdt.validate.confirm.save=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comUatUap.loginPolicyUpdt.validate.confirm.delete=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comUatUap.loginPolicyUpdt.validate.info.exceptionIP=\uc608\uc678 \uc544\uc774\ud53c \uc785\ub2c8\ub2e4. +comUatUap.loginPolicyUpdt.validate.info.invalidForm=\ud615\uc2dd\uc774 \uc77c\uce58 \ud558\uc9c0\uc54a\uc2b5\ub2c8\ub2e4. + + +comUatUap.loginPolicyRegist.title=\ub85c\uadf8\uc778\uc815\ucc45 \ub4f1\ub85d +comUatUap.loginPolicyRegist.pageTop.title=\ub85c\uadf8\uc778\uc815\ucc45 \ub4f1\ub85d +comUatUap.loginPolicyRegist.emplyrId=\uc0ac\uc6a9\uc790ID +comUatUap.loginPolicyRegist.emplyrNm=\uc0ac\uc6a9\uc790\uba85 +comUatUap.loginPolicyRegist.ipInfo=IP\uc815\ubcf4 +comUatUap.loginPolicyRegist.lmttAt=IP\uc81c\ud55c\uc5ec\ubd80 +comUatUap.loginPolicyRegist.regDate=\ub4f1\ub85d\uc77c\uc2dc +comUatUap.loginPolicyRegist.validate.confirm.save=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comUatUap.loginPolicyRegist.validate.confirm.delete=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comUatUap.loginPolicyRegist.validate.info.exceptionIP=\uc608\uc678 \uc544\uc774\ud53c \uc785\ub2c8\ub2e4. +comUatUap.loginPolicyRegist.validate.info.invalidForm=\ud615\uc2dd\uc774 \uc77c\uce58 \ud558\uc9c0\uc54a\uc2b5\ub2c8\ub2e4. + diff --git a/src/main/resources/egovframework/message/com/uat/uia/message_en.properties b/src/main/resources/egovframework/message/com/uat/uia/message_en.properties new file mode 100644 index 00000000..528149e1 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uat/uia/message_en.properties @@ -0,0 +1,51 @@ +comUatUia.title=Log In + +comUatUia.validate.idCheck=Please enter your ID. +comUatUia.validate.passCheck=Please enter your password. +comUatUia.validate.userManagmentCheck=User management component is not installed. Please ask admin. +comUatUia.validate.membershipCheck=Business users don't need to join membership separately. + + +comUatUia.loginForm.GNR=Member +comUatUia.loginForm.ENT=Corporate +comUatUia.loginForm.USR=Business user + +comUatUia.loginForm.id=ID +comUatUia.loginForm.pw=Password +comUatUia.loginForm.login=Log In +comUatUia.loginForm.regist=Join +comUatUia.loginForm.idPwSearch=Search For ID/password + +comUatUia.loginForm.idSave=Stay Signed In +comUatUia.loginForm.submit=Send + +comUatUia.loginForm.login.gpki=Certificate Login(Korea only) +comUatUia.loginForm.login.normal=General Login +comUatUia.loginForm.gpki.info=Certificate Guide +comUatUia.loginForm.gpki.descrption=Certificate login is only available to public authorities in Korea. + + +comUatUia.idPw.title=Search For ID/Password + +comUatUia.idPw.id=ID +comUatUia.idPw.name=Name +comUatUia.idPw.email=Email +comUatUia.idPw.passwordHint=Password Hint +comUatUia.idPw.passwordCnsr=Password Answer +comUatUia.idPw.result=Result + + +comUatUia.idPw.gnr = Member +comUatUia.idPw.ent = Corporate +comUatUia.idPw.usr = Business user + +comUatUia.idPw.searchId = Search For ID +comUatUia.idPw.searchPassword = Search For Password + +comUatUia.idPw.validate.id=Please enter your ID. +comUatUia.idPw.validate.name=Please enter your name. +comUatUia.idPw.validate.email=Please enter your email. +comUatUia.idPw.validate.passwordHint=Please select password hint. +comUatUia.idPw.validate.passwordCnsr=Please input password answer. + +comUatUia.idPasswordResult.searchIdPwd=Find your Id and password diff --git a/src/main/resources/egovframework/message/com/uat/uia/message_ko.properties b/src/main/resources/egovframework/message/com/uat/uia/message_ko.properties new file mode 100644 index 00000000..eee17eff --- /dev/null +++ b/src/main/resources/egovframework/message/com/uat/uia/message_ko.properties @@ -0,0 +1,51 @@ +comUatUia.title=\ub85c\uadf8\uc778 + +comUatUia.validate.idCheck=\uc544\uc774\ub514\ub97c \uc785\ub825\ud558\uc138\uc694. +comUatUia.validate.passCheck=\ube44\ubc00\ubc88\ud638\ub97c \uc785\ub825\ud558\uc138\uc694 +comUatUia.validate.userManagmentCheck=\uc0ac\uc6a9\uc790 \uad00\ub9ac \ucef4\ud3ec\ub10c\ud2b8\uac00 \uc124\uce58\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uad00\ub9ac\uc790\uc5d0\uac8c \ubb38\uc758\ud558\uc138\uc694. +comUatUia.validate.membershipCheck=\uc5c5\ubb34\uc0ac\uc6a9\uc790\ub294 \ubcc4\ub3c4\uc758 \ud68c\uc6d0\uac00\uc785\uc774 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. + +comUatUia.loginForm.GNR=\uc77c\ubc18 +comUatUia.loginForm.ENT=\uae30\uc5c5 +comUatUia.loginForm.USR=\uc5c5\ubb34 + +comUatUia.loginForm.id=\uc544\uc774\ub514 +comUatUia.loginForm.pw=\ube44\ubc00\ubc88\ud638 +comUatUia.loginForm.login=\ub85c\uadf8\uc778 +comUatUia.loginForm.regist=\ud68c\uc6d0\uac00\uc785 +comUatUia.loginForm.idPwSearch=\uc544\uc774\ub514/\ube44\ubc00\ubc88\ud638 \ucc3e\uae30 + +comUatUia.loginForm.idSave=\uc544\uc774\ub514 \uc800\uc7a5 +comUatUia.loginForm.submit=\uc804\uc1a1 + +comUatUia.loginForm.login.gpki=\uc778\uc99d\uc11c\ub85c\uadf8\uc778 +comUatUia.loginForm.login.normal=\uc77c\ubc18\ub85c\uadf8\uc778 +comUatUia.loginForm.gpki.info=\uc778\uc99d\uc11c\uc548\ub0b4 +comUatUia.loginForm.gpki.descrption= + + +comUatUia.idPw.title=\uc544\uc774\ub514/\ube44\ubc00\ubc88\ud638 \ucc3e\uae30 + +comUatUia.idPw.id=\uc544\uc774\ub514 +comUatUia.idPw.name=\uc774\ub984 +comUatUia.idPw.email=\uc774\uba54\uc77c\uc8fc\uc18c +comUatUia.idPw.passwordHint=\ube44\ubc00\ubc88\ud638 \ud78c\ud2b8 +comUatUia.idPw.passwordCnsr=\ube44\ubc00\ubc88\ud638 \uc815\ub2f5 +comUatUia.idPw.result=\uacb0\uacfc + + +comUatUia.idPw.gnr = \uc77c\ubc18 +comUatUia.idPw.ent = \uae30\uc5c5 +comUatUia.idPw.usr = \uc5c5\ubb34 + +comUatUia.idPw.searchId = \uc544\uc774\ub514 \ucc3e\uae30 +comUatUia.idPw.searchPassword = \ube44\ubc00\ubc88\ud638 \ucc3e\uae30 + +comUatUia.idPw.validate.id=\uc544\uc774\ub514\ub97c \uc785\ub825\ud558\uc138\uc694. +comUatUia.idPw.validate.name=\uc774\ub984\uc744 \uc785\ub825\ud558\uc138\uc694. +comUatUia.idPw.validate.email=\uc774\uba54\uc77c\uc8fc\uc18c\ub97c \uc785\ub825\ud558\uc138\uc694. +comUatUia.idPw.validate.passwordHint=\ube44\ubc00\ubc88\ud638 \ud78c\ud2b8\ub97c \uc120\ud0dd\ud558\uc138\uc694. +comUatUia.idPw.validate.passwordCnsr=\ube44\ubc00\ubc88\ud638 \uc815\ub2f5\uc744 \uc785\ub825\ud558\uc138\uc694. + + +comUatUia.idPasswordResult.searchIdPwd=\uc544\uc774\ub514 \ubc0f \ube44\ubc00\ubc88\ud638 \ucc3e\uae30 diff --git a/src/main/resources/egovframework/message/com/uss/cmt/message_en.properties b/src/main/resources/egovframework/message/com/uss/cmt/message_en.properties new file mode 100644 index 00000000..ac5f5556 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/cmt/message_en.properties @@ -0,0 +1,16 @@ +#Commute management# +ussCmt.cmtManageList.cmtManage=Commute management +ussCmt.cmtManageList.wrktDt=Date +ussCmt.cmtManageList.emplyrId=Employee ID +ussCmt.cmtManageList.wrkStartTime=The office-going hour +ussCmt.cmtManageList.wrkEndTime=Quitting time +ussCmt.cmtManageList.ovtmwrkHours=Night duty hour +ussCmt.cmtManageList.wrkStartStatus=Work Start status +ussCmt.cmtManageList.wrkEndStatus=Work End status + +ussCmt.cmtManageServiceImpl.normal=normal + +ussCmt.cmtManageList.wrkInfo=\u203bIt is treated as an error when clicking duplicate day. + +ussCmt.cmtManageList.validate.wrkStartAlert=You have already pressed the go to work button. +ussCmt.cmtManageList.validate.wrkStartBeforeEndAlert=Please register for work first. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/cmt/message_ko.properties b/src/main/resources/egovframework/message/com/uss/cmt/message_ko.properties new file mode 100644 index 00000000..6da312cc --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/cmt/message_ko.properties @@ -0,0 +1,16 @@ +#\ucd9c\ud1f4\uadfc \uad00\ub9ac# +ussCmt.cmtManageList.cmtManage=\ucd9c\ud1f4\uadfc \uad00\ub9ac +ussCmt.cmtManageList.wrktDt=\uc77c\uc790 +ussCmt.cmtManageList.emplyrId=\uc0ac\uc6d0 ID +ussCmt.cmtManageList.wrkStartTime=\ucd9c\uadfc\uc2dc\uac04 +ussCmt.cmtManageList.wrkEndTime=\ud1f4\uadfc\uc2dc\uac04 +ussCmt.cmtManageList.ovtmwrkHours=\uc57c\uadfc\uc2dc\uac04 +ussCmt.cmtManageList.wrkStartStatus=\ucd9c\uadfc\uc0c1\ud0dc +ussCmt.cmtManageList.wrkEndStatus=\ud1f4\uadfc\uc0c1\ud0dc + +ussCmt.cmtManageServiceImpl.normal=\uc815\uc0c1 + +ussCmt.cmtManageList.wrkInfo=\u203b 1\uc77c \uc911\ubcf5 \ud074\ub9ad \uc2dc \uc624\ub958\ub85c \ucc98\ub9ac\ud55c\ub2e4. + +ussCmt.cmtManageList.validate.wrkStartAlert=\uc774\ubbf8 \ucd9c\uadfc \uc0c1\ud0dc\uc785\ub2c8\ub2e4. +ussCmt.cmtManageList.validate.wrkStartBeforeEndAlert=\uba3c\uc800 \ucd9c\uadfc\ub4f1\ub85d\uc744 \ud574\uc8fc\uc138\uc694. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/ans/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/ans/message_en.properties new file mode 100644 index 00000000..f56fe459 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ans/message_en.properties @@ -0,0 +1,81 @@ +# Anniversary Management comUssIonAns +# EgovAnnvrsryManage.xml +comUssIonAns.annvrsryManage.validate.usid = User ID +comUssIonAns.annvrsryManage.validate.annvrsrySe = Anniversary Category +comUssIonAns.annvrsryManage.validate.annvrsryDe = Dates +comUssIonAns.annvrsryManage.validate.cldrSe = solar / lunar separation +comUssIonAns.annvrsryManage.validate.annvrsryNm = Anniversary Name + +# EgovAnnvrsryManageList.jsp +comUssIonAns.annvrsryManageList.title = View anniversary management list +comUssIonAns.annvrsryManageList.arrParam.directProgress = Anniversary bulk +comUssIonAns.annvrsryManageList.annvrsryManageList = Anniversary Management List +comUssIonAns.annvrsryManageList.excelRegiser = Anniversary Excel Registration +comUssIonAns.annvrsryMainList.option=If the yearly repetition option is used, yearly inquiry will be applied every year even if it is not current year + +# EgovAnnvrsryDetail.jsp +comUssIonAns.annvrsryDetail.title = View anniversary details +comUssIonAns.annvrsryDetail.annvrsryDetail = Anniversary Details + +# EgovAnnvrsryRegist.jsp +comUssIonAns.annvrsryRegist.title = Anniversary registration + +# EgovAnnvrsryUpdt.jsp +comUssIonAns.annvrsryUpdt.title = Edit Anniversary + +# EgovAnnvrsryGdcc.jsp +comUssIonAns.annvrsryGdcc.title = View anniversary details +comUssIonAns.annvrsryGdcc.icon = title icon image +comUssIonAns.annvrsryGdcc.intro = Anniversary Guide +comUssIonAns.annvrsryGdcc.alarm = Anniversary Alarm Screen +comUssIonAns.annvrsryGdcc.cldrSe1 = Solar +comUssIonAns.annvrsryGdcc.cldrSe2 = Lunar + +# EgovAnnvrsryMainList.jsp +comUssIonAns.annvrsryMainList.title = Anniversary list Main list +comUssIonAns.annvrsryMainList.summary = Provides a list of upcoming anniversaries +comUssIonAns.annvrsryMainList.listTitle = Upcoming Anniversaries +comUssIonAns.annvrsryMainList.guide= The left menu on all-in-one common components is 930. Anniversary dates are included between D-day and the current time. You can see detailed information when you click the anniversary name. + +# EgovAnnvrsryManageBndeListPop.jsp +comUssIonAns.annvrsryManageBndeListPop.title = Bulk anniversary registration +comUssIonAns.annvrsryManageBndeListPop.validate.fileValue = Please specify the file to upload. +comUssIonAns.annvrsryManageBndeListPop.validate.fileForm = The file format is incorrect. \\n Only xls, XLS, xlsx, XLSX \\nYou can upload! +comUssIonAns.annvrsryManageBndeListPop.validate.excelProcess = Completed anniversary Excel registration +comUssIonAns.annvrsryManageBndeListPop.excelFile = Anniversary Excel file +comUssIonAns.annvrsryManageBndeListPop.AllFile = Bulk file +comUssIonAns.annvrsryManageBndeListPop.upload = Upload +comUssIonAns.annvrsryManageBndeListPop.cldrSe1 = Solar calendar +comUssIonAns.annvrsryManageBndeListPop.cldrSe2 = Lunar calendar + +#Common +comUssIonAns.common.yearList = Year +comUssIonAns.common.year = year +comUssIonAns.common.toNewWindow = Go to new window +comUssIonAns.common.annvrsryNm = Anniversary Title +comUssIonAns.common.annvrsryDe = Anniversary (positive / negative) +comUssIonAns.common.cldrSe1 = solar +comUssIonAns.common.cldrSe2 = lunar +comUssIonAns.common.memo = Notes +comUssIonAns.common.annvrsrySetup = Notification status +comUssIonAns.common.annvrsryBeginDday = Previous reminder +comUssIonAns.common.reptitSe = Repeatability +comUssIonAns.common.annvrsryTemp1 = Applicant +comUssIonAns.common.annvrsryTemp2 = belongs +comUssIonAns.common.annvrsryTemp3 = Anniversary Category +comUssIonAns.common.annvrsryTemp4 = Anniversary +comUssIonAns.common.reptitSeEvery = Repeat every year +comUssIonAns.common.annvrsryNm = Anniversary Name +comUssIonAns.common.memo = Notes +comUssIonAns.common.annvrsryBeginDe = Notification start date +comUssIonAns.common.annvrsryBeginDdayAlarm = Previous reminder +comUssIonAns.common.annvrsryTemp5 = Notification settings +comUssIonAns.common.userName = applicant name +comUssIonAns.common.annvrsryBeginDe.7 = one week +comUssIonAns.common.annvrsryBeginDe.3 = 3 days +comUssIonAns.common.annvrsryBeginDe.2 = 2 days +comUssIonAns.common.annvrsryBeginDe.1 = 1 day +comUssIonAns.common.annvrsryBeginDe.alarm = Notify me since +comUssIonAns.common.alarm = Notifications +comUssIonAns.common.init = Initialize +comUssIonAns.common.duplicate=Duplicated data. Check your data. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/ans/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/ans/message_ko.properties new file mode 100644 index 00000000..1c297b71 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ans/message_ko.properties @@ -0,0 +1,81 @@ +#\uae30\ub150\uc77c\uad00\ub9ac comUssIonAns +#EgovAnnvrsryManage.xml +comUssIonAns.annvrsryManage.validate.usid=\uc0ac\uc6a9\uc790 ID +comUssIonAns.annvrsryManage.validate.annvrsrySe=\uae30\ub150\uc77c\uad6c\ubd84 +comUssIonAns.annvrsryManage.validate.annvrsryDe=\uae30\ub150\uc77c\uc790 +comUssIonAns.annvrsryManage.validate.cldrSe=\uc591\ub825/\uc74c\ub825\uad6c\ubd84 +comUssIonAns.annvrsryManage.validate.annvrsryNm=\uae30\ub150\uc77c\uba85 + +#EgovAnnvrsryManageList.jsp +comUssIonAns.annvrsryManageList.title=\uae30\ub150\uc77c\uad00\ub9ac \ubaa9\ub85d \uc870\ud68c +comUssIonAns.annvrsryManageList.arrParam.directProgress=\uae30\ub150\uc77c\uc77c\uad04\ucc98\ub9ac +comUssIonAns.annvrsryManageList.annvrsryManageList=\uae30\ub150\uc77c\uad00\ub9ac \ubaa9\ub85d +comUssIonAns.annvrsryManageList.excelRegiser=\uae30\ub150\uc77c\uc5d1\uc140\ub4f1\ub85d + +#EgovAnnvrsryDetail.jsp +comUssIonAns.annvrsryDetail.title=\uae30\ub150\uc77c \uc0c1\uc138 \uc870\ud68c +comUssIonAns.annvrsryDetail.annvrsryDetail=\uae30\ub150\uc77c \uc0c1\uc138 + +#EgovAnnvrsryRegist.jsp +comUssIonAns.annvrsryRegist.title=\uae30\ub150\uc77c \ub4f1\ub85d + +#EgovAnnvrsryUpdt.jsp +comUssIonAns.annvrsryUpdt.title=\uae30\ub150\uc77c \uc218\uc815 + +#EgovAnnvrsryGdcc.jsp +comUssIonAns.annvrsryGdcc.title=\uae30\ub150\uc77c \uc0c1\uc138 \uc870\ud68c +comUssIonAns.annvrsryGdcc.icon=\uc81c\ubaa9\uc544\uc774\ucf58\uc774\ubbf8\uc9c0 +comUssIonAns.annvrsryGdcc.intro=\uae30\ub150\uc77c \uc548\ub0b4 +comUssIonAns.annvrsryGdcc.alarm=\uae30\ub150\uc77c \uc54c\ub78c\ud654\uba74 +comUssIonAns.annvrsryGdcc.cldrSe1=\uc591 +comUssIonAns.annvrsryGdcc.cldrSe2=\uc74c + +#EgovAnnvrsryMainList.jsp +comUssIonAns.annvrsryMainList.title=\uae30\ub150\uc77c \ubaa9\ub85d \uba54\uc778\ub9ac\uc2a4\ud2b8 +comUssIonAns.annvrsryMainList.summary=\ub2e4\uac00\uc624\ub294 \uae30\ub150\uc77c\uc5d0 \ub300\ud55c \ubaa9\ub85d\uc744 \uc81c\uacf5\ud55c\ub2e4. +comUssIonAns.annvrsryMainList.listTitle=\ub2e4\uac00\uc624\ub294 \uae30\ub150\uc77c \ubaa9\ub85d +comUssIonAns.annvrsryMainList.guide=\ub370\uc774\ud130\ub294 930.\uae30\ub150\uc77c \uad00\ub9ac\uc5d0\uc11c \uae30\ub150\uc77c \uc77c\uc790\uac00 D-day\uc640 \ud604\uc7ac \uc2dc\uac04 \uc0ac\uc774\uc5d0 \ud3ec\ud568\ub418\uc5c8\uc744 \uacbd\uc6b0 \ucd9c\ub825. \uae30\ub150\uc77c\uba85 \ud074\ub9ad \uc2dc \uc0c1\uc138\ubcf4\uae30 \uac00\ub2a5. +comUssIonAns.annvrsryMainList.option=\ub9e4\ub144\ubc18\ubcf5 \uc635\uc158\uc744 \uc0ac\uc6a9\ud560 \uacbd\uc6b0 \ub144\ub3c4 \uc870\ud68c \uc2dc \ud574\ub2f9 \ub144\ub3c4\uac00 \uc544\ub2c8\uc5b4\ub3c4 \ub9e4\ub144 \uc801\uc6a9\ub418\uc5b4 \uc870\ud68c\ub428 + +#EgovAnnvrsryManageBndeListPop.jsp +comUssIonAns.annvrsryManageBndeListPop.title=\uae30\ub150\uc77c\uc77c\uad04\ub4f1\ub85d +comUssIonAns.annvrsryManageBndeListPop.validate.fileValue=\uc5c5\ub85c\ub4dc \ud560 \ud30c\uc77c\uc744 \uc9c0\uc815\ud574 \uc8fc\uc138\uc694. +comUssIonAns.annvrsryManageBndeListPop.validate.fileForm=\ud30c\uc77c \ud615\uc2dd\uc774 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\\n xls,XLS,xlsx,XLSX \ub9cc\\n \uc5c5\ub85c\ub4dc\uac00 \uac00\ub2a5\ud569\ub2c8\ub2e4! +comUssIonAns.annvrsryManageBndeListPop.validate.excelProcess=\uae30\ub150\uc77c \uc5d1\uc140 \ub4f1\ub85d\ucc98\ub9ac \uc644\ub8cc\ud558\uc600\uc2b5\ub2c8\ub2e4 +comUssIonAns.annvrsryManageBndeListPop.excelFile=\uae30\ub150\uc77c \uc5d1\uc140\ud30c\uc77c +comUssIonAns.annvrsryManageBndeListPop.AllFile=\uc77c\uad04\ud30c\uc77c +comUssIonAns.annvrsryManageBndeListPop.upload=\uc5c5\ub85c\ub4dc +comUssIonAns.annvrsryManageBndeListPop.cldrSe1=\uc591 +comUssIonAns.annvrsryManageBndeListPop.cldrSe2=\uc74c + +#Common +comUssIonAns.common.yearList=\ub144\ub3c4 +comUssIonAns.common.year=\ub144 +comUssIonAns.common.toNewWindow=\uc0c8\ucc3d\uc73c\ub85c\uc774\ub3d9 +comUssIonAns.common.annvrsryNm=\uae30\ub150\uc77c\uc81c\ubaa9 +comUssIonAns.common.annvrsryDe=\uae30\ub150\uc77c(\uc591/\uc74c) +comUssIonAns.common.cldrSe1=\uc591\ub825 +comUssIonAns.common.cldrSe2=\uc74c\ub825 +comUssIonAns.common.memo=\uba54\ubaa8 +comUssIonAns.common.annvrsrySetup=\uc54c\ub9bc\uc5ec\ubd80 +comUssIonAns.common.annvrsryBeginDday=\uc77c\uc804\uc54c\ub9bc +comUssIonAns.common.reptitSe=\ubc18\ubcf5\uc5ec\ubd80 +comUssIonAns.common.annvrsryTemp1=\uc2e0\uccad\uc790 +comUssIonAns.common.annvrsryTemp2=\uc18c\uc18d +comUssIonAns.common.annvrsryTemp3=\uae30\ub150\uc77c\uad6c\ubd84 +comUssIonAns.common.annvrsryTemp4=\uae30\ub150\uc77c +comUssIonAns.common.reptitSeEvery=\ub9e4\ub144\ubc18\ubcf5 +comUssIonAns.common.annvrsryNm=\uae30\ub150\uc77c\uba85 +comUssIonAns.common.memo=\uba54\ubaa8 +comUssIonAns.common.annvrsryBeginDe=\uc54c\ub9bc\uc2dc\uc791\uc77c +comUssIonAns.common.annvrsryBeginDdayAlarm=\uc77c\uc804\uc54c\ub9bc +comUssIonAns.common.annvrsryTemp5=\uc54c\ub9bc\uc124\uc815 +comUssIonAns.common.userName=\uc2e0\uccad\uc790\uba85 +comUssIonAns.common.annvrsryBeginDe.7=\uc77c\uc8fc\uc77c +comUssIonAns.common.annvrsryBeginDe.3=3\uc77c +comUssIonAns.common.annvrsryBeginDe.2=2\uc77c +comUssIonAns.common.annvrsryBeginDe.1=1\uc77c +comUssIonAns.common.annvrsryBeginDe.alarm=\uc804 \ubd80\ud130 \uc54c\ub9bc +comUssIonAns.common.alarm=\uc54c\ub9bc +comUssIonAns.common.init=\ucd08\uae30\ud654 +comUssIonAns.common.duplicate=\uc774\ubbf8 \ub4f1\ub85d\ub41c \ub370\uc774\ud0c0\uc785\ub2c8\ub2e4. \ud574\ub2f9 \ub370\uc774\ud0c0\ub97c \ud655\uc778\ud574 \uc8fc\uc138\uc694 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/bnr/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/bnr/message_en.properties new file mode 100644 index 00000000..860d4974 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/bnr/message_en.properties @@ -0,0 +1,38 @@ +#Banner Management# +ussIonBnr.bannerList.bannerList=Banner Management List +ussIonBnr.bannerList.bannerNm=Banner Name +ussIonBnr.bannerList.linkUrl=Link URL +ussIonBnr.bannerList.bannerDc=Banner Description +ussIonBnr.bannerList.reflctAtt=Applicability +ussIonBnr.bannerList.noBanner=No Banner selected. +ussIonBnr.bannerList.failInquire=No results were inquired. +ussIonBnr.bannerList.deleteImage=Will you delete it? + +ussIonBnr.bannerRegist.bannerRegist=Banner Management Regist +ussIonBnr.bannerRegist.bannerNm=Banner Name +ussIonBnr.bannerRegist.bannerImage=Banner Image +ussIonBnr.bannerRegist.bannerId=Banner ID +ussIonBnr.bannerRegist.linkUrl=Link URL +ussIonBnr.bannerRegist.bannerDc=Banner Description +ussIonBnr.bannerRegist.sortOrdr=Sort Order +ussIonBnr.bannerRegist.reflctAtt=Applicability +ussIonBnr.bannerRegist.regDate=Registration date +ussIonBnr.bannerRegist.saveImage=Do you want to save it? +ussIonBnr.bannerRegist.ImageReq=Banner Image is required. +ussIonBnr.bannerRegist.deleteImage=Will you delete it? + +ussIonBnr.bannerUpdt.bannerUpdt=Banner Management Update +ussIonBnr.bannerUpdt.bannerNm=Banner Name +ussIonBnr.bannerUpdt.bannerImage=Banner Image +ussIonBnr.bannerUpdt.bannerId=Banner ID +ussIonBnr.bannerUpdt.linkUrl=Link URL +ussIonBnr.bannerUpdt.bannerDc=Banner Description +ussIonBnr.bannerUpdt.sortOrdr=Sort Order +ussIonBnr.bannerUpdt.reflctAtt=Applicability +ussIonBnr.bannerUpdt.regDate=Registration date +ussIonBnr.bannerUpdt.saveImage=Do you want to save it? +ussIonBnr.bannerUpdt.deleteImage=Will you delete it? + +ussIonBnr.bannerMainList.bannerMainList=MYPAGE Banner Management +ussIonBnr.bannerMainList.EgovBannerDc=This page is where 740. images registered in Banner Management are reflected. +ussIonBnr.bannerMainList.bannerNm=Banner Name \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/bnr/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/bnr/message_ko.properties new file mode 100644 index 00000000..c20766f1 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/bnr/message_ko.properties @@ -0,0 +1,38 @@ +#\ubc30\ub108 \uad00\ub9ac# +ussIonBnr.bannerList.bannerList=\ubc30\ub108\uad00\ub9ac \ubaa9\ub85d +ussIonBnr.bannerList.bannerNm=\ubc30\ub108\uba85 +ussIonBnr.bannerList.linkUrl=\ub9c1\ud06c URL +ussIonBnr.bannerList.bannerDc=\ubc30\ub108 \uc124\uba85 +ussIonBnr.bannerList.reflctAtt=\ubc18\uc601\uc5ec\ubd80 +ussIonBnr.bannerList.noBanner=\uc120\ud0dd\ub41c \ubc30\ub108\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +ussIonBnr.bannerList.failInquire=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +ussIonBnr.bannerList.deleteImage=\uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\uae4c? + +ussIonBnr.bannerRegist.bannerRegist=\ubc30\ub108\uad00\ub9ac \ub4f1\ub85d +ussIonBnr.bannerRegist.bannerNm=\ubc30\ub108\uba85 +ussIonBnr.bannerRegist.bannerImage=\ubc30\ub108 \uc774\ubbf8\uc9c0 +ussIonBnr.bannerRegist.bannerId=\ubc30\ub108 ID +ussIonBnr.bannerRegist.linkUrl=\ub9c1\ud06c URL +ussIonBnr.bannerRegist.bannerDc=\ubc30\ub108 \uc124\uba85 +ussIonBnr.bannerRegist.sortOrdr=\uc815\ub82c\uc21c\uc11c +ussIonBnr.bannerRegist.reflctAtt=\ubc18\uc601\uc5ec\ubd80 +ussIonBnr.bannerRegist.regDate=\ub4f1\ub85d\uc77c\uc2dc +ussIonBnr.bannerRegist.saveImage=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +ussIonBnr.bannerRegist.ImageReq=\ubc30\ub108\uc774\ubbf8\uc9c0\ub294 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +ussIonBnr.bannerRegist.deleteImage=\uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\uae4c? + +ussIonBnr.bannerUpdt.bannerUpdt=\ubc30\ub108\uad00\ub9ac \uc218\uc815 +ussIonBnr.bannerUpdt.bannerNm=\ubc30\ub108\uba85 +ussIonBnr.bannerUpdt.bannerImage=\ubc30\ub108 \uc774\ubbf8\uc9c0 +ussIonBnr.bannerUpdt.bannerId=\ubc30\ub108 ID +ussIonBnr.bannerUpdt.linkUrl=\ub9c1\ud06c URL +ussIonBnr.bannerUpdt.bannerDc=\ubc30\ub108 \uc124\uba85 +ussIonBnr.bannerUpdt.sortOrdr=\uc815\ub82c\uc21c\uc11c +ussIonBnr.bannerUpdt.reflctAtt=\ubc18\uc601\uc5ec\ubd80 +ussIonBnr.bannerUpdt.regDate=\ub4f1\ub85d\uc77c\uc2dc +ussIonBnr.bannerUpdt.saveImage=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +ussIonBnr.bannerUpdt.deleteImage=\uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\uae4c? + +ussIonBnr.bannerMainList.bannerMainList=MYPAGE\ubc30\ub108\uad00\ub9ac +ussIonBnr.bannerMainList.EgovBannerDc=\uc774 \ud398\uc774\uc9c0\ub294 740. \ubc30\ub108\uad00\ub9ac\uc5d0 \ub4f1\ub85d\ud55c \ubc30\ub108\ub4e4\uc774 \ubc18\uc601\ub418\ub294 \uacf3\uc785\ub2c8\ub2e4. +ussIonBnr.bannerMainList.bannerNm=\ubc30\ub108\uba85 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/bnt/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/bnt/message_en.properties new file mode 100644 index 00000000..d5ab27cc --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/bnt/message_en.properties @@ -0,0 +1,105 @@ +#\ub2f9\uc9c1\uad00\ub9ac comUssIonBnt +# EgovBndtCeckManage.xml +comUssIonBnt.bndtCeckManage.validate.bndtCeckSe = Duty check division +comUssIonBnt.bndtCeckManage.validate.bndtCeckCd = Check code on duty +comUssIonBnt.bndtCeckManage.validate.bndtCeckCdNm = Check Code Name +comUssIonBnt.bndtCeckManage.validate.useAt = Whether to use + +#EgovBndtDiary.xml +comUssIonBnt.bndtDiary.validate.bndtId = Job ID +comUssIonBnt.bndtDiary.validate.bndtDe = date on watch +comUssIonBnt.bndtDiary.validate.bndtCeckSe = Duty check division +comUssIonBnt.bndtDiary.validate.bndtCeckCd = Check code on duty +comUssIonBnt.bndtDiary.validate.chckSttus = Check Status + +# EgovBndtManage.xml +comUssIonBnt.bndtManage.validate.bndtId = Job ID +comUssIonBnt.bndtManage.validate.bndtDe = Date on watch +comUssIonBnt.bndtManage.validate.remark = Remarks + +# EgovBndtManageList.jsp +comUssIonBnt.bndtManageList.title = Watch Management List +comUssIonBnt.bndtManageList.bndtExcelRegist = Register your job excel +comUssIonBnt.bndtManageList.bndtList = Watchlist + +# EgovBndtManageRegist.jsp comUssIonBnt.bndtManageRegist. +comUssIonBnt.bndtManageRegist.title = Register your job + +# EgovBndtManageDetail.jsp +comUssIonBnt.bndtManageDetail.title = Watch Details + +# EgovBndtManageUpdt.jsp +comUssIonBnt.bndtManageUpdt.title = Show correction + +# EgovBndtManageBndeListPop.jsp +comUssIonBnt.bndtManageBndeListPop.title = Register in Bulk +comUssIonBnt.bndtManageBndeListPop.bndtExcelFile = Watcher Excel file +comUssIonBnt.bndtManageBndeListPop.file = Bulk file +comUssIonBnt.bndtManageBndeListPop.upload = Upload + +# EgovBndtDiaryDetail.jsp +comUssIonBnt.bndtDiaryDetail.title = Detailed logbook + +# EgovBndtDiaryRegist.jsp +comUssIonBnt.bndtDiaryRegist.title = Log on the watch log + +# EgovBndtDiaryUpdt.jsp +comUssIonBnt.bndtDiaryUpdt.title = Edit watch diary + +# EgovBndtCeckManageList.jsp +comUssIonBnt.bndtCeckManageList.title = Watch Management List + +# EgovBndtCeckManageRegist.jsp +comUssIonBnt.bndtCeckManageRegist.title = Register watches check + +# EgovBndtCeckManageUpdt.jsp +comUssIonBnt.bndtCeckManageUpdt.title = Edit watch checks + +# EgovBndtCeckManageDetail.jsp +comUssIonBnt.bndtCeckManageDetail.title = Detailed view of duty check + +#Common comUssIonBnt.common. +comUssIonBnt.common.schdulSe = Turnover date +comUssIonBnt.common.year = year +comUssIonBnt.common.year.prev = Year Previous +comUssIonBnt.common.year.next = after year +comUssIonBnt.common.month.prev = previous Month +comUssIonBnt.common.month.next = next month +comUssIonBnt.common.month = month +comUssIonBnt.common.toNewWindow = Move to new window +comUssIonBnt.common.submit = Send +comUssIonBnt.common.sun = Sun +comUssIonBnt.common.mon = Mon +comUssIonBnt.common.tues = Tue +comUssIonBnt.common.wed = Wed +comUssIonBnt.common.thurs = Thur +comUssIonBnt.common.fri = Fri +comUssIonBnt.common.sat = Sat +comUssIonBnt.common.watcher = Watcher +comUssIonBnt.common.writeComplete = Completed +comUssIonBnt.common.diary = Diary +comUssIonBnt.common.insert = Registration +comUssIonBnt.common.yetInsert = Unregistered +comUssIonBnt.common.bndtIdName = Name of Watcher +comUssIonBnt.common.bndt = Watch +comUssIonBnt.common.orgnztNm = Affiliation +comUssIonBnt.common.bndtDe = date on watch +comUssIonBnt.common.remark = Remarks +comUssIonBnt.common.watcherName = Watch Subject +comUssIonBnt.common.validate.fileNull = Please specify the file to upload. +comUssIonBnt.common.validate.formNotMatch = The file format is incorrect. \\n Only xls, XLS, xlsx, XLSX \\nYou can upload! +comUssIonBnt.common.validate.excelProcessComplete = You have completed the registration process for Excel. +comUssIonBnt.common.altIconImg = Image of title icon +comUssIonBnt.common.bndtCeckCdNm = Watch checklist +comUssIonBnt.common.bndtCeckCd.good = Good +comUssIonBnt.common.bndtCeckCd.bad = Bad +comUssIonBnt.common.validate.fieldRequiredInput = field is required. +comUssIonBnt.common.requiredInputSign = Show Mandatory Input +comUssIonBnt.common.searchBndtCeckSe = Show division +comUssIonBnt.common.selectedAll = All +comUssIonBnt.common.bndtCeckCd = Check code on duty +comUssIonBnt.common.bndtCeckCdName = Job code check code +comUssIonBnt.common.useAt = Enabled? +comUssIonBnt.common.useAt.y = Enabled +comUssIonBnt.common.useAt.n = Not used +comUssIonBnt.common.bndtCeckTemp1 = Watch check classification \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/bnt/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/bnt/message_ko.properties new file mode 100644 index 00000000..4b462078 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/bnt/message_ko.properties @@ -0,0 +1,105 @@ +#\ub2f9\uc9c1\uad00\ub9ac comUssIonBnt +#EgovBndtCeckManage.xml +comUssIonBnt.bndtCeckManage.validate.bndtCeckSe=\ub2f9\uc9c1\uccb4\ud06c\uad6c\ubd84 +comUssIonBnt.bndtCeckManage.validate.bndtCeckCd=\ub2f9\uc9c1\uccb4\ud06c\ucf54\ub4dc +comUssIonBnt.bndtCeckManage.validate.bndtCeckCdNm=\ub2f9\uc9c1\uccb4\ud06c\ucf54\ub4dc\uba85 +comUssIonBnt.bndtCeckManage.validate.useAt=\uc0ac\uc6a9\uc5ec\ubd80 + +#EgovBndtDiary.xml +comUssIonBnt.bndtDiary.validate.bndtId=\ub2f9\uc9c1ID +comUssIonBnt.bndtDiary.validate.bndtDe=\ub2f9\uc9c1\uc77c\uc790 +comUssIonBnt.bndtDiary.validate.bndtCeckSe=\ub2f9\uc9c1\uccb4\ud06c\uad6c\ubd84 +comUssIonBnt.bndtDiary.validate.bndtCeckCd=\ub2f9\uc9c1\uccb4\ud06c\ucf54\ub4dc +comUssIonBnt.bndtDiary.validate.chckSttus=\uc810\uac80\uc0c1\ud0dc + +#EgovBndtManage.xml +comUssIonBnt.bndtManage.validate.bndtId=\ub2f9\uc9c1ID +comUssIonBnt.bndtManage.validate.bndtDe=\ub2f9\uc9c1\uc77c\uc790 +comUssIonBnt.bndtManage.validate.remark=\ube44\uace0 + +#EgovBndtManageList.jsp +comUssIonBnt.bndtManageList.title=\ub2f9\uc9c1\uad00\ub9ac \ubaa9\ub85d +comUssIonBnt.bndtManageList.bndtExcelRegist=\ub2f9\uc9c1\uc5d1\uc140\ub4f1\ub85d +comUssIonBnt.bndtManageList.bndtList=\ub2f9\uc9c1\ubaa9\ub85d + +#EgovBndtManageRegist.jsp comUssIonBnt.bndtManageRegist. +comUssIonBnt.bndtManageRegist.title=\ub2f9\uc9c1 \ub4f1\ub85d + +#EgovBndtManageDetail.jsp +comUssIonBnt.bndtManageDetail.title=\ub2f9\uc9c1 \uc0c1\uc138 + +#EgovBndtManageUpdt.jsp +comUssIonBnt.bndtManageUpdt.title=\ub2f9\uc9c1 \uc218\uc815 + +#EgovBndtManageBndeListPop.jsp +comUssIonBnt.bndtManageBndeListPop.title=\ub2f9\uc9c1\uc77c\uad04\ub4f1\ub85d +comUssIonBnt.bndtManageBndeListPop.bndtExcelFile=\ub2f9\uc9c1\uc790 \uc5d1\uc140\ud30c\uc77c +comUssIonBnt.bndtManageBndeListPop.file=\uc77c\uad04\ud30c\uc77c +comUssIonBnt.bndtManageBndeListPop.upload=\uc5c5\ub85c\ub4dc + +#EgovBndtDiaryDetail.jsp +comUssIonBnt.bndtDiaryDetail.title=\ub2f9\uc9c1\uc77c\uc9c0 \uc0c1\uc138 + +#EgovBndtDiaryRegist.jsp +comUssIonBnt.bndtDiaryRegist.title=\ub2f9\uc9c1\uc77c\uc9c0 \ub4f1\ub85d + +#EgovBndtDiaryUpdt.jsp +comUssIonBnt.bndtDiaryUpdt.title=\ub2f9\uc9c1\uc77c\uc9c0 \uc218\uc815 + +#EgovBndtCeckManageList.jsp +comUssIonBnt.bndtCeckManageList.title=\ub2f9\uc9c1\uccb4\ud06c\uad00\ub9ac \ubaa9\ub85d + +#EgovBndtCeckManageRegist.jsp +comUssIonBnt.bndtCeckManageRegist.title=\ub2f9\uc9c1\uccb4\ud06c \ub4f1\ub85d + +#EgovBndtCeckManageUpdt.jsp +comUssIonBnt.bndtCeckManageUpdt.title=\ub2f9\uc9c1\uccb4\ud06c \uc218\uc815 + +#EgovBndtCeckManageDetail.jsp +comUssIonBnt.bndtCeckManageDetail.title=\ub2f9\uc9c1\uccb4\ud06c \uc0c1\uc138\uc870\ud68c + +#Common comUssIonBnt.common. +comUssIonBnt.common.schdulSe=\ub2f9\uc9c1\ub144\uc6d4 +comUssIonBnt.common.year=\ub144 +comUssIonBnt.common.year.prev=\uc5f0\ub3c4 \uc774\uc804 +comUssIonBnt.common.year.next=\uc5f0\ub3c4 \uc774\ud6c4 +comUssIonBnt.common.month.prev=\uc6d4 \uc774\uc804 +comUssIonBnt.common.month.next=\uc6d4 \uc774\ud6c4 +comUssIonBnt.common.month=\uc6d4 +comUssIonBnt.common.toNewWindow=\uc0c8 \ucc3d\uc73c\ub85c \uc774\ub3d9 +comUssIonBnt.common.submit=\uc804\uc1a1 +comUssIonBnt.common.sun=\uc77c +comUssIonBnt.common.mon=\uc6d4 +comUssIonBnt.common.tues=\ud654 +comUssIonBnt.common.wed=\uc218 +comUssIonBnt.common.thurs=\ubaa9 +comUssIonBnt.common.fri=\uae08 +comUssIonBnt.common.sat=\ud1a0 +comUssIonBnt.common.watcher=\ub2f9\uc9c1\uc790 +comUssIonBnt.common.writeComplete=\uc791\uc131\uc644\ub8cc +comUssIonBnt.common.diary=\uc77c\uc9c0 +comUssIonBnt.common.insert=\ub4f1\ub85d +comUssIonBnt.common.yetInsert=\ubbf8\ub4f1\ub85d +comUssIonBnt.common.bndtIdName=\ub2f9\uc9c1\uc790\uba85 +comUssIonBnt.common.bndt=\ub2f9\uc9c1 +comUssIonBnt.common.orgnztNm=\uc18c\uc18d +comUssIonBnt.common.bndtDe=\ub2f9\uc9c1\uc77c\uc790 +comUssIonBnt.common.remark=\ube44\uace0 +comUssIonBnt.common.watcherName=\ub2f9\uc9c1 \ub300\uc0c1\uc790 +comUssIonBnt.common.validate.fileNull=\uc5c5\ub85c\ub4dc \ud560 \ud30c\uc77c\uc744 \uc9c0\uc815\ud574 \uc8fc\uc138\uc694. +comUssIonBnt.common.validate.formNotMatch=\ud30c\uc77c \ud615\uc2dd\uc774 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\\n xls,XLS,xlsx,XLSX \ub9cc\\n \uc5c5\ub85c\ub4dc\uac00 \uac00\ub2a5\ud569\ub2c8\ub2e4! +comUssIonBnt.common.validate.excelProcessComplete=\ub2f9\uc9c1\uc5d1\uc140 \ub4f1\ub85d\ucc98\ub9ac \uc644\ub8cc\ud558\uc600\uc2b5\ub2c8\ub2e4. +comUssIonBnt.common.altIconImg=\uc81c\ubaa9\uc544\uc774\ucf58\uc774\ubbf8\uc9c0 +comUssIonBnt.common.bndtCeckCdNm=\ub2f9\uc9c1\uccb4\ud06c\ubaa9\ub85d +comUssIonBnt.common.bndtCeckCd.good=\uc591\ud638 +comUssIonBnt.common.bndtCeckCd.bad=\ubd88\ub7c9 +comUssIonBnt.common.validate.fieldRequiredInput=\ud544\ub4dc\ub294 \ud544\uc218 \uc785\ub825\uc785\ub2c8\ub2e4. +comUssIonBnt.common.requiredInputSign=\ud544\uc218\uc785\ub825\ud45c\uc2dc +comUssIonBnt.common.searchBndtCeckSe=\ub2f9\uc9c1\uad6c\ubd84 +comUssIonBnt.common.selectedAll=\uc804\uccb4 +comUssIonBnt.common.bndtCeckCd=\ub2f9\uc9c1\uccb4\ud06c\ucf54\ub4dc +comUssIonBnt.common.bndtCeckCdName=\ub2f9\uc9c1\uccb4\ud06c\ucf54\ub4dc\uba85 +comUssIonBnt.common.useAt=\uc0ac\uc6a9\uc5ec\ubd80 +comUssIonBnt.common.useAt.y=\uc0ac\uc6a9 +comUssIonBnt.common.useAt.n=\ubbf8\uc0ac\uc6a9 +comUssIonBnt.common.bndtCeckTemp1=\ub2f9\uc9c1\uccb4\ud06c\uad6c\ubd84 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/ctn/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/ctn/message_en.properties new file mode 100644 index 00000000..95d4d705 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ctn/message_en.properties @@ -0,0 +1,109 @@ +# Conservative management comUssIonCtn +# EgovCtsnnManage.xml +comUssIonCtn.ctsnnManage.validate.usNm = Applicant +comUssIonCtn.ctsnnManage.validate.ctsnnNm = Light +comUssIonCtn.ctsnnManage.validate.ctsnnCd = Contour Code +comUssIonCtn.ctsnnManage.validate.occrrDe = date of occurrence +comUssIonCtn.ctsnnManage.validate.trgterNm = Target Name +comUssIonCtn.ctsnnManage.validate.relate = relationship +comUssIonCtn.ctsnnManage.validate.brth = Date of birth +comUssIonCtn.ctsnnManage.validate.sanctnDtNm = Certified + +# EgovCtsnnManageList.jsp +comUssIonCtn.ctsnnManageList.title = List of Conservative Management +comUssIonCtn.ctsnnManageList.validate.searchFromDate = Signature application date The start date of the search condition is later than the end date. Please check the application date. +comUssIonCtn.ctsnnManageList.searchKeyword = Classification +comUssIonCtn.ctsnnManageList.selectedAll = All +comUssIonCtn.ctsnnManageList.occurDate = date of occurrence +comUssIonCtn.ctsnnManageList.searchFromDate = Start date of application +comUssIonCtn.ctsnnManageList.searchToDate = End date of application +comUssIonCtn.ctsnnManageList.searchNm = Applicant +comUssIonCtn.ctsnnManageList.searchConfmAt = Progress +comUssIonCtn.ctsnnManageList.searchConfmAt.A = Applying +comUssIonCtn.ctsnnManageList.searchConfmAt.C = Confirm +comUssIonCtn.ctsnnManageList.searchConfmAt.R = Reject +comUssIonCtn.ctsnnManageList.ctsnnCdNm = Light +comUssIonCtn.ctsnnManageList.usNm = Applicant +comUssIonCtn.ctsnnManageList.orgnztNm = Affiliation +comUssIonCtn.ctsnnManageList.sanctnDt = date of approval +comUssIonCtn.ctsnnManageList.sanctnerNm = Approver + +# EgovCtsnnRegist.jsp +comUssIonCtn.ctsnnRegist.title = Registered Condolences +comUssIonCtn.ctsnnRegist.ctsnnApply = Apply for a congratulatory address +comUssIonCtn.ctsnnRegist.ctsnnAplyr = applicant +comUssIonCtn.ctsnnRegist.usNm = Applicant +comUssIonCtn.ctsnnRegist.usOrgnztNm = belonging +comUssIonCtn.ctsnnRegist.ctsnnNm = Light +comUssIonCtn.ctsnnRegist.ctsnnCd = Classification +comUssIonCtn.ctsnnRegist.occrrDe = Date of occurrence +comUssIonCtn.ctsnnRegist.trgterNm = Subject name +comUssIonCtn.ctsnnRegist.relate = relationship +comUssIonCtn.ctsnnRegist.brth = Date of birth +comUssIonCtn.ctsnnRegist.remark = Remarks +comUssIonCtn.ctsnnRegist.infrmlSanctnId = Author + +# EgovCtsnnUpdt.jsp +comUssIonCtn.ctsnnUpdt.title = Edit the congratulations +comUssIonCtn.ctsnnUpdt.ctsnnAplyr = applicant +comUssIonCtn.ctsnnUpdt.usNm = Applicant +comUssIonCtn.ctsnnUpdt.usOrgnztNm = belongs +comUssIonCtn.ctsnnUpdt.ctsnnNm = Light +comUssIonCtn.ctsnnUpdt.EnterCtsnnNm = Please enter Light. +comUssIonCtn.ctsnnUpdt.ctsnnCd = Classification +comUssIonCtn.ctsnnUpdt.occrrDe = Date of occurrence +comUssIonCtn.ctsnnUpdt.trgterNm = Subject name +comUssIonCtn.ctsnnUpdt.EnterTrgterNm = Please enter Subject name. +comUssIonCtn.ctsnnUpdt.relate = relationship +comUssIonCtn.ctsnnUpdt.brth = Date of birth +comUssIonCtn.ctsnnUpdt.remark = Remarks +comUssIonCtn.ctsnnUpdt.infrmlSanctnId = Author + +# EgovCtsnnManageDetail.jsp +comUssIonCtn.ctsnnManageDetail.title = Detailed information +comUssIonCtn.ctsnnManageDetail.ctsnnAplyr = applicant +comUssIonCtn.ctsnnManageDetail.usNm = Applicant +comUssIonCtn.ctsnnManageDetail.usOrgnztNm = belongs +comUssIonCtn.ctsnnManageDetail.ctsnnNm = Light +comUssIonCtn.ctsnnManageDetail.ctsnnCd = Classification +comUssIonCtn.ctsnnManageDetail.occrrDe = Date of occurrence +comUssIonCtn.ctsnnManageDetail.trgterNm = Subject name +comUssIonCtn.ctsnnManageDetail.relate = relationship +comUssIonCtn.ctsnnManageDetail.brth = Date of birth +comUssIonCtn.ctsnnManageDetail.remark = Remarks +comUssIonCtn.ctsnnManageDetail.infrmlSanctnId = Author +comUssIonCtn.ctsnnManageDetail.submit = Send + +# EgovCtsnnConfm.jsp +comUssIonCtn.ctsnnConfm.title = Caretaker approval +comUssIonCtn.ctsnnConfm.submit = Transfer +comUssIonCtn.ctsnnConfm.ctsnnAplyr = applicant +comUssIonCtn.ctsnnConfm.usNm = Applicant +comUssIonCtn.ctsnnConfm.orgnztNm = Affiliation +comUssIonCtn.ctsnnConfm.ctsnnNm = Light +comUssIonCtn.ctsnnConfm.ctsnnCdNm = Classification +comUssIonCtn.ctsnnConfm.occrrDe = Date of occurrence +comUssIonCtn.ctsnnConfm.trgterNm = Subject name +comUssIonCtn.ctsnnConfm.relateNm = relationship +comUssIonCtn.ctsnnConfm.brth = Date of birth +comUssIonCtn.ctsnnConfm.remark = Remarks +comUssIonCtn.ctsnnConfm.infrmlSanctnId = Author +comUssIonCtn.ctsnnConfm.agree = Approval +comUssIonCtn.ctsnnConfm.disagree = Cmd + +# EgovCtsnnConfmList.jsp +comUssIonCtn.ctsnnConfmList.title = Recipient List +comUssIonCtn.ctsnnConfmList.searchFromDate = Application date The start date of the search condition is later than the end date. Please check the application date. +comUssIonCtn.ctsnnConfmList.titleList = Recipient approval management list +comUssIonCtn.ctsnnConfmList.searchKeyword = Classification +comUssIonCtn.ctsnnConfmList.selectedAll = All +comUssIonCtn.ctsnnConfmList.applyDate = Application date +comUssIonCtn.ctsnnConfmList.searchFromDate = Start date of application +comUssIonCtn.ctsnnConfmList.searchToDate = End date of application +comUssIonCtn.ctsnnConfmList.searchNm = Applicant +comUssIonCtn.ctsnnConfmList.searchConfmAt = Progress +comUssIonCtn.ctsnnConfmList.searchConfmAt.A = Applying +comUssIonCtn.ctsnnConfmList.searchConfmAt.C = Agree +comUssIonCtn.ctsnnConfmList.searchConfmAt.R = Reject +comUssIonCtn.ctsnnConfmList.searchConfmAt.agree = Approval Processing +comUssIonCtn.ctsnnConfmList.searchConfmAt.detail = View details \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/ctn/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/ctn/message_ko.properties new file mode 100644 index 00000000..a4c345d7 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ctn/message_ko.properties @@ -0,0 +1,110 @@ +#\uacbd\uc870\uc0ac\uad00\ub9ac comUssIonCtn +#EgovCtsnnManage.xml +comUssIonCtn.ctsnnManage.validate.usNm=\uc2e0\uccad\uc790 +comUssIonCtn.ctsnnManage.validate.ctsnnNm=\uacbd\uc870\uba85 +comUssIonCtn.ctsnnManage.validate.ctsnnCd=\uacbd\uc870\ucf54\ub4dc +comUssIonCtn.ctsnnManage.validate.occrrDe=\ubc1c\uc0dd\uc77c\uc790 +comUssIonCtn.ctsnnManage.validate.trgterNm=\ub300\uc0c1\uc790\uba85 +comUssIonCtn.ctsnnManage.validate.relate=\uad00\uacc4 +comUssIonCtn.ctsnnManage.validate.brth=\uc0dd\ub144\uc6d4\uc77c +comUssIonCtn.ctsnnManage.validate.sanctnDtNm=\uc2b9\uc778\uad8c\uc790 + +#EgovCtsnnManageList.jsp +comUssIonCtn.ctsnnManageList.title=\uacbd\uc870\uc0ac\uad00\ub9ac \ubaa9\ub85d +comUssIonCtn.ctsnnManageList.validate.searchFromDate=\uacbd\uc870\uc2e0\uccad\uc77c\uc790 \uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \uacbd\uc870\uc2e0\uccad\uc77c\uc790\ub97c \ud655\uc778\ud558\uc138\uc694. +comUssIonCtn.ctsnnManageList.searchKeyword=\uacbd\uc870\uad6c\ubd84 +comUssIonCtn.ctsnnManageList.selectedAll=\uc804\uccb4 +comUssIonCtn.ctsnnManageList.occurDate=\ubc1c\uc0dd\uc77c\uc790 +comUssIonCtn.ctsnnManageList.searchFromDate=\uacbd\uc870\uc2e0\uccad \uc2dc\uc791\uc77c\uc790 +comUssIonCtn.ctsnnManageList.searchToDate=\uacbd\uc870\uc2e0\uccad \uc885\ub8cc\uc77c\uc790 +comUssIonCtn.ctsnnManageList.searchNm=\uc2e0\uccad\uc790 +comUssIonCtn.ctsnnManageList.searchConfmAt=\uc9c4\ud589\uad6c\ubd84 +comUssIonCtn.ctsnnManageList.searchConfmAt.A=\uc2e0\uccad\uc911 +comUssIonCtn.ctsnnManageList.searchConfmAt.C=\uc2b9\uc778 +comUssIonCtn.ctsnnManageList.searchConfmAt.R=\ubc18\ub824 +comUssIonCtn.ctsnnManageList.ctsnnCdNm=\uacbd\uc870\uba85 +comUssIonCtn.ctsnnManageList.usNm=\uc2e0\uccad\uc790 +comUssIonCtn.ctsnnManageList.orgnztNm=\uc18c\uc18d +comUssIonCtn.ctsnnManageList.sanctnDt=\uc2b9\uc778\uc77c\uc790 +comUssIonCtn.ctsnnManageList.sanctnerNm=\uc2b9\uc778\uc790 + +#EgovCtsnnRegist.jsp +comUssIonCtn.ctsnnRegist.title=\uacbd\uc870\uc0ac \ub4f1\ub85d +comUssIonCtn.ctsnnRegist.ctsnnApply=\uacbd\uc870\uc0ac \uc2e0\uccad +comUssIonCtn.ctsnnRegist.ctsnnAplyr=\uacbd\uc870 \uc2e0\uccad\uc790 +comUssIonCtn.ctsnnRegist.usNm=\uc2e0\uccad\uc790 +comUssIonCtn.ctsnnRegist.usOrgnztNm=\uc18c\uc18d +comUssIonCtn.ctsnnRegist.ctsnnNm=\uacbd\uc870\uba85 +comUssIonCtn.ctsnnRegist.ctsnnCd=\uacbd\uc870\uad6c\ubd84 +comUssIonCtn.ctsnnRegist.occrrDe=\ubc1c\uc0dd\uc77c +comUssIonCtn.ctsnnRegist.trgterNm=\ub300\uc0c1\uc790\uba85 +comUssIonCtn.ctsnnRegist.relate=\uad00\uacc4 +comUssIonCtn.ctsnnRegist.brth=\uc0dd\ub144\uc6d4\uc77c +comUssIonCtn.ctsnnRegist.remark=\ube44\uace0 +comUssIonCtn.ctsnnRegist.infrmlSanctnId=\uacb0\uc7ac\uad8c\uc790 + +#EgovCtsnnUpdt.jsp +comUssIonCtn.ctsnnUpdt.title=\uacbd\uc870\uc0ac \uc218\uc815 +comUssIonCtn.ctsnnUpdt.ctsnnAplyr=\uacbd\uc870 \uc2e0\uccad\uc790 +comUssIonCtn.ctsnnUpdt.usNm=\uc2e0\uccad\uc790 +comUssIonCtn.ctsnnUpdt.usOrgnztNm=\uc18c\uc18d +comUssIonCtn.ctsnnUpdt.ctsnnNm=\uacbd\uc870\uba85 +comUssIonCtn.ctsnnUpdt.EnterCtsnnNm=\uacbd\uc870\uba85\uc744 \uc785\ub825\ud558\uc138\uc694. +comUssIonCtn.ctsnnUpdt.ctsnnCd=\uacbd\uc870\uad6c\ubd84 +comUssIonCtn.ctsnnUpdt.occrrDe=\ubc1c\uc0dd\uc77c +comUssIonCtn.ctsnnUpdt.trgterNm=\ub300\uc0c1\uc790\uba85 +comUssIonCtn.ctsnnUpdt.EnterTrgterNm=\ub300\uc0c1\uc790\uba85\uc744 \uc785\ub825\ud558\uc138\uc694. +comUssIonCtn.ctsnnUpdt.relate=\uad00\uacc4 +comUssIonCtn.ctsnnUpdt.brth=\uc0dd\ub144\uc6d4\uc77c +comUssIonCtn.ctsnnUpdt.remark=\ube44\uace0 +comUssIonCtn.ctsnnUpdt.infrmlSanctnId=\uacb0\uc7ac\uad8c\uc790 + +#EgovCtsnnManageDetail.jsp +comUssIonCtn.ctsnnManageDetail.title=\uacbd\uc870\uc0ac \uc0c1\uc138\uc870\ud68c +comUssIonCtn.ctsnnManageDetail.ctsnnAplyr=\uacbd\uc870 \uc2e0\uccad\uc790 +comUssIonCtn.ctsnnManageDetail.usNm=\uc2e0\uccad\uc790 +comUssIonCtn.ctsnnManageDetail.usOrgnztNm=\uc18c\uc18d +comUssIonCtn.ctsnnManageDetail.ctsnnNm=\uacbd\uc870\uba85 +comUssIonCtn.ctsnnManageDetail.ctsnnCd=\uacbd\uc870\uad6c\ubd84 +comUssIonCtn.ctsnnManageDetail.occrrDe=\ubc1c\uc0dd\uc77c +comUssIonCtn.ctsnnManageDetail.trgterNm=\ub300\uc0c1\uc790\uba85 +comUssIonCtn.ctsnnManageDetail.relate=\uad00\uacc4 +comUssIonCtn.ctsnnManageDetail.brth=\uc0dd\ub144\uc6d4\uc77c +comUssIonCtn.ctsnnManageDetail.remark=\ube44\uace0 +comUssIonCtn.ctsnnManageDetail.infrmlSanctnId=\uacb0\uc7ac\uad8c\uc790 +comUssIonCtn.ctsnnManageDetail.submit=\uc804\uc1a1 + +#EgovCtsnnConfm.jsp +comUssIonCtn.ctsnnConfm.title=\uacbd\uc870\uc0ac\uc2b9\uc778 +comUssIonCtn.ctsnnConfm.submit=\uc804\uc1a1 +comUssIonCtn.ctsnnConfm.ctsnnAplyr=\uacbd\uc870 \uc2e0\uccad\uc790 +comUssIonCtn.ctsnnConfm.usNm=\uc2e0\uccad\uc790 +comUssIonCtn.ctsnnConfm.orgnztNm=\uc18c\uc18d +comUssIonCtn.ctsnnConfm.ctsnnNm=\uacbd\uc870\uba85 +comUssIonCtn.ctsnnConfm.ctsnnCdNm=\uacbd\uc870\uad6c\ubd84 +comUssIonCtn.ctsnnConfm.occrrDe=\ubc1c\uc0dd\uc77c +comUssIonCtn.ctsnnConfm.trgterNm=\ub300\uc0c1\uc790\uba85 +comUssIonCtn.ctsnnConfm.relateNm=\uad00\uacc4 +comUssIonCtn.ctsnnConfm.brth=\uc0dd\ub144\uc6d4\uc77c +comUssIonCtn.ctsnnConfm.remark=\ube44\uace0 +comUssIonCtn.ctsnnConfm.infrmlSanctnId=\uacb0\uc7ac\uad8c\uc790 +comUssIonCtn.ctsnnConfm.agree=\uc2b9\uc778 +comUssIonCtn.ctsnnConfm.disagree=\ubc18\ub824 + +#EgovCtsnnConfmList.jsp +comUssIonCtn.ctsnnConfmList.title=\uacbd\uc870\uc0ac\uc2b9\uc778 \ubaa9\ub85d +comUssIonCtn.ctsnnConfmList.searchFromDate=\uc2e0\uccad\uc77c\uc790 \uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \uc2e0\uccad\uc77c\uc790\ub97c \ud655\uc778\ud558\uc138\uc694. +comUssIonCtn.ctsnnConfmList.titleList=\uacbd\uc870\uc0ac\uc2b9\uc778\uad00\ub9ac \ubaa9\ub85d +comUssIonCtn.ctsnnConfmList.searchKeyword=\uacbd\uc870\uad6c\ubd84 +comUssIonCtn.ctsnnConfmList.selectedAll=\uc804\uccb4 +comUssIonCtn.ctsnnConfmList.applyDate=\uc2e0\uccad\uc77c\uc790 +comUssIonCtn.ctsnnConfmList.searchFromDate=\uacbd\uc870\uc2e0\uccad \uc2dc\uc791\uc77c\uc790 +comUssIonCtn.ctsnnConfmList.searchToDate=\uacbd\uc870\uc2e0\uccad \uc885\ub8cc\uc77c\uc790 +comUssIonCtn.ctsnnConfmList.searchNm=\uc2e0\uccad\uc790 +comUssIonCtn.ctsnnConfmList.searchConfmAt=\uc9c4\ud589\uad6c\ubd84 +comUssIonCtn.ctsnnConfmList.searchConfmAt.A=\uc2e0\uccad\uc911 +comUssIonCtn.ctsnnConfmList.searchConfmAt.C=\uc2b9\uc778 +comUssIonCtn.ctsnnConfmList.searchConfmAt.R=\ubc18\ub824 +comUssIonCtn.ctsnnConfmList.searchConfmAt.agree=\uc2b9\uc778\ucc98\ub9ac +comUssIonCtn.ctsnnConfmList.searchConfmAt.detail=\uc0c1\uc138\ubcf4\uae30 + diff --git a/src/main/resources/egovframework/message/com/uss/ion/ecc/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/ecc/message_en.properties new file mode 100644 index 00000000..af1d984e --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ecc/message_en.properties @@ -0,0 +1,27 @@ +#Event/Campaign# + +comUssIonEcc.eventCmpgnVO.title = Occasion/Event/Campaign + +comUssIonEcc.eventCmpgnVO.findEv = Find Occasion/Event/Campaign +comUssIonEcc.eventCmpgnVO.eventTyCode = Event Type +comUssIonEcc.eventCmpgnVO.eventSvcBeginDe = Event Start Date +comUssIonEcc.eventCmpgnVO.eventSvcEndDe = Event End Date +comUssIonEcc.eventCmpgnVO.eventCn = Event Contents +comUssIonEcc.eventCmpgnVO.svcUseNmprCo = Number Of Participants +comUssIonEcc.eventCmpgnVO.prparetgCn = Preparation Material +comUssIonEcc.eventCmpgnVO.chargerNm = The Person In Charge +comUssIonEcc.eventCmpgnVO.eventConfmAt = Available Options About Approval +comUssIonEcc.eventCmpgnVO.eventConfmDe = Approve Date + +comUssIonEcc.tnextrlHrVO.title = External Personnel + +comUssIonEcc.tnextrlHrVO.sexdstnCode = Gender +comUssIonEcc.tnextrlHrVO.extrlHrNm = External Personnel Name +comUssIonEcc.tnextrlHrVO.occpTyCode = Job Type +comUssIonEcc.tnextrlHrVO.psitnInsttNm = Institute Name +comUssIonEcc.tnextrlHrVO.brth = Date Of Birth +comUssIonEcc.tnextrlHrVO.telNo = Contact Number +comUssIonEcc.tnextrlHrVO.areaNo = Area Code +comUssIonEcc.tnextrlHrVO.middleTelno = Middle Number +comUssIonEcc.tnextrlHrVO.endTelno = End Number +comUssIonEcc.tnextrlHrVO.emailAdres = Email \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/ecc/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/ecc/message_ko.properties new file mode 100644 index 00000000..80c06b22 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ecc/message_ko.properties @@ -0,0 +1,27 @@ +#\ud589\uc0ac/\uc774\ubca4\ud2b8/\ucea0\ud398\uc778# + +comUssIonEcc.eventCmpgnVO.title = \ud589\uc0ac/\uc774\ubca4\ud2b8/\ucea0\ud398\uc778 + +comUssIonEcc.eventCmpgnVO.findEv = \ud589\uc0ac/\uc774\ubca4\ud2b8/\ucea0\ud398\uc778 \uc120\ud0dd +comUssIonEcc.eventCmpgnVO.eventTyCode = \ud589\uc0ac\uc720\ud615 +comUssIonEcc.eventCmpgnVO.eventSvcBeginDe = \ud589\uc0ac\uc2dc\uc791\uc77c +comUssIonEcc.eventCmpgnVO.eventSvcEndDe = \ud589\uc0ac\uc885\ub8cc\uc77c +comUssIonEcc.eventCmpgnVO.eventCn = \ud589\uc0ac\ub0b4\uc6a9 +comUssIonEcc.eventCmpgnVO.svcUseNmprCo = \ucc38\uac00\uc778\uc6d0 \uc218 +comUssIonEcc.eventCmpgnVO.prparetgCn = \uc900\ube44\ubb3c \ub0b4\uc6a9 +comUssIonEcc.eventCmpgnVO.chargerNm = \ub2f4\ub2f9\uc790\uba85 +comUssIonEcc.eventCmpgnVO.eventConfmAt = \uc2b9\uc778\uc5ec\ubd80 +comUssIonEcc.eventCmpgnVO.eventConfmDe = \uc2b9\uc778\uc77c + +comUssIonEcc.tnextrlHrVO.title = \uc678\ubd80\uc778\uc0ac + +comUssIonEcc.tnextrlHrVO.sexdstnCode = \uc131\ubcc4 +comUssIonEcc.tnextrlHrVO.extrlHrNm = \uc678\ubd80\uc778\uc0ac\uba85 +comUssIonEcc.tnextrlHrVO.occpTyCode = \uc9c1\uc5c5\uc720\ud615 +comUssIonEcc.tnextrlHrVO.psitnInsttNm = \uc18c\uc18d\uae30\uad00 +comUssIonEcc.tnextrlHrVO.brth = \uc0dd\ub144\uc6d4\uc77c +comUssIonEcc.tnextrlHrVO.telNo = \uc5f0\ub77d\ucc98 +comUssIonEcc.tnextrlHrVO.areaNo = \uc9c0\uc5ed\ubc88\ud638 +comUssIonEcc.tnextrlHrVO.middleTelno = \uc911\uac04\ubc88\ud638 +comUssIonEcc.tnextrlHrVO.endTelno = \ub05d\ubc88\ud638 +comUssIonEcc.tnextrlHrVO.emailAdres = \uc774\uba54\uc77c\uc8fc\uc18c \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/evt/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/evt/message_en.properties new file mode 100644 index 00000000..98d87f2b --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/evt/message_en.properties @@ -0,0 +1,121 @@ +# Event Application Management / Event Reception Management / Event Reception Approval Management comUssIonEvt + +# EgovEventManage.xml +comUssIonEvt.eventManage.validate.eventSe = Event Category +comUssIonEvt.eventManage.validate.eventNm = Event Name +comUssIonEvt.eventManage.validate.eventPurps = Event Purpose +comUssIonEvt.eventManage.validate.eventBeginDe = Date the event started +comUssIonEvt.eventManage.validate.eventEndDe = End date of the event +comUssIonEvt.eventManage.validate.eventAuspcInsttNm = Name of host organization +comUssIonEvt.eventManage.validate.eventMngtInsttNm = Name of event organization +comUssIonEvt.eventManage.validate.eventPlace = Venue +comUssIonEvt.eventManage.validate.eventCn = Event content +comUssIonEvt.eventManage.validate.ctOccrrncAt = Cost incurred +comUssIonEvt.eventManage.validate.partcptCt = Participation Cost +comUssIonEvt.eventManage.validate.psncpa =capacity +comUssIonEvt.eventManage.validate.rceptBeginDe = Received start date +comUssIonEvt.eventManage.validate.rceptEndDe = End date of receipt + +# EgovEventAtdrn.xml +comUssIonEvt.eventAtdrn.validate.eventId = Event ID +comUssIonEvt.eventAtdrn.validate.sanctnerId = Responder ID + +# EgovEventReqstManageList.jsp +comUssIonEvt.eventReqstManageList.title = Event Management List + +# EgovEventReqstRegist.jsp +comUssIonEvt.eventReqstRegist.title = Registration + +# EgovEventReqstDetail.jsp +comUssIonEvt.eventReqstDetail.title = Event Details + +# EgovEventReqstUpdt.jsp +comUssIonEvt.eventReqstUpdt.title = Edit Events +comUssIonEvt.eventReqstUpdt.eventManageUpdt = Edit Event Management + +# EgovEventReqstAtdrnList.jsp +comUssIonEvt.eventReqstAtdrnList.title = Event attendee list +comUssIonEvt.eventReqstAtdrnList.eventTemp1 = attendee name +comUssIonEvt.eventReqstAtdrnList.eventTemp2 = belongs +comUssIonEvt.eventReqstAtdrnList.eventTemp4 = Category +comUssIonEvt.eventReqstAtdrnList.eventTemp4.A = Apply +comUssIonEvt.eventReqstAtdrnList.eventTemp4.C = Agree +comUssIonEvt.eventReqstAtdrnList.eventTemp4.R = Disagree + +#EgovEventRceptConfm jsp +comUssIonEvt.eventRceptConfm.title = Approval List of Events +comUssIonEvt.eventRceptConfm.validate.checkedEvent = Approval There is no target to process. Approval You can select an object to process and process it. +comUssIonEvt.eventRceptConfm.eventParticipateApply.agree = Apply for Event - Approve +comUssIonEvt.eventRceptConfm.eventParticipateApply.disagree = Application for registration - Penalty +comUssIonEvt.eventRceptConfm.eventRcptMngList = List of approvals received + +# EgovEventRceptManageList.jsp +comUssIonEvt.eventRceptManageList.title = Order Management List +comUssIonEvt.eventRceptManageList.proccessCategory = Exercise Classification +comUssIonEvt.eventRceptManageList.searchConfmAt = Selection Category +comUssIonEvt.eventRceptManageList.searchConfmAt.non = Before submission +comUssIonEvt.eventRceptManageList.searchConfmAt.a = Application for Mediation +comUssIonEvt.eventRceptManageList.searchConfmAt.c = Approval +comUssIonEvt.eventRceptManageList.searchConfmAt.r = Please refuse +comUssIonEvt.eventRceptManageList.applyDetail = Apply (learn more) +comUssIonEvt.eventRceptManageList.confmAt = Apply + +# EgovEventRceptDetail.jsp +comUssIonEvt.eventRceptDetail.title = Receive eligibility details inquiry +comUssIonEvt.eventRceptDetail.validate.confirmCancle = Are you sure you want to cancel this application? +comUssIonEvt.eventRceptDetail.eventManageVO.eventTemp7 = belongs +comUssIonEvt.eventRceptDetail.confirmCancle = Cancel application + +# EgovEventRceptRegist.jsp +comUssIonEvt.eventRceptRegist.title = Application for Event Application +comUssIonEvt.eventRceptRegist.infrmlSanctn = Author + +#Common +comUssIonEvt.common.validate.searchYearValue = You can not view only months in the entire year. Please select the year +comUssIonEvt.common.searchSe = Event Category +comUssIonEvt.common.selectedAll = All +comUssIonEvt.common.eventYearMonth = Date of the event +comUssIonEvt.common.searchYear = Year of the event +comUssIonEvt.common.searchMonth = Event month +comUssIonEvt.common.year = year +comUssIonEvt.common.month = month +comUssIonEvt.common.eventNm = Event Name +comUssIonEvt.common.eventPlace = Event Place +comUssIonEvt.common.eventTemp3 = Event Category +comUssIonEvt.common.eventBeginDe.eventEndDe = Date of the event +comUssIonEvt.common.eventTemp1 = Period +comUssIonEvt.common.prcpPpl = Participation /capacity +comUssIonEvt.common.rceptBeginDe.rceptEndDe = Date of the event +comUssIonEvt.common.days = day +comUssIonEvt.common.validate.vEventBeginDefastervEventEndDe = The event start date is later than the event end date. Please check the promotion period. +comUssIonEvt.common.validate.vRceptBeginDeFastervRceptEndDe = The start date of the event is later than the end date of the event. Please check the application period. +comUssIonEvt.common.validate.vRceptEndDeFastervEventBeginDe = Entries must be received before the start date of the event. Please confirm the period / period of the event. +comUssIonEvt.common.validate.urlCheckvRefrnUrl = The format of the reference URL is different from the URL format. Please check. +comUssIonEvt.common.validate.isNaNvPartcptCt = You can only enter numbers for entry fee. +comUssIonEvt.common.validate.vPartcptCtZero = You must enter more than 0 yen if participation fee is charged. Do not know. +comUssIonEvt.common.validate.isNaNvPsncpa = Only numbers can be entered in thecapacity. +comUssIonEvt.common.validate.vPsncpaZero = You must enter zero or more. Please do not. +comUssIonEvt.common.eventPurps = Event Purpose +comUssIonEvt.common.eventDe = Duration of the event +comUssIonEvt.common.eventBeginDe = Date the event started +comUssIonEvt.common.eventEndDe = End date of the event +comUssIonEvt.common.eventAuspcInsttNm = Organize Events +comUssIonEvt.common.eventMngtInsttNm = Organize Events +comUssIonEvt.common.refrnUrl = Reference URL +comUssIonEvt.common.eventCn = Event content +comUssIonEvt.common.ctOccrrncAt = Participation Cost +comUssIonEvt.common.free = Free +comUssIonEvt.common.fee = Paid +comUssIonEvt.common.feePrice = Amount paid +comUssIonEvt.common.feeUnit = 10,000 Won +comUssIonEvt.common.psncpa =capacity +comUssIonEvt.common.rceptBeginDe = Start date of the event +comUssIonEvt.common.rceptEndDe = End date of the event +comUssIonEvt.common.init = Initialize +comUssIonEvt.common.submit = Send +comUssIonEvt.common.toNewWindow = In a new window +comUssIonEvt.common.titleIconImage = Image of title icon +comUssIonEvt.common.confrm = Agree +comUssIonEvt.common.return = Disagree +comUssIonEvt.common.applcntNm = Applicant +comUssIonEvt.common.sanctnDt = Approval date \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/evt/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/evt/message_ko.properties new file mode 100644 index 00000000..6c61756b --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/evt/message_ko.properties @@ -0,0 +1,121 @@ +#\ud589\uc0ac\uc2e0\uccad\uad00\ub9ac / \ud589\uc0ac\uc811\uc218\uad00\ub9ac/ \ud589\uc0ac\uc811\uc218\uc2b9\uc778\uad00\ub9ac comUssIonEvt + +#EgovEventManage.xml +comUssIonEvt.eventManage.validate.eventSe=\ud589\uc0ac\uad6c\ubd84 +comUssIonEvt.eventManage.validate.eventNm=\ud589\uc0ac\uba85 +comUssIonEvt.eventManage.validate.eventPurps=\ud589\uc0ac\ubaa9\uc801 +comUssIonEvt.eventManage.validate.eventBeginDe=\ud589\uc0ac\uc2dc\uc791\uc77c\uc790 +comUssIonEvt.eventManage.validate.eventEndDe=\ud589\uc0ac\uc885\ub8cc\uc77c\uc790 +comUssIonEvt.eventManage.validate.eventAuspcInsttNm=\ud589\uc0ac\uc8fc\ucd5c\uae30\uad00\uba85 +comUssIonEvt.eventManage.validate.eventMngtInsttNm=\ud589\uc0ac\uc8fc\uad00\uae30\uad00\uba85 +comUssIonEvt.eventManage.validate.eventPlace=\ud589\uc0ac\uc7a5\uc18c +comUssIonEvt.eventManage.validate.eventCn=\ud589\uc0ac\ub0b4\uc6a9 +comUssIonEvt.eventManage.validate.ctOccrrncAt=\ube44\uc6a9\ubc1c\uc0dd\uc5ec\ubd80 +comUssIonEvt.eventManage.validate.partcptCt=\ucc38\uac00\ube44\uc6a9 +comUssIonEvt.eventManage.validate.psncpa=\uc815\uc6d0 +comUssIonEvt.eventManage.validate.rceptBeginDe=\uc811\uc218\uc2dc\uc791\uc77c\uc790 +comUssIonEvt.eventManage.validate.rceptEndDe=\uc811\uc218\uc885\ub8cc\uc77c\uc790 + +#EgovEventAtdrn.xml +comUssIonEvt.eventAtdrn.validate.eventId=\ud589\uc0acID +comUssIonEvt.eventAtdrn.validate.sanctnerId=\uacb0\uc7ac\uc790ID + +#EgovEventReqstManageList.jsp +comUssIonEvt.eventReqstManageList.title=\ud589\uc0ac\uc2e0\uccad\uad00\ub9ac \ubaa9\ub85d + +#EgovEventReqstRegist.jsp +comUssIonEvt.eventReqstRegist.title=\ud589\uc0ac \ub4f1\ub85d + +#EgovEventReqstDetail.jsp +comUssIonEvt.eventReqstDetail.title=\ud589\uc0ac \uc0c1\uc138 + +#EgovEventReqstUpdt.jsp +comUssIonEvt.eventReqstUpdt.title=\ud589\uc0ac\uc218\uc815 +comUssIonEvt.eventReqstUpdt.eventManageUpdt=\ud589\uc0ac\uad00\ub9ac \uc218\uc815 + +#EgovEventReqstAtdrnList.jsp +comUssIonEvt.eventReqstAtdrnList.title=\ud589\uc0ac\ucc38\uc11d\uc790 \ubaa9\ub85d +comUssIonEvt.eventReqstAtdrnList.eventTemp1=\ucc38\uc11d\uc790\uba85 +comUssIonEvt.eventReqstAtdrnList.eventTemp2=\uc18c\uc18d +comUssIonEvt.eventReqstAtdrnList.eventTemp4=\uad6c\ubd84 +comUssIonEvt.eventReqstAtdrnList.eventTemp4.A=\uc2e0\uccad +comUssIonEvt.eventReqstAtdrnList.eventTemp4.C=\uc2b9\uc778 +comUssIonEvt.eventReqstAtdrnList.eventTemp4.R=\ubc18\ub824 + +#EgovEventRceptConfm.jsp +comUssIonEvt.eventRceptConfm.title=\ud589\uc0ac\uc811\uc218\uc2b9\uc778 \ubaa9\ub85d +comUssIonEvt.eventRceptConfm.validate.checkedEvent=\uc2b9\uc778\ucc98\ub9ac\ud560 \ub300\uc0c1\uc774 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc2b9\uc778\ucc98\ub9ac\ud560 \ub300\uc0c1\uc744 \uc120\ud0dd\ud558\uc2e0 \ud6c4 \uc2b9\uc778\ucc98\ub9ac \uac00\ub2a5\ud569\ub2c8\ub2e4. +comUssIonEvt.eventRceptConfm.eventParticipateApply.agree=\ud589\uc0ac\ucc38\uc5ec\uc2e0\uccad - \uc2b9\uc778 +comUssIonEvt.eventRceptConfm.eventParticipateApply.disagree=\ud589\uc0ac\uc811\uc218\uc2e0\uccad - \ubc18\ub824 +comUssIonEvt.eventRceptConfm.eventRcptMngList=\ud589\uc0ac\uc811\uc218\uc2b9\uc778\uad00\ub9ac \ubaa9\ub85d + +#EgovEventRceptManageList.jsp +comUssIonEvt.eventRceptManageList.title=\ud589\uc0ac\uc811\uc218\uad00\ub9ac \ubaa9\ub85d +comUssIonEvt.eventRceptManageList.proccessCategory=\uc9c4\ud589\uad6c\ubd84 +comUssIonEvt.eventRceptManageList.searchConfmAt=\uc2b9\uc778\uad6c\ubd84 +comUssIonEvt.eventRceptManageList.searchConfmAt.non=\uc2e0\uccad\uc804 +comUssIonEvt.eventRceptManageList.searchConfmAt.a=\uc2e0\uccad\uc911 +comUssIonEvt.eventRceptManageList.searchConfmAt.c=\uc2b9\uc778 +comUssIonEvt.eventRceptManageList.searchConfmAt.r=\ubc18\ub824 +comUssIonEvt.eventRceptManageList.applyDetail=\uc2e0\uccad(\uc0c1\uc138) +comUssIonEvt.eventRceptManageList.confmAt=\uc2e0\uccad + +#EgovEventRceptDetail.jsp +comUssIonEvt.eventRceptDetail.title=\ud589\uc0ac\uc811\uc218\uc2e0\uccad \uc0c1\uc138\uc870\ud68c +comUssIonEvt.eventRceptDetail.validate.confirmCancle=\uc2e0\uccad\ucde8\uc18c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comUssIonEvt.eventRceptDetail.eventManageVO.eventTemp7=\uc18c\uc18d +comUssIonEvt.eventRceptDetail.confirmCancle=\uc2e0\uccad\ucde8\uc18c + +#EgovEventRceptRegist.jsp +comUssIonEvt.eventRceptRegist.title=\ud589\uc0ac\uc811\uc218\uc2e0\uccad +comUssIonEvt.eventRceptRegist.infrmlSanctn=\uacb0\uc7ac\uad8c\uc790 + +#Common +comUssIonEvt.common.validate.searchYearValue=\uc804\uccb4\ub144\ub3c4\uc5d0 \uc6d4\ub9cc \uc870\ud68c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub144\ub3c4\ub294 \uc120\ud0dd\ud574\uc8fc\uc138\uc694 +comUssIonEvt.common.searchSe=\ud589\uc0ac\uad6c\ubd84 +comUssIonEvt.common.selectedAll=\uc804\uccb4 +comUssIonEvt.common.eventYearMonth=\ud589\uc0ac\ub144\uc6d4 +comUssIonEvt.common.searchYear=\ud589\uc0ac\ub144 +comUssIonEvt.common.searchMonth=\ud589\uc0ac\uc6d4 +comUssIonEvt.common.year=\ub144 +comUssIonEvt.common.month=\uc6d4 +comUssIonEvt.common.eventNm=\ud589\uc0ac\uba85 +comUssIonEvt.common.eventPlace=\ud589\uc0ac\uc7a5\uc18c +comUssIonEvt.common.eventTemp3=\ud589\uc0ac\uad6c\ubd84 +comUssIonEvt.common.eventBeginDe.eventEndDe=\ud589\uc0ac\uc77c\uc790 +comUssIonEvt.common.eventTemp1=\uae30\uac04 +comUssIonEvt.common.prcpPpl=\ucc38\uc5ec/\uc815\uc6d0 +comUssIonEvt.common.rceptBeginDe.rceptEndDe=\ud589\uc0ac\uc811\uc218\uae30\uac04 +comUssIonEvt.common.days=\uc77c\uac04 +comUssIonEvt.common.validate.vEventBeginDefastervEventEndDe=\ud589\uc0ac\uc2dc\uc791\uc77c\uc774 \ud589\uc0ac\uc885\ub8cc\uc77c\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \ud589\uc0ac\uae30\uac04\uc744 \ud655\uc778\ud574 \uc8fc\uc138\uc694. +comUssIonEvt.common.validate.vRceptBeginDeFastervRceptEndDe=\ud589\uc0ac\uc811\uc218\uc2dc\uc791\uc77c\uc774 \ud589\uc0ac\uc811\uc218\uc885\ub8cc\uc77c\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \ud589\uc0ac\uc811\uc218\uae30\uac04\uc744 \ud655\uc778\ud574 \uc8fc\uc138\uc694. +comUssIonEvt.common.validate.vRceptEndDeFastervEventBeginDe=\ud589\uc0ac\uc811\uc218\ub294 \ud589\uc0ac\uc2dc\uc791\uc77c \uc774\uc804\uc5d0 \uc811\uc218\uc885\ub8cc\ub418\uc5b4\uc5b4 \ud569\ub2c8\ub2e4. \ud589\uc0ac\uae30\uac04/\ud589\uc0ac\uc811\uc218\uae30\uac04\uc744 \ud655\uc778\ud574 \uc8fc\uc138\uc694. +comUssIonEvt.common.validate.urlCheckvRefrnUrl=\ucc38\uc870URL\uc758 \ud615\uc2dd\uc774 URL \ud615\uc2dd\uacfc \ud2c0\ub9bd\ub2c8\ub2e4. \ud655\uc778\ud574 \uc8fc\uc138\uc694. +comUssIonEvt.common.validate.isNaNvPartcptCt=\ucc38\uac00\ube44\uc6a9\uc740 \uc22b\uc790\ub9cc \uc785\ub825\uac00\ub2a5\ud569\ub2c8\ub2e4. +comUssIonEvt.common.validate.vPartcptCtZero=\ucc38\uac00\ube44\uc6a9\uc774 \uc720\ub8cc\uc778 \uacbd\uc6b0 0\uc6d0 \uc774\uc0c1 \uc785\ub825\ud558\uc154\uc57c \ud569\ub2c8\ub2e4. \ud655\uc548\ud574 \uc8fc\uc138\uc694 +comUssIonEvt.common.validate.isNaNvPsncpa=\uc815\uc6d0\uc740 \uc22b\uc790\ub9cc \uc785\ub825\uac00\ub2a5\ud569\ub2c8\ub2e4. +comUssIonEvt.common.validate.vPsncpaZero=\uc815\uc6d0\uc740 0\uba85\uc744 \uc774\uc0c1 \uc785\ub825\ud558\uc154\uc57c \ud569\ub2c8\ub2e4. \ud655\uc548\ud574 \uc8fc\uc138\uc694. +comUssIonEvt.common.eventPurps=\ud589\uc0ac\ubaa9\uc801 +comUssIonEvt.common.eventDe=\ud589\uc0ac\uae30\uac04 +comUssIonEvt.common.eventBeginDe=\ud589\uc0ac \uc2dc\uc791\uc77c\uc790 +comUssIonEvt.common.eventEndDe=\ud589\uc0ac \uc885\ub8cc\uc77c\uc790 +comUssIonEvt.common.eventAuspcInsttNm=\ud589\uc0ac\uc8fc\ucd5c +comUssIonEvt.common.eventMngtInsttNm=\ud589\uc0ac\uc8fc\uad00 +comUssIonEvt.common.refrnUrl=\ucc38\uc870URL +comUssIonEvt.common.eventCn=\ud589\uc0ac\ub0b4\uc6a9 +comUssIonEvt.common.ctOccrrncAt=\ucc38\uac00\ube44\uc6a9 +comUssIonEvt.common.free=\ubb34\ub8cc +comUssIonEvt.common.fee=\uc720\ub8cc +comUssIonEvt.common.feePrice=\uc720\ub8cc\uae08\uc561 +comUssIonEvt.common.feeUnit=\ub9cc\uc6d0 +comUssIonEvt.common.psncpa=\uc815\uc6d0 +comUssIonEvt.common.rceptBeginDe=\ud589\uc0ac\uc811\uc218 \uc2dc\uc791\uc77c\uc790 +comUssIonEvt.common.rceptEndDe=\ud589\uc0ac\uc811\uc218 \uc885\ub8cc\uc77c\uc790 +comUssIonEvt.common.init=\ucd08\uae30\ud654 +comUssIonEvt.common.submit=\uc804\uc1a1 +comUssIonEvt.common.toNewWindow=\uc0c8\ucc3d\uc73c\ub85c +comUssIonEvt.common.titleIconImage=\uc81c\ubaa9\uc544\uc774\ucf58\uc774\ubbf8\uc9c0 +comUssIonEvt.common.confrm=\uc2b9\uc778 +comUssIonEvt.common.return=\ubc18\ub824 +comUssIonEvt.common.applcntNm=\uc2e0\uccad\uc790 +comUssIonEvt.common.sanctnDt=\uc2b9\uc778\uc77c\uc790 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/fbk/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/fbk/message_en.properties new file mode 100644 index 00000000..12926135 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/fbk/message_en.properties @@ -0,0 +1,25 @@ +#Facebook +# EgovFacebookHome.jsp +comUssIonFbk.facebookHome.title = Feature List +comUssIonFbk.facebookHome.subject = Facebook interlock +comUssIonFbk.facebookHome.viewFeed = View Wall +comUssIonFbk.facebookHome.viewDetailAlbum = View photo album details +comUssIonFbk.facebookHome.viewProfile = View profile information +comUssIonFbk.facebookHome.signOutFacebook = Sign out of Facebook + +# EgovFacebookAlbum.jsp +comUssIonFbk.facebookAlbum.title = View your albums + +# EgovFacebookAlbums.jsp +comUssIonFbk.facebookAlbums.title = View Album List + +# EgovFacebookFeed.jsp +comUssIonFbk.facebookFeed.title = WallView + +# EgovFacebookProfile.jsp +comUssIonFbk.facebookProfile.title = View your profile + +# EgovFacebookSignin.jsp +comUssIonFbk.facebookSignin.title = Sign in +comUssIonFbk.facebookSignin.titleInfo=Working with Facebook +comUssIonFbk.facebookSignin.description=For functional testing, you must register the API in advance at https://developers.facebook.com. diff --git a/src/main/resources/egovframework/message/com/uss/ion/fbk/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/fbk/message_ko.properties new file mode 100644 index 00000000..8578eae0 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/fbk/message_ko.properties @@ -0,0 +1,25 @@ +#Facebook +#EgovFacebookHome.jsp +comUssIonFbk.facebookHome.title=\uae30\ub2a5\ubaa9\ub85d +comUssIonFbk.facebookHome.subject=\ud398\uc774\uc2a4\ubd81 \uc5f0\ub3d9 +comUssIonFbk.facebookHome.viewFeed=\ub2f4\ubcbc\ub77d \ubcf4\uae30 +comUssIonFbk.facebookHome.viewDetailAlbum=\uc0ac\uc9c4\uc568\ubc94 \uc0c1\uc138\ubcf4\uae30 +comUssIonFbk.facebookHome.viewProfile=\ud504\ub85c\ud544 \uc815\ubcf4\ubcf4\uae30 +comUssIonFbk.facebookHome.signOutFacebook=\ud398\uc774\uc2a4\ubd81 \ub85c\uadf8\uc544\uc6c3 + +#EgovFacebookAlbum.jsp +comUssIonFbk.facebookAlbum.title=\uc568\ubc94 \uc870\ud68c + +#EgovFacebookAlbums.jsp +comUssIonFbk.facebookAlbums.title=\uc568\ubc94\ubaa9\ub85d \uc870\ud68c + +#EgovFacebookFeed.jsp +comUssIonFbk.facebookFeed.title=\ub2f4\ubcbc\ub77d \uc870\ud68c + +#EgovFacebookProfile.jsp +comUssIonFbk.facebookProfile.title=\ud504\ub85c\ud544 \uc870\ud68c + +#EgovFacebookSignin.jsp +comUssIonFbk.facebookSignin.title=\ub85c\uadf8\uc778 +comUssIonFbk.facebookSignin.titleInfo=Facebook \uc5f0\ub3d9 +comUssIonFbk.facebookSignin.description=\uae30\ub2a5 \ud14c\uc2a4\ud2b8\ub97c \uc704\ud574\uc11c \uc0ac\uc804\uc5d0 https://developers.facebook.com\uc5d0\uc11c API\ub4f1\ub85d\uc744 \ud574\uc57c \ud55c\ub2e4. diff --git a/src/main/resources/egovframework/message/com/uss/ion/isg/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/isg/message_en.properties new file mode 100644 index 00000000..cdfd5948 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/isg/message_en.properties @@ -0,0 +1,22 @@ +#Internet Service Guidance Management# +uss.ion.isg.intnetSvcGuidanceList.intnetSvcGuidanceList=Internet Service Guidance & Management List +uss.ion.isg.intnetSvcGuidanceList.intnetSvcGuidanceNm=Internet Service Name +uss.ion.isg.intnetSvcGuidanceList.intnetSvcGuidanceId=Internet Service ID +uss.ion.isg.intnetSvcGuidanceList.intnetSvcGuidanceReflctAt=Applicability +uss.ion.isg.intnetSvcGuidanceList.intnetSvcGuidanceRegDate=Registration date + +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceRegist=Internet Service Guidance & Management Regist +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceNm=Internet Service Name +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceId=Internet Service ID +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceDc=Internet Service Description +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceReflctAt=Applicability +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceRegDate=Registration date + +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceUpdt=Internet Service Guidance & Management Update +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceNm=Internet Service Name +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceId=Internet Service ID +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceDc=Internet Service Description +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceReflctAt=Applicability +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceRegDate=Registration date + +uss.ion.isg.intnetSvcGuidanceView.intnetSvcGuidanceView=Internet Service Guidance View \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/isg/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/isg/message_ko.properties new file mode 100644 index 00000000..249fbef0 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/isg/message_ko.properties @@ -0,0 +1,23 @@ +#\uc778\ud130\ub137\uc11c\ube44\uc2a4\uc548\ub0b4 \uad00\ub9ac# +uss.ion.isg.intnetSvcGuidanceList.intnetSvcGuidanceList=\uc778\ud130\ub137\uc11c\ube44\uc2a4 \uc548\ub0b4 \ubc0f \uad00\ub9ac \ubaa9\ub85d +uss.ion.isg.intnetSvcGuidanceList.intnetSvcGuidanceNm=\uc778\ud130\ub137\uc11c\ube44\uc2a4 \uba85 +uss.ion.isg.intnetSvcGuidanceList.intnetSvcGuidanceId=\uc778\ud130\ub137\uc11c\ube44\uc2a4 ID +uss.ion.isg.intnetSvcGuidanceList.intnetSvcGuidanceReflctAt=\ubc18\uc601\uc5ec\ubd80 +uss.ion.isg.intnetSvcGuidanceList.intnetSvcGuidanceRegDate=\ub4f1\ub85d\uc77c\uc2dc + +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceRegist=\uc778\ud130\ub137\uc11c\ube44\uc2a4\uc548\ub0b4 \ub4f1\ub85d +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceNm=\uc778\ud130\ub137\uc11c\ube44\uc2a4 \uba85 +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceId=\uc778\ud130\ub137\uc11c\ube44\uc2a4 ID +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceDc=\uc778\ud130\ub137\uc11c\ube44\uc2a4 \uc124\uba85 +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceReflctAt=\ubc18\uc601\uc5ec\ubd80 +uss.ion.isg.intnetSvcGuidanceRegist.intnetSvcGuidanceRegDate=\ub4f1\ub85d\uc77c\uc2dc + +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceUpdt=\uc778\ud130\ub137\uc11c\ube44\uc2a4\uc548\ub0b4 \uc218\uc815 +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceNm=\uc778\ud130\ub137\uc11c\ube44\uc2a4 \uba85 +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceId=\uc778\ud130\ub137\uc11c\ube44\uc2a4 ID +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceDc=\uc778\ud130\ub137\uc11c\ube44\uc2a4 \uc124\uba85 +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceReflctAt=\ubc18\uc601\uc5ec\ubd80 +uss.ion.isg.intnetSvcGuidanceUpdt.intnetSvcGuidanceRegDate=\ub4f1\ub85d\uc77c\uc2dc + +uss.ion.isg.intnetSvcGuidanceView.intnetSvcGuidanceView=\uc778\ud130\ub137\uc11c\ube44\uc2a4\uc548\ub0b4 \ubcf4\uae30 + diff --git a/src/main/resources/egovframework/message/com/uss/ion/ism/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/ism/message_en.properties new file mode 100644 index 00000000..fb230baa --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ism/message_en.properties @@ -0,0 +1,26 @@ +#Informal settlement +#EgovInfrmlSanctnRegist.jsp +comUssIonIsm.infrmlSanctnRegist.sanctnDtNm=Authorized person +comUssIonIsm.infrmlSanctnRegist.orgnztNm=Organization +comUssIonIsm.infrmlSanctnRegist.contractor=Assigning a contractor + +#EgovInfrmlSanctnDetail.jsp +comUssIonIsm.infrmlSanctnDetail.confmAt=Approval status +comUssIonIsm.infrmlSanctnDetail.confmAtA=Applying +comUssIonIsm.infrmlSanctnDetail.confmAtC=Agree +comUssIonIsm.infrmlSanctnDetail.confmAtR=Denial +comUssIonIsm.infrmlSanctnDetail.confmDate=Date of approval +comUssIonIsm.infrmlSanctnDetail.opinion=Opinion +comUssIonIsm.infrmlSanctnDetail.confmAtReason=Reason for withdrawal + +#EgovReturnPopup.jsp +comUssIonIsm.returnPopup.returnProcess=Would you like to process it? + +#EgovSanctnerList.jsp +comUssIonIsm.sanctnerList.searchCondition=Search Condition +comUssIonIsm.sanctnerList.title=User List View +comUssIonIsm.sanctnerList.deptNm=Department Name +comUssIonIsm.sanctnerList.employeeNm=Employee Name +comUssIonIsm.sanctnerList.dept=Department +comUssIonIsm.sanctnerList.class=Rank +comUssIonIsm.sanctnerList.employeeNo=Employee number diff --git a/src/main/resources/egovframework/message/com/uss/ion/ism/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/ism/message_ko.properties new file mode 100644 index 00000000..dbd61d1b --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ism/message_ko.properties @@ -0,0 +1,26 @@ +#\uc57d\uc2dd\uacb0\uc7ac +#EgovInfrmlSanctnRegist.jsp +comUssIonIsm.infrmlSanctnRegist.sanctnDtNm=\uc2b9\uc778\uad8c\uc790\uba85 +comUssIonIsm.infrmlSanctnRegist.orgnztNm=\uc18c\uc18d +comUssIonIsm.infrmlSanctnRegist.contractor=\uacb0\uc7ac\uc790\uc9c0\uc815 + +#EgovInfrmlSanctnDetail.jsp +comUssIonIsm.infrmlSanctnDetail.confmAt=\uc2b9\uc778\uc5ec\ubd80 +comUssIonIsm.infrmlSanctnDetail.confmAtA=\uc2e0\uccad\uc911 +comUssIonIsm.infrmlSanctnDetail.confmAtC=\uc2b9\uc778 +comUssIonIsm.infrmlSanctnDetail.confmAtR=\ubc18\ub824 +comUssIonIsm.infrmlSanctnDetail.confmDate=\uc2b9\uc778\uc77c\uc790 +comUssIonIsm.infrmlSanctnDetail.opinion=\uc758\uacac +comUssIonIsm.infrmlSanctnDetail.confmAtReason=\ubc18\ub824\uc0ac\uc720 + +#EgovReturnPopup.jsp +comUssIonIsm.returnPopup.returnProcess=\ubc18\ub824 \ucc98\ub9ac\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + +#EgovSanctnerList.jsp +comUssIonIsm.sanctnerList.searchCondition=\uc870\ud68c\uc870\uac74 +comUssIonIsm.sanctnerList.title=\uc0ac\uc6a9\uc790 \ubaa9\ub85d\uc870\ud68c +comUssIonIsm.sanctnerList.deptNm=\ubd80\uc11c\uba85 +comUssIonIsm.sanctnerList.employeeNm=\uc0ac\uc6d0\uba85 +comUssIonIsm.sanctnerList.dept=\ubd80\uc11c +comUssIonIsm.sanctnerList.class=\uc9c1\uc704 +comUssIonIsm.sanctnerList.employeeNo=\uc0ac\ubc88 diff --git a/src/main/resources/egovframework/message/com/uss/ion/lsi/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/lsi/message_en.properties new file mode 100644 index 00000000..74fb2106 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/lsi/message_en.properties @@ -0,0 +1,33 @@ +#Login Screen Image Management# +ussIonLsi.loginScrinImageList.loginScrinImageList=Login Screen Image List +ussIonLsi.loginScrinImageList.imageNm=Image Name +ussIonLsi.loginScrinImageList.image=Image +ussIonLsi.loginScrinImageList.imageDc=Image Description +ussIonLsi.loginScrinImageList.reflctAtt=Applicability +ussIonLsi.loginScrinImageList.noImage=No Login image selected. +ussIonLsi.loginScrinImageList.failInquire=No results were inquired. +ussIonLsi.loginScrinImageList.deleteImage=Will you delete it? + +ussIonLsi.loginScrinImageRegist.loginScrinImageRegist=Login Screen Image Regist +ussIonLsi.loginScrinImageRegist.mainImageNm=Image Name +ussIonLsi.loginScrinImageRegist.mainImage=Image +ussIonLsi.loginScrinImageRegist.mainImageId=Image ID +ussIonLsi.loginScrinImageRegist.mainImageDc=Image Description +ussIonLsi.loginScrinImageRegist.mainImageReflctAt=Applicability +ussIonLsi.loginScrinImageRegist.mainImageregDate=Registration date +ussIonLsi.loginScrinImageRegist.saveImage=Do you want to save it? +ussIonLsi.loginScrinImageRegist.ImageReq=Image is required. +ussIonLsi.loginScrinImageRegist.deleteImage=Will you delete it? + +ussIonLsi.loginScrinImageUpdt.loginScrinImageUpdt=Login Screen Image Update +ussIonLsi.loginScrinImageUpdt.mainImageNm=Image Name +ussIonLsi.loginScrinImageUpdt.mainImage=Image +ussIonLsi.loginScrinImageUpdt.mainImageId=Image ID +ussIonLsi.loginScrinImageUpdt.mainImageDc=Image Description +ussIonLsi.loginScrinImageUpdt.mainImageReflctAt=Applicability +ussIonLsi.loginScrinImageUpdt.mainImageregDate=Registration date +ussIonLsi.loginScrinImageUpdt.saveImage=Do you want to save it? +ussIonLsi.loginScrinImageUpdt.deleteImage=Will you delete it? + +ussIonLsi.loginScrinImageView.loginScrinImageView=Login Screen image reflected +ussIonLsi.loginScrinImageView.loginScrinImageViewDc=This page is where 750. images registered in Login Screen Image Management are reflected. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/lsi/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/lsi/message_ko.properties new file mode 100644 index 00000000..af2821d1 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/lsi/message_ko.properties @@ -0,0 +1,33 @@ +#\ub85c\uadf8\uc778\ud654\uba74\uc774\ubbf8\uc9c0 \uad00\ub9ac# +ussIonLsi.loginScrinImageList.loginScrinImageList=\ub85c\uadf8\uc778\ud654\uba74\uc774\ubbf8\uc9c0 \ubaa9\ub85d +ussIonLsi.loginScrinImageList.imageNm=\uc774\ubbf8\uc9c0 \uba85 +ussIonLsi.loginScrinImageList.image=\uc774\ubbf8\uc9c0 +ussIonLsi.loginScrinImageList.imageDc=\uc774\ubbf8\uc9c0 \uc124\uba85 +ussIonLsi.loginScrinImageList.reflctAtt=\ubc18\uc601\uc5ec\ubd80 +ussIonLsi.loginScrinImageList.noImage=\uc120\ud0dd\ub41c \ub85c\uadf8\uc778\ud654\uba74 \uc774\ubbf8\uc9c0\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +ussIonLsi.loginScrinImageList.failInquire=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +ussIonLsi.loginScrinImageList.deleteImage=\uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\uae4c? + +ussIonLsi.loginScrinImageRegist.loginScrinImageRegist=\ub85c\uadf8\uc778\ud654\uba74\uc774\ubbf8\uc9c0 \ub4f1\ub85d +ussIonLsi.loginScrinImageRegist.mainImageNm=\uc774\ubbf8\uc9c0 \uba85 +ussIonLsi.loginScrinImageRegist.mainImage=\uc774\ubbf8\uc9c0 +ussIonLsi.loginScrinImageRegist.mainImageId=\uc774\ubbf8\uc9c0ID +ussIonLsi.loginScrinImageRegist.mainImageDc=\uc774\ubbf8\uc9c0 \uc124\uba85 +ussIonLsi.loginScrinImageRegist.mainImageReflctAt=\ubc18\uc601\uc5ec\ubd80 +ussIonLsi.loginScrinImageRegist.mainImageregDate=\ub4f1\ub85d\uc77c\uc2dc +ussIonLsi.loginScrinImageRegist.saveImage=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +ussIonLsi.loginScrinImageRegist.ImageReq=\uc774\ubbf8\uc9c0\ub294 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +ussIonLsi.loginScrinImageRegist.deleteImage=\uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\uae4c? + +ussIonLsi.loginScrinImageUpdt.loginScrinImageUpdt=\ub85c\uadf8\uc778\ud654\uba74\uc774\ubbf8\uc9c0 \uc218\uc815 +ussIonLsi.loginScrinImageUpdt.mainImageNm=\uc774\ubbf8\uc9c0 \uba85 +ussIonLsi.loginScrinImageUpdt.mainImage=\uc774\ubbf8\uc9c0 +ussIonLsi.loginScrinImageUpdt.mainImageId=\uc774\ubbf8\uc9c0ID +ussIonLsi.loginScrinImageUpdt.mainImageDc=\uc774\ubbf8\uc9c0 \uc124\uba85 +ussIonLsi.loginScrinImageUpdt.mainImageReflctAt=\ubc18\uc601\uc5ec\ubd80 +ussIonLsi.loginScrinImageUpdt.mainImageregDate=\ub4f1\ub85d\uc77c\uc2dc +ussIonLsi.loginScrinImageUpdt.saveImage=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +ussIonLsi.loginScrinImageUpdt.deleteImage=\uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\uae4c? + +ussIonLsi.loginScrinImageView.loginScrinImageView=\ub85c\uadf8\uc778\ud654\uba74\uc774\ubbf8\uc9c0 \ubc18\uc601 +ussIonLsi.loginScrinImageView.loginScrinImageViewDc=\uc774 \ud398\uc774\uc9c0\ub294 750. \ub85c\uadf8\uc778\uc774\ubbf8\uc9c0 \uad00\ub9ac\uc5d0 \ub4f1\ub85d\ud55c \uc774\ubbf8\uc9c0\ub4e4\uc774 \ubc18\uc601\ub418\ub294 \uacf3\uc785\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/msi/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/msi/message_en.properties new file mode 100644 index 00000000..1965b686 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/msi/message_en.properties @@ -0,0 +1,34 @@ +#Main Screen Image Management# +uss.ion.msi.mainImageList.mainImageList=Main Screen Image List +uss.ion.msi.mainImageList.mainImageNm=Image Name +uss.ion.msi.mainImageList.mainImage=Image +uss.ion.msi.mainImageList.mainImageDc=Image Description +uss.ion.msi.mainImageList.mainImageReflctAt=Applicability +uss.ion.msi.mainImageList.noImage=No main image selected. +uss.ion.msi.mainImageList.failInquire=No results were inquired. +uss.ion.msi.mainImageList.deleteImage=Will you delete it? + +uss.ion.msi.mainImageRegist.mainImageRegist=Main Screen Image Regist +uss.ion.msi.mainImageRegist.mainImageNm=Image Name +uss.ion.msi.mainImageRegist.mainImage=Image +uss.ion.msi.mainImageRegist.mainImageId=Image ID +uss.ion.msi.mainImageRegist.mainImageDc=Image Description +uss.ion.msi.mainImageRegist.mainImageReflctAt=Applicability +uss.ion.msi.mainImageRegist.mainImageregDate=Registration date +uss.ion.msi.mainImageRegist.saveImage=Do you want to save it? +uss.ion.msi.mainImageRegist.ImageReq=Image is required. +uss.ion.msi.mainImageRegist.deleteImage=Will you delete it? + +uss.ion.msi.mainImageUpdt.mainImageUpdt=Main Screen Image Update +uss.ion.msi.mainImageUpdt.mainImageNm=Image Name +uss.ion.msi.mainImageUpdt.mainImage=Image +uss.ion.msi.mainImageUpdt.mainImageId=Image ID +uss.ion.msi.mainImageUpdt.mainImageDc=Image Description +uss.ion.msi.mainImageUpdt.mainImageReflctAt=Applicability +uss.ion.msi.mainImageUpdt.mainImageregDate=Registration date +uss.ion.msi.mainImageUpdt.saveImage=Do you want to save it? +uss.ion.msi.mainImageUpdt.ImageReq=Image is required. +uss.ion.msi.mainImageUpdt.deleteImage=Will you delete it? + +uss.ion.msi.mainImageView.mainImageView=Main screen image reflected +uss.ion.msi.mainImageView.mainImageViewDc=This page is where 770. images registered in Main Image Management are reflected. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/msi/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/msi/message_ko.properties new file mode 100644 index 00000000..6d3c6363 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/msi/message_ko.properties @@ -0,0 +1,34 @@ +#\uba54\uc778\uc774\ubbf8\uc9c0\uad00\ub9ac# +uss.ion.msi.mainImageList.mainImageList=\uba54\uc778\ud654\uba74\uc774\ubbf8\uc9c0 \ubaa9\ub85d +uss.ion.msi.mainImageList.mainImageNm=\uc774\ubbf8\uc9c0 \uba85 +uss.ion.msi.mainImageList.mainImage=\uc774\ubbf8\uc9c0 +uss.ion.msi.mainImageList.mainImageDc=\uc774\ubbf8\uc9c0 \uc124\uba85 +uss.ion.msi.mainImageList.mainImageReflctAt=\ubc18\uc601\uc5ec\ubd80 +uss.ion.msi.mainImageList.noImage=\uc120\ud0dd\ub41c \uba54\uc778\ud654\uba74 \uc774\ubbf8\uc9c0\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +uss.ion.msi.mainImageList.failInquire=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +uss.ion.msi.mainImageList.deleteImage=\uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\uae4c? + +uss.ion.msi.mainImageRegist.mainImageRegist=\uba54\uc778\ud654\uba74\uc774\ubbf8\uc9c0 \ub4f1\ub85d +uss.ion.msi.mainImageRegist.mainImageNm=\uc774\ubbf8\uc9c0 \uba85 +uss.ion.msi.mainImageRegist.mainImage=\uc774\ubbf8\uc9c0 +uss.ion.msi.mainImageRegist.mainImageId=\uc774\ubbf8\uc9c0ID +uss.ion.msi.mainImageRegist.mainImageDc=\uc774\ubbf8\uc9c0 \uc124\uba85 +uss.ion.msi.mainImageRegist.mainImageReflctAt=\ubc18\uc601\uc5ec\ubd80 +uss.ion.msi.mainImageRegist.mainImageregDate=\ub4f1\ub85d\uc77c\uc2dc +uss.ion.msi.mainImageRegist.saveImage=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +uss.ion.msi.mainImageRegist.ImageReq=\uc774\ubbf8\uc9c0\ub294 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +uss.ion.msi.mainImageRegist.deleteImage=\uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\uae4c? + +uss.ion.msi.mainImageUpdt.mainImageUpdt=\uba54\uc778\ud654\uba74\uc774\ubbf8\uc9c0 \uc218\uc815 +uss.ion.msi.mainImageUpdt.mainImageNm=\uc774\ubbf8\uc9c0 \uba85 +uss.ion.msi.mainImageUpdt.mainImage=\uc774\ubbf8\uc9c0 +uss.ion.msi.mainImageUpdt.mainImageId=\uc774\ubbf8\uc9c0ID +uss.ion.msi.mainImageUpdt.mainImageDc=\uc774\ubbf8\uc9c0 \uc124\uba85 +uss.ion.msi.mainImageUpdt.mainImageReflctAt=\ubc18\uc601\uc5ec\ubd80 +uss.ion.msi.mainImageUpdt.mainImageregDate=\ub4f1\ub85d\uc77c\uc2dc +uss.ion.msi.mainImageUpdt.saveImage=\uc800\uc7a5 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +uss.ion.msi.mainImageUpdt.ImageReq=\uc774\ubbf8\uc9c0\ub294 \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. +uss.ion.msi.mainImageUpdt.deleteImage=\uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\uae4c? + +uss.ion.msi.mainImageView.mainImageView=\uba54\uc778\ud654\uba74\uc774\ubbf8\uc9c0 \ubc18\uc601 +uss.ion.msi.mainImageView.mainImageViewDc=\uc774 \ud398\uc774\uc9c0\ub294 770. \uba54\uc778\uc774\ubbf8\uc9c0 \uad00\ub9ac\uc5d0 \ub4f1\ub85d\ud55c \uc774\ubbf8\uc9c0\ub4e4\uc774 \ubc18\uc601\ub418\ub294 \uacf3\uc785\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/mtg/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/mtg/message_en.properties new file mode 100644 index 00000000..12248236 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/mtg/message_en.properties @@ -0,0 +1,73 @@ +#Meeting +#EgovMtgPlaceManageList jsp +comUssIonMtg.mtgPlaceManageList.title=Meeting Room Management List +comUssIonMtg.mtgPlaceManageList.mtgPlaceNm=Meeting Room Name +comUssIonMtg.mtgPlaceManageList.number=No +comUssIonMtg.mtgPlaceManageList.time=Open Time(From~To) +comUssIonMtg.mtgPlaceManageList.capacity=Capacity +comUssIonMtg.mtgPlaceManageList.location=Location +comUssIonMtg.mtgPlaceManageList.searchUser=Search By User +comUssIonMtg.mtgPlaceManageList.meetingManagementList=MeetingRoom Management List +comUssIonMtg.mtgPlaceManageList.persons=Persons + +#EgovMtgPlaceRegist.jsp +comUssIonMtg.mtgPlaceRegist.title=Meeting Room Registration +comUssIonMtg.mtgPlaceRegist.occupancy=Occupancy +comUssIonMtg.mtgPlaceRegist.openTime=Open Time +comUssIonMtg.mtgPlaceRegist.imageUpload=Image Upload +comUssIonMtg.mtgPlaceRegist.openTimeFrom=Open Time (From) +comUssIonMtg.mtgPlaceRegist.openTimeTo=Open Time (To) +comUssIonMtg.mtgPlaceRegist.locationSelection=Select Location +comUssIonMtg.mtgPlaceRegist.locationDetail=Location Deatails +comUssIonMtg.mtgPlaceRegist.attachments=Attachments +comUssIonMtg.mtgPlaceRegist.selectStartTime=Please select an open time. +comUssIonMtg.mtgPlaceRegist.selectCloseTime=Please select an close time. +comUssIonMtg.mtgPlaceRegist.checkOpenTime=The open time is later than the close time. Check the opening time. + +#EgovMtgPlaceDetail.jsp +comUssIonMtg.mtgPlaceDetail.title=Meeting Room Detail +comUssIonMtg.mtgPlaceDetail.imgFileList=Image File List + +#EgovMtgPlaceUpdt.jsp +comUssIonMtg.mtgPlaceUpdt.title=Meeting Room Update + +#\ud68c\uc758\uc2e4\uc608\uc57d\uad00\ub9ac +#EgovMtgPlaceResveManageList.jsp +comUssIonMtg.mtgPlaceResveManageList.title=Conference room reservation management list +comUssIonMtg.mtgPlaceResveManageList.meetingDate=Meeting Date +comUssIonMtg.mtgPlaceResveManageList.interfaceSearch=When you change the meeting date, you will need to click the inquiry button to see the reservation list. +comUssIonMtg.mtgPlaceResveManageList.interfaceDetail=To reserve a room, click on a vacant time in the room. (Go to detail screen when clicking graph.) + +#EgovMtgPlaceResveRegist.jsp +comUssIonMtg.mtgPlaceResveRegist.title=Reservation +comUssIonMtg.mtgPlaceResveRegist.mtgSj=Title +comUssIonMtg.mtgPlaceResveRegist.location=Meeting Room Location +comUssIonMtg.mtgPlaceResveRegist.reserver=Booker +comUssIonMtg.mtgPlaceResveRegist.belong=Belong +comUssIonMtg.mtgPlaceResveRegist.resveTime=Reservation time +comUssIonMtg.mtgPlaceResveRegist.resveDe=Reservation date +comUssIonMtg.mtgPlaceResveRegist.resveBeginTm=Start time +comUssIonMtg.mtgPlaceResveRegist.resveEndTm=Close Time +comUssIonMtg.mtgPlaceResveRegist.mtgCn=Meeting contents +comUssIonMtg.mtgPlaceResveRegist.image=Meeting Room Image +comUssIonMtg.mtgPlaceResveRegist.newWindow=To a New Window +comUssIonMtg.mtgPlaceResveRegist.sameCheck=Duplicate check +comUssIonMtg.mtgPlaceResveRegist.attendPeople=Attendance +comUssIonMtg.mtgPlaceResveRegist.dplactCeck=Book a room reservation Make a room reservation to check for duplicates. +comUssIonMtg.mtgPlaceResveRegist.reserve=The meeting room is already reserved. + +#EgovMtgPlaceResveUpdt.jsp +comUssIonMtg.mtgPlaceResveUpdt.timeCheck=The scheduled start time is less than or equal to the scheduled end time. Please confirm the reservation time. +comUssIonMtg.mtgPlaceResveUpdt.title=Modify reservation room + +#EgovMtgPlaceResveDetail.jsp +comUssIonMtg.mtgPlaceResveDetail.title=Meeting room reservation details +comUssIonMtg.mtgPlaceResveDetail.submit=Send + +#EgovMtgPlaceResveDplactCeck.jsp +comUssIonMtg.mtgPlaceResveDplactCeck.title=Confirm Meeting Room Redundancy +comUssIonMtg.mtgPlaceResveDplactCeck.doubleCheck=Duplicate Check +comUssIonMtg.mtgPlaceResveDplactCeck.impossible=Meeting room reservation is not possible. +comUssIonMtg.mtgPlaceResveDplactCeck.doubleTime=Meeting room duplicate reservation. +comUssIonMtg.mtgPlaceResveDplactCeck.possible=Meeting room reservations are available. +comUssIonMtg.mtgPlaceResveDplactCeck.close=Close diff --git a/src/main/resources/egovframework/message/com/uss/ion/mtg/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/mtg/message_ko.properties new file mode 100644 index 00000000..da456e1d --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/mtg/message_ko.properties @@ -0,0 +1,73 @@ +#\ud68c\uc758\uc2e4\uad00\ub9ac +#EgovMtgPlaceManageList jsp +comUssIonMtg.mtgPlaceManageList.title=\ud68c\uc758\uc2e4 \uad00\ub9ac\ubaa9\ub85d +comUssIonMtg.mtgPlaceManageList.mtgPlaceNm=\ud68c\uc758\uc2e4\uba85 +comUssIonMtg.mtgPlaceManageList.number=\ubc88\ud638 +comUssIonMtg.mtgPlaceManageList.time=\uac1c\ubc29\uc2dc\uac04(From~To) +comUssIonMtg.mtgPlaceManageList.capacity=\uc218\uc6a9\uc778\uc6d0 +comUssIonMtg.mtgPlaceManageList.location=\uc704\uce58 +comUssIonMtg.mtgPlaceManageList.searchUser=\uc0ac\uc6a9\uc790\uba85\uac80\uc0c9 +comUssIonMtg.mtgPlaceManageList.meetingManagementList=\ud68c\uc758\uc2e4 \uad00\ub9ac \ubaa9\ucc28 +comUssIonMtg.mtgPlaceManageList.persons=\uba85 + +#EgovMtgPlaceRegist.jsp +comUssIonMtg.mtgPlaceRegist.title=\ud68c\uc758\uc2e4 \ub4f1\ub85d +comUssIonMtg.mtgPlaceRegist.occupancy=\uc218\uc6a9\uac00\ub2a5\uc778\uc6d0 +comUssIonMtg.mtgPlaceRegist.openTime=\uac1c\ubc29\uc2dc\uac04 +comUssIonMtg.mtgPlaceRegist.imageUpload=\uc774\ubbf8\uc9c0 \ud30c\uc77c\ucca8\ubd80 +comUssIonMtg.mtgPlaceRegist.openTimeFrom=\uac1c\ubc29\uc2dc\uc791\uc2dc\uac04 +comUssIonMtg.mtgPlaceRegist.openTimeTo=\uac1c\ubc29\uc885\ub8cc\uc2dc\uac04 +comUssIonMtg.mtgPlaceRegist.locationSelection=\uc704\uce58\uc120\ud0dd +comUssIonMtg.mtgPlaceRegist.locationDetail=\uc704\uce58\uc0c1\uc138 +comUssIonMtg.mtgPlaceRegist.attachments=\ucca8\ubd80\ud30c\uc77c +comUssIonMtg.mtgPlaceRegist.selectStartTime=\uac1c\ubc29 \uc624\ud508 \uc2dc\uac04\uc744 \uc120\ud0dd\ud558\uc138\uc694 +comUssIonMtg.mtgPlaceRegist.selectCloseTime=\uac1c\ubc29 \uc885\ub8cc \uc2dc\uac04\uc744 \uc120\ud0dd\ud558\uc138\uc694 +comUssIonMtg.mtgPlaceRegist.checkOpenTime=\uac1c\ubc29\uc624\ud508\uc2dc\uac04\uc774 \uac1c\ubc29\uc885\ub8cc\uc2dc\uac04\ubcf4\ub2e4 \ub2a6\uac70\ub098 \uac19\uc2b5\ub2c8\ub2e4. \uac1c\ubc29\uc2dc\uac04\uc744 \ud655\uc778\ud558\uc138\uc694. + +#EgovMtgPlaceDetail.jsp +comUssIonMtg.mtgPlaceDetail.title=\ud68c\uc758\uc2e4 \uc0c1\uc138 +comUssIonMtg.mtgPlaceDetail.imgFileList=\uc774\ubbf8\uc9c0 \ud30c\uc77c\ubaa9\ub85d + +#EgovMtgPlaceUpdt.jsp +comUssIonMtg.mtgPlaceUpdt.title=\ud68c\uc758\uc2e4 \uc218\uc815 + +#\ud68c\uc758\uc2e4\uc608\uc57d\uad00\ub9ac +#EgovMtgPlaceResveManageList.jsp +comUssIonMtg.mtgPlaceResveManageList.title=\ud68c\uc758\uc2e4\uc608\uc57d\uad00\ub9ac \ubaa9\ub85d +comUssIonMtg.mtgPlaceResveManageList.meetingDate=\ud68c\uc758\uc77c\uc790 +comUssIonMtg.mtgPlaceResveManageList.interfaceSearch=\ud68c\uc758\uc77c\uc790 \ubcc0\uacbd\uc2dc \uc870\ud68c \ubc84\ud2bc \ud074\ub9ad\ud558\uc154\uc57c \uc608\uc57d \ub9ac\uc2a4\ud2b8\uac00 \uc870\ud68c\ub429\ub2c8\ub2e4. +comUssIonMtg.mtgPlaceResveManageList.interfaceDetail=\ud68c\uc758\uc2e4 \uc608\uc57d\uc740 \ud68c\uc758\uc2e4\uc758 \uc0c9\uc774 \uc5c6\ub294 \ube48 \uc2dc\uac04\uc744 \ud074\ub9ad\ud558\uc2dc\uba74 \uc608\uc57d\uc2e0\uccad\ud654\uba74\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. (\uadf8\ub798\ud504 \ud074\ub9ad\uc2dc \uc0c1\uc138\ud654\uba74 \uc774\ub3d9.) + +#EgovMtgPlaceResveRegist.jsp +comUssIonMtg.mtgPlaceResveRegist.title=\ud68c\uc758\uc2e4 \uc608\uc57d\uc2e0\uccad +comUssIonMtg.mtgPlaceResveRegist.mtgSj=\uc81c\ubaa9 +comUssIonMtg.mtgPlaceResveRegist.location=\ud68c\uc758\uc2e4 \uc704\uce58 +comUssIonMtg.mtgPlaceResveRegist.reserver=\uc608\uc57d\uc790 +comUssIonMtg.mtgPlaceResveRegist.belong=\uc18c\uc18d +comUssIonMtg.mtgPlaceResveRegist.resveTime=\uc608\uc57d\uc2dc\uac04 +comUssIonMtg.mtgPlaceResveRegist.resveDe=\uc608\uc57d\uc77c\uc790 +comUssIonMtg.mtgPlaceResveRegist.resveBeginTm=\uc608\uc57d\uc2dc\uc791\uc2dc\uac04 +comUssIonMtg.mtgPlaceResveRegist.resveEndTm=\uc608\uc57d\uc885\ub8cc\uc2dc\uac04 +comUssIonMtg.mtgPlaceResveRegist.mtgCn=\ud68c\uc758\ub0b4\uc6a9 +comUssIonMtg.mtgPlaceResveRegist.image=\ud68c\uc758\uc2e4 \uc774\ubbf8\uc9c0 +comUssIonMtg.mtgPlaceResveRegist.newWindow=\uc0c8\ucc3d\uc73c\ub85c +comUssIonMtg.mtgPlaceResveRegist.sameCheck=\uc911\ubcf5\uccb4\ud06c +comUssIonMtg.mtgPlaceResveRegist.attendPeople=\ucc38\uc11d\uc778\uc6d0 +comUssIonMtg.mtgPlaceResveRegist.dplactCeck=\ud68c\uc758\uc2e4 \uc608\uc57d \uc911\ubcf5\ud655\uc778\uc744 \ud558\uc2e0 \ud6c4 \ud68c\uc758\uc2e4 \uc608\uc57d\uc744 \ud574\uc8fc\uc138\uc694. +comUssIonMtg.mtgPlaceResveRegist.reserve=\uc774\ubbf8 \ud68c\uc758\uc2e4\uc774 \uc608\uc57d\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. + +#EgovMtgPlaceResveUpdt.jsp +comUssIonMtg.mtgPlaceResveUpdt.timeCheck=\uc608\uc57d\uc2dc\uc791\uc2dc\uac04\uc774 \uc608\uc57d\uc885\ub8cc\uc2dc\uac04\ubcf4\ub2e4 \uc791\uac70\ub098 \uac19\uc2b5\ub2c8\ub2e4. \uc608\uc57d\uc2dc\uac04\uc744 \ud655\uc778\ud574 \uc8fc\uc138\uc694. +comUssIonMtg.mtgPlaceResveUpdt.title=\ud68c\uc758\uc2e4 \uc608\uc57d\uc218\uc815 + +#EgovMtgPlaceResveDetail.jsp +comUssIonMtg.mtgPlaceResveDetail.title=\ud68c\uc758\uc2e4 \uc608\uc57d\uc0c1\uc138 +comUssIonMtg.mtgPlaceResveDetail.submit=\uc804\uc1a1 + +#EgovMtgPlaceResveDplactCeck.jsp +comUssIonMtg.mtgPlaceResveDplactCeck.title=\ud68c\uc758\uc2e4 \uc911\ubcf5\uccb4\ud06c +comUssIonMtg.mtgPlaceResveDplactCeck.doubleCheck=\uc911\ubcf5\uc5ec\ubd80 +comUssIonMtg.mtgPlaceResveDplactCeck.impossible=\ud68c\uc758\uc2e4 \uc608\uc57d\uc774 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4. +comUssIonMtg.mtgPlaceResveDplactCeck.doubleTime=\ud68c\uc758\uc2e4 \uc911\ubcf5 \uc608\uc57d\uc785\ub2c8\ub2e4. +comUssIonMtg.mtgPlaceResveDplactCeck.possible=\ud68c\uc758\uc2e4 \uc608\uc57d \uac00\ub2a5\ud569\ub2c8\ub2e4. +comUssIonMtg.mtgPlaceResveDplactCeck.close=\ub2eb\uae30 diff --git a/src/main/resources/egovframework/message/com/uss/ion/noi/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/noi/message_en.properties new file mode 100644 index 00000000..b6672bab --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/noi/message_en.properties @@ -0,0 +1,41 @@ +#Notification# +ussIonNoi.notificationList.notificationList=Notification List +ussIonNoi.notificationList.ntfcSj=Subject +ussIonNoi.notificationList.ntfcCn=Contents +ussIonNoi.notificationList.ntfcTime=Notification Time +ussIonNoi.notificationList.ntfcDate=Notification Date +ussIonNoi.notificationList.bhNtfcIntrvlString=Reminder interval +ussIonNoi.notificationList.frstRegisterPnttm=Creation date + +ussIonNoi.notificationRegist.notificationRegist=Notification Regist +ussIonNoi.notificationRegist.validate.bhNtfcIntrvlmsg=Reminder interval is required. +ussIonNoi.notificationRegist.ntfcSj=Subject +ussIonNoi.notificationRegist.ntfcCn=Contents +ussIonNoi.notificationRegist.ntfcTime=Notification Time +ussIonNoi.notificationRegist.ntfcDate=Notification Date +ussIonNoi.notificationRegist.bhNtfcIntrvlString=Reminder interval + +ussIonNoi.notificationUpdt.notificationUpdt=Notification Update +ussIonNoi.notificationUpdt.validate.bhNtfcIntrvlmsg=Reminder interval is required. +ussIonNoi.notificationUpdt.validate.alertNtfcTime=Notification date and time are not valid. +ussIonNoi.notificationUpdt.ntfcSj=Subject +ussIonNoi.notificationUpdt.ntfcCn=Contents +ussIonNoi.notificationUpdt.ntfcTime=Notification Time +ussIonNoi.notificationUpdt.ntfcDate=Notification Date +ussIonNoi.notificationUpdt.bhNtfcIntrvlString=Reminder interval + +ussIonNoi.notificationDetail.notificationDetail=Notification Detail +ussIonNoi.notificationDetail.ntfcSj=Subject +ussIonNoi.notificationDetail.ntfcCn=Contents +ussIonNoi.notificationDetail.ntfcTime=Notification Time +ussIonNoi.notificationDetail.ntfcDate=Notification Date +ussIonNoi.notificationDetail.bhNtfcIntrvlString=Reminder interval +ussIonNoi.notificationDetail.frstRegisterNm=Writer +ussIonNoi.notificationDetail.frstRegisterPnttm=Creation time + +ussIonNoi.ntfcRegist.validate.ntfcSj=Subject +ussIonNoi.ntfcRegist.validate.ntfcCn=Contents +ussIonNoi.ntfcRegist.validate.ntfcDate=Notification Date +ussIonNoi.ntfcRegist.validate.ntfcHH=Hour +ussIonNoi.ntfcRegist.validate.ntfcMM=Minute +ussIonNoi.ntfcRegist.validate.bhNtfcIntrvl=Reminder interval \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/noi/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/noi/message_ko.properties new file mode 100644 index 00000000..cfa15735 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/noi/message_ko.properties @@ -0,0 +1,41 @@ +#\uc815\ubcf4\uc54c\ub9bc\uc774# +ussIonNoi.notificationList.notificationList=\uc815\ubcf4\uc54c\ub9bc\uc774 \ubaa9\ub85d +ussIonNoi.notificationList.ntfcSj=\uc81c\ubaa9 +ussIonNoi.notificationList.ntfcCn=\ub0b4\uc6a9 +ussIonNoi.notificationList.ntfcTime=\uc54c\ub9bc\uc2dc\uac04 +ussIonNoi.notificationList.ntfcDate=\uc54c\ub9bc\uc77c\uc790 +ussIonNoi.notificationList.bhNtfcIntrvlString=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 +ussIonNoi.notificationList.frstRegisterPnttm=\uc0dd\uc131\uc77c + +ussIonNoi.notificationRegist.notificationRegist=\uc815\ubcf4\uc54c\ub9bc\uc774 \ub4f1\ub85d +ussIonNoi.notificationRegist.validate.bhNtfcIntrvlmsg=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. +ussIonNoi.notificationRegist.ntfcSj=\uc81c\ubaa9 +ussIonNoi.notificationRegist.ntfcCn=\ub0b4\uc6a9 +ussIonNoi.notificationRegist.ntfcTime=\uc54c\ub9bc\uc2dc\uac04 +ussIonNoi.notificationRegist.ntfcDate=\uc54c\ub9bc\uc77c\uc790 +ussIonNoi.notificationRegist.bhNtfcIntrvlString=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 + +ussIonNoi.notificationUpdt.notificationUpdt=\uc815\ubcf4\uc54c\ub9bc\uc774 \uc218\uc815 +ussIonNoi.notificationUpdt.validate.bhNtfcIntrvlmsg=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. +ussIonNoi.notificationUpdt.validate.alertNtfcTime=\uc54c\ub9bc\uc77c\uc790 \ubc0f \uc2dc\uac04\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +ussIonNoi.notificationUpdt.ntfcSj=\uc81c\ubaa9 +ussIonNoi.notificationUpdt.ntfcCn=\ub0b4\uc6a9 +ussIonNoi.notificationUpdt.ntfcTime=\uc54c\ub9bc\uc2dc\uac04 +ussIonNoi.notificationUpdt.ntfcDate=\uc54c\ub9bc\uc77c\uc790 +ussIonNoi.notificationUpdt.bhNtfcIntrvlString=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 + +ussIonNoi.notificationDetail.notificationDetail=\uc815\ubcf4\uc54c\ub9bc\uc774 \uc0c1\uc138\uc870\ud68c +ussIonNoi.notificationDetail.ntfcSj=\uc81c\ubaa9 +ussIonNoi.notificationDetail.ntfcCn=\ub0b4\uc6a9 +ussIonNoi.notificationDetail.ntfcTime=\uc54c\ub9bc\uc2dc\uac04 +ussIonNoi.notificationDetail.ntfcDate=\uc54c\ub9bc\uc77c\uc790 +ussIonNoi.notificationDetail.bhNtfcIntrvlString=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 +ussIonNoi.notificationDetail.frstRegisterNm=\uc791\uc131\uc790 +ussIonNoi.notificationDetail.frstRegisterPnttm=\uc791\uc131\uc2dc\uac04 + +ussIonNoi.ntfcRegist.validate.ntfcSj=\uc81c\ubaa9 +ussIonNoi.ntfcRegist.validate.ntfcCn=\ub0b4\uc6a9 +ussIonNoi.ntfcRegist.validate.ntfcDate=\uc54c\ub9bc\uc77c\uc790 +ussIonNoi.ntfcRegist.validate.ntfcHH=\uc2dc +ussIonNoi.ntfcRegist.validate.ntfcMM=\ubd84 +ussIonNoi.ntfcRegist.validate.bhNtfcIntrvl=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/ntm/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/ntm/message_en.properties new file mode 100644 index 00000000..222b6682 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ntm/message_en.properties @@ -0,0 +1,24 @@ +#Message Management# +#1\ucc28\uc644\uc131 +#EgovNoteManage.jsp +comUssIonNtm.NoteManage.title = Note Management +comUssIonNtm.NoteMange.subject = Title +comUssIonNtm.NoteMange.receiver = Receiver +comUssIonNtm.NoteMange.receiverList = Receiver List +comUssIonNtm.NoteMange.reception = TO +comUssIonNtm.NoteMange.reference = CC +comUssIonNtm.NoteMange.delete = Delete +comUssIonNtm.NoteMange.content = Contents +comUssIonNtm.NoteMange.send = Send +comUssIonNtm.NoteMange.summary = You can take a note service. +comUssIonNtm.NoteMange.alert.noList = The delete list has no one! +comUssIonNtm.NoteMange.success = Note sent complete. + +#EgovNoteEmpList.jsp +comUssIonNtm.NoteEmpList.title = Note Management(Sending) - Select +comUssIonNtm.NoteEmpList.name = Name +comUssIonNtm.NoteEmpList.id = Id +comUssIonNtm.NoteEmpList.tel = Tel +comUssIonNtm.NoteEmpList.number = No +comUssIonNtm.NoteEmpList.address = Address +comUssIonNtm.NoteEmpList.all = Select All \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/ntm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/ntm/message_ko.properties new file mode 100644 index 00000000..822c8538 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ntm/message_ko.properties @@ -0,0 +1,24 @@ +#\ucabd\uc9c0\uad00\ub9ac# +#1\ucc28\uc644\uc131 +#EgovNoteManage.jsp +comUssIonNtm.NoteManage.title = \ucabd\uc9c0\uad00\ub9ac +comUssIonNtm.NoteMange.subject = \uc81c\ubaa9 +comUssIonNtm.NoteMange.receiver = \ubc1b\ub294 \uc0ac\ub78c +comUssIonNtm.NoteMange.receiverList = \uc218\uc2e0\uc790 \ubaa9\ub85d +comUssIonNtm.NoteMange.reception = \uc218\uc2e0 +comUssIonNtm.NoteMange.reference = \ucc38\uc870 +comUssIonNtm.NoteMange.delete = \uc0ad\uc81c +comUssIonNtm.NoteMange.content = \ucabd\uc9c0 \ub0b4\uc6a9 +comUssIonNtm.NoteMange.send = \uc804\uc1a1 +comUssIonNtm.NoteMange.summary = \ucabd\uc9c0\uad00\ub9ac \uc785\ub825\uc744 \uc81c\uacf5\ud55c\ub2e4. +comUssIonNtm.NoteMange.alert.noList = \uc0ad\uc81c \uac00\ub2a5\ud55c \uc218\uc2e0\uc790 \ubaa9\ub85d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4! +comUssIonNtm.NoteMange.success = \ucabd\uc9c0\ub97c \uc131\uacf5\uc801\uc73c\ub85c \uc804\uc1a1\ud588\uc2b5\ub2c8\ub2e4. + +#EgovNoteEmpList.jsp +comUssIonNtm.NoteEmpList.title = \ucabd\uc9c0 \uad00\ub9ac(\ubcf4\ub0b4\uae30)-\uc218\uc2e0\uc790/\ucc38\uc870\uc790 \uc120\ud0dd +comUssIonNtm.NoteEmpList.name = \uc774\ub984 +comUssIonNtm.NoteEmpList.id = \uc544\uc774\ub514 +comUssIonNtm.NoteEmpList.tel = \uc804\ud654\ubc88\ud638 +comUssIonNtm.NoteEmpList.number = \ubc88\ud638 +comUssIonNtm.NoteEmpList.address = \uc8fc\uc18c +comUssIonNtm.NoteEmpList.all = \uc804\uccb4\uc120\ud0dd \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/ntr/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/ntr/message_en.properties new file mode 100644 index 00000000..e29f409f --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ntr/message_en.properties @@ -0,0 +1,28 @@ +#Received Note Box Management Message# + +comUssIonNtr.title=Received Note Box Management + +comUssIonNtr.list.seq=seq +comUssIonNtr.list.noteSj=subject +comUssIonNtr.list.rcverNm=sender +comUssIonNtr.list.rcverDateTime=sender time + +comUssIonNtr.detail.noteSj=Note Subject +comUssIonNtr.detail.trnsmiterNm=Sender +comUssIonNtr.detail.trnsmiterPnttm=Sender Time +comUssIonNtr.detail.rcverNm=Receiver +comUssIonNtr.detail.rcverPnttm=Receiver Time +comUssIonNtr.detail.noteRecptn=Note Contents + +comUssIonNtr.btn.replay=replay + +comUssIonNtr.searchCondition.rcverDate=sender date +comUssIonNtr.searchCondition.NOTE_SJ=note subject +comUssIonNtr.searchCondition.NOTE_CN=note contents +comUssIonNtr.searchCondition.RCVER_NM=sender +comUssIonNtr.searchCondition.searchFromDate=send start date +comUssIonNtr.searchCondition.searchToDate=send end date + +comUssIonNtr.validate.deleteCnfirmt=Do you confirm the deletion of the selected Inbox? +comUssIonNtr.validate.noDelList=Select a list to delete! +comUssIonNtr.validate.dateFromCheck=Start date of search criteria is later than end date Check the date of the search term! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/ntr/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/ntr/message_ko.properties new file mode 100644 index 00000000..7c71727e --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ntr/message_ko.properties @@ -0,0 +1,29 @@ +#\ubc1b\uc740\ucabd\uc9c0\ud568 Message# + +comUssIonNtr.title=\ubc1b\uc740\ucabd\uc9c0\ud568 + +comUssIonNtr.list.seq=\uc21c\ubc88 +comUssIonNtr.list.noteSj=\uc81c\ubaa9 +comUssIonNtr.list.rcverNm=\ubcf4\ub0b8\uc0ac\ub78c +comUssIonNtr.list.rcverDateTime=\ubcf4\ub0b8\uc2dc\uac01 + +comUssIonNtr.detail.noteSj=\ucabd\uc9c0\uc81c\ubaa9 +comUssIonNtr.detail.trnsmiterNm=\ubc1c\uc2e0\uc790 +comUssIonNtr.detail.trnsmiterPnttm=\ubc1c\uc2e0\uc2dc\uac01 +comUssIonNtr.detail.rcverNm=\uc218\uc2e0\uc790 +comUssIonNtr.detail.rcverPnttm=\uc218\uc2e0\uc2dc\uac01 +comUssIonNtr.detail.noteRecptn=\ucabd\uc9c0\ub0b4\uc6a9 + +comUssIonNtr.btn.replay=\ub2f5\uc7a5 + +comUssIonNtr.searchCondition.rcverDate=\ubcf4\ub0b8\ub0a0\uc9dc +comUssIonNtr.searchCondition.NOTE_SJ=\ucabd\uc9c0\uc81c\ubaa9 +comUssIonNtr.searchCondition.NOTE_CN=\ucabd\uc9c0\ub0b4\uc6a9 +comUssIonNtr.searchCondition.RCVER_NM=\ubcf4\ub0b8\uc0ac\ub78c +comUssIonNtr.searchCondition.searchFromDate=\ubcf4\ub0b8\ub0a0\uc9dc \uc2dc\uc791\uc77c\uc790 +comUssIonNtr.searchCondition.searchToDate=\ubcf4\ub0b8\ub0a0\uc9dc \uc885\ub8cc\uc77c\uc790 + +comUssIonNtr.validate.deleteCnfirmt=\uc120\ud0dd\ub41c \ubc1b\uc740\ucabd\uc9c0\ud568\uc744 \uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comUssIonNtr.validate.noDelList=\uc0ad\uc81c\ud560 \ubaa9\ub85d\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694! + +comUssIonNtr.validate.dateFromCheck=\uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \uac80\uc0c9\uc870\uac74 \ub0a0\uc9dc\ub97c \ud655\uc778\ud558\uc138\uc694! diff --git a/src/main/resources/egovframework/message/com/uss/ion/nts/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/nts/message_en.properties new file mode 100644 index 00000000..78a55479 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/nts/message_en.properties @@ -0,0 +1,39 @@ +#Sent Note Box Management Message# + +comUssIonNts.title=Sent Note Box Management + +comUssIonNts.list.seq=seq +comUssIonNts.list.noteSj=Note Subject +comUssIonNts.list.rcverNm=Sender +comUssIonNts.list.openAt=open/not open +comUssIonNts.list.trnsmiteDateTime=Sender Time + +comUssIonNts.detail.noteSj=Note Subject +comUssIonNts.detail.trnsmitNm=Sender +comUssIonNts.detail.trnsmitPnttm=Sender Time +comUssIonNts.detail.rcverNm=Receiver +comUssIonNts.detail.noteRecptn=Note Contents + +comUssIonNts.detail.trnsmitAll=all +comUssIonNts.detail.trnsmitOpen=open +comUssIonNts.detail.trnsmitNotOpen=not open + +comUssIonNts.popupTrnsmitCnfirm.title=Receiver List Popup + +comUssIonNts.popupTrnsmitCnfirmList.seq=seq +comUssIonNts.popupTrnsmitCnfirmList.rcverID=receiver id +comUssIonNts.popupTrnsmitCnfirmList.rcverNm=receiver +comUssIonNts.popupTrnsmitCnfirmList.openAt=open/not open +comUssIonNts.popupTrnsmitCnfirmList.gbn=type +comUssIonNts.popupTrnsmitCnfirmList.rcverDateTime=receiver time + + +comUssIonNts.searchCondition.rcverDate=sender date +comUssIonNts.searchCondition.NOTE_SJ=note subject +comUssIonNts.searchCondition.NOTE_CN=note contents +comUssIonNts.searchCondition.searchFromDate=send start date +comUssIonNts.searchCondition.searchToDate=send end date + +comUssIonNts.validate.deleteCnfirmt=Do you confirm the deletion of the selected Inbox? +comUssIonNts.validate.noDelList=Select a list to delete! +comUssIonNts.validate.dateFromCheck=Start date of search criteria is later than end date Check the date of the search term! diff --git a/src/main/resources/egovframework/message/com/uss/ion/nts/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/nts/message_ko.properties new file mode 100644 index 00000000..e38d9882 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/nts/message_ko.properties @@ -0,0 +1,41 @@ +#\ubcf4\ub0b8\ucabd\uc9c0\ud568 Message# + +comUssIonNts.title=\ubcf4\ub0b8\ucabd\uc9c0\ud568 + +comUssIonNts.list.seq=\uc21c\ubc88 +comUssIonNts.list.noteSj=\uc81c\ubaa9 +comUssIonNts.list.rcverNm=\ubc1b\ub294\uc0ac\ub78c +comUssIonNts.list.openAt=\uac1c\ubd09/\ub9e4\uac1c\ubd09 +comUssIonNts.list.trnsmiteDateTime=\ubcf4\ub0b8\uc2dc\uac01 + +comUssIonNts.detail.noteSj=\ucabd\uc9c0\uc81c\ubaa9 +comUssIonNts.detail.trnsmitNm=\ubc1c\uc2e0\uc790 +comUssIonNts.detail.trnsmitPnttm=\ubc1c\uc2e0\uc2dc\uac01 +comUssIonNts.detail.rcverNm=\uc218\uc2e0\uc790 +comUssIonNts.detail.noteRecptn=\ucabd\uc9c0\ub0b4\uc6a9 + +comUssIonNts.detail.trnsmitAll=\uc804\uccb4 +comUssIonNts.detail.trnsmitOpen=\uac1c\ubd09 +comUssIonNts.detail.trnsmitNotOpen=\ubbf8\uac1c\ubd09 + +comUssIonNts.popupTrnsmitCnfirm.title=\uc218\uc2e0\uc790\ubaa9\ub85d \ud31d\uc5c5 + +comUssIonNts.popupTrnsmitCnfirmList.seq=\uc21c\ubc88 +comUssIonNts.popupTrnsmitCnfirmList.rcverID=\uc218\uc2e0\uc790ID +comUssIonNts.popupTrnsmitCnfirmList.rcverNm=\ubc1b\ub294\uc0ac\ub78c +comUssIonNts.popupTrnsmitCnfirmList.openAt=\uac1c\ubd09/\ubbf8\uac1c\ubd09 +comUssIonNts.popupTrnsmitCnfirmList.gbn=\uad6c\ubd84 +comUssIonNts.popupTrnsmitCnfirmList.rcverDateTime=\uc218\uc2e0\uc2dc\uac01 + + +comUssIonNts.searchCondition.rcverDate=\ubcf4\ub0b8\ub0a0\uc9dc +comUssIonNts.searchCondition.NOTE_SJ=\ucabd\uc9c0\uc81c\ubaa9 +comUssIonNts.searchCondition.NOTE_CN=\ucabd\uc9c0\ub0b4\uc6a9 + +comUssIonNts.searchCondition.searchFromDate=\ubcf4\ub0b8\ub0a0\uc9dc \uc2dc\uc791\uc77c\uc790 +comUssIonNts.searchCondition.searchToDate=\ubcf4\ub0b8\ub0a0\uc9dc \uc885\ub8cc\uc77c\uc790 + +comUssIonNts.validate.deleteCnfirmt=\uc120\ud0dd\ub41c \ubc1b\uc740\ucabd\uc9c0\ud568\uc744 \uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comUssIonNts.validate.noDelList=\uc0ad\uc81c\ud560 \ubaa9\ub85d\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694! + +comUssIonNts.validate.dateFromCheck=\uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \uac80\uc0c9\uc870\uac74 \ub0a0\uc9dc\ub97c \ud655\uc778\ud558\uc138\uc694! diff --git a/src/main/resources/egovframework/message/com/uss/ion/nws/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/nws/message_en.properties new file mode 100644 index 00000000..40ec8599 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/nws/message_en.properties @@ -0,0 +1,10 @@ +#News Management# + +comUssIonNws.newsVO.title = News + +comUssIonNws.newsVO.newsSj = Title +comUssIonNws.newsVO.newsCn = Content +comUssIonNws.newsVO.newsOrigin =Source +comUssIonNws.newsVO.ntceDe = Published Date +comUssIonNws.newsVO.atchFile = Attach File +comUssIonNws.newsVO.atchFileList = Attach File List \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/nws/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/nws/message_ko.properties new file mode 100644 index 00000000..dcde8f4c --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/nws/message_ko.properties @@ -0,0 +1,10 @@ +#\ub274\uc2a4 \uad00\ub9ac# + +comUssIonNws.newsVO.title = \ub274\uc2a4 + +comUssIonNws.newsVO.newsSj = \ub274\uc2a4\uc81c\ubaa9 +comUssIonNws.newsVO.newsCn = \ub274\uc2a4\ub0b4\uc6a9 +comUssIonNws.newsVO.newsOrigin = \ub274\uc2a4\ucd9c\ucc98 +comUssIonNws.newsVO.ntceDe = \uac8c\uc2dc\uc77c\uc790 +comUssIonNws.newsVO.atchFile = \ucca8\ubd80\ud30c\uc77c +comUssIonNws.newsVO.atchFileList = \ucca8\ubd80\ud30c\uc77c \ubaa9\ub85d \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/pwm/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/pwm/message_en.properties new file mode 100644 index 00000000..6f49057c --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/pwm/message_en.properties @@ -0,0 +1,62 @@ +#Notification# +ussIonPwm.popupList.popupList=Pop-up Management List +ussIonPwm.popupList.popupTitleNm=Pop-up Title +ussIonPwm.popupList.ntcePeriod=Post period +ussIonPwm.popupList.fileUrl=File URL +ussIonPwm.popupList.ntceAt=Posted Status +ussIonPwm.popupList.checkAlert=Please select at least one check box. +ussIonPwm.popupList.guide=When creating a popup window, you will need to enter a sample page in the popup window URL (/egovframework/com/uss/ion/pwm/sample/EgovPopupSample) + +ussIonPwm.popupRegist.popupRegist=Pop-up Management Regist +ussIonPwm.popupRegist.popupTitleNm=Pop-up Title +ussIonPwm.popupRegist.fileUrl=File URL +ussIonPwm.popupRegist.popupLoca=Pop-up Location +ussIonPwm.popupRegist.popupWlce=Horizontal position +ussIonPwm.popupRegist.popupHlc=Vertical position +ussIonPwm.popupRegist.popupSize=Pop-up Size +ussIonPwm.popupRegist.popupWSize=WIDTH +ussIonPwm.popupRegist.popupHSize=HEIGH +ussIonPwm.popupRegist.ntcePeriod=Post period +ussIonPwm.popupRegist.stopVewAt=Stop View Settings +ussIonPwm.popupRegist.ntceAt=Posted Status +ussIonPwm.popupRegist.validate.iChkDate=The publishing start date cannot be greater than the publishing end date and the publishing end date cannot be smaller than the publishing start date. + +ussIonPwm.popupDetail.popupDetail=Pop-up Management Detail +ussIonPwm.popupDetail.popupTitleNm=Pop-up Title +ussIonPwm.popupDetail.fileUrl=File URL +ussIonPwm.popupDetail.popupLoca=Pop-up Location +ussIonPwm.popupDetail.popupWlce=Horizontal position +ussIonPwm.popupDetail.popupHlc=Vertical position +ussIonPwm.popupDetail.popupSize=Pop-up Size +ussIonPwm.popupDetail.popupWSize=WIDTH +ussIonPwm.popupDetail.popupHSize=HEIGH +ussIonPwm.popupDetail.ntcePeriod=Post period +ussIonPwm.popupDetail.stopVewAt=Stop View Settings +ussIonPwm.popupDetail.ntceAt=Posted Status + +ussIonPwm.popupUpdt.popupUpdt=Pop-up Management Detail +ussIonPwm.popupUpdt.popupTitleNm=Pop-up Title +ussIonPwm.popupUpdt.fileUrl=File URL +ussIonPwm.popupUpdt.popupLoca=Pop-up Location +ussIonPwm.popupUpdt.popupWlce=Horizontal position +ussIonPwm.popupUpdt.popupHlc=Vertical position +ussIonPwm.popupUpdt.popupSize=Pop-up Size +ussIonPwm.popupUpdt.popupWSize=WIDTH +ussIonPwm.popupUpdt.popupHSize=HEIGH +ussIonPwm.popupUpdt.ntcePeriod=Post period +ussIonPwm.popupUpdt.stopVewAt=Stop View Settings +ussIonPwm.popupUpdt.ntceAt=Posted Status +ussIonPwm.popupUpdt.validate.iChkDate=The publishing start date cannot be greater than the publishing end date and the publishing end date cannot be smaller than the publishing start date. + +ussIonPwm.popupManage.validate.popupTitleNm=Pop-up Title +ussIonPwm.popupManage.validate.fileUrl=File URL +ussIonPwm.popupManage.validate.popupWlce=Horizontal position +ussIonPwm.popupManage.validate.popupHlc=Horizontal position +ussIonPwm.popupManage.validate.popupWSize=WIDTH +ussIonPwm.popupManage.validate.popupHSize=HEIGH +ussIonPwm.popupManage.validate.stopVewAt=Stop View Settings +ussIonPwm.popupManage.validate.ntceAt=Posted Status + +ussIonPwm.popupSample.popupSample=Pop-up Sample Page +ussIonPwm.popupSample.popupTest=Pop-up Test +ussIonPwm.popupSample.checkBox=Do not open this window \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/pwm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/pwm/message_ko.properties new file mode 100644 index 00000000..acac5312 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/pwm/message_ko.properties @@ -0,0 +1,62 @@ +#\ud31d\uc5c5\ucc3d\uad00\ub9ac# +ussIonPwm.popupList.popupList=\ud31d\uc5c5\ucc3d\uad00\ub9ac \ubaa9\ub85d +ussIonPwm.popupList.popupTitleNm=\uc81c\ubaa9 +ussIonPwm.popupList.ntcePeriod=\uac8c\uc2dc\uae30\uac04 +ussIonPwm.popupList.fileUrl=\ud30c\uc77c +ussIonPwm.popupList.ntceAt=\uac8c\uc2dc\uc0c1\ud0dc +ussIonPwm.popupList.checkAlert=\uccb4\ud06c\ubc15\uc2a4\ub97c \ud558\ub098 \uc774\uc0c1 \uc120\ud0dd\ud574 \uc8fc\uc138\uc694. +ussIonPwm.popupList.guide=\ud31d\uc5c5\ucc3d \uc0dd\uc131 \uc2dc \ud31d\uc5c5\ucc3d URL\uc5d0 \uc0d8\ud50c\ud398\uc774\uc9c0\ub97c \uc785\ub825\ud558\uc154\uc57c \uc0d8\ud50c\uc774 \ubcf4\uc785\ub2c8\ub2e4.(/egovframework/com/uss/ion/pwm/sample/EgovPopupSample) + +ussIonPwm.popupRegist.popupRegist=\ud31d\uc5c5\ucc3d\uad00\ub9ac \ub4f1\ub85d +ussIonPwm.popupRegist.popupTitleNm=\ud31d\uc5c5\ucc3d\uba85 +ussIonPwm.popupRegist.fileUrl=\ud31d\uc5c5\ucc3d URL +ussIonPwm.popupRegist.popupLoca=\ud31d\uc5c5\ucc3d \uc704\uce58 +ussIonPwm.popupRegist.popupWlce=\uac00\ub85c +ussIonPwm.popupRegist.popupHlc=\uc138\ub85c +ussIonPwm.popupRegist.popupSize=\ud31d\uc5c5\ucc3d \uc0ac\uc774\uc988 +ussIonPwm.popupRegist.popupWSize=WIDTH +ussIonPwm.popupRegist.popupHSize=HEIGH +ussIonPwm.popupRegist.ntcePeriod=\uac8c\uc2dc\uae30\uac04 +ussIonPwm.popupRegist.stopVewAt=\uadf8\ub9cc\ubcf4\uae30 \uc124\uc815 \uc5ec\ubd80 +ussIonPwm.popupRegist.ntceAt=\uac8c\uc2dc\uc0c1\ud0dc +ussIonPwm.popupRegist.validate.iChkDate=\uac8c\uc2dc\uc2dc\uc791\uc77c\uc790\ub294 \uac8c\uc2dc\uc885\ub8cc\uc77c\uc790 \ubcf4\ub2e4 \ud074\uc218 \uc5c6\uace0, \uac8c\uc2dc\uc885\ub8cc\uc77c\uc790\ub294 \uac8c\uc2dc\uc2dc\uc791\uc77c\uc790 \ubcf4\ub2e4 \uc791\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +ussIonPwm.popupDetail.popupDetail=\ud31d\uc5c5\ucc3d\uad00\ub9ac \uc0c1\uc138\ubcf4\uae30 +ussIonPwm.popupDetail.popupTitleNm=\ud31d\uc5c5\ucc3d\uba85 +ussIonPwm.popupDetail.fileUrl=\ud31d\uc5c5\ucc3d URL +ussIonPwm.popupDetail.popupLoca=\ud31d\uc5c5\ucc3d \uc704\uce58 +ussIonPwm.popupDetail.popupWlce=\uac00\ub85c +ussIonPwm.popupDetail.popupHlc=\uc138\ub85c +ussIonPwm.popupDetail.popupSize=\ud31d\uc5c5\ucc3d \uc0ac\uc774\uc988 +ussIonPwm.popupDetail.popupWSize=WIDTH +ussIonPwm.popupDetail.popupHSize=HEIGH +ussIonPwm.popupDetail.ntcePeriod=\uac8c\uc2dc\uae30\uac04 +ussIonPwm.popupDetail.stopVewAt=\uadf8\ub9cc\ubcf4\uae30 \uc124\uc815 \uc5ec\ubd80 +ussIonPwm.popupDetail.ntceAt=\uac8c\uc2dc\uc0c1\ud0dc + +ussIonPwm.popupUpdt.popupUpdt=\ud31d\uc5c5\ucc3d\uad00\ub9ac \uc218\uc815 +ussIonPwm.popupUpdt.popupTitleNm=\ud31d\uc5c5\ucc3d\uba85 +ussIonPwm.popupUpdt.fileUrl=\ud31d\uc5c5\ucc3d URL +ussIonPwm.popupUpdt.popupLoca=\ud31d\uc5c5\ucc3d \uc704\uce58 +ussIonPwm.popupUpdt.popupWlce=\uac00\ub85c +ussIonPwm.popupUpdt.popupHlc=\uc138\ub85c +ussIonPwm.popupUpdt.popupSize=\ud31d\uc5c5\ucc3d \uc0ac\uc774\uc988 +ussIonPwm.popupUpdt.popupWSize=WIDTH +ussIonPwm.popupUpdt.popupHSize=HEIGH +ussIonPwm.popupUpdt.ntcePeriod=\uac8c\uc2dc\uae30\uac04 +ussIonPwm.popupUpdt.stopVewAt=\uadf8\ub9cc\ubcf4\uae30 \uc124\uc815 \uc5ec\ubd80 +ussIonPwm.popupUpdt.ntceAt=\uac8c\uc2dc\uc0c1\ud0dc +ussIonPwm.popupUpdt.validate.iChkDate=\uac8c\uc2dc\uc2dc\uc791\uc77c\uc790\ub294 \uac8c\uc2dc\uc885\ub8cc\uc77c\uc790 \ubcf4\ub2e4 \ud074\uc218 \uc5c6\uace0, \uac8c\uc2dc\uc885\ub8cc\uc77c\uc790\ub294 \uac8c\uc2dc\uc2dc\uc791\uc77c\uc790 \ubcf4\ub2e4 \uc791\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +ussIonPwm.popupManage.validate.popupTitleNm=\ud31d\uc5c5\ucc3d\uba85 +ussIonPwm.popupManage.validate.fileUrl=\ud31d\uc5c5\ucc3d URL +ussIonPwm.popupManage.validate.popupWlce=\ud31d\uc5c5\ucc3d \uac00\ub85c\uc704\uce58 +ussIonPwm.popupManage.validate.popupHlc=\ud31d\uc5c5\ucc3d \uc138\ub85c\uc704\uce58 +ussIonPwm.popupManage.validate.popupWSize=\ud31d\uc5c5\ucc3d \uac00\ub85c +ussIonPwm.popupManage.validate.popupHSize=\ud31d\uc5c5\ucc3d \uc138\ub85c +ussIonPwm.popupManage.validate.stopVewAt=\uadf8\ub9cc\ubcf4\uae30\uc5ec\ubd80 +ussIonPwm.popupManage.validate.ntceAt=\uac8c\uc2dc\uc5ec\ubd80 + +ussIonPwm.popupSample.popupSample=\ud31d\uc5c5 \uc0d8\ud50c\ud398\uc774\uc9c0 +ussIonPwm.popupSample.popupTest=\ud31d\uc5c5\ucc3d \ud14c\uc2a4\ud2b8 +ussIonPwm.popupSample.checkBox=\ub2e4\uc74c\ubd80\ud130 \uc774 \ucc3d\uc744 \uc5f4\uc9c0 \uc54a\uc74c \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/rec/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/rec/message_en.properties new file mode 100644 index 00000000..5a27ca5a --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rec/message_en.properties @@ -0,0 +1,10 @@ +#Recommend Site# + +comUssIonRec.recomendSiteVO.title = Recommendation Site + +comUssIonRec.recomendSiteVO.recomendSiteNm = Site Name +comUssIonRec.recomendSiteVO.recomendSiteUrl = URL +comUssIonRec.recomendSiteVO.recomendSiteDc = Description +comUssIonRec.recomendSiteVO.recomendResnCn = Reason For Recommendation +comUssIonRec.recomendSiteVO.recomendConfmAt = Available Options About Approval +comUssIonRec.recomendSiteVO.confmDe = Approval Date diff --git a/src/main/resources/egovframework/message/com/uss/ion/rec/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/rec/message_ko.properties new file mode 100644 index 00000000..68a02a84 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rec/message_ko.properties @@ -0,0 +1,10 @@ +#\uCD94\uCC9C\uC0AC\uC774\uD2B8# + +comUssIonRec.recomendSiteVO.title = \uCD94\uCC9C\uC0AC\uC774\uD2B8 + +comUssIonRec.recomendSiteVO.recomendSiteNm = \uCD94\uCC9C\uC0AC\uC774\uD2B8\uBA85 +comUssIonRec.recomendSiteVO.recomendSiteUrl = \uCD94\uCC9C\uC0AC\uC774\uD2B8URL +comUssIonRec.recomendSiteVO.recomendSiteDc = \uCD94\uCC9C\uC0AC\uC774\uD2B8\uC124\uBA85 +comUssIonRec.recomendSiteVO.recomendResnCn = \uCD94\uCC9C\uC0AC\uC720 +comUssIonRec.recomendSiteVO.recomendConfmAt = \uCD94\uCC9C\uC2B9\uC778\uC5EC\uBD80 +comUssIonRec.recomendSiteVO.confmDe = \uC2B9\uC778\uC77C\uC790 diff --git a/src/main/resources/egovframework/message/com/uss/ion/rmm/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/rmm/message_en.properties new file mode 100644 index 00000000..bcc804a3 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rmm/message_en.properties @@ -0,0 +1,27 @@ +#RoughMap +#EgovRoughMapList.jsp +comUssIonRmm.roughMapList.title=List of Directions +comUssIonRmm.roughMapList.roughMapSj=Directions Title +comUssIonRmm.roughMapList.roughMapAddress=Directions address +comUssIonRmm.roughMapList.roughMapNo=NO +comUssIonRmm.roughMapList.roughMapDetailAddress=Details Address +comUssIonRmm.roughMapList.lastUpdtPnttm=Registration Date +comUssIonRmm.roughMapList.info=Map management requires a Daum Maps API key to be issued. +comUssIonRmm.roughMapList.info2=Daum Maps Web API Guide + +#EgovRoughMapInfoRegist.jsp +comUssIonRmm.roughMapInfoRegist.title=Register Rough Map +comUssIonRmm.roughMapInfoRegist.validate.error=Error occurrence, error code +comUssIonRmm.roughMapInfoRegist.validate.msg=Message +comUssIonRmm.roughMapInfoRegist.validate.noAddress=No address available. +comUssIonRmm.roughMapInfoRegist.validate.searchAddress=Please search for the address. +comUssIonRmm.roughMapInfoRegist.express=Show directions +comUssIonRmm.roughMapInfoRegist.input=Enter Directions + +#EgovRoughMapInfoDetail.jsp +comUssIonRmm.roughMapInfoDetail.title=Detail Rough Map +comUssIonRmm.roughMapInfoDetail.findRoughMap=Get Directions +comUssIonRmm.roughMapInfoDetail.magnifyRoughMap=View Lager + +#EgovRoughMapUpdt.jsp +comUssIonRmm.roughMapUpdt.title=Edit Rough Map \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/rmm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/rmm/message_ko.properties new file mode 100644 index 00000000..65ecaac8 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rmm/message_ko.properties @@ -0,0 +1,27 @@ +#\uc57d\ub3c4\uad00\ub9ac +#EgovRoughMapList.jsp +comUssIonRmm.roughMapList.title=\uc57d\ub3c4 \ubaa9\ub85d +comUssIonRmm.roughMapList.roughMapSj=\uc57d\ub3c4\uc81c\ubaa9 +comUssIonRmm.roughMapList.roughMapAddress=\uc57d\ub3c4\uc8fc\uc18c +comUssIonRmm.roughMapList.roughMapNo=\uc21c\ubc88 +comUssIonRmm.roughMapList.roughMapDetailAddress=\uc57d\ub3c4\uc0c1\uc138\uc8fc\uc18c +comUssIonRmm.roughMapList.lastUpdtPnttm=\ub4f1\ub85d\uc77c\uc790 +comUssIonRmm.roughMapList.info=\uc57d\ub3c4\uad00\ub9ac\ub294 Daum \uc9c0\ub3c4 API \ud0a4\ub97c \ubc1c\uae09\ubc1b\uc544\uc57c \ud569\ub2c8\ub2e4. +comUssIonRmm.roughMapList.info2=Daum \uc9c0\ub3c4 API \uac00\uc774\ub4dc + +#EgovRoughMapInfoRegist.jsp +comUssIonRmm.roughMapInfoRegist.title=\uc57d\ub3c4 \ub4f1\ub85d +comUssIonRmm.roughMapInfoRegist.validate.error=\uc5d0\ub7ec\ubc1c\uc0dd, \uc5d0\ub7ec\ucf54\ub4dc +comUssIonRmm.roughMapInfoRegist.validate.msg=\uba54\uc2dc\uc9c0 +comUssIonRmm.roughMapInfoRegist.validate.noAddress=\uc57d\ub3c4\uc8fc\uc18c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +comUssIonRmm.roughMapInfoRegist.validate.searchAddress=\uc57d\ub3c4\uc8fc\uc18c\ub97c \uac80\uc0c9\ud574\uc8fc\uc138\uc694. +comUssIonRmm.roughMapInfoRegist.express=\uc57d\ub3c4\ud45c\uc2dc +comUssIonRmm.roughMapInfoRegist.input=\uc57d\ub3c4\uc785\ub825 + +#EgovRoughMapInfoDetail.jsp +comUssIonRmm.roughMapInfoDetail.title=\uc57d\ub3c4 \uc0c1\uc138 +comUssIonRmm.roughMapInfoDetail.findRoughMap=\uae38\ucc3e\uae30 +comUssIonRmm.roughMapInfoDetail.magnifyRoughMap=\ud06c\uac8c\ubcf4\uae30 + +#EgovRoughMapUpdt.jsp +comUssIonRmm.roughMapUpdt.title=\uc57d\ub3c4 \uc218\uc815 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/rsm/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/rsm/message_en.properties new file mode 100644 index 00000000..ca500d78 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rsm/message_en.properties @@ -0,0 +1,38 @@ +#Recent search word management# +ussIonRsm.recentSrchwrdList.recentSrchwrdList=Recent search word management List +ussIonRsm.recentSrchwrdList.srchwrdNum=num. +ussIonRsm.recentSrchwrdList.srchwrdManageNm=Recent search word management Name +ussIonRsm.recentSrchwrdList.srchwrdManageUrl=Recent search word management Name URL +ussIonRsm.recentSrchwrdList.srchwrdManageResult=Result +ussIonRsm.recentSrchwrdList.view=View +ussIonRsm.recentSrchwrdList.frstRegisterNm=Registrant +ussIonRsm.recentSrchwrdList.frstRegisterPnttm=Registration date + +ussIonRsm.recentSrchwrdRegist.recentSrchwrdRegist=Recent search word management Regist +ussIonRsm.recentSrchwrdRegist.srchwrdManageNm=Recent search word management Name +ussIonRsm.recentSrchwrdRegist.srchwrdManageUrl=Recent search word management Name URL +ussIonRsm.recentSrchwrdRegist.srchwrdManageUseYn=Whether to search for users + +ussIonRsm.recentSrchwrdDetail.recentSrchwrdDetail=Recent search word management Detail +ussIonRsm.recentSrchwrdDetail.srchwrdManageId=Recent search word management ID +ussIonRsm.recentSrchwrdDetail.srchwrdManageNm=Recent search word management Name +ussIonRsm.recentSrchwrdDetail.srchwrdManageUrl=Recent search word management Name URL +ussIonRsm.recentSrchwrdDetail.srchwrdManageUseYn=Whether to search for users +ussIonRsm.recentSrchwrdDetail.validate.deleteMsg=Will you delete it? + +ussIonRsm.recentSrchwrdUpdt.recentSrchwrdUpdt=Recent search word management Update +ussIonRsm.recentSrchwrdUpdt.srchwrdManageId=Recent search word management ID +ussIonRsm.recentSrchwrdUpdt.srchwrdManageNm=Recent search word management Name +ussIonRsm.recentSrchwrdUpdt.srchwrdManageUrl=Recent search word management Name URL +ussIonRsm.recentSrchwrdUpdt.srchwrdManageUseYn=Whether to search for users +ussIonRsm.recentSrchwrdUpdt.srchwrdManageUseYnSelect=Select Whether to search for users + +ussIonRsm.recentSrchwrdResultList.recentSrchwrdResultList=Recent search word result List +ussIonRsm.recentSrchwrdResultList.srchwrdNum=num. +ussIonRsm.recentSrchwrdResultList.srchwrdNm=Recent search word +ussIonRsm.recentSrchwrdResultList.frstRegisterNm=Registrant +ussIonRsm.recentSrchwrdResultList.frstRegisterPnttm=Registration date +ussIonRsm.recentSrchwrdResultList.deleteAllButton=Delete all +ussIonRsm.recentSrchwrdResultList.deleteButton=Delete +ussIonRsm.recentSrchwrdResultList.validate.deleteMsg=Will you delete it? +ussIonRsm.recentSrchwrdResultList.validate.deleteAMsg=Will you delete all? \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/rsm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/rsm/message_ko.properties new file mode 100644 index 00000000..4b623527 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rsm/message_ko.properties @@ -0,0 +1,38 @@ +#\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac# +ussIonRsm.recentSrchwrdList.recentSrchwrdList=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac \ubaa9\ub85d +ussIonRsm.recentSrchwrdList.srchwrdNum=\uc21c\ubc88 +ussIonRsm.recentSrchwrdList.srchwrdManageNm=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac\uba85 +ussIonRsm.recentSrchwrdList.srchwrdManageUrl=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac URL +ussIonRsm.recentSrchwrdList.srchwrdManageResult=\uacb0\uacfc +ussIonRsm.recentSrchwrdList.view=\ubcf4\uae30 +ussIonRsm.recentSrchwrdList.frstRegisterNm=\ub4f1\ub85d\uc790 +ussIonRsm.recentSrchwrdList.frstRegisterPnttm=\ub4f1\ub85d\uc77c\uc790 + +ussIonRsm.recentSrchwrdRegist.recentSrchwrdRegist=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac \ub4f1\ub85d +ussIonRsm.recentSrchwrdRegist.srchwrdManageNm=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac\uba85 +ussIonRsm.recentSrchwrdRegist.srchwrdManageUrl=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac URL +ussIonRsm.recentSrchwrdRegist.srchwrdManageUseYn=\uc0ac\uc6a9\uc790 \uac80\uc0c9 \uc5ec\ubd80 + +ussIonRsm.recentSrchwrdDetail.recentSrchwrdDetail=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac \uc0c1\uc138\ubcf4\uae30 +ussIonRsm.recentSrchwrdDetail.srchwrdManageId=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac\ubc88\ud638 +ussIonRsm.recentSrchwrdDetail.srchwrdManageNm=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac\uba85 +ussIonRsm.recentSrchwrdDetail.srchwrdManageUrl=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac URL +ussIonRsm.recentSrchwrdDetail.srchwrdManageUseYn=\uc0ac\uc6a9\uc790 \uac80\uc0c9 \uc5ec\ubd80 +ussIonRsm.recentSrchwrdDetail.validate.deleteMsg=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + +ussIonRsm.recentSrchwrdUpdt.recentSrchwrdUpdt=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac \uc218\uc815 +ussIonRsm.recentSrchwrdUpdt.srchwrdManageId=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac\ubc88\ud638 +ussIonRsm.recentSrchwrdUpdt.srchwrdManageNm=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac\uba85 +ussIonRsm.recentSrchwrdUpdt.srchwrdManageUrl=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uad00\ub9ac URL +ussIonRsm.recentSrchwrdUpdt.srchwrdManageUseYn=\uc0ac\uc6a9\uc790 \uac80\uc0c9 \uc5ec\ubd80 +ussIonRsm.recentSrchwrdUpdt.srchwrdManageUseYnSelect=\uc0ac\uc6a9\uc790 \uac80\uc0c9 \uc5ec\ubd80 \uc120\ud0dd + +ussIonRsm.recentSrchwrdResultList.recentSrchwrdResultList=\ucd5c\uadfc\uac80\uc0c9\uc5b4\uacb0\uacfc \ubaa9\ub85d +ussIonRsm.recentSrchwrdResultList.srchwrdNum=\uc21c\ubc88 +ussIonRsm.recentSrchwrdResultList.srchwrdNm=\ucd5c\uadfc\uac80\uc0c9\uc5b4 +ussIonRsm.recentSrchwrdResultList.frstRegisterNm=\ub4f1\ub85d\uc790 +ussIonRsm.recentSrchwrdResultList.frstRegisterPnttm=\ub4f1\ub85d\uc77c\uc790 +ussIonRsm.recentSrchwrdResultList.deleteAllButton=\uc804\uccb4\uc0ad\uc81c +ussIonRsm.recentSrchwrdResultList.deleteButton=\uc0ad\uc81c +ussIonRsm.recentSrchwrdResultList.validate.deleteMsg=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +ussIonRsm.recentSrchwrdResultList.validate.deleteAMsg=\ubaa8\ub450 \uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? diff --git a/src/main/resources/egovframework/message/com/uss/ion/rsn/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/rsn/message_en.properties new file mode 100644 index 00000000..6c547f5f --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rsn/message_en.properties @@ -0,0 +1,10 @@ +#RSS Tag Service# +ussIonRsn.rssTagServiceList.rssTagServiceList=RSS Tag Service List +ussIonRsn.rssTagServiceList.rssTagNum=Num +ussIonRsn.rssTagServiceList.trgetSvcNm=Target Service Name +ussIonRsn.rssTagServiceList.trgetSvcTable=Target Service Table +ussIonRsn.rssTagServiceList.frstRegisterNm=Registrant +ussIonRsn.rssTagServiceList.frstRegisterPnttm=Registration date + +ussIonRsn.rssTagServiceList.validate.searchCondition=Please select a search condition! +ussIonRsn.rssTagServiceList.validate.searchKeyword=Please enter your search term! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/rsn/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/rsn/message_ko.properties new file mode 100644 index 00000000..6495f38c --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rsn/message_ko.properties @@ -0,0 +1,10 @@ +#RSS\ud0dc\uadf8 \uc11c\ube44\uc2a4# +ussIonRsn.rssTagServiceList.rssTagServiceList=RSS\ud0dc\uadf8 \uc11c\ube44\uc2a4 \ubaa9\ub85d +ussIonRsn.rssTagServiceList.rssTagNum=\uc21c\ubc88 +ussIonRsn.rssTagServiceList.trgetSvcNm=\ub300\uc0c1\uc11c\ube44\uc2a4\uba85 +ussIonRsn.rssTagServiceList.trgetSvcTable=\ub300\uc0c1\ud14c\uc774\ube14\uba85 +ussIonRsn.rssTagServiceList.frstRegisterNm=\uc791\uc131\uc790 +ussIonRsn.rssTagServiceList.frstRegisterPnttm=\ub4f1\ub85d\uc77c\uc790 + +ussIonRsn.rssTagServiceList.validate.searchCondition=\uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694! +ussIonRsn.rssTagServiceList.validate.searchKeyword=\uac80\uc0c9\uc5b4\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/rss/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/rss/message_en.properties new file mode 100644 index 00000000..7a7bac8c --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rss/message_en.properties @@ -0,0 +1,69 @@ +#RSS Tag Management# +ussIonRss.rssTagManageList.rssTagManageList=RSS Tag Management List +ussIonRss.rssTagManageList.trgetSvcNm=Target Service Name +ussIonRss.rssTagManageList.trgetSvcTable=Target Service Table +ussIonRss.rssTagManageList.hderTitle=Header TITLE +ussIonRss.rssTagManageList.hderLink=Header LINK +ussIonRss.rssTagManageList.hderDescription=Header DESCRIPTION +ussIonRss.rssTagManageList.hderTag=Header TAG +ussIonRss.rssTagManageList.hderEtc=Header ETC +ussIonRss.rssTagManageList.bdtLink=Body LINK +ussIonRss.rssTagManageList.bdtDescription=Body DESCRIPTION +ussIonRss.rssTagManageList.bdtTag=Body TAG +ussIonRss.rssTagManageList.bdtEtc=Body ETC +ussIonRss.rssTagManageList.frstRegisterNm=Registrant +ussIonRss.rssTagManageList.frstRegisterPnttm=Registration date +ussIonRss.rssTagManageList.validate.searchCondition=Please select a search condition! +ussIonRss.rssTagManageList.validate.searchKeyword=Please enter your search term! +ussIonRss.rssTagManageList.validate.deleteAlert=Are you sure you want to delete the selected information? +ussIonRss.rssTagManageList.validate.selectDelete=Please select a list to delete! + +ussIonRss.rssTagManageDetail.rssTagManageDetail=RSS Tag Management Detail +ussIonRss.rssTagManageDetail.trgetSvcNm=Target Service Name +ussIonRss.rssTagManageDetail.trgetSvcTable=Target Service Table +ussIonRss.rssTagManageDetail.trgetSvcListCo=Number of target service list +ussIonRss.rssTagManageDetail.hderTitle=Header TITLE +ussIonRss.rssTagManageDetail.hderLink=Header LINK +ussIonRss.rssTagManageDetail.hderDescription=Header DESCRIPTION +ussIonRss.rssTagManageDetail.hderTag=Header TAG +ussIonRss.rssTagManageDetail.hderEtc=Header ETC +ussIonRss.rssTagManageDetail.bdtTitle=Body TITLE +ussIonRss.rssTagManageDetail.bdtLink=Body LINK +ussIonRss.rssTagManageDetail.bdtDescription=Body DESCRIPTION +ussIonRss.rssTagManageDetail.bdtTag=Body TAG +ussIonRss.rssTagManageDetail.bdtEtc=Body ETC +ussIonRss.rssTagManageDetail.validate.deleteAlert=Are you sure you want to delete? + +ussIonRss.rssTagManageRegist.rssTagManageRegist=RSS Tag Management Regist +ussIonRss.rssTagManageRegist.trgetSvcNm=Target Service Name +ussIonRss.rssTagManageRegist.trgetSvcTable=Target Service Table +ussIonRss.rssTagManageRegist.trgetSvcListCo=Number of target service list +ussIonRss.rssTagManageRegist.hderTitle=Header TITLE +ussIonRss.rssTagManageRegist.hderLink=Header LINK +ussIonRss.rssTagManageRegist.hderDescription=Header DESCRIPTION +ussIonRss.rssTagManageRegist.hderTag=Header TAG +ussIonRss.rssTagManageRegist.hderEtc=Header ETC +ussIonRss.rssTagManageRegist.tableColumn=Column +ussIonRss.rssTagManageRegist.bdtTitle=Body TITLE +ussIonRss.rssTagManageRegist.bdtLink=Body LINK +ussIonRss.rssTagManageRegist.bdtDescription=Body DESCRIPTION +ussIonRss.rssTagManageRegist.bdtTag=Body TAG +ussIonRss.rssTagManageRegist.bdtEtc=Body ETC +ussIonRss.rssTagManageRegist.validate.Duplicate=Column name duplicated! + +ussIonRss.rssTagManageUpdt.rssTagManageUpdt=RSS Tag Management Update +ussIonRss.rssTagManageUpdt.trgetSvcNm=Target Service Name +ussIonRss.rssTagManageUpdt.trgetSvcTable=Target Service Table +ussIonRss.rssTagManageUpdt.trgetSvcListCo=Number of target service list +ussIonRss.rssTagManageUpdt.hderTitle=Header TITLE +ussIonRss.rssTagManageUpdt.hderLink=Header LINK +ussIonRss.rssTagManageUpdt.hderDescription=Header DESCRIPTION +ussIonRss.rssTagManageUpdt.hderTag=Header TAG +ussIonRss.rssTagManageUpdt.hderEtc=Header ETC +ussIonRss.rssTagManageUpdt.tableColumn=Column +ussIonRss.rssTagManageUpdt.bdtTitle=Body TITLE +ussIonRss.rssTagManageUpdt.bdtLink=Body LINK +ussIonRss.rssTagManageUpdt.bdtDescription=Body DESCRIPTION +ussIonRss.rssTagManageUpdt.bdtTag=Body TAG +ussIonRss.rssTagManageUpdt.bdtEtc=Body ETC +ussIonRss.rssTagManageUpdt.validate.Duplicate=Column name duplicated! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/rss/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/rss/message_ko.properties new file mode 100644 index 00000000..be1ccce8 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rss/message_ko.properties @@ -0,0 +1,69 @@ +#RSS\ud0dc\uadf8\uad00\ub9ac# +ussIonRss.rssTagManageList.rssTagManageList=RSS\ud0dc\uadf8\uad00\ub9ac \ubaa9\ub85d +ussIonRss.rssTagManageList.trgetSvcNm=\ub300\uc0c1\uc11c\ube44\uc2a4\uba85 +ussIonRss.rssTagManageList.trgetSvcTable=\ub300\uc0c1\ud14c\uc774\ube14\uba85 +ussIonRss.rssTagManageList.hderTitle=\ud5e4\ub354TITLE +ussIonRss.rssTagManageList.hderLink=\ud5e4\ub354LINK +ussIonRss.rssTagManageList.hderDescription=\ud5e4\ub354DESCRIPTION +ussIonRss.rssTagManageList.hderTag=\ud5e4\ub354TAG +ussIonRss.rssTagManageList.hderEtc=\ud5e4\ub354ETC +ussIonRss.rssTagManageList.bdtLink=\ubcf8\ubb38LINK +ussIonRss.rssTagManageList.bdtDescription=\ubcf8\ubb38DESCRIPTION +ussIonRss.rssTagManageList.bdtTag=\ubcf8\ubb38TAG +ussIonRss.rssTagManageList.bdtEtc=\ubcf8\ubb38ETC +ussIonRss.rssTagManageList.frstRegisterNm=\uc791\uc131\uc790 +ussIonRss.rssTagManageList.frstRegisterPnttm=\ub4f1\ub85d\uc77c\uc790 +ussIonRss.rssTagManageList.validate.searchCondition=\uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694! +ussIonRss.rssTagManageList.validate.searchKeyword=\uac80\uc0c9\uc5b4\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694! +ussIonRss.rssTagManageList.validate.deleteAlert=\uc120\ud0dd\ub41c \uc815\ubcf4\ub97c \uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +ussIonRss.rssTagManageList.validate.selectDelete=\uc0ad\uc81c\ud560 \ubaa9\ub85d\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694! + +ussIonRss.rssTagManageDetail.rssTagManageDetail=RSS\ud0dc\uadf8\uad00\ub9ac \uc0c1\uc138\uc870\ud68c +ussIonRss.rssTagManageDetail.trgetSvcNm=\ub300\uc0c1\uc11c\ube44\uc2a4\uba85 +ussIonRss.rssTagManageDetail.trgetSvcTable=\ub300\uc0c1\ud14c\uc774\ube14\uba85 +ussIonRss.rssTagManageDetail.trgetSvcListCo=\ub300\uc0c1\uc11c\ube44\uc2a4\ubaa9\ub85d\uac2f\uc218 +ussIonRss.rssTagManageDetail.hderTitle=\ud5e4\ub354TITLE +ussIonRss.rssTagManageDetail.hderLink=\ud5e4\ub354LINK +ussIonRss.rssTagManageDetail.hderDescription=\ud5e4\ub354DESCRIPTION +ussIonRss.rssTagManageDetail.hderTag=\ud5e4\ub354TAG +ussIonRss.rssTagManageDetail.hderEtc=\ud5e4\ub354ETC +ussIonRss.rssTagManageDetail.bdtTitle=\ubcf8\ubb38TITLE +ussIonRss.rssTagManageDetail.bdtLink=\ubcf8\ubb38LINK +ussIonRss.rssTagManageDetail.bdtDescription=\ubcf8\ubb38DESCRIPTION +ussIonRss.rssTagManageDetail.bdtTag=\ubcf8\ubb38TAG +ussIonRss.rssTagManageDetail.bdtEtc=\ubcf8\ubb38ETC +ussIonRss.rssTagManageDetail.validate.deleteAlert=\uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + +ussIonRss.rssTagManageRegist.rssTagManageRegist=RSS\ud0dc\uadf8\uad00\ub9ac \ub4f1\ub85d +ussIonRss.rssTagManageRegist.trgetSvcNm=\ub300\uc0c1\uc11c\ube44\uc2a4\uba85 +ussIonRss.rssTagManageRegist.trgetSvcTable=\ub300\uc0c1\ud14c\uc774\ube14\uba85 +ussIonRss.rssTagManageRegist.trgetSvcListCo=\ub300\uc0c1\uc11c\ube44\uc2a4\ubaa9\ub85d\uac2f\uc218 +ussIonRss.rssTagManageRegist.hderTitle=\ud5e4\ub354TITLE +ussIonRss.rssTagManageRegist.hderLink=\ud5e4\ub354LINK +ussIonRss.rssTagManageRegist.hderDescription=\ud5e4\ub354DESCRIPTION +ussIonRss.rssTagManageRegist.hderTag=\ud5e4\ub354TAG +ussIonRss.rssTagManageRegist.hderEtc=\ud5e4\ub354ETC +ussIonRss.rssTagManageRegist.tableColumn=\uceec\ub7fc +ussIonRss.rssTagManageRegist.bdtTitle=\ubcf8\ubb38TITLE +ussIonRss.rssTagManageRegist.bdtLink=\ubcf8\ubb38LINK +ussIonRss.rssTagManageRegist.bdtDescription=\ubcf8\ubb38DESCRIPTION +ussIonRss.rssTagManageRegist.bdtTag=\ubcf8\ubb38TAG +ussIonRss.rssTagManageRegist.bdtEtc=\ubcf8\ubb38ETC +ussIonRss.rssTagManageRegist.validate.Duplicate=\uceec\ub7fc\uba85\uc774 \uc911\ubcf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4! + +ussIonRss.rssTagManageUpdt.rssTagManageUpdt=RSS\ud0dc\uadf8\uad00\ub9ac \uc218\uc815 +ussIonRss.rssTagManageUpdt.trgetSvcNm=\ub300\uc0c1\uc11c\ube44\uc2a4\uba85 +ussIonRss.rssTagManageUpdt.trgetSvcTable=\ub300\uc0c1\ud14c\uc774\ube14\uba85 +ussIonRss.rssTagManageUpdt.trgetSvcListCo=\ub300\uc0c1\uc11c\ube44\uc2a4\ubaa9\ub85d\uac2f\uc218 +ussIonRss.rssTagManageUpdt.hderTitle=\ud5e4\ub354TITLE +ussIonRss.rssTagManageUpdt.hderLink=\ud5e4\ub354LINK +ussIonRss.rssTagManageUpdt.hderDescription=\ud5e4\ub354DESCRIPTION +ussIonRss.rssTagManageUpdt.hderTag=\ud5e4\ub354TAG +ussIonRss.rssTagManageUpdt.hderEtc=\ud5e4\ub354ETC +ussIonRss.rssTagManageUpdt.tableColumn=\uceec\ub7fc +ussIonRss.rssTagManageUpdt.bdtTitle=\ubcf8\ubb38TITLE +ussIonRss.rssTagManageUpdt.bdtLink=\ubcf8\ubb38LINK +ussIonRss.rssTagManageUpdt.bdtDescription=\ubcf8\ubb38DESCRIPTION +ussIonRss.rssTagManageUpdt.bdtTag=\ubcf8\ubb38TAG +ussIonRss.rssTagManageUpdt.bdtEtc=\ubcf8\ubb38ETC +ussIonRss.rssTagManageUpdt.validate.Duplicate=\uceec\ub7fc\uba85\uc774 \uc911\ubcf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/rwd/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/rwd/message_en.properties new file mode 100644 index 00000000..5347127f --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rwd/message_en.properties @@ -0,0 +1,58 @@ +# Awards Management UssIonRwd +# EgovRwardManage.xml +comUssIonRwd.rwardManage.validate.rwardManNm = Award Man +comUssIonRwd.rwardManage.validate.rwardCd = Award code +comUssIonRwd.rwardManage.validate.rwardNm = Award Name +comUssIonRwd.rwardManage.validate.rwardDe = Award date +comUssIonRwd.rwardManage.validate.pblenCn = Achievements +comUssIonRwd.rwardManage.validate.sanctnDtNm = Certified + +# EgovRwardManageList.jsp +comUssIonRwd.rwardManageList.title = Award Management List + +# EgovRwardManageDetail.jsp +comUssIonRwd.rwardManageDetail.title = View the reward details + +# EgovRwardRegist.jsp +comUssIonRwd.rwardRegist.title = Reward registration +comUssIonRwd.rwardRegist.rwardAppl = Award Application + +# EgovRwardUpdt.jsp +comUssIonRwd.rwardUpdt.title = Edit Awards +comUssIonRwd.rwardUpdt.atchFileIdList = List of attachments + +# EgovRwardConfm.jsp +comUssIonRwd.rwardConfm.title = Award approvals +comUssIonRwd.rwardConfm.arrParam.rwardAply.agree = Award Application - Approval +comUssIonRwd.rwardConfm.arrParam.rwardAply.disagree = Award application - Disagree + +# EgovRwardConfmList.jsp +comUssIonRwd.rwardConfmList.title = Award List +comUssIonRwd.rwardConfmList.rwardAgreeList = Award Management List +comUssIonRwd.rwardConfmList.rwardProgress = Process Approval +comUssIonRwd.rwardConfmList.detailView = Detailed view + +#common +comUssIonRwd.common.validate.searchFromDate = reward date The start date of the search term is later than the end date. Please check the award date. +comUssIonRwd.common.validate.searchToDate = Award Date The start date of the search condition is later than the end date. Please check the award date. +comUssIonRwd.common.searchKeyword = Award Category +comUssIonRwd.common.selectedAll = All +comUssIonRwd.common.rwardDate = Award date +comUssIonRwd.common.searchFromDate = Award start date +comUssIonRwd.common.searchToDate = Date of the award end date +comUssIonRwd.common.searchNm = Winner +comUssIonRwd.common.rwardNm = reward name +comUssIonRwd.common.rwardDe = Award date +comUssIonRwd.common.rwardManNm = reward name +comUssIonRwd.common.orgnztNm = Affiliation +comUssIonRwd.common.confmAt = Progress breakdown +comUssIonRwd.common.sanctnerNm = Approver +comUssIonRwd.common.confmAt.A = Applying +comUssIonRwd.common.confmAt.C = Authorization +comUssIonRwd.common.confmAt.R = Could +comUssIonRwd.common.submit = Send +comUssIonRwd.common.pblenCn = Achievements +comUssIonRwd.common.atchFileId = Attachment +comUssIonRwd.common.sanctnDtNm = Approver +comUssIonRwd.common.toNewWindow = Move to a new window +comUssIonRwd.common.infrmlSanctnRegist = Account holder \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/rwd/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/rwd/message_ko.properties new file mode 100644 index 00000000..287b3367 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/rwd/message_ko.properties @@ -0,0 +1,58 @@ +#\ud3ec\uc0c1\uad00\ub9ac UssIonRwd +#EgovRwardManage.xml +comUssIonRwd.rwardManage.validate.rwardManNm=\ud3ec\uc0c1\uc790 +comUssIonRwd.rwardManage.validate.rwardCd=\ud3ec\uc0c1\ucf54\ub4dc +comUssIonRwd.rwardManage.validate.rwardNm=\ud3ec\uc0c1\uba85 +comUssIonRwd.rwardManage.validate.rwardDe=\ud3ec\uc0c1\uc77c\uc790 +comUssIonRwd.rwardManage.validate.pblenCn=\uacf5\uc801\uc0ac\ud56d +comUssIonRwd.rwardManage.validate.sanctnDtNm=\uc2b9\uc778\uad8c\uc790 + +#EgovRwardManageList.jsp +comUssIonRwd.rwardManageList.title=\ud3ec\uc0c1\uad00\ub9ac \ubaa9\ub85d + +#EgovRwardManageDetail.jsp +comUssIonRwd.rwardManageDetail.title=\ud3ec\uc0c1\uc0c1\uc138\uc870\ud68c + +#EgovRwardRegist.jsp +comUssIonRwd.rwardRegist.title=\ud3ec\uc0c1\ub4f1\ub85d +comUssIonRwd.rwardRegist.rwardAppl=\ud3ec\uc0c1\uc2e0\uccad + +#EgovRwardUpdt.jsp +comUssIonRwd.rwardUpdt.title=\ud3ec\uc0c1\uc218\uc815 +comUssIonRwd.rwardUpdt.atchFileIdList=\ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d + +#EgovRwardConfm.jsp +comUssIonRwd.rwardConfm.title=\ud3ec\uc0c1\uc2b9\uc778 +comUssIonRwd.rwardConfm.arrParam.rwardAply.agree=\ud3ec\uc0c1\uc2e0\uccad - \uc2b9\uc778 +comUssIonRwd.rwardConfm.arrParam.rwardAply.disagree=\ud3ec\uc0c1\uc2e0\uccad - \ubc18\ub824 + +#EgovRwardConfmList.jsp +comUssIonRwd.rwardConfmList.title=\ud3ec\uc0c1\uc2b9\uc778 \ubaa9\ub85d +comUssIonRwd.rwardConfmList.rwardAgreeList=\ud3ec\uc0c1\uc2b9\uc778\uad00\ub9ac \ubaa9\ub85d +comUssIonRwd.rwardConfmList.rwardProgress=\uc2b9\uc778\ucc98\ub9ac +comUssIonRwd.rwardConfmList.detailView=\uc0c1\uc138\ubcf4\uae30 + +#\uacf5\ud1b5 +comUssIonRwd.common.validate.searchFromDate=\ud3ec\uc0c1\uc77c\uc790 \uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \ud3ec\uc0c1\uc77c\uc790\ub97c \ud655\uc778\ud558\uc138\uc694. +comUssIonRwd.common.validate.searchToDate=\ud3ec\uc0c1\uc77c\uc790 \uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \ud3ec\uc0c1\uc77c\uc790\ub97c \ud655\uc778\ud558\uc138\uc694. +comUssIonRwd.common.searchKeyword=\ud3ec\uc0c1\uad6c\ubd84 +comUssIonRwd.common.selectedAll=\uc804\uccb4 +comUssIonRwd.common.rwardDate=\ud3ec\uc0c1\uc77c\uc790 +comUssIonRwd.common.searchFromDate=\ud3ec\uc0c1 \uc2dc\uc791\uc77c\uc790 +comUssIonRwd.common.searchToDate=\ud3ec\uc0c1 \uc885\ub8cc\uc77c\uc790 +comUssIonRwd.common.searchNm=\ud3ec\uc0c1\uc790 +comUssIonRwd.common.rwardNm=\ud3ec\uc0c1\uba85 +comUssIonRwd.common.rwardDe=\ud3ec\uc0c1\uc77c\uc790 +comUssIonRwd.common.rwardManNm=\ud3ec\uc0c1\uc790\uba85 +comUssIonRwd.common.orgnztNm=\uc18c\uc18d +comUssIonRwd.common.confmAt=\uc9c4\ud589\uad6c\ubd84 +comUssIonRwd.common.sanctnerNm=\uc2b9\uc778\uc790 +comUssIonRwd.common.confmAt.A=\uc2e0\uccad\uc911 +comUssIonRwd.common.confmAt.C=\uc2b9\uc778 +comUssIonRwd.common.confmAt.R=\ubc18\ub824 +comUssIonRwd.common.submit=\uc804\uc1a1 +comUssIonRwd.common.pblenCn=\uacf5\uc801\uc0ac\ud56d +comUssIonRwd.common.atchFileId=\ucca8\ubd80\ud30c\uc77c +comUssIonRwd.common.sanctnDtNm=\uc2b9\uc778\uad8c\uc790 +comUssIonRwd.common.toNewWindow=\uc0c8 \ucc3d\uc73c\ub85c \uc774\ub3d9 +comUssIonRwd.common.infrmlSanctnRegist=\uacb0\uc7ac\uad8c\uc790 diff --git a/src/main/resources/egovframework/message/com/uss/ion/sit/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/sit/message_en.properties new file mode 100644 index 00000000..7af6150e --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/sit/message_en.properties @@ -0,0 +1,10 @@ +#Site Management# + +comUssIonSit.siteVO.title = Site Management + +comUssIonSit.siteVO.siteNm = Site Name +comUssIonSit.siteVO.siteUrl = URL +comUssIonSit.siteVO.siteDc = Description +comUssIonSit.siteVO.siteThemaClCode = Classification +comUssIonSit.siteVO.actvtyAt = Available Options About Activity +comUssIonSit.siteVO.useAt = Available Options \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/sit/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/sit/message_ko.properties new file mode 100644 index 00000000..ec14c6d2 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/sit/message_ko.properties @@ -0,0 +1,10 @@ +#\uC0AC\uC774\uD2B8\uAD00\uB9AC# + +comUssIonSit.siteVO.title = \uC0AC\uC774\uD2B8 + +comUssIonSit.siteVO.siteNm = \uC0AC\uC774\uD2B8\uBA85 +comUssIonSit.siteVO.siteUrl = \uC0AC\uC774\uD2B8URL +comUssIonSit.siteVO.siteDc = \uC0AC\uC774\uD2B8\uC124\uBA85 +comUssIonSit.siteVO.siteThemaClCode = \uC0AC\uC774\uD2B8\uBD84\uB958 +comUssIonSit.siteVO.actvtyAt = \uD65C\uC131\uC5EC\uBD80 +comUssIonSit.siteVO.useAt = \uC0AC\uC6A9\uC5EC\uBD80 diff --git a/src/main/resources/egovframework/message/com/uss/ion/tir/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/tir/message_en.properties new file mode 100644 index 00000000..e054f839 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/tir/message_en.properties @@ -0,0 +1,39 @@ +#Twitter connection# +ussIonTir.twitterMain.twitterMain=Twitter application registration +ussIonTir.twitterMain.app=Log in to the Twitter site. +ussIonTir.twitterMain.buttonClick=Button and register the Twitter application service on the registration page as shown below. +ussIonTir.twitterMain.returnUrl=(The URL returned after issuing the key) +ussIonTir.twitterMain.key=Consumer key, Consumer secret etc. are issued as follows. + +ussIonTir.twitterPopup.twitterPopup=Request Twitter Certification +ussIonTir.twitterPopup.consumerKey=Please enter your Consumer key! +ussIonTir.twitterPopup.consumerSecret=Please enter your Consumer Secret! +ussIonTir.twitterPopup.twitterPopupKey=Twitter authentication request - Enter authentication key +ussIonTir.twitterPopup.saveKey=Storing Consumer key / Consumer secret key value +ussIonTir.twitterPopup.send=Send + +ussIonTir.twitterTrnsmit.twitterTrnsmit=Twitter transmission (registration) +ussIonTir.twitterTrnsmit.validate.id=Please enter your Twitter ID! +ussIonTir.twitterTrnsmit.validate.password=Please enter your Twitter password (PW)! +ussIonTir.twitterTrnsmit.validate.send=Send Twitter created? +ussIonTir.twitterTrnsmit.twitterText=Twitter Text +ussIonTir.twitterTrnsmit.send=Send + +ussIonTir.twitterRecptn.twitterRecptn=Receive Twitter +ussIonTir.twitterRecptn.validate.number=Please enter a number! +ussIonTir.twitterRecptn.validate.onlyNumber=Only numbers can be entered +ussIonTir.twitterRecptn.twitterProfileImageURL=Profile image +ussIonTir.twitterRecptn.text=Text + +ussIonTir.twitterTrnsmitResult.twitterTrnsmitResult=Twitter Submit (registration) Check result +ussIonTir.twitterTrnsmitResult.id=Registration ID +ussIonTir.twitterTrnsmitResult.screenName=Screen Name +ussIonTir.twitterTrnsmitResult.name=Nickname +ussIonTir.twitterTrnsmitResult.url=URL +ussIonTir.twitterTrnsmitResult.text=Text +ussIonTir.twitterTrnsmitResult.profileImage=Profile Image +ussIonTir.twitterTrnsmitResult.createdAt=Registration date +ussIonTir.twitterTrnsmitResult.isFavorited=favorite +ussIonTir.twitterTrnsmitResult.isRetweet=retweet +ussIonTir.twitterTrnsmitResult.isTruncated=runcated +ussIonTir.twitterTrnsmitResult.confirm=Confirm \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/tir/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/tir/message_ko.properties new file mode 100644 index 00000000..1c258fd6 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/tir/message_ko.properties @@ -0,0 +1,39 @@ +#Twitter\uc5f0\ub3d9# +ussIonTir.twitterMain.twitterMain=\ud2b8\uc704\ud130(Twitter) \uc571\ub4f1\ub85d \uc548\ub0b4 +ussIonTir.twitterMain.app=\ud2b8\uc704\ud130 \uc0ac\uc774\ud2b8\uc5d0 \ub85c\uadf8\uc778\ud55c\ub2e4. +ussIonTir.twitterMain.buttonClick=\ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uace0 \ub4f1\ub85d \ud398\uc774\uc9c0\uc5d0 \uc544\ub798\uc640 \uac19\uc774 \ud2b8\uc704\ud130 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ube44\uc2a4\ub97c \ub4f1\ub85d\ud55c\ub2e4. +ussIonTir.twitterMain.returnUrl=(\ud0a4 \ubc1c\uae09 \ud6c4 \ub9ac\ud134\ub418\ub294 URL) +ussIonTir.twitterMain.key=Consumer key, Consumer secret \ub4f1\uc774 \uc544\ub798\uc640 \uac19\uc774 \ubc1c\uae09\ub41c\ub2e4. + +ussIonTir.twitterPopup.twitterPopup=\ud2b8\uc704\ud130(Twitter) \uc778\uc99d\uc694\uccad +ussIonTir.twitterPopup.consumerKey=Consumer key \ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694! +ussIonTir.twitterPopup.consumerSecret=Consumer secret\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694! +ussIonTir.twitterPopup.twitterPopupKey=\ud2b8\uc704\ud130(Twitter) \uc778\uc99d\uc694\uccad - \uc778\uc99d\ud0a4 \uc785\ub825 +ussIonTir.twitterPopup.saveKey=Consumer key/Consumer secret \ud0a4 \uac12 \uc800\uc7a5 +ussIonTir.twitterPopup.send=\uc804\uc1a1 + +ussIonTir.twitterTrnsmit.twitterTrnsmit=\ud2b8\uc704\ud130(Twitter) \uc1a1\uc2e0(\ub4f1\ub85d) +ussIonTir.twitterTrnsmit.validate.id=Twitter \uc544\uc774\ub514(ID)\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694! +ussIonTir.twitterTrnsmit.validate.password=Twitter \ube44\ubc00\ubc88\ud638(PW)\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694! +ussIonTir.twitterTrnsmit.validate.send=\uc791\uc131\ub41c Twitter\ub97c \uc804\uc1a1 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +ussIonTir.twitterTrnsmit.twitterText=Twitter \ub0b4\uc6a9 +ussIonTir.twitterTrnsmit.send=\uc804\uc1a1 + +ussIonTir.twitterRecptn.twitterRecptn=\ud2b8\uc704\ud130(Twitter) \uc218\uc2e0 +ussIonTir.twitterRecptn.validate.number=\uc22b\uc790\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694! +ussIonTir.twitterRecptn.validate.onlyNumber=\uc22b\uc790\ub9cc \uc785\ub825\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4 +ussIonTir.twitterRecptn.twitterProfileImageURL=\ud504\ub85c\ud544 \uc774\ubbf8\uc9c0 +ussIonTir.twitterRecptn.text=\ub0b4\uc6a9 + +ussIonTir.twitterTrnsmitResult.twitterTrnsmitResult=\ud2b8\uc704\ud130(Twitter) \uc1a1\uc2e0(\ub4f1\ub85d)\uacb0\uacfc\ud655\uc778 +ussIonTir.twitterTrnsmitResult.id=\ub4f1\ub85dID +ussIonTir.twitterTrnsmitResult.screenName=\uacc4\uc815ID +ussIonTir.twitterTrnsmitResult.name=\ubcc4\uba85 +ussIonTir.twitterTrnsmitResult.url=URL +ussIonTir.twitterTrnsmitResult.text=\ud2b8\uc704\ud130 \ub0b4\uc6a9 +ussIonTir.twitterTrnsmitResult.profileImage=Profile Image +ussIonTir.twitterTrnsmitResult.createdAt=\ub4f1\ub85d\uc77c +ussIonTir.twitterTrnsmitResult.isFavorited=favorite +ussIonTir.twitterTrnsmitResult.isRetweet=retweet +ussIonTir.twitterTrnsmitResult.isTruncated=runcated +ussIonTir.twitterTrnsmitResult.confirm=\ud655\uc778 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/uas/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/uas/message_en.properties new file mode 100644 index 00000000..c1bb5976 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/uas/message_en.properties @@ -0,0 +1,33 @@ +#User Absence Management List# +ussIonUas.userAbsnceList.userAbsnceList=User Absence Management List +ussIonUas.userAbsnceList.userNm=User Name +ussIonUas.userAbsnceList.userId=User ID +ussIonUas.userAbsnceList.userAbsnceAt=Absence +ussIonUas.userAbsnceList.regYn=Registration +ussIonUas.userAbsnceList.lastUpdusrPnttm=Registration Date +ussIonUas.userAbsnceList.all=ALL +ussIonUas.userAbsnceList.noUserSlct=No users selected. +ussIonUas.userAbsnceList.failInquir=No results were inquired. +ussIonUas.userAbsnceList.regiAftrView=Please register after viewing. +ussIonUas.userAbsnceList.alreadyRegis=Already registered. +ussIonUas.userAbsnceList.selectOnlyOne=Please select only one to register. +ussIonUas.userAbsnceList.noRegisTargetSlct=No registration target selected. +ussIonUas.userAbsnceList.goToregisPage=There is no registered user absence information. Do you want to go to registration page? +ussIonUas.userAbsnceList.deleteMsg=Will you delete it? + +ussIonUas.userAbsnceRegist.userAbsnceRegist=User Absence Management Regist +ussIonUas.userAbsnceRegist.userNm=User Name +ussIonUas.userAbsnceRegist.userId=User ID +ussIonUas.userAbsnceRegist.userAbsnceAt=Absence +ussIonUas.userAbsnceRegist.lastUpdusrPnttm=Registration +ussIonUas.userAbsnceRegist.all=ALL +ussIonUas.userAbsnceRegist.saveMsg=Will you save it? +ussIonUas.userAbsnceRegist.deleteMsg=Will you delete it? + +ussIonUas.userAbsnceUpdt.userAbsnceUpdt=User Absence Management +ussIonUas.userAbsnceUpdt.userNm=User Name +ussIonUas.userAbsnceUpdt.userId=User ID +ussIonUas.userAbsnceUpdt.userAbsnceAt=Absence +ussIonUas.userAbsnceUpdt.lastUpdusrPnttm=Registration +ussIonUas.userAbsnceUpdt.saveMsg=Will you save it? +ussIonUas.userAbsnceUpdt.deleteMsg=Will you delete it? diff --git a/src/main/resources/egovframework/message/com/uss/ion/uas/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/uas/message_ko.properties new file mode 100644 index 00000000..c9483043 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/uas/message_ko.properties @@ -0,0 +1,35 @@ +#\uc0ac\uc6a9\uc790\ubd80\uc7ac\uad00\ub9ac# +ussIonUas.userAbsnceList.userAbsnceList=\uc0ac\uc6a9\uc790\ubd80\uc7ac\uad00\ub9ac \ubaa9\ub85d +ussIonUas.userAbsnceList.userNm=\uc0ac\uc6a9\uc790 \uba85 +ussIonUas.userAbsnceList.userId=\uc0ac\uc6a9\uc790 ID +ussIonUas.userAbsnceList.userAbsnceAt=\ubd80\uc7ac\uc5ec\ubd80 +ussIonUas.userAbsnceList.regYn=\ub4f1\ub85d\uc5ec\ubd80 +ussIonUas.userAbsnceList.lastUpdusrPnttm=\ub3d9\ub85d\uc77c\uc2dc +ussIonUas.userAbsnceList.all=\uc804\uccb4 +ussIonUas.userAbsnceList.noUserSlct=\uc120\ud0dd\ub41c \uc0ac\uc6a9\uc790\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +ussIonUas.userAbsnceList.failInquir=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +ussIonUas.userAbsnceList.regiAftrView=\uc870\ud68c \ud6c4 \ub4f1\ub85d\ud558\uc2dc\uae38 \ubc14\ub78d\ub2c8\ub2e4. +ussIonUas.userAbsnceList.alreadyRegis=\uc774\ubbf8 \ub4f1\ub85d\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. +ussIonUas.userAbsnceList.selectOnlyOne=\ub4f1\ub85d\ub300\uc0c1 \ud558\ub098\ub9cc \uc120\ud0dd\ud558\uc2ed\uc2dc\uc624. +ussIonUas.userAbsnceList.noRegisTargetSlct=\uc120\ud0dd\ub41c \ub4f1\ub85d\ub300\uc0c1\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +ussIonUas.userAbsnceList.goToregisPage=\ub4f1\ub85d\ub41c \uc0ac\uc6a9\uc790\ubd80\uc7ac \uc815\ubcf4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub4f1\ub85d\ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +ussIonUas.userAbsnceList.deleteMsg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + +ussIonUas.userAbsnceRegist.userAbsnceRegist=\uc0ac\uc6a9\uc790\ubd80\uc7ac\uad00\ub9ac \ub4f1\ub85d +ussIonUas.userAbsnceRegist.userNm=\uc0ac\uc6a9\uc790 \uba85 +ussIonUas.userAbsnceRegist.userId=\uc0ac\uc6a9\uc790 ID +ussIonUas.userAbsnceRegist.userAbsnceAt=\ubd80\uc7ac\uc5ec\ubd80 +ussIonUas.userAbsnceRegist.lastUpdusrPnttm=\ub3d9\ub85d\uc77c\uc2dc +ussIonUas.userAbsnceRegist.all=\uc804\uccb4 +ussIonUas.userAbsnceRegist.saveMsg=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +ussIonUas.userAbsnceRegist.deleteMsg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + +ussIonUas.userAbsnceUpdt.userAbsnceUpdt=\uc0ac\uc6a9\uc790\ubd80\uc7ac\uad00\ub9ac \uc218\uc815 +ussIonUas.userAbsnceUpdt.userNm=\uc0ac\uc6a9\uc790 \uba85 +ussIonUas.userAbsnceUpdt.userId=\uc0ac\uc6a9\uc790 ID +ussIonUas.userAbsnceUpdt.userAbsnceAt=\ubd80\uc7ac\uc5ec\ubd80 +ussIonUas.userAbsnceUpdt.lastUpdusrPnttm=\ub3d9\ub85d\uc77c\uc2dc +ussIonUas.userAbsnceUpdt.saveMsg=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +ussIonUas.userAbsnceUpdt.deleteMsg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + + diff --git a/src/main/resources/egovframework/message/com/uss/ion/ulm/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/ulm/message_en.properties new file mode 100644 index 00000000..f6953e11 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ulm/message_en.properties @@ -0,0 +1,33 @@ +#UnityLink Management# +uss.ion.ulm.unityLinkList.unityLinkList=Unity Link Management List +uss.ion.ulm.unityLinkList.unityLinkNum=num. +uss.ion.ulm.unityLinkList.unityLinkGroup=Group +uss.ion.ulm.unityLinkList.unityLinkNm=Unity Link Name +uss.ion.ulm.unityLinkList.unityLinkDc=Unity Link Description +uss.ion.ulm.unityLinkList.unityLinkUrl=Unity Link URL +uss.ion.ulm.unityLinkList.unityLinkRegNm=registrant +uss.ion.ulm.unityLinkList.unityLinkRegDate=Registration date + +uss.ion.ulm.unityLinkDetail.unityLinkDetail=Unity Link Management Detail +uss.ion.ulm.unityLinkDetail.unityLinkGroup=Unity Link Group +uss.ion.ulm.unityLinkDetail.unityLinkNm=Unity Link Name +uss.ion.ulm.unityLinkDetail.unityLinkDc=Unity Link Description +uss.ion.ulm.unityLinkDetail.unityLinkUrl=Unity Link URL +uss.ion.ulm.unityLinkDetail.validate.deleteMsg=Will you delete it? + +uss.ion.ulm.unityLinkRegist.unityLinkRegist=Unity Link Management Regist +uss.ion.ulm.unityLinkRegist.unityLinkGroup=Unity Link Group +uss.ion.ulm.unityLinkRegist.unityLinkNm=Unity Link Name +uss.ion.ulm.unityLinkRegist.unityLinkDc=Unity Link Description +uss.ion.ulm.unityLinkRegist.unityLinkUrl=Unity Link URL + +uss.ion.ulm.unityLinkUpdt.unityLinkUpdate=Unity Link Management Update +uss.ion.ulm.unityLinkUpdt.unityLinkGroup=Unity Link Group +uss.ion.ulm.unityLinkUpdt.unityLinkNm=Unity Link Name +uss.ion.ulm.unityLinkUpdt.unityLinkDc=Unity Link Description +uss.ion.ulm.unityLinkUpdt.unityLinkUrl=Unity Link URL + +uss.ion.ulm.unityLinkSample.unityLink=Unity Link +uss.ion.ulm.unityLinkSample.goUnityLinkSample=Move the integrated link sample page +uss.ion.ulm.unityLinkSample.validate.select=Please select Unity Link! +uss.ion.ulm.unityLinkSample.moveButton=Move \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/ulm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/ulm/message_ko.properties new file mode 100644 index 00000000..f874dc4f --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/ulm/message_ko.properties @@ -0,0 +1,33 @@ +#\ud1b5\ud569\ub9c1\ud06c\uad00\ub9ac# +uss.ion.ulm.unityLinkList.unityLinkList=\ud1b5\ud569\ub9c1\ud06c\uad00\ub9ac \ubaa9\ub85d +uss.ion.ulm.unityLinkList.unityLinkNum=\uc21c\ubc88 +uss.ion.ulm.unityLinkList.unityLinkGroup=\uadf8\ub8f9 +uss.ion.ulm.unityLinkList.unityLinkNm=\ud1b5\ud569\ub9c1\ud06c\uba85 +uss.ion.ulm.unityLinkList.unityLinkDc=\ud1b5\ud569\ub9c1\ud06c\uc124\uba85 +uss.ion.ulm.unityLinkList.unityLinkUrl=\ud1b5\ud569\ub9c1\ud06cURL +uss.ion.ulm.unityLinkList.unityLinkRegNm=\ub4f1\ub85d\uc790 +uss.ion.ulm.unityLinkList.unityLinkRegDate=\ub4f1\ub85d\uc77c\uc790 + +uss.ion.ulm.unityLinkDetail.unityLinkDetail=\ud1b5\ud569\ub9c1\ud06c\uad00\ub9ac \uc0c1\uc138\ubcf4\uae30 +uss.ion.ulm.unityLinkDetail.unityLinkGroup=\ud1b5\ud569\ub9c1\ud06c\uadf8\ub8f9 +uss.ion.ulm.unityLinkDetail.unityLinkNm=\ud1b5\ud569\ub9c1\ud06c\uba85 +uss.ion.ulm.unityLinkDetail.unityLinkDc=\ud1b5\ud569\ub9c1\ud06c\uc124\uba85 +uss.ion.ulm.unityLinkDetail.unityLinkUrl=\ud1b5\ud569\ub9c1\ud06cURL +uss.ion.ulm.unityLinkDetail.validate.deleteMsg=\uc0ad\uc81c\ud558\uaca0\uc2b5\ub2c8\uae4c? + +uss.ion.ulm.unityLinkRegist.unityLinkRegist=\ud1b5\ud569\ub9c1\ud06c\uad00\ub9ac \ub4f1\ub85d +uss.ion.ulm.unityLinkRegist.unityLinkGroup=\ud1b5\ud569\ub9c1\ud06c\uadf8\ub8f9 +uss.ion.ulm.unityLinkRegist.unityLinkNm=\ud1b5\ud569\ub9c1\ud06c\uba85 +uss.ion.ulm.unityLinkRegist.unityLinkDc=\ud1b5\ud569\ub9c1\ud06c\uc124\uba85 +uss.ion.ulm.unityLinkRegist.unityLinkUrl=\ud1b5\ud569\ub9c1\ud06cURL + +uss.ion.ulm.unityLinkUpdt.unityLinkUpdate=\ud1b5\ud569\ub9c1\ud06c\uad00\ub9ac \uc218\uc815 +uss.ion.ulm.unityLinkUpdt.unityLinkGroup=\ud1b5\ud569\ub9c1\ud06c\uadf8\ub8f9 +uss.ion.ulm.unityLinkUpdt.unityLinkNm=\ud1b5\ud569\ub9c1\ud06c\uba85 +uss.ion.ulm.unityLinkUpdt.unityLinkDc=\ud1b5\ud569\ub9c1\ud06c\uc124\uba85 +uss.ion.ulm.unityLinkUpdt.unityLinkUrl=\ud1b5\ud569\ub9c1\ud06cURL + +uss.ion.ulm.unityLinkSample.unityLink=\ud1b5\ud569\ub9c1\ud06c +uss.ion.ulm.unityLinkSample.goUnityLinkSample=\ud1b5\ud569\ub9c1\ud06c \uc0d8\ud50c\ud398\uc774\uc9c0 \uc774\ub3d9 +uss.ion.ulm.unityLinkSample.validate.select=\ud1b5\ud569\ub9c1\ud06c\ub97c \uc120\ud0dd\ud574\uc8fc\uc138\uc694! +uss.ion.ulm.unityLinkSample.moveButton=\uc774\ub3d9 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/vct/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/vct/message_en.properties new file mode 100644 index 00000000..19b2cde6 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/vct/message_en.properties @@ -0,0 +1,92 @@ +# Vacation Management comUssIonVct + +# EgovVcatnManage.xml +comUssIonVct.vcatnManage.validate.vcatnSe = Vacation breakdown +comUssIonVct.vcatnManage.validate.bgnde = Start Date +comUssIonVct.vcatnManage.validate.endde = End date +comUssIonVct.vcatnManage.validate.vcatnResn = Reason for vacation +comUssIonVct.vcatnManage.validate.sanctnDtNm = Certified + +#common +comUssIonVct.common.validate.bgnde = Vacation start date does not exist. Check your vacation dates. +comUssIonVct.common.validate.endde = Vacation end date does not exist. Check your vacation dates. +comUssIonVct.common.validate.vcatnSe = Vacation Date The start date of the search term is later than the end date. Check your vacation dates. +comUssIonVct.common.calendar = calendar +comUssIonVct.common.endde = End date +comUssIonVct.common.noonSe1 = AM +comUssIonVct.common.noonSe2 = PM +comUssIonVct.common.noonSe = classpication +comUssIonVct.common.applcntNm = Applicant +comUssIonVct.common.orgnztNm = belongs +comUssIonVct.common.occrncYrycCo = Year of occurrence +comUssIonVct.common.useYrycCo = Annual use +comUssIonVct.common.remndrYrycCo = Remaining annual +comUssIonVct.common.vcatnSe = Vacation breakdown +comUssIonVct.common.startDate = Start date +comUssIonVct.common.endDate = End date +comUssIonVct.common.vcatnResn = Reason for vacation +comUssIonVct.common.infrmlSanctnRegist = Account holder +comUssIonVct.common.vcatnTotalInfo = Applicant Annual Information +comUssIonVct.common.sanctnDtNm = Approver +comUssIonVct.common.agree = Approval +comUssIonVct.common.disagree = companion +comUssIonVct.common.inputSuccess = Success +comUssIonVct.common.validate.vacationSelectError = Error specifying vacation date - Please check the start / end date of the vacation. +comUssIonVct.common.validate.thatYearOnly = Annual leave is only available for that year. +comUssIonVct.common.validate.vacationFail = Failure to register for annual leave (lack of remaining annual leave) +comUssIonVct.common.validate.halfVacationFail = Failed to register for Semi-Leave (lack of remaining annual leave) +comUssIonVct.common.validate.duplicate = Duplicate vacation date. Please confirm your vacation date. + +# EgovVcatnManageList.jsp +comUssIonVct.vcatnManageList.title = Vacation Management List +comUssIonVct.vcatnManageList.userNm = username +comUssIonVct.vcatnManageList.vctYr = Leave Year +comUssIonVct.vcatnManageList.selectedAll = All +comUssIonVct.vcatnManageList.year = year +comUssIonVct.vcatnManageList.vcatnSeNm = Vacation breakdown +comUssIonVct.vcatnManageList.bgnde = Start Date +comUssIonVct.vcatnManageList.endde = End Date +comUssIonVct.vcatnManageList.vcatnResn = Reason for vacation +comUssIonVct.vcatnManageList.confmAt = Category +comUssIonVct.vcatnManageList.sanctnerNm = Approver +comUssIonVct.vcatnManageList.confmAt.A = Applying +comUssIonVct.vcatnManageList.confmAt.C = Agree +comUssIonVct.vcatnManageList.confmAt.R = Disagree +comUssIonVct.vcatnManageList.validate.guide =\u203b 902.The annual occurrence of personal annual management must be registered before it can be used. +comUssIonVct.vcatnManageList.validate.makeVcatn = There is no vacation. Personal vacation confirmation is required. +comUssIonVct.vcatnManageList.validate.access = Admin Role and organization ID are required for detailed screen access. +comUssIonVct.vcatnManageList.validate.move = \u203b Go to personal annual management components for personal vacation registration for vacation use + +# EgovVcatnRegist.jsp +comUssIonVct.vcatnRegist.title = Leave application +comUssIonVct.vcatnRegist.vcatnAplyr = Leave Applicant + +# EgovVcatnUpdt.jsp +comUssIonVct.vcatnUpdt.title = Edit vacation +comUssIonVct.vcatnUpdt.validate.length = The reason for the vacation reason entry exceeds 200 characters. If you use special characters('<','>','&','\\"', '\'') may be overridden by replacing the characters with ('<','>','&','"',''') +comUssIonVct.vcatnUpdt.vcatnAplyr = Leave Applicant + +# EgovVcatnManageDetail.jsp +comUssIonVct.vcatnManageDetail.title = Vacation Detail Views +comUssIonVct.vcatnManageDetail.vcatnApply = Leave application + +# EgovVcatnConfm.jsp +comUssIonVct.vcatnConfm.title = Leave Approval +comUssIonVct.vcatnConfm.submit = Transfer +comUssIonVct.vcatnConfm.validate.length = The reason for the vacation reason entry exceeds 200 characters. If you use special characters('<','>','&','\\"', '\'') may be overridden by replacing the characters with ('<','>','&','"',''') + +# EgovVcatnConfmList.jsp +comUssIonVct.vcatnConfmList.title = Vacation Approval List +comUssIonVct.vcatnConfmList.validate.searchYear = You can not view the month in the entire year. Please select the year. +comUssIonVct.vcatnConfmList.searchConfmAt = Progress breakdown +comUssIonVct.vcatnConfmList.selectedAll = All +comUssIonVct.vcatnConfmList.searchConfmAt.A = Apply +comUssIonVct.vcatnConfmList.searchConfmAt.vcatnDay = Vacation Date +comUssIonVct.vcatnConfmList.month = month +comUssIonVct.vcatnConfmList.bgnde = Start Date +comUssIonVct.vcatnConfmList.endde = End Date +comUssIonVct.vcatnConfmList.confmAt.agreeProcess = Process Approval +comUssIonVct.vcatnConfmList.confmAt.detail = View details +comUssIonVct.vcatnConfmList.vcatnManageList = Vacation approval management list +comUssIonVct.vcatnConfmList.searchYear = Year +comUssIonVct.vcatnConfmList.search = Year \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/vct/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/vct/message_ko.properties new file mode 100644 index 00000000..e76061ee --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/vct/message_ko.properties @@ -0,0 +1,92 @@ +# Vacation Management comUssIonVct + +# EgovVcatnManage.xml +comUssIonVct.vcatnManage.validate.vcatnSe = \ud734\uac00\uad6c\ubd84 +comUssIonVct.vcatnManage.validate.bgnde = \uc2dc\uc791\uc77c\uc790 +comUssIonVct.vcatnManage.validate.endde = \uc885\ub8cc\uc77c\uc790 +comUssIonVct.vcatnManage.validate.vcatnResn = \ud734\uac00\uc0ac\uc720 +comUssIonVct.vcatnManage.validate.sanctnDtNm = \uc2b9\uc778\uad8c\uc790 + +#common +comUssIonVct.common.validate.bgnde = \ud734\uac00 \uc2dc\uc791\uc77c\uc790\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ud734\uac00\uc77c\uc790\ub97c \ud655\uc778\ud558\uc138\uc694. +comUssIonVct.common.validate.endde = \ud734\uac00\uc885\ub8cc\uc77c\uc790\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ud734\uac00\uc77c\uc790\ub97c \ud655\uc778\ud558\uc138\uc694. +comUssIonVct.common.validate.vcatnSe = \ud734\uac00\uc77c\uc790 \uac80\uc0c9\uc870\uac74\uc758 \uc2dc\uc791\uc77c\uc790\uac00 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. \ud734\uac00\uc77c\uc790\ub97c \ud655\uc778\ud558\uc138\uc694. +comUssIonVct.common.calendar = \ub2ec\ub825 +comUssIonVct.common.endde = \uc885\ub8cc\uc77c\uc790 +comUssIonVct.common.noonSe1 = \uc624\uc804 +comUssIonVct.common.noonSe2 = \uc624\ud6c4 +comUssIonVct.common.noonSe = \uc815\uc624\uad6c\ubd84 +comUssIonVct.common.applcntNm = \uc2e0\uccad\uc790 +comUssIonVct.common.orgnztNm = \uc18c\uc18d +comUssIonVct.common.occrncYrycCo = \ubc1c\uc0dd\uc5f0\ucc28 +comUssIonVct.common.useYrycCo = \uc0ac\uc6a9\uc5f0\ucc28 +comUssIonVct.common.remndrYrycCo = \uc794\uc5ec\uc5f0\ucc28 +comUssIonVct.common.vcatnSe = \ud734\uac00\uad6c\ubd84 +comUssIonVct.common.startDate = \uc2dc\uc791\uc77c\uc790 +comUssIonVct.common.endDate = \uc885\ub8cc\uc77c\uc790 +comUssIonVct.common.vcatnResn = \ud734\uac00\uc0ac\uc720 +comUssIonVct.common.infrmlSanctnRegist = \uacb0\uc7ac\uad8c\uc790 +comUssIonVct.common.vcatnTotalInfo = \uc2e0\uccad\uc790 \uc5f0\ucc28\uc815\ubcf4 +comUssIonVct.common.sanctnDtNm = \uc2b9\uc778\uad8c\uc790 +comUssIonVct.common.agree = \uc2b9\uc778 +comUssIonVct.common.disagree = \ubc18\ub824 +comUssIonVct.common.inputSuccess=\uc785\ub825\uc131\uacf5 +comUssIonVct.common.validate.vacationSelectError=\ud734\uac00\uc77c\uc790 \uc9c0\uc815 \uc624\ub958 - \ud734\uac00\uc2dc\uc791\uc77c\uc790/\uc885\ub8cc\uc77c\uc790\ub97c \ud655\uc778\ud558\uc138\uc694. +comUssIonVct.common.validate.thatYearOnly=\uc5f0\ucc28\uc0ac\uc6a9\uc2dc \ud734\uac00\ub294 \ub2f9\ud574\uc5f0\ub3c4\ub9cc \uac00\ub2a5\ud569\ub2c8\ub2e4. +comUssIonVct.common.validate.vacationFail=\uc5f0\ucc28\ud734\uac00 \ub4f1\ub85d\uc2e4\ud328(\uc794\uc5ec\uc5f0\ucc28 \ubd80\uc871) +comUssIonVct.common.validate.halfVacationFail=\ubc18\ucc28\ud734\uac00 \ub4f1\ub85d\uc2e4\ud328(\uc794\uc5ec\uc5f0\ucc28 \ubd80\uc871) +comUssIonVct.common.validate.duplicate = \ud734\uac00\uc77c\uc790\uac00 \uc911\ubcf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud734\uac00\uc77c\uc790\ub97c \ud655\uc778\ud574 \uc8fc\uc138\uc694. + +# EgovVcatnManageList.jsp +comUssIonVct.vcatnManageList.title = \ud734\uac00\uad00\ub9ac \ubaa9\ub85d +comUssIonVct.vcatnManageList.userNm = \uc0ac\uc6a9\uc790 \uba85 +comUssIonVct.vcatnManageList.vctYr = \ud734\uac00\ub144\ub3c4 +comUssIonVct.vcatnManageList.selectedAll = \uc804\uccb4 +comUssIonVct.vcatnManageList.year = \ub144 +comUssIonVct.vcatnManageList.vcatnSeNm = \ud734\uac00\uad6c\ubd84 +comUssIonVct.vcatnManageList.bgnde = \uc2dc\uc791\uc77c +comUssIonVct.vcatnManageList.endde = \uc885\ub8cc\uc77c +comUssIonVct.vcatnManageList.vcatnResn = \ud734\uac00\uc0ac\uc720 +comUssIonVct.vcatnManageList.confmAt = \uad6c\ubd84 +comUssIonVct.vcatnManageList.sanctnerNm = \uc2b9\uc778\uc790 +comUssIonVct.vcatnManageList.confmAt.A = \uc2e0\uccad\uc911 +comUssIonVct.vcatnManageList.confmAt.C = \uc2b9\uc778 +comUssIonVct.vcatnManageList.confmAt.R = \ubc18\ub824 +comUssIonVct.vcatnManageList.validate.guide =\u203b 902.\uac1c\uc778\uc5f0\ucc28\uad00\ub9ac\uc758 \ubc1c\uc0dd\uc5f0\ucc28\uac00 \ub4f1\ub85d\uc774 \ub418\uc5b4 \uc788\uc5b4\uc57c \uc0ac\uc6a9\uac00\ub2a5 +comUssIonVct.vcatnManageList.validate.makeVcatn = \uc5f0\ucc28\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \uac1c\uc778\uc5f0\ucc28 \ud655\uc778\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. +comUssIonVct.vcatnManageList.validate.access = \uc0c1\uc138\ud654\uba74 \uc811\uadfc\uc744 \uc704\ud574\uc11c\ub294 \uc0ac\uc6a9\uc790 \uad8c\ud55c\uacfc \uc870\uc9c1 \uc544\uc774\ub514\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. +comUssIonVct.vcatnManageList.validate.move = \u203b \ud734\uac00 \uc0ac\uc6a9\uc744 \uc704\ud55c \uac1c\uc778\uc5f0\ucc28 \ub4f1\ub85d\uc744 \uc704\ud574 \uac1c\uc778\uc5f0\ucc28\uad00\ub9ac \ucf64\ud3ec\ub10c\ud2b8\ub85c \uc774\ub3d9 + +# EgovVcatnRegist.jsp +comUssIonVct.vcatnRegist.title = \ud734\uac00\uc2e0\uccad +comUssIonVct.vcatnRegist.vcatnAplyr = \ud734\uac00 \uc2e0\uccad\uc790 + +# EgovVcatnUpdt.jsp +comUssIonVct.vcatnUpdt.title = \ud734\uac00\uc218\uc815 +comUssIonVct.vcatnUpdt.validate.length = \ud734\uac00\uc0ac\uc720 \ud56d\ubaa9\uc758 \uc785\ub825\uac12\uc774 200\uc790(\ud55c\uae00100\uc790)\ub97c \ucd08\uacfc\ud558\uc600\uc2b5\ub2c8\ub2e4. \ud2b9\uc218\ubb38\uc790('<','>','&','\\"', '\'')\ub97c \uc0ac\uc6a9\ud558\uc2e0 \uacbd\uc6b0 \ud574\ub2f9 \ubb38\uc790('<','>','&','"',''')\ub85c \uce58\ud658 \ucc98\ub9ac\ub418\uc5b4 \ubb38\uc790\uc218\uac00 \ucd08\uacfc\ucc98\ub9ac \ub420\uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. +comUssIonVct.vcatnUpdt.vcatnAplyr = \ud734\uac00 \uc2e0\uccad\uc790 + +# EgovVcatnManageDetail.jsp +comUssIonVct.vcatnManageDetail.title = \ud734\uac00\uc0c1\uc138\uc870\ud68c +comUssIonVct.vcatnManageDetail.vcatnApply = \ud734\uac00\uc2e0\uccad + +# EgovVcatnConfm.jsp +comUssIonVct.vcatnConfm.title = \ud734\uac00\uc2b9\uc778 +comUssIonVct.vcatnConfm.submit = \uc804\uc1a1 +comUssIonVct.vcatnConfm.validate.length = \ud734\uac00\uc0ac\uc720 \ud56d\ubaa9\uc758 \uc785\ub825\uac12\uc774 200\uc790(\ud55c\uae00100\uc790)\ub97c \ucd08\uacfc\ud558\uc600\uc2b5\ub2c8\ub2e4. \ud2b9\uc218\ubb38\uc790('<','>','&','\\"', '\'')\ub97c \uc0ac\uc6a9\ud558\uc2e0 \uacbd\uc6b0 \ud574\ub2f9 \ubb38\uc790('<','>','&','"',''')\ub85c \uce58\ud658 \ucc98\ub9ac\ub418\uc5b4 \ubb38\uc790\uc218\uac00 \ucd08\uacfc\ucc98\ub9ac \ub420\uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. + +# EgovVcatnConfmList.jsp +comUssIonVct.vcatnConfmList.title = \ud734\uac00\uc2b9\uc778 \ubaa9\ub85d +comUssIonVct.vcatnConfmList.validate.searchYear = \uc804\uccb4\ub144\ub3c4\uc5d0 \uc6d4\ub9cc \uc870\ud68c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub144\ub3c4\ub294 \uc120\ud0dd\ud574\uc8fc\uc138\uc694. +comUssIonVct.vcatnConfmList.searchConfmAt = \uc9c4\ud589\uad6c\ubd84 +comUssIonVct.vcatnConfmList.selectedAll = \uc804\uccb4 +comUssIonVct.vcatnConfmList.searchConfmAt.A = \uc2e0\uccad +comUssIonVct.vcatnConfmList.searchConfmAt.vcatnDay = \ud734\uac00\uc77c\uc790 +comUssIonVct.vcatnConfmList.month = \uc6d4 +comUssIonVct.vcatnConfmList.bgnde = \uc2dc\uc791\uc77c +comUssIonVct.vcatnConfmList.endde = \uc885\ub8cc\uc77c +comUssIonVct.vcatnConfmList.confmAt.agreeProcess = \uc2b9\uc778\ucc98\ub9ac +comUssIonVct.vcatnConfmList.confmAt.detail = \uc0c1\uc138\ubcf4\uae30 +comUssIonVct.vcatnConfmList.vcatnManageList = \ud734\uac00\uc2b9\uc778\uad00\ub9ac \ubaa9\ub85d +comUssIonVct.vcatnConfmList.searchYear = \ub144\ub3c4 +comUssIonVct.vcatnConfmList.search = \ub144 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/wik/bmk/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/wik/bmk/message_en.properties new file mode 100644 index 00000000..f4dde6be --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/wik/bmk/message_en.properties @@ -0,0 +1,6 @@ +#Wiki BookMark# +ussIonWikBmk.wikiBookmarkList.wikiBookmarkList=Wiki Bookmark List +ussIonWikBmk.wikiBookmarkList.chooseDelete=Please select a list to delete! +ussIonWikBmk.wikiBookmarkList.confirmDelete=Are you sure you want to delete the selected information? +ussIonWikBmk.wikiBookmarkList.bookmarkNm=Bookmark name +ussIonWikBmk.wikiBookmarkList.bookmarkgd=Registering a wiki bookmark requires installing a JSP Wiki (see the wiki guide for details). \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/wik/bmk/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/wik/bmk/message_ko.properties new file mode 100644 index 00000000..eaf80721 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/wik/bmk/message_ko.properties @@ -0,0 +1,6 @@ +#\uc704\ud0a4\ubd81\ub9c8\ud06c# +ussIonWikBmk.wikiBookmarkList.wikiBookmarkList=\uc704\ud0a4\ubd81\ub9c8\ud06c \ubaa9\ub85d +ussIonWikBmk.wikiBookmarkList.chooseDelete=\uc0ad\uc81c\ud560 \ubaa9\ub85d\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694! +ussIonWikBmk.wikiBookmarkList.confirmDelete=\uc120\ud0dd\ub41c \uc815\ubcf4\ub97c \uc0ad\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +ussIonWikBmk.wikiBookmarkList.bookmarkNm=\ubd81\ub9c8\ud06c\uba85 +ussIonWikBmk.wikiBookmarkList.bookmarkgd=\uc704\ud0a4\ubd81\ub9c8\ud06c \ub4f1\ub85d\uc740 JSP WIki \uc124\uce58\uac00 \ud544\uc694\ud569\ub2c8\ub2e4.(\uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc704\ud0a4\uac00\uc774\ub4dc \ucc38\uace0) \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/ion/yrc/message_en.properties b/src/main/resources/egovframework/message/com/uss/ion/yrc/message_en.properties new file mode 100644 index 00000000..7422446a --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/yrc/message_en.properties @@ -0,0 +1,15 @@ +#\uac1c\uc778\uc5f0\ucc28\uad00\ub9ac +#EgovIndvdlYrycManageList jsp +comUssIonYrc.indvdlYrycManageList.title=Personal Annual Vacation Management List +comUssIonYrc.indvdlYrycManageList.occrrncYear=Year of occurrence +comUssIonYrc.indvdlYrycManageList.occrncYrycCo=Vacation occurrence +comUssIonYrc.indvdlYrycManageList.useYrycCo=Vacation use +comUssIonYrc.indvdlYrycManageList.remndrYrycCo=Rest Vacation +comUssIonYrc.indvdlYrycManageList.mberNm=Name + +#EgovIndvdlYrycRegist.jsp +comUssIonYrc.indvdlYrycRegist.title=Personal Annual Vacation Management Registration +comUssIonYrc.indvdlYrycRegist.change=When registering / modifying personal leave, the year of occurrence is changed to that year and stored. +comUssIonYrc.indvdlYrycRegist.occrncYrycCo=Annual Vacation Registration +comUssIonYrc.indvdlYrycRegist.useYrycCo=Use Annual Vacation Registration +comUssIonYrc.indvdlYrycRegist.diffValue=The remaining year can not be negative. diff --git a/src/main/resources/egovframework/message/com/uss/ion/yrc/message_ko.properties b/src/main/resources/egovframework/message/com/uss/ion/yrc/message_ko.properties new file mode 100644 index 00000000..df0ac9cf --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/ion/yrc/message_ko.properties @@ -0,0 +1,15 @@ +#\uac1c\uc778\uc5f0\ucc28\uad00\ub9ac +#EgovIndvdlYrycManageList jsp +comUssIonYrc.indvdlYrycManageList.title=\uac1c\uc778\uc5f0\ucc28\uad00\ub9ac \ubaa9\ub85d +comUssIonYrc.indvdlYrycManageList.occrrncYear=\ubc1c\uc0dd\uc5f0\ub3c4 +comUssIonYrc.indvdlYrycManageList.occrncYrycCo=\ubc1c\uc0dd\uc5f0\ucc28 +comUssIonYrc.indvdlYrycManageList.useYrycCo=\uc0ac\uc6a9\uc5f0\ucc28 +comUssIonYrc.indvdlYrycManageList.remndrYrycCo=\uc794\uc5ec\uc5f0\ucc28 +comUssIonYrc.indvdlYrycManageList.mberNm=\uc0ac\uc6a9\uc790 + +#EgovIndvdlYrycRegist.jsp +comUssIonYrc.indvdlYrycRegist.title=\uac1c\uc778\uc5f0\ucc28\uad00\ub9ac \ub4f1\ub85d +comUssIonYrc.indvdlYrycRegist.change= \uac1c\uc778\uc5f0\ucc28 \ub4f1\ub85d/\uc218\uc815\uc2dc \ubc1c\uc0dd\uc5f0\ub3c4\ub294 \ud574\ub2f9\uc5f0\ub3c4\ub85c \ubcc0\uacbd\ub418\uc5b4 \uc800\uc7a5\ub428 +comUssIonYrc.indvdlYrycRegist.occrncYrycCo=\uc5f0\ucc28\ub4f1\ub85d +comUssIonYrc.indvdlYrycRegist.useYrycCo=\uc0ac\uc6a9\uc5f0\ucc28\ub4f1\ub85d +comUssIonYrc.indvdlYrycRegist.diffValue=\uc794\uc5ec\uc5f0\ucc28\uac00 \uc74c\uc218\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. diff --git a/src/main/resources/egovframework/message/com/uss/mpe/message_en.properties b/src/main/resources/egovframework/message/com/uss/mpe/message_en.properties new file mode 100644 index 00000000..dcc5cc81 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/mpe/message_en.properties @@ -0,0 +1,9 @@ +#My Page# + +comUssMpe.indvdlPgeVO.title = My Page + +comUssMpe.indvdlPgeVO.cntntsNm = Contents Name +comUssMpe.indvdlPgeVO.cntntsLinkUrl = Preview URL +comUssMpe.indvdlPgeVO.cntcUrl = Contents URL +comUssMpe.indvdlPgeVO.cntntsDc = Contents Description +comUssMpe.indvdlPgeVO.cntntsUseAt = Available Options \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/mpe/message_ko.properties b/src/main/resources/egovframework/message/com/uss/mpe/message_ko.properties new file mode 100644 index 00000000..9733c0fd --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/mpe/message_ko.properties @@ -0,0 +1,9 @@ +#\uB9C8\uC774\uD398\uC774\uC9C0# + +comUssMpe.indvdlPgeVO.title = \uB9C8\uC774\uD398\uC774\uC9C0 + +comUssMpe.indvdlPgeVO.cntntsNm = \uCEE8\uD150\uCE20\uBA85 +comUssMpe.indvdlPgeVO.cntntsLinkUrl = \uBBF8\uB9AC\uBCF4\uAE30URL +comUssMpe.indvdlPgeVO.cntcUrl = \uCEE8\uD150\uCE20URL +comUssMpe.indvdlPgeVO.cntntsDc = \uCEE8\uD150\uCE20\uC124\uBA85 +comUssMpe.indvdlPgeVO.cntntsUseAt = \uC0AC\uC6A9\uC5EC\uBD80 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olh/awm/message_en.properties b/src/main/resources/egovframework/message/com/uss/olh/awm/message_en.properties new file mode 100644 index 00000000..664c2410 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/awm/message_en.properties @@ -0,0 +1,12 @@ +#\ud589\uc815\uc6a9\uc5b4\uc0ac\uc804# + +comUssOlhAwm.administrationWordVO.title = Administration Terminology Dictionary + +comUssOlhAwm.administrationWordVO.administWordNm = Administration Terminology Name +comUssOlhAwm.administrationWordVO.administWordEngNm = Administration Terminology Name In English +comUssOlhAwm.administrationWordVO.administWordAbrv = Administration Terminology Abbreviation +comUssOlhAwm.administrationWordVO.themaRelm = Theme Realm +comUssOlhAwm.administrationWordVO.wordDomn = Terminology Division +comUssOlhAwm.administrationWordVO.stdWord = Standard Terminology +comUssOlhAwm.administrationWordVO.administWordDf = Administraion Terminology Definition +comUssOlhAwm.administrationWordVO.administWordDc = Administration Terminology Description diff --git a/src/main/resources/egovframework/message/com/uss/olh/awm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olh/awm/message_ko.properties new file mode 100644 index 00000000..b27756af --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/awm/message_ko.properties @@ -0,0 +1,12 @@ +#\uD589\uC815\uC6A9\uC5B4\uC0AC\uC804# + +comUssOlhAwm.administrationWordVO.title = \uD589\uC815\uC804\uBB38\uC6A9\uC5B4\uC0AC\uC804 + +comUssOlhAwm.administrationWordVO.administWordNm = \uD589\uC815\uC6A9\uC5B4\uBA85 +comUssOlhAwm.administrationWordVO.administWordEngNm = \uD589\uC815\uC6A9\uC5B4\uC601\uBB38\uBA85 +comUssOlhAwm.administrationWordVO.administWordAbrv = \uD589\uC815\uC6A9\uC5B4\uC57D\uC5B4\uBA85 +comUssOlhAwm.administrationWordVO.themaRelm = \uC8FC\uC81C\uC601\uC5ED\uBA85 +comUssOlhAwm.administrationWordVO.wordDomn = \uC6A9\uC5B4\uAD6C\uBD84 +comUssOlhAwm.administrationWordVO.stdWord = \uAD00\uB828\uD45C\uC900\uC6A9\uC5B4 +comUssOlhAwm.administrationWordVO.administWordDf = \uD589\uC815\uC6A9\uC5B4\uC815\uC758 +comUssOlhAwm.administrationWordVO.administWordDc = \uD589\uC815\uC6A9\uC5B4\uC124\uBA85 diff --git a/src/main/resources/egovframework/message/com/uss/olh/faq/message_en.properties b/src/main/resources/egovframework/message/com/uss/olh/faq/message_en.properties new file mode 100644 index 00000000..a69fbf81 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/faq/message_en.properties @@ -0,0 +1,9 @@ +#FAQ# + +comUssOlhFaq.faqVO.title = FAQ + +comUssOlhFaq.faqVO.qestnSj = Question Subject +comUssOlhFaq.faqVO.qestnCn = Question Content +comUssOlhFaq.faqVO.answerCn = Answer +comUssOlhFaq.faqVO.inqireCo = Views +comUssOlhFaq.faqVO.atchFile = Attach Files diff --git a/src/main/resources/egovframework/message/com/uss/olh/faq/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olh/faq/message_ko.properties new file mode 100644 index 00000000..62e1d191 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/faq/message_ko.properties @@ -0,0 +1,9 @@ +#FAQ# + +comUssOlhFaq.faqVO.title = FAQ + +comUssOlhFaq.faqVO.qestnSj = \uC9C8\uBB38\uC81C\uBAA9 +comUssOlhFaq.faqVO.qestnCn = \uC9C8\uBB38\uB0B4\uC6A9 +comUssOlhFaq.faqVO.answerCn = \uB2F5\uBCC0\uB0B4\uC6A9 +comUssOlhFaq.faqVO.inqireCo = \uC870\uD68C\uC218 +comUssOlhFaq.faqVO.atchFile = \uCCA8\uBD80\uD30C\uC77C diff --git a/src/main/resources/egovframework/message/com/uss/olh/hpc/message_en.properties b/src/main/resources/egovframework/message/com/uss/olh/hpc/message_en.properties new file mode 100644 index 00000000..0dd4ba98 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/hpc/message_en.properties @@ -0,0 +1,7 @@ +#Help Counsel Manage# + +comUssOlhHpc.hpcmVO.title = Help + +comUssOlhHpc.hpcmVO.hpcmSeCode = Help Code +comUssOlhHpc.hpcmVO.hpcmDf = Help Definition +comUssOlhHpc.hpcmVO.hpcmDc = Help Discription \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olh/hpc/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olh/hpc/message_ko.properties new file mode 100644 index 00000000..f5107e9c --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/hpc/message_ko.properties @@ -0,0 +1,7 @@ +#\uB3C4\uC6C0\uB9D0 \uCEF4\uD3EC\uB10C\uD2B8# + +comUssOlhHpc.hpcmVO.title = \uB3C4\uC6C0\uB9D0 + +comUssOlhHpc.hpcmVO.hpcmSeCode = \uB3C4\uC6C0\uB9D0\uAD6C\uBD84 +comUssOlhHpc.hpcmVO.hpcmDf = \uB3C4\uC6C0\uB9D0\uC815\uC758 +comUssOlhHpc.hpcmVO.hpcmDc = \uB3C4\uC6C0\uB9D0\uC124\uBA85 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olh/omm/message_en.properties b/src/main/resources/egovframework/message/com/uss/olh/omm/message_en.properties new file mode 100644 index 00000000..f410fe9d --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/omm/message_en.properties @@ -0,0 +1,8 @@ +#\uc628\ub77c\uc778\uba54\ub274\uc5bc# + +comUssOlhOmm.onlineManualVO.title = Online Manual + +comUssOlhOmm.onlineManualVO.onlineMnlNm = Manual Name +comUssOlhOmm.onlineManualVO.onlineMnlSeCode = Manual Name Code +comUssOlhOmm.onlineManualVO.onlineMnlDf = Manual Definition +comUssOlhOmm.onlineManualVO.onlineMnlDc = Manual Description diff --git a/src/main/resources/egovframework/message/com/uss/olh/omm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olh/omm/message_ko.properties new file mode 100644 index 00000000..a24007f5 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/omm/message_ko.properties @@ -0,0 +1,8 @@ +#\uC628\uB77C\uC778\uBA54\uB274\uC5BC# + +comUssOlhOmm.onlineManualVO.title = \uC628\uB77C\uC778\uBA54\uB274\uC5BC + +comUssOlhOmm.onlineManualVO.onlineMnlNm = \uC628\uB77C\uC778\uBA54\uB274\uC5BC\uBA85 +comUssOlhOmm.onlineManualVO.onlineMnlSeCode = \uAD6C\uBD84 +comUssOlhOmm.onlineManualVO.onlineMnlDf = \uC628\uB77C\uC778\uBA54\uB274\uC5BC\uC815\uC758 +comUssOlhOmm.onlineManualVO.onlineMnlDc = \uC628\uB77C\uC778\uBA54\uB274\uC5BC\uC124\uBA85 diff --git a/src/main/resources/egovframework/message/com/uss/olh/qna/message_en.properties b/src/main/resources/egovframework/message/com/uss/olh/qna/message_en.properties new file mode 100644 index 00000000..fb1eef02 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/qna/message_en.properties @@ -0,0 +1,19 @@ +#Q&A# + +comUssOlhQna.qnaVO.title = Q&A + +comUssOlhQna.qnaVO.qestnSj = Question Subject +comUssOlhQna.qnaVO.qestnCn = Question Content +comUssOlhQna.qnaVO.writingDe = Creation Date +comUssOlhQna.qnaVO.inqireCo = Viewq +comUssOlhQna.qnaVO.emailAdres = Email +comUssOlhQna.qnaVO.qnaProcessSttusCode = Process Status +comUssOlhQna.qnaVO.answerCn = Answer Contents +comUssOlhQna.qnaVO.answerDe = Answer Date +comUssOlhQna.qnaVO.emailAnswerAt = Available Options About Answering Email +comUssOlhQna.qnaVO.telNo = Contact Number +comUssOlhQna.qnaVO.areaNo = Area Code +comUssOlhQna.qnaVO.middleTelno = Middle Number +comUssOlhQna.qnaVO.endTelno = End Number + +comUssOlhQna.qnaAnswerVO.title = Q&A Answer \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olh/qna/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olh/qna/message_ko.properties new file mode 100644 index 00000000..80d527a5 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/qna/message_ko.properties @@ -0,0 +1,20 @@ +#Q&A# + +comUssOlhQna.qnaVO.title = Q&A + +comUssOlhQna.qnaVO.qestnSj = \uC9C8\uBB38\uC81C\uBAA9 +comUssOlhQna.qnaVO.qestnCn = \uC9C8\uBB38\uB0B4\uC6A9 +comUssOlhQna.qnaVO.writingDe = \uC791\uC131\uB0A0\uC9DC +comUssOlhQna.qnaVO.inqireCo = \uC870\uD68C\uC218 +comUssOlhQna.qnaVO.emailAdres = \uC774\uBA54\uC77C\uC8FC\uC18C +comUssOlhQna.qnaVO.qnaProcessSttusCode = \uC9C4\uD589\uC0C1\uD0DC +comUssOlhQna.qnaVO.answerCn = \uB2F5\uBCC0\uB0B4\uC6A9 +comUssOlhQna.qnaVO.answerDe = \uB2F5\uBCC0\uB0A0\uC9DC +comUssOlhQna.qnaVO.emailAnswerAt = \uC774\uBA54\uC77C\uB2F5\uBCC0\uC5EC\uBD80 +comUssOlhQna.qnaVO.telNo = \uC5F0\uB77D\uCC98 +comUssOlhQna.qnaVO.areaNo = \uC9C0\uC5ED\uBC88\uD638 +comUssOlhQna.qnaVO.middleTelno = \uC911\uAC04\uC804\uD654\uBC88\uD638 +comUssOlhQna.qnaVO.endTelno = \uB05D\uC804\uD654\uBC88\uD638 + + +comUssOlhQna.qnaAnswerVO.title = Q&A\uB2F5\uBCC0 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olh/wor/message_en.properties b/src/main/resources/egovframework/message/com/uss/olh/wor/message_en.properties new file mode 100644 index 00000000..8b095668 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/wor/message_en.properties @@ -0,0 +1,8 @@ +#Word Dictionary# + +comUssOlhWor.wordDicaryVO.title = Terminology Dictionary + +comUssOlhWor.wordDicaryVO.wordNm = Terminology Name +comUssOlhWor.wordDicaryVO.engNm = English Name +comUssOlhWor.wordDicaryVO.synonm = Synonym +comUssOlhWor.wordDicaryVO.wordDc = Terminology Explanation \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olh/wor/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olh/wor/message_ko.properties new file mode 100644 index 00000000..d878d105 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olh/wor/message_ko.properties @@ -0,0 +1,8 @@ +#\uC6A9\uC5B4\uC0AC\uC804# + +comUssOlhWor.wordDicaryVO.title = \uC6A9\uC5B4\uC0AC\uC804 + +comUssOlhWor.wordDicaryVO.wordNm = \uC6A9\uC5B4\uBA85 +comUssOlhWor.wordDicaryVO.engNm = \uC601\uBB38\uBA85 +comUssOlhWor.wordDicaryVO.synonm = \uB3D9\uC758\uC5B4 +comUssOlhWor.wordDicaryVO.wordDc = \uC6A9\uC5B4\uC124\uBA85 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/cns/message_en.properties b/src/main/resources/egovframework/message/com/uss/olp/cns/message_en.properties new file mode 100644 index 00000000..aca5ea20 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/cns/message_en.properties @@ -0,0 +1,56 @@ +#Consulting Management Message# +comUssOlpCns.title= Consulting Management + +comUssOlpCns.searchCondition.wrterNm = Writer +comUssOlpCns.searchCondition.cnsltSj = Subject + +comUssOlpCns.list.cnsltSj= Subject +comUssOlpCns.list.qnaProcessSttusCodeNm= Progress Status +comUssOlpCns.list.hit= Hits + +comUssOlpCns.regist.wrterNm= Writer +comUssOlpCns.regist.writngPassword= Password +comUssOlpCns.regist.telNo= Phone Number +comUssOlpCns.regist.mobileNo= Mobile Number +comUssOlpCns.regist.email= Email +comUssOlpCns.regist.emailAt= Available Options About Answering Email +comUssOlpCns.regist.cnsltSj= Subject +comUssOlpCns.regist.cnsltCn= Content +comUssOlpCns.regist.managtCn= Answer +comUssOlpCns.regist.file= Attach Files + +comUssOlpCns.detail.regdate= Creation Date +comUssOlpCns.detail.qnaProcessSttusCodeNm= Progress Status +comUssOlpCns.detail.hit= Views + +comUssOlpCns.detail.managtCn= Answer +comUssOlpCns.detail.managtDept=Department +comUssOlpCns.detail.managtDate=Answer Date +comUssOlpCns.detail.managter=Answerer +comUssOlpCns.detail.managtTel=Phone Number +comUssOlpCns.detail.managtMail=Email + +comUssOlpCns.validate.passwordConfirm=Please check your password. + +comUssOlpCns.regist.telNo1=Area Code +comUssOlpCns.regist.telNo2=Exchange Number +comUssOlpCns.regist.telNo3=Lot Number +comUssOlpCns.regist.mobileNo1=Mobile Number(first) +comUssOlpCns.regist.mobileNo2=Mobile Number(exchange) +comUssOlpCns.regist.mobileNo3=Mobile Number(lot) + +#write password confirm popup Message# +comUssOlpCns.passwordConfirm.title=Confirm Password +comUssOlpCns.passwordConfirm.password=Password + +#Consulting Answer Management Message# +comUssOlpCnm.title=Consulting Answer Management + +comUssOlpCnm.searchCondition.wrterNm = Writer +comUssOlpCnm.searchCondition.cnsltSj = Subject + +comUssOlpCnm.list.cnsltSj= Subject +comUssOlpCnm.list.qnaProcessSttusCodeNm= Progress Status +comUssOlpCnm.list.hit= Views + +comUssOlpCnm.btn.managt=Answer diff --git a/src/main/resources/egovframework/message/com/uss/olp/cns/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olp/cns/message_ko.properties new file mode 100644 index 00000000..48bd100d --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/cns/message_ko.properties @@ -0,0 +1,59 @@ +#\uc0c1\ub2f4\uad00\ub9ac Message# +comUssOlpCns.title=\uc0c1\ub2f4\uad00\ub9ac + +comUssOlpCns.searchCondition.wrterNm = \uc791\uc131\uc790\uba85 +comUssOlpCns.searchCondition.cnsltSj = \uc0c1\ub2f4\uc81c\ubaa9 + +comUssOlpCns.list.cnsltSj=\uc0c1\ub2f4\uc81c\ubaa9 +comUssOlpCns.list.qnaProcessSttusCodeNm=\uc9c4\ud589\uc0c1\ud0dc +comUssOlpCns.list.hit=\uc870\ud68c\uc218 + +comUssOlpCns.regist.wrterNm=\uc791\uc131\uc790\uba85 +comUssOlpCns.regist.writngPassword=\uc791\uc131 \ube44\ubc00\ubc88\ud638 +comUssOlpCns.regist.telNo=\uc804\ud654\ubc88\ud638 +comUssOlpCns.regist.mobileNo=\ud734\ub300\ud3f0\ubc88\ud638 +comUssOlpCns.regist.email=\uc774\uba54\uc77c +comUssOlpCns.regist.emailAt=\uc774\uba54\uc77c\ub2f5\ubcc0\uc5ec\ubd80 +comUssOlpCns.regist.cnsltSj=\uc0c1\ub2f4\uc81c\ubaa9 +comUssOlpCns.regist.cnsltCn=\uc0c1\ub2f4\ub0b4\uc6a9 +comUssOlpCns.regist.managtCn=\ub2f5\ubcc0\ub0b4\uc6a9 +comUssOlpCns.regist.file=\ud30c\uc77c\ucca8\ubd80 + +comUssOlpCns.detail.regdate=\uc791\uc131\uc77c\uc790 +comUssOlpCns.detail.qnaProcessSttusCodeNm=\ucc98\ub9ac\uc0c1\ud0dc +comUssOlpCns.detail.hit=\uc870\ud68c\uc218 + +comUssOlpCns.detail.managtCn=\ub2f5\ubcc0\ub0b4\uc6a9 +comUssOlpCns.detail.managtDept=\ub2f4\ub2f9\ubd80\uc11c +comUssOlpCns.detail.managtDate=\ub2f5\ubcc0\uc77c\uc790 +comUssOlpCns.detail.managter=\ub2f5\ubcc0\uc790 +comUssOlpCns.detail.managtTel=\uc804\ud654\ubc88\ud638 +comUssOlpCns.detail.managtMail=\uc774\uba54\uc77c + +comUssOlpCns.validate.passwordConfirm=\uc791\uc131 \ube44\ubc00\ubc88\ud638\ub97c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4. + + +comUssOlpCns.regist.telNo1=\uc804\ud654\ubc88\ud638(\uc9c0\uc5ed) +comUssOlpCns.regist.telNo2=\uc804\ud654\ubc88\ud638(\uad6d\ubc88) +comUssOlpCns.regist.telNo3=\uc804\ud654\ubc88\ud638(\uc9c0\ubc88) +comUssOlpCns.regist.mobileNo1=\ud734\ub300\ud3f0\ubc88\ud638(\uc55e\ubc88) +comUssOlpCns.regist.mobileNo2=\ud734\ub300\ud3f0\ubc88\ud638(\uad6d\ubc88) +comUssOlpCns.regist.mobileNo3=\ud734\ub300\ud3f0\ubc88\ud638(\uc9c0\ubc88) + + +#\uc791\uc131\ube44\ubc00\ubc88\ud638 \ud655\uc778 Message# +comUssOlpCns.passwordConfirm.title=\uc791\uc131\ube44\ubc00\ubc88\ud638 \ud655\uc778 +comUssOlpCns.passwordConfirm.password=\uc791\uc131\uae00 \ube44\ubc00\ubc88\ud638 + +#\uc0c1\ub2f4\ub2f5\ubcc0\uad00\ub9ac Message# +comUssOlpCnm.title=\uc0c1\ub2f4\ub2f5\ubcc0\uad00\ub9ac + +comUssOlpCnm.searchCondition.wrterNm = \uc791\uc131\uc790\uba85 +comUssOlpCnm.searchCondition.cnsltSj = \uc0c1\ub2f4\uc81c\ubaa9 + +comUssOlpCnm.list.cnsltSj=\uc0c1\ub2f4\uc81c\ubaa9 +comUssOlpCnm.list.qnaProcessSttusCodeNm=\uc9c4\ud589\uc0c1\ud0dc +comUssOlpCnm.list.hit=\uc870\ud68c\uc218 + +comUssOlpCnm.btn.managt=\ub2f5\ubcc0 + diff --git a/src/main/resources/egovframework/message/com/uss/olp/mgt/message_en.properties b/src/main/resources/egovframework/message/com/uss/olp/mgt/message_en.properties new file mode 100644 index 00000000..e9b13daf --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/mgt/message_en.properties @@ -0,0 +1,112 @@ +#meeting Management# +ussOlpMgt.meetingManageList.meetingManageList=Meeting Management List +ussOlpMgt.meetingManageList.mtgDe=Meeting Date +ussOlpMgt.meetingManageList.mtgNm=Meeting Name +ussOlpMgt.meetingManageList.mtgMtrCn=Meeting agenda contents +ussOlpMgt.meetingManageList.mtgPlace=Meeting Place +ussOlpMgt.meetingManageList.mtgBeginTime=Meeting Begin Time +ussOlpMgt.meetingManageList.mtgEndTime=Meeting End Time +ussOlpMgt.meetingManageList.frstRegisterNm=Registrant +ussOlpMgt.meetingManageList.frstRegisterPnttm=Registration date + +ussOlpMgt.meetingManageRegist.meetingManageRegist=Meeting Management Regist +ussOlpMgt.meetingManageRegist.mtgNm=Meeting Name +ussOlpMgt.meetingManageRegist.mtgMtrCn=Meeting agenda contents +ussOlpMgt.meetingManageRegist.mtgSn=Meeting Order +ussOlpMgt.meetingManageRegist.mtgCo=Meeting Session +ussOlpMgt.meetingManageRegist.mtgDe=Meeting Date +ussOlpMgt.meetingManageRegist.mtgPlace=Meeting Place +ussOlpMgt.meetingManageRegist.mtgBeginTime=Meeting Begin Time +ussOlpMgt.meetingManageRegist.mtgEndTime=Meeting End Time +ussOlpMgt.meetingManageRegist.clsdrMtgAt=Whether private meeting +ussOlpMgt.meetingManageRegist.readngBeginDe=Date of reading +ussOlpMgt.meetingManageRegist.readngAt=Reading status +ussOlpMgt.meetingManageRegist.mtgResultCn=Meeting Result +ussOlpMgt.meetingManageRegist.mtgResultEnnc=Meeting result status +ussOlpMgt.meetingManageRegist.etcMatter=Other Information +ussOlpMgt.meetingManageRegist.mngtDeptNm=The department responsible +ussOlpMgt.meetingManageRegist.mnaerNm=Subject +ussOlpMgt.meetingManageRegist.mnaerDeptNm=Organizer's Department +ussOlpMgt.meetingManageRegist.mtnAt=Meeting status +ussOlpMgt.meetingManageRegist.nonatdrnCo=Number of absentees +ussOlpMgt.meetingManageRegist.atdrnCo=Number of attendees +ussOlpMgt.meetingManageRegist.validate.checkTime=Meeting start time is later than end time. + +ussOlpMgt.meetingManageDetail.meetingManageDetail=Meeting Management Detail +ussOlpMgt.meetingManageDetail.mtgNm=Meeting Name +ussOlpMgt.meetingManageDetail.mtgMtrCn=Meeting agenda contents +ussOlpMgt.meetingManageDetail.mtgSn=Meeting Order +ussOlpMgt.meetingManageDetail.mtgCo=Meeting Session +ussOlpMgt.meetingManageDetail.mtgDe=Meeting Date +ussOlpMgt.meetingManageDetail.mtgPlace=Meeting Place +ussOlpMgt.meetingManageDetail.mtgHH=Hour +ussOlpMgt.meetingManageDetail.mtgMM=Minute +ussOlpMgt.meetingManageDetail.mtgBeginTime=Meeting Begin Time +ussOlpMgt.meetingManageDetail.mtgEndTime=Meeting End Time +ussOlpMgt.meetingManageDetail.clsdrMtgAt=Whether private meeting +ussOlpMgt.meetingManageDetail.readngBeginDe=Date of reading +ussOlpMgt.meetingManageDetail.readngAt=Reading status +ussOlpMgt.meetingManageDetail.mtgResultCn=Meeting Result +ussOlpMgt.meetingManageDetail.mtgResultEnnc=Meeting result status +ussOlpMgt.meetingManageDetail.etcMatter=Other Information +ussOlpMgt.meetingManageDetail.mngtDeptNm=The department responsible +ussOlpMgt.meetingManageDetail.mnaerIds=Subject +ussOlpMgt.meetingManageDetail.mnaerNm=Subject ID +ussOlpMgt.meetingManageDetail.mnaerDeptNm=Organizer's Department +ussOlpMgt.meetingManageDetail.mtnAt=Meeting status +ussOlpMgt.meetingManageDetail.nonatdrnCo=Number of absentees +ussOlpMgt.meetingManageDetail.atdrnCo=Number of attendees + +ussOlpMgt.meetingManageModify.meetingManageModify=Meeting Management Update +ussOlpMgt.meetingManageModify.mtgNm=Meeting Name +ussOlpMgt.meetingManageModify.mtgMtrCn=Meeting agenda contents +ussOlpMgt.meetingManageModify.mtgSn=Meeting Order +ussOlpMgt.meetingManageModify.mtgCo=Meeting Session +ussOlpMgt.meetingManageModify.mtgDe=Meeting Date +ussOlpMgt.meetingManageModify.mtgPlace=Meeting Place +ussOlpMgt.meetingManageModify.mtgHH=Hour +ussOlpMgt.meetingManageModify.mtgMM=Minute +ussOlpMgt.meetingManageModify.mtgBeginTime=Meeting Begin Time +ussOlpMgt.meetingManageModify.mtgEndTime=Meeting End Time +ussOlpMgt.meetingManageModify.clsdrMtgAt=Whether private meeting +ussOlpMgt.meetingManageModify.readngBeginDe=Date of reading +ussOlpMgt.meetingManageModify.readngAt=Reading status +ussOlpMgt.meetingManageModify.mtgResultCn=Meeting Result +ussOlpMgt.meetingManageModify.mtgResultEnnc=Meeting result status +ussOlpMgt.meetingManageModify.etcMatter=Other Information +ussOlpMgt.meetingManageModify.mngtDeptNm=The department responsible +ussOlpMgt.meetingManageModify.mnaerIds=Subject +ussOlpMgt.meetingManageModify.mnaerNm=Subject ID +ussOlpMgt.meetingManageModify.mnaerDeptNm=Organizer's Department +ussOlpMgt.meetingManageModify.mtnAt=Meeting status +ussOlpMgt.meetingManageModify.nonatdrnCo=Number of absentees +ussOlpMgt.meetingManageModify.atdrnCo=Number of attendees +ussOlpMgt.meetingManageRegist.validate.checkTime=Meeting start time is later than end time. + +ussOlpMgt.meetingManageLisAuthorGroupPopup.orgnzPopup=Department Search Popup +ussOlpMgt.meetingManageLisAuthorGroupPopup.orgnzList=Department list check +ussOlpMgt.meetingManageLisAuthorGroupPopup.orgnztNm=Department +ussOlpMgt.meetingManageLisAuthorGroupPopup.orgnztDc=Department Description + +ussOlpMgt.meetingManageLisEmpLyrPopup.userPopup=User search Pop-up +ussOlpMgt.meetingManageLisEmpLyrPopup.searchId=Search Id +ussOlpMgt.meetingManageLisEmpLyrPopup.userNm=Name +ussOlpMgt.meetingManageLisEmpLyrPopup.emplyrId=ID +ussOlpMgt.meetingManageLisEmpLyrPopup.offmTelno=Phone number +ussOlpMgt.meetingManageLisEmpLyrPopup.detailAdres=address + +ussOlpMgt.meetingManage.mtgNm=Meeting Name +ussOlpMgt.meetingManage.mtgMtrCn=Meeting agenda contents +ussOlpMgt.meetingManage.mtgSn=Meeting Order +ussOlpMgt.meetingManage.mtgCo=Meeting Session +ussOlpMgt.meetingManage.mtgDe=Meeting Date +ussOlpMgt.meetingManage.mtgPlace=Meeting Place +ussOlpMgt.meetingManage.mtgBeginHH=Meeting Begin Time(Hour) +ussOlpMgt.meetingManage.mtgBeginMM=Meeting Begin Time(Minute) +ussOlpMgt.meetingManage.mtgEndHH=Meeting End Time(Hour) +ussOlpMgt.meetingManage.mtgEndMM=Meeting End Time(Minute) +ussOlpMgt.meetingManage.readngBeginDe=Date of reading +ussOlpMgt.meetingManage.mtgResultCn=Meeting Result +ussOlpMgt.meetingManage.etcMatter=Other Information +ussOlpMgt.meetingManage.nonatdrnCo=Number of absentees +ussOlpMgt.meetingManage.atdrnCo=Number of attendees \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/mgt/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olp/mgt/message_ko.properties new file mode 100644 index 00000000..1e3d8e70 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/mgt/message_ko.properties @@ -0,0 +1,112 @@ +#\ud68c\uc758 \uad00\ub9ac# +ussOlpMgt.meetingManageList.meetingManageList=\ud68c\uc758\uad00\ub9ac \ubaa9\ub85d +ussOlpMgt.meetingManageList.mtgDe=\ud68c\uc758\uc77c\uc790 +ussOlpMgt.meetingManageList.mtgNm=\ud68c\uc758\uba85 +ussOlpMgt.meetingManageList.mtgMtrCn=\ud68c\uc758\uc548\uac74\ub0b4\uc6a9 +ussOlpMgt.meetingManageList.mtgPlace=\ud68c\uc758\uc7a5\uc18c +ussOlpMgt.meetingManageList.mtgBeginTime=\uc2dc\uc791\uc2dc\uac04 +ussOlpMgt.meetingManageList.mtgEndTime=\uc885\ub8cc\uc2dc\uac04 +ussOlpMgt.meetingManageList.frstRegisterNm=\uc791\uc131\uc790\uba85 +ussOlpMgt.meetingManageList.frstRegisterPnttm=\ub4f1\ub85d\uc77c\uc790 + +ussOlpMgt.meetingManageRegist.meetingManageRegist=\ud68c\uc758\uad00\ub9ac \ub4f1\ub85d +ussOlpMgt.meetingManageRegist.mtgNm=\ud68c\uc758\uc81c\ubaa9 +ussOlpMgt.meetingManageRegist.mtgMtrCn=\ud68c\uc758\uc548\uac74 \ub0b4\uc6a9 +ussOlpMgt.meetingManageRegist.mtgSn=\ud68c\uc758\uc21c\uc11c +ussOlpMgt.meetingManageRegist.mtgCo=\ud68c\uc758\ud68c\ucc28 +ussOlpMgt.meetingManageRegist.mtgDe=\ud68c\uc758\uc77c\uc790 +ussOlpMgt.meetingManageRegist.mtgPlace=\ud68c\uc758\uc7a5\uc18c +ussOlpMgt.meetingManageRegist.mtgBeginTime=\ud68c\uc758 \uc2dc\uc791\uc2dc\uac04 +ussOlpMgt.meetingManageRegist.mtgEndTime=\ud68c\uc758 \uc885\ub8cc\uc2dc\uac04 +ussOlpMgt.meetingManageRegist.clsdrMtgAt=\ube44\uacf5\uac1c \ud68c\uc758\uc5ec\ubd80 +ussOlpMgt.meetingManageRegist.readngBeginDe=\uc5f4\ub78c \uac1c\uc2dc\uc77c +ussOlpMgt.meetingManageRegist.readngAt=\uc5f4\ub78c \uc5ec\ubd80 +ussOlpMgt.meetingManageRegist.mtgResultCn=\ud68c\uc758\uacb0\uacfc \ub0b4\uc6a9 +ussOlpMgt.meetingManageRegist.mtgResultEnnc=\ud68c\uc758\uacb0\uacfc \uc5ec\ubd80 +ussOlpMgt.meetingManageRegist.etcMatter=\uae30\ud0c0\uc0ac\ud56d +ussOlpMgt.meetingManageRegist.mngtDeptNm=\uc8fc\uad00\ubd80\uc11c +ussOlpMgt.meetingManageRegist.mnaerNm=\uc8fc\uad00\uc790\uba85 +ussOlpMgt.meetingManageRegist.mnaerDeptNm=\uc8fc\uad00\uc790\ubd80\uc11c +ussOlpMgt.meetingManageRegist.mtnAt=\ud68c\uc758\uc5ec\ubd80 +ussOlpMgt.meetingManageRegist.nonatdrnCo=\ubd88\ucc38\uc11d\uc790\uc218 +ussOlpMgt.meetingManageRegist.atdrnCo=\ucc38\uc11d\uc790\uc218 +ussOlpMgt.meetingManageRegist.validate.checkTime=\ud68c\uc758 \uc2dc\uc791\uc2dc\uac04\uc774 \uc885\ub8cc \uc2dc\uac04\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. + +ussOlpMgt.meetingManageDetail.meetingManageDetail=\ud68c\uc758\uad00\ub9ac \uc0c1\uc138\uc870\ud68c +ussOlpMgt.meetingManageDetail.mtgNm=\ud68c\uc758\uc81c\ubaa9 +ussOlpMgt.meetingManageDetail.mtgMtrCn=\ud68c\uc758\uc548\uac74 \ub0b4\uc6a9 +ussOlpMgt.meetingManageDetail.mtgSn=\ud68c\uc758\uc21c\uc11c +ussOlpMgt.meetingManageDetail.mtgCo=\ud68c\uc758\ud68c\ucc28 +ussOlpMgt.meetingManageDetail.mtgDe=\ud68c\uc758\uc77c\uc790 +ussOlpMgt.meetingManageDetail.mtgPlace=\ud68c\uc758\uc7a5\uc18c +ussOlpMgt.meetingManageDetail.mtgHH=\uc2dc +ussOlpMgt.meetingManageDetail.mtgMM=\ubd84 +ussOlpMgt.meetingManageDetail.mtgBeginTime=\ud68c\uc758 \uc2dc\uc791\uc2dc\uac04 +ussOlpMgt.meetingManageDetail.mtgEndTime=\ud68c\uc758 \uc885\ub8cc\uc2dc\uac04 +ussOlpMgt.meetingManageDetail.clsdrMtgAt=\ube44\uacf5\uac1c \ud68c\uc758\uc5ec\ubd80 +ussOlpMgt.meetingManageDetail.readngBeginDe=\uc5f4\ub78c \uac1c\uc2dc\uc77c +ussOlpMgt.meetingManageDetail.readngAt=\uc5f4\ub78c \uc5ec\ubd80 +ussOlpMgt.meetingManageDetail.mtgResultCn=\ud68c\uc758\uacb0\uacfc \ub0b4\uc6a9 +ussOlpMgt.meetingManageDetail.mtgResultEnnc=\ud68c\uc758\uacb0\uacfc \uc5ec\ubd80 +ussOlpMgt.meetingManageDetail.etcMatter=\uae30\ud0c0\uc0ac\ud56d +ussOlpMgt.meetingManageDetail.mngtDeptNm=\uc8fc\uad00\ubd80\uc11c +ussOlpMgt.meetingManageDetail.mnaerIds=\uc8fc\uad00\uc790 ID +ussOlpMgt.meetingManageDetail.mnaerNm=\uc8fc\uad00\uc790\uba85 +ussOlpMgt.meetingManageDetail.mnaerDeptNm=\uc8fc\uad00\uc790\ubd80\uc11c +ussOlpMgt.meetingManageDetail.mtnAt=\ud68c\uc758\uc5ec\ubd80 +ussOlpMgt.meetingManageDetail.nonatdrnCo=\ubd88\ucc38\uc11d\uc790\uc218 +ussOlpMgt.meetingManageDetail.atdrnCo=\ucc38\uc11d\uc790\uc218 + +ussOlpMgt.meetingManageModify.meetingManageModify=\ud68c\uc758\uad00\ub9ac \uc218\uc815 +ussOlpMgt.meetingManageModify.mtgNm=\ud68c\uc758\uc81c\ubaa9 +ussOlpMgt.meetingManageModify.mtgMtrCn=\ud68c\uc758\uc548\uac74 \ub0b4\uc6a9 +ussOlpMgt.meetingManageModify.mtgSn=\ud68c\uc758\uc21c\uc11c +ussOlpMgt.meetingManageModify.mtgCo=\ud68c\uc758\ud68c\ucc28 +ussOlpMgt.meetingManageModify.mtgDe=\ud68c\uc758\uc77c\uc790 +ussOlpMgt.meetingManageModify.mtgPlace=\ud68c\uc758\uc7a5\uc18c +ussOlpMgt.meetingManageModify.mtgHH=\uc2dc +ussOlpMgt.meetingManageModify.mtgMM=\ubd84 +ussOlpMgt.meetingManageModify.mtgBeginTime=\ud68c\uc758 \uc2dc\uc791\uc2dc\uac04 +ussOlpMgt.meetingManageModify.mtgEndTime=\ud68c\uc758 \uc885\ub8cc\uc2dc\uac04 +ussOlpMgt.meetingManageModify.clsdrMtgAt=\ube44\uacf5\uac1c \ud68c\uc758\uc5ec\ubd80 +ussOlpMgt.meetingManageModify.readngBeginDe=\uc5f4\ub78c \uac1c\uc2dc\uc77c +ussOlpMgt.meetingManageModify.readngAt=\uc5f4\ub78c \uc5ec\ubd80 +ussOlpMgt.meetingManageModify.mtgResultCn=\ud68c\uc758\uacb0\uacfc \ub0b4\uc6a9 +ussOlpMgt.meetingManageModify.mtgResultEnnc=\ud68c\uc758\uacb0\uacfc \uc5ec\ubd80 +ussOlpMgt.meetingManageModify.etcMatter=\uae30\ud0c0\uc0ac\ud56d +ussOlpMgt.meetingManageModify.mngtDeptNm=\uc8fc\uad00\ubd80\uc11c +ussOlpMgt.meetingManageModify.mnaerIds=\uc8fc\uad00\uc790 ID +ussOlpMgt.meetingManageModify.mnaerNm=\uc8fc\uad00\uc790\uba85 +ussOlpMgt.meetingManageModify.mnaerDeptNm=\uc8fc\uad00\uc790\ubd80\uc11c +ussOlpMgt.meetingManageModify.mtnAt=\ud68c\uc758\uc5ec\ubd80 +ussOlpMgt.meetingManageModify.nonatdrnCo=\ubd88\ucc38\uc11d\uc790\uc218 +ussOlpMgt.meetingManageModify.atdrnCo=\ucc38\uc11d\uc790\uc218 +ussOlpMgt.meetingManageModify.validate.checkTime=\ud68c\uc758 \uc2dc\uc791\uc2dc\uac04\uc774 \uc885\ub8cc \uc2dc\uac04\ubcf4\ub2e4 \ub2a6\uc2b5\ub2c8\ub2e4. + +ussOlpMgt.meetingManageLisAuthorGroupPopup.orgnzPopup=\ubd80\uc11c\uac80\uc0c9 \ud31d\uc5c5 +ussOlpMgt.meetingManageLisAuthorGroupPopup.orgnzList=\ubd80\uc11c\ubaa9\ub85d \uc870\ud68c +ussOlpMgt.meetingManageLisAuthorGroupPopup.orgnztNm=\ubd80\uc11c\uba85 +ussOlpMgt.meetingManageLisAuthorGroupPopup.orgnztDc=\ubd80\uc11c\uc124\uba85 + +ussOlpMgt.meetingManageLisEmpLyrPopup.userPopup=\uc0ac\uc6a9\uc790\uac80\uc0c9 \ud31d\uc5c5 +ussOlpMgt.meetingManageLisEmpLyrPopup.searchId=\uc544\uc774\ub514 \uac80\uc0c9 +ussOlpMgt.meetingManageLisEmpLyrPopup.userNm=\uc774\ub984 +ussOlpMgt.meetingManageLisEmpLyrPopup.emplyrId=\uc544\uc774\ub514 +ussOlpMgt.meetingManageLisEmpLyrPopup.offmTelno=\uc804\ud654\ubc88\ud638 +ussOlpMgt.meetingManageLisEmpLyrPopup.detailAdres=\uc8fc\uc18c + +ussOlpMgt.meetingManage.mtgNm=\ud68c\uc758\uc81c\ubaa9 +ussOlpMgt.meetingManage.mtgMtrCn=\ud68c\uc758\uc548\uac74 \ub0b4\uc6a9 +ussOlpMgt.meetingManage.mtgSn=\ud68c\uc758\uc21c\uc11c +ussOlpMgt.meetingManage.mtgCo=\ud68c\uc758\ud68c\ucc28 +ussOlpMgt.meetingManage.mtgDe=\ud68c\uc758\uc77c\uc790 +ussOlpMgt.meetingManage.mtgPlace=\ud68c\uc758\uc7a5\uc18c +ussOlpMgt.meetingManage.mtgBeginHH=\ud68c\uc758\uc2dc\uc791\uc2dc\uac04(\uc2dc\uac04) +ussOlpMgt.meetingManage.mtgBeginMM=\ud68c\uc758\uc2dc\uc791\uc2dc\uac04(\ubd84) +ussOlpMgt.meetingManage.mtgEndHH=\ud68c\uc758\uc885\ub8cc\uc2dc\uac04(\uc2dc\uac04) +ussOlpMgt.meetingManage.mtgEndMM=\ud68c\uc758\uc885\ub8cc\uc2dc\uac04(\ubd84) +ussOlpMgt.meetingManage.readngBeginDe=\uc5f4\ub78c \uac1c\uc2dc\uc77c +ussOlpMgt.meetingManage.mtgResultCn=\ud68c\uc758\uacb0\uacfc \ub0b4\uc6a9 +ussOlpMgt.meetingManage.etcMatter=\uae30\ud0c0\uc0ac\ud56d +ussOlpMgt.meetingManage.nonatdrnCo=\ubd88\ucc38\uc11d\uc790\uc218 +ussOlpMgt.meetingManage.atdrnCo=\ucc38\uc11d\uc790\uc218 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/opm/message_en.properties b/src/main/resources/egovframework/message/com/uss/olp/opm/message_en.properties new file mode 100644 index 00000000..68c0599b --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/opm/message_en.properties @@ -0,0 +1,26 @@ +#Online Poll Management Message# + +comUssOlpOpm.title=Online POLL Management + +comUssOlpOpm.searchCondition.POLL_NM=POLL\uba85 + +comUssOlpOpm.list.pollNm=POLL +comUssOlpOpm.list.pollBeginDe=Begin Date +comUssOlpOpm.list.pollEndDe=End Date +comUssOlpOpm.list.pollStatistics=Statistics +comUssOlpOpm.list.pollResult=Result +comUssOlpOpm.list.pollItem=Online POLL Item +comUssOlpOpm.list.item=Item + + +comUssOlpOpm.regist.pollNm=POLL +comUssOlpOpm.regist.pollBeginDe=Begin Date +comUssOlpOpm.regist.pollEndDe=End Date +comUssOlpOpm.regist.pollType=POLL Type +comUssOlpOpm.regist.pollDsuseYn=Available Options About Deleting POLL +comUssOlpOpm.regist.pollAutoDsuseYn=Available Options About Deleting POLL Automatically +comUssOlpOpm.btn.view=View + +comUssOlpOpm.result.title=Online POLL Result + +comUssOlpOpm.pollItem.title=Online POLL Item Info diff --git a/src/main/resources/egovframework/message/com/uss/olp/opm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olp/opm/message_ko.properties new file mode 100644 index 00000000..3e0214e7 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/opm/message_ko.properties @@ -0,0 +1,27 @@ +#\uc628\ub77c\uc778POLL\uad00\ub9ac Message# + +comUssOlpOpm.title=\uc628\ub77c\uc778POLL\uad00\ub9ac + +comUssOlpOpm.searchCondition.POLL_NM=POLL\uba85 + +comUssOlpOpm.list.pollNm=\uc628\ub77c\uc778POLL\uba85 +comUssOlpOpm.list.pollBeginDe=\uc2dc\uc791\uc77c +comUssOlpOpm.list.pollEndDe=\uc885\ub8cc\uc77c +comUssOlpOpm.list.pollStatistics=\ud1b5\uacc4 +comUssOlpOpm.list.pollResult=\uacb0\uacfc +comUssOlpOpm.list.pollItem=\uc628\ub77c\uc778POLL\ud56d\ubaa9 +comUssOlpOpm.list.item=\ud56d\ubaa9\uba85 + + +comUssOlpOpm.regist.pollNm=POLL\uba85 +comUssOlpOpm.regist.pollBeginDe=POLL\uc2dc\uc791\uc77c\uc790 +comUssOlpOpm.regist.pollEndDe=POLL\uc885\ub8cc\uc77c\uc790 +comUssOlpOpm.regist.pollType=POLL\uad6c\ubd84 +comUssOlpOpm.regist.pollDsuseYn=POLL\ud398\uae30\uc720\ubb34 +comUssOlpOpm.regist.pollAutoDsuseYn=POLL\uc790\ub3d9\ud398\uae30\uc720\ubb34 + +comUssOlpOpm.btn.view=\ubcf4\uae30 + +comUssOlpOpm.result.title=\uc628\ub77c\uc778POLL\uacb0\uacfc + +comUssOlpOpm.pollItem.title=\uc628\ub77c\uc778POLL\ud56d\ubaa9 \uc815\ubcf4 diff --git a/src/main/resources/egovframework/message/com/uss/olp/opp/message_en.properties b/src/main/resources/egovframework/message/com/uss/olp/opp/message_en.properties new file mode 100644 index 00000000..8cb7a87d --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/opp/message_en.properties @@ -0,0 +1,12 @@ +#Online Poll Participate Message# + +comUssOlpOpp.title=Online POLL Participation + +comUssOlpOpp.validate.onlinePollPartcptn=Now is not the online POLL voting period! + +comUssOlpOpp.regist.pollNm=POLL +comUssOlpOpp.regist.pollBeginDe=Begin Date +comUssOlpOpp.regist.pollEndDe=End Date +comUssOlpOpp.regist.pollType=Type + +comUssOlpOpp.statistics.title=Statistics \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/opp/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olp/opp/message_ko.properties new file mode 100644 index 00000000..af096f2e --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/opp/message_ko.properties @@ -0,0 +1,12 @@ +#\uc628\ub77c\uc778POLL\ucc38\uc5ec Message# + +comUssOlpOpp.title=\uc628\ub77c\uc778POLL\ucc38\uc5ec + +comUssOlpOpp.validate.onlinePollPartcptn=\uc9c0\uae08\uc740 \uc628\ub77c\uc778POLL \ud22c\ud45c\uae30\uac04\uc774 \uc544\ub2d9\ub2c8\ub2e4! + +comUssOlpOpp.regist.pollNm=POLL\uba85 +comUssOlpOpp.regist.pollBeginDe=POLL\uc2dc\uc791\uc77c\uc790 +comUssOlpOpp.regist.pollEndDe=POLL\uc885\ub8cc\uc77c\uc790 +comUssOlpOpp.regist.pollType=POLL\uc885\ub958 + +comUssOlpOpp.statistics.title=\ud1b5\uacc4 diff --git a/src/main/resources/egovframework/message/com/uss/olp/qim/message_en.properties b/src/main/resources/egovframework/message/com/uss/olp/qim/message_en.properties new file mode 100644 index 00000000..425ce2c6 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qim/message_en.properties @@ -0,0 +1,28 @@ +#Questionnaire Item Management Message# +comUssOlpQim.title=Questionnaire Item Management +comUssOlpQim.titleManage=Questionnaire Item Management +comUssOlpQim.searchCondition.IEM_CN=Questionnaire Item +comUssOlpQim.searchCondition.FRST_REGISTER_ID=Register Name + +comUssOlpQim.regist.qestnrCn=Questionnaire Contents +comUssOlpQim.regist.qestnrQesitmCn=Questionnaire Question Contents +comUssOlpQim.regist.iemSn=Item Serial Number +comUssOlpQim.regist.iemCn=Item Contents +comUssOlpQim.regist.etcAnswerAt=Possibility of Other Answer + +comUssOlpQim.regist.registerName=Register Name +comUssOlpQim.regist.registerDate=Register Date + +comUssOlpQim.regist.popUp=Pop Up + +comUssOlpQim.value.submit=Submit + +#Javascript alert# +comUssOlpQim.alert.searchKeyword=Search Keyword +comUssOlpQim.alert.searchCondition=Search Condition + +comUssOlpQim.alert.select=must be selected! +comUssOlpQim.alert.input=must be written! + +comUssOlpQim.alert.total=If you delete, Questionnaire Item, Questionnaire Survey +comUssOlpQim.alert.delete=will be deleted together! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qim/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olp/qim/message_ko.properties new file mode 100644 index 00000000..bfcf35d2 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qim/message_ko.properties @@ -0,0 +1,28 @@ +#\ud56d\ubaa9\uad00\ub9ac(\uc124\ubb38\ud56d\ubaa9) \uba54\uc2dc\uc9c0# +comUssOlpQim.title=\uc124\ubb38\ud56d\ubaa9 +comUssOlpQim.titleManage=\ud56d\ubaa9\uad00\ub9ac +comUssOlpQim.searchCondition.IEM_CN=\ud56d\ubaa9\ub0b4\uc6a9 +comUssOlpQim.searchCondition.FRST_REGISTER_ID=\ub4f1\ub85d\uc790 + +comUssOlpQim.regist.qestnrCn=\uc124\ubb38\uc815\ubcf4 +comUssOlpQim.regist.qestnrQesitmCn=\uc124\ubb38\ubb38\ud56d\uc815\ubcf4 +comUssOlpQim.regist.iemSn=\ud56d\ubaa9\uc21c\ubc88 +comUssOlpQim.regist.iemCn=\ud56d\ubaa9\ub0b4\uc6a9 +comUssOlpQim.regist.etcAnswerAt=\uae30\ud0c0\ub2f5\ubcc0\uc5ec\ubd80 + +comUssOlpQim.regist.registerName=\ub4f1\ub85d\uc790 +comUssOlpQim.regist.registerDate=\ub4f1\ub85d\uc77c\uc790 + +comUssOlpQim.regist.popUp=\ud31d\uc5c5 + +comUssOlpQim.value.submit=\uc804\uc1a1 + +#Javascript alert# +comUssOlpQim.alert.searchKeyword=\uac80\uc0c9\uc5b4 +comUssOlpQim.alert.searchCondition=\uac80\uc0c9\uad6c\ubd84 + +comUssOlpQim.alert.select=\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694! +comUssOlpQim.alert.input=\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694! + +comUssOlpQim.alert.total=\uc0ad\uc81c\uc2dc \uc124\ubb38\ud56d\ubaa9, \uc124\ubb38\uc870\uc0ac(\uc124\ubb38\uacb0\uacfc) +comUssOlpQim.alert.delete=\uc815\ubcf4\uac00 \ud568\uaed8 \uc0ad\uc81c\ub429\ub2c8\ub2e4! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qmc/message_en.properties b/src/main/resources/egovframework/message/com/uss/olp/qmc/message_en.properties new file mode 100644 index 00000000..febdff93 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qmc/message_en.properties @@ -0,0 +1,40 @@ +#Questionnaire Management Message# +comUssOlpQmc.title=Questionnaire Management +comUssOlpQmc.searchCondition.QUSTNR_SJ=Questionnaire Subject +comUssOlpQmc.searchCondition.FRST_REGISTER_ID=Questionnaire Register ID + +comUssOlpQmc.regist.qestnrSj=Questionnaire Subject +comUssOlpQmc.regist.qestnrPurps=Questionnaire Purpose +comUssOlpQmc.regist.qestnrWritngGuidanceCn=Questionnaire Writing Guide +comUssOlpQmc.regist.qestnrTrget=Questionnaire Target +comUssOlpQmc.regist.qestnrDe=Questionnaire Date +comUssOlpQmc.regist.qestnrTmplatTy=Questionnaire Template Type + +comUssOlpQmc.regist.respondentInfo=Respondent Information +comUssOlpQmc.regist.qustnrqestn=Questionnaire Question +comUssOlpQmc.regist.qustnrInvestigation=Questionnaire Investigation +comUssOlpQmc.regist.statistics=Statistics +comUssOlpQmc.regist.registerName=Register Name +comUssOlpQmc.regist.registerDate=Register Date + +comUssOlpQmc.regist.qestnrTmplatInfo=Questionnaire Template Information +comUssOlpQmc.regist.qestnrTmplatDesc=If you do not have a Template Type, you must register in the "Questionnaire Template Management" menu. + +comUssOlpQmc.value.view=View + +comUssOlpQmc.value.select=Select + +comUssOlpQmc.title.startDay=Start Day +comUssOlpQmc.title.endDay=End Day +comUssOlpQmc.regist.qestnrDeStartDay=Questionnaire Start Day +comUssOlpQmc.regist.qestnrDeEndDay=Questionnaire End Day +comUssOlpQmc.title.image=Image +comUssOlpQmc.title.submit=Submit + +comUssOlpQmc.alt.calPopup=Calendar Popup Button Image + +#Javascript alert# +comUssOlpQmc.alert.startDay=Questionnaire date's start day can not be later than the end day! +comUssOlpQmc.alert.endDay=Questionnaire date's end day can not be earlier than the start day! +comUssOlpQmc.alert.total=If you delete, the Questionnaire Management, Question, Item, Respondent Management, Questionnaire Survey +comUssOlpQmc.alert.delete=will be deleted together! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qmc/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olp/qmc/message_ko.properties new file mode 100644 index 00000000..4e63f20f --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qmc/message_ko.properties @@ -0,0 +1,40 @@ +#\uc124\ubb38\uad00\ub9ac \uba54\uc2dc\uc9c0# +comUssOlpQmc.title=\uc124\ubb38\uad00\ub9ac +comUssOlpQmc.searchCondition.QUSTNR_SJ=\uc124\ubb38\uc81c\ubaa9 +comUssOlpQmc.searchCondition.FRST_REGISTER_ID=\ub4f1\ub85d\uc790 + +comUssOlpQmc.regist.qestnrSj=\uc124\ubb38\uc81c\ubaa9 +comUssOlpQmc.regist.qestnrPurps=\uc124\ubb38\ubaa9\uc801 +comUssOlpQmc.regist.qestnrWritngGuidanceCn=\uc124\ubb38\uc791\uc131 \uc548\ub0b4 \ub0b4\uc6a9 +comUssOlpQmc.regist.qestnrTrget=\uc124\ubb38\ub300\uc0c1 +comUssOlpQmc.regist.qestnrDe=\uc124\ubb38\uae30\uac04 +comUssOlpQmc.regist.qestnrTmplatTy=\ud15c\ud50c\ub9bf \uc720\ud615 + +comUssOlpQmc.regist.respondentInfo=\uc124\ubb38\uc751\ub2f5\uc790\uc815\ubcf4 +comUssOlpQmc.regist.qustnrqestn=\uc124\ubb38\ubb38\ud56d +comUssOlpQmc.regist.qustnrInvestigation=\uc124\ubb38\uc870\uc0ac +comUssOlpQmc.regist.statistics=\ud1b5\uacc4 +comUssOlpQmc.regist.registerName=\ub4f1\ub85d\uc790 +comUssOlpQmc.regist.registerDate=\ub4f1\ub85d\uc77c\uc790 + +comUssOlpQmc.regist.qestnrTmplatInfo=\ud15c\ud50c\ub9bf \uc124\uba85 +comUssOlpQmc.regist.qestnrTmplatDesc=\ud15c\ud50c\ub9bf \uc720\ud615\uc774 \uc5c6\ub294 \uacbd\uc6b0 "\uc124\ubb38\ud15c\ud50c\ub9bf\uad00\ub9ac"\uba54\ub274\uc5d0\uc11c \ub4f1\ub85d\uc744 \ud574\uc57c \ud569\ub2c8\ub2e4. + +comUssOlpQmc.value.view=\ubcf4\uae30 + +comUssOlpQmc.value.select=\uc120\ud0dd + +comUssOlpQmc.title.startDay=\uc2dc\uc791\uc77c +comUssOlpQmc.title.endDay=\uc885\ub8cc\uc77c +comUssOlpQmc.regist.qestnrDeStartDay=\uc124\ubb38\uae30\uac04 \uc2dc\uc791\uc77c +comUssOlpQmc.regist.qestnrDeEndDay=\uc124\ubb38\uae30\uac04 \uc885\ub8cc\uc77c +comUssOlpQmc.title.image=\uc774\ubbf8\uc9c0 +comUssOlpQmc.title.submit=\uc804\uc1a1 + +comUssOlpQmc.alt.calPopup=\ub2ec\ub825\ucc3d\ud31d\uc5c5\ubc84\ud2bc\uc774\ubbf8\uc9c0 + +#Javascript alert# +comUssOlpQmc.alert.startDay=\uc124\ubb38\uae30\uac04 \uc2dc\uc791\uc77c\uc740 \uc885\ub8cc\uc77c \ubcf4\ub2e4 \ud074\uc218 \uc5c6\uace0 +comUssOlpQmc.alert.endDay=\uc124\ubb38\uae30\uac04 \uc885\ub8cc\uc77c\uc740 \uc2dc\uc791\uc77c \ubcf4\ub2e4 \uc791\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4! +comUssOlpQmc.alert.total=\uc0ad\uc81c\uc2dc \uc124\ubb38\uad00\ub9ac, \uc124\ubb38\ud56d\ubaa9, \uc124\ubb38\ubb38\ud56d, \uc124\ubb38\uc751\ub2f5\uc790\uad00\ub9ac, \uc124\ubb38\uc870\uc0ac(\uc124\ubb38\uacb0\uacfc) +comUssOlpQmc.alert.delete=\uc815\ubcf4\uac00 \ud568\uaed8 \uc0ad\uc81c\ub429\ub2c8\ub2e4! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qnn/message_en.properties b/src/main/resources/egovframework/message/com/uss/olp/qnn/message_en.properties new file mode 100644 index 00000000..855f0856 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qnn/message_en.properties @@ -0,0 +1,48 @@ +#Questionnaire Survey Message# +comUssOlpQnn.title=Questionnaire Survey +comUssOlpQnn.titleManage=Questionnaire Survey +comUssOlpQnn.searchCondition.QUSTNR_SJ=Questionnaire Subject +comUssOlpQnn.searchCondition.FRST_REGISTER_ID=Register Name + +comUssOlpQnn.regist.sexdstnCode=Gender Distinction Code +comUssOlpQnn.regist.occpTyCode=Occupation +comUssOlpQnn.regist.respondNm=Respond Name + +comUssOlpQnn.regist.qestnrSj=Questionnaire Subject +comUssOlpQnn.regist.qestnrPurps=Questionnaire Purpose +comUssOlpQnn.regist.qestnrWritngGuidanceCn=Questionnaire Writing Guide +comUssOlpQnn.regist.qestnrTrgetAndDe=Questionnaire Target and Date +comUssOlpQnn.regist.qestnrTmplatCours=Questionnaire Survey + +comUssOlpQnn.regist.statistics=Statistics +comUssOlpQnn.regist.registerName=Register Name +comUssOlpQnn.regist.registerDate=Register Date + +comUssOlpQnn.regist.example=View + +comUssOlpQnn.regist.respondInfo=Respondent Info +comUssOlpQnn.regist.qestnrInfo=Questionnaire Info + +comUssOlpQnn.regist.qestnrTrget=Questionnaire Target +comUssOlpQnn.regist.qestnrDate=Questionnaire Date + +comUssOlpQnn.regist.student=Student +comUssOlpQnn.regist.univStudent=University Student +comUssOlpQnn.regist.salaryMan=Salary Man +comUssOlpQnn.regist.soldier=Soldier +comUssOlpQnn.regist.teacher=Teacher +comUssOlpQnn.regist.etc=Etc + +comUssOlpQnn.alt.compulsoryInput=Compulsory Input Indicator +comUssOlpQnn.alt.chartImage=Chart Image + +#Javascript alert# +comUssOlpQnn.alert.sexdstnCode=Please choose the gender distinction code! +comUssOlpQnn.alert.occpTyCode=Please choose the occupation type! +comUssOlpQnn.alert.respondNm=Please choose the respond name! + +comUssOlpQnn.alert.qestnIem=th question must be picked! +comUssOlpQnn.alert.etcAnswer=th other answer must be picked! + +comUssOlpQnn.alert.mxmmChoiseCo=Number of Maximum Choice +comUssOlpQnn.alert.exceed=th number was exceeded! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qnn/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olp/qnn/message_ko.properties new file mode 100644 index 00000000..a379c932 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qnn/message_ko.properties @@ -0,0 +1,48 @@ +#\uc124\ubb38\uc870\uc0ac \uba54\uc2dc\uc9c0# +comUssOlpQnn.title=\uc124\ubb38\ucc38\uc5ec +comUssOlpQnn.titleManage=\uc124\ubb38\uc870\uc0ac +comUssOlpQnn.searchCondition.QUSTNR_SJ=\uc124\ubb38\uc81c\ubaa9 +comUssOlpQnn.searchCondition.FRST_REGISTER_ID=\ub4f1\ub85d\uc790 + +comUssOlpQnn.regist.sexdstnCode=\uc131\ubcc4 +comUssOlpQnn.regist.occpTyCode=\uc9c1\uc5c5 +comUssOlpQnn.regist.respondNm=\uc751\ub2f5\uc790\uba85 + +comUssOlpQnn.regist.qestnrSj=\uc124\ubb38\uc81c\ubaa9 +comUssOlpQnn.regist.qestnrPurps=\uc124\ubb38\ubaa9\uc801 +comUssOlpQnn.regist.qestnrWritngGuidanceCn=\uc124\ubb38\uc791\uc131 \uc548\ub0b4\ub0b4\uc6a9 +comUssOlpQnn.regist.qestnrTrgetAndDe=\uc124\ubb38\ub300\uc0c1,\uc124\ubb38\uae30\uac04 +comUssOlpQnn.regist.qestnrTmplatCours=\uc124\ubb38\uc870\uc0ac + +comUssOlpQnn.regist.statistics=\ud1b5\uacc4 +comUssOlpQnn.regist.registerName=\ub4f1\ub85d\uc790 +comUssOlpQnn.regist.registerDate=\ub4f1\ub85d\uc77c\uc790 + +comUssOlpQnn.regist.example=\ubcf4\uae30 + +comUssOlpQnn.regist.respondInfo=\uc124\ubb38\uc751\ub2f5\uc790 \uc815\ubcf4 +comUssOlpQnn.regist.qestnrInfo=\uc124\ubb38\uc815\ubcf4 + +comUssOlpQnn.regist.qestnrTrget=\uc124\ubb38\ub300\uc0c1 +comUssOlpQnn.regist.qestnrDate=\uc124\ubb38\uae30\uac04 + +comUssOlpQnn.regist.student=\ud559\uc0dd +comUssOlpQnn.regist.univStudent=\ub300\ud559\uc0dd +comUssOlpQnn.regist.salaryMan=\uc9c1\uc7a5\uc778 +comUssOlpQnn.regist.soldier=\uad70\uc778 +comUssOlpQnn.regist.teacher=\uad50\uc0ac +comUssOlpQnn.regist.etc=\uae30\ud0c0 + +comUssOlpQnn.alt.compulsoryInput=\ud544\uc218\uc785\ub825\ud45c\uc2dc +comUssOlpQnn.alt.chartImage=\ucc28\ud2b8\uc774\ubbf8\uc9c0 + +#\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 alert# +comUssOlpQnn.alert.sexdstnCode=\uc124\ubb38\uc751\ub2f5\uc790\uc815\ubcf4 \uc131\ubcc4\uc744 \ud0dd\ud574\uc8fc\uc138\uc694! +comUssOlpQnn.alert.occpTyCode=\uc124\ubb38\uc751\ub2f5\uc790\uc815\ubcf4 \uc9c1\uc5c5\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694! +comUssOlpQnn.alert.respondNm=\uc124\ubb38\uc751\ub2f5\uc790\uc815\ubcf4 \uc751\ub2f5\uc790\uba85\uc744 \uc785\ub825\ud574\uc8fc\uc138\uc694! + +comUssOlpQnn.alert.qestnIem=\ubc88 \uc124\ubb38\ubb38\ud56d\uc744 \uc791\uc131\ud574 \uc8fc\uc138\uc694! +comUssOlpQnn.alert.etcAnswer=\ubc88 \uc124\ubb38\ubb38\ud56d \uae30\ud0c0\ub2f5\ubcc0\uc744 \uc791\uc131\ud574\uc8fc\uc138\uc694! + +comUssOlpQnn.alert.mxmmChoiseCo=\ucd5c\ub300\uc120\ud0dd\uac74\uc218 +comUssOlpQnn.alert.exceed=\uac74\uc744 \ucd08\uacfc\ud558\uc600\uc2b5\ub2c8\ub2e4! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qqm/message_en.properties b/src/main/resources/egovframework/message/com/uss/olp/qqm/message_en.properties new file mode 100644 index 00000000..4ce5154f --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qqm/message_en.properties @@ -0,0 +1,37 @@ +#Questionnaire Question Management Message# +comUssOlpQqm.title=Questionnaire Question Management +comUssOlpQqm.titleManage=Questionnaire Question Management +comUssOlpQqm.searchCondition.QESTN_CN=Question Contents +comUssOlpQqm.searchCondition.MXMM_CHOISE_CO=Number of Maximum Choice + +comUssOlpQqm.regist.qestnrCn=Questionnaire Contents +comUssOlpQqm.regist.qestnSn=Question Serial Number +comUssOlpQqm.regist.qestnTyCode=Question Type +comUssOlpQqm.regist.qestnCn=Question Contents +comUssOlpQqm.regist.mxmmChoiseCo=Number of Maximum Choice + +comUssOlpQqm.result.iemCn=Result of Questionnaire Item +comUssOlpQqm.result.respondAnswerCn=Result of Respond Answer +comUssOlpQqm.result.etcAnswerCn=Result of Other Answer + +comUssOlpQqm.regist.qestnIem=Question Item +comUssOlpQqm.regist.statistics=Statistics +comUssOlpQqm.regist.registerName=Register Name +comUssOlpQqm.regist.registerDate=Register Date + +comUssOlpQqm.regist.popup=Pop Up + +comUssOlpQqm.regist.objectiveQuest=Ojective Question +comUssOlpQqm.regist.subjectiveQuest=Subjective Question + +comUssOlpQqm.value.view=View + +comUssOlpQqm.title.submit=Submit + +comUssOlpQqm.alt.chartImage=Chart Image + +#Javascript alert# +comUssOlpQqm.alert.input=must be written! + +comUssOlpQqm.alert.total=If you delete, Questionnaire Question, Item, Questionnaire Survey +comUssOlpQqm.alert.delete=will be deleted together! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qqm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olp/qqm/message_ko.properties new file mode 100644 index 00000000..803c2b46 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qqm/message_ko.properties @@ -0,0 +1,37 @@ +#\uc9c8\ubb38\uad00\ub9ac(\uc124\ubb38\ubb38\ud56d) \uba54\uc2dc\uc9c0# +comUssOlpQqm.title=\uc124\ubb38\ubb38\ud56d +comUssOlpQqm.titleManage=\ubb38\ud56d \uad00\ub9ac +comUssOlpQqm.searchCondition.QESTN_CN=\uc9c8\ubb38\ub0b4\uc6a9 +comUssOlpQqm.searchCondition.MXMM_CHOISE_CO=\ucd5c\ub300\uc120\ud0dd\uac74\uc218 + +comUssOlpQqm.regist.qestnrCn=\uc124\ubb38\uc9c0\uc815\ubcf4(\uc81c\ubaa9) +comUssOlpQqm.regist.qestnSn=\uc9c8\ubb38\uc21c\ubc88 +comUssOlpQqm.regist.qestnTyCode=\uc9c8\ubb38\uc720\ud615 +comUssOlpQqm.regist.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9 +comUssOlpQqm.regist.mxmmChoiseCo=\ucd5c\ub300\uc120\ud0dd\uac74\uc218 + +comUssOlpQqm.result.iemCn=\uc124\ubb38\ud56d\ubaa9\uacb0\uacfc +comUssOlpQqm.result.respondAnswerCn=\uc751\ub2f5\uc790\ub2f5\ubcc0\ub0b4\uc6a9 \uacb0\uacfc +comUssOlpQqm.result.etcAnswerCn=\uae30\ud0c0\ub2f5\ubcc0\ub0b4\uc6a9 \uacb0\uacfc + +comUssOlpQqm.regist.qestnIem=\uc9c8\ubb38\ud56d\ubaa9 +comUssOlpQqm.regist.statistics=\ud1b5\uacc4 +comUssOlpQqm.regist.registerName=\ub4f1\ub85d\uc790 +comUssOlpQqm.regist.registerDate=\ub4f1\ub85d\uc77c\uc790 + +comUssOlpQqm.regist.popup=\ud31d\uc5c5 + +comUssOlpQqm.regist.objectiveQuest=\uac1d\uad00\uc2dd +comUssOlpQqm.regist.subjectiveQuest=\uc8fc\uad00\uc2dd + +comUssOlpQqm.value.view=\ubcf4\uae30 + +comUssOlpQqm.title.submit=\uc804\uc1a1 + +comUssOlpQqm.alt.chartImage=\ucc28\ud2b8\uc774\ubbf8\uc9c0 + +#Javascript alert# +comUssOlpQqm.alert.input=\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694! + +comUssOlpQqm.alert.total=\uc0ad\uc81c\uc2dc \uc124\ubb38\ubb38\ud56d, \uc124\ubb38\ud56d\ubaa9, \uc124\ubb38\uc870\uc0ac(\uc124\ubb38\uacb0\uacfc) +comUssOlpQqm.alert.delete=\uc815\ubcf4\uac00 \ud568\uaed8 \uc0ad\uc81c\ub429\ub2c8\ub2e4! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qri/message_en.properties b/src/main/resources/egovframework/message/com/uss/olp/qri/message_en.properties new file mode 100644 index 00000000..36a8140f --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qri/message_en.properties @@ -0,0 +1,39 @@ +#Questionnaire Respond Information Message# +comUssOlpQri.title=Questionnaire Respond Information Management +comUssOlpQri.titleManage=Questionnaire Respond Information Management +comUssOlpQri.searchCondition.ETC_ANSWER_CN=Contents of Other Answer +comUssOlpQri.searchCondition.RESPOND_ANSWER_CN=Contents of Respond Answer +comUssOlpQri.searchCondition.RESPOND_NM=Respond Name + +comUssOlpQri.regist.qestnrCn=Questionnaire Contents +comUssOlpQri.regist.qestnrQesitmCn=Questionnaire Question Contents +comUssOlpQri.regist.qestnTyCode=Questionnaire Type +comUssOlpQri.regist.qustnrIemCn=Questionnaire Item Contents +comUssOlpQri.regist.respondAnswerCn=Contents of Respond Answer +comUssOlpQri.regist.etcAnswerCn=Contents of Other Answer +comUssOlpQri.regist.respondNm=Respond Name + +comUssOlpQri.regist.qestnType=Question Type +comUssOlpQri.regist.qustnrqestn=Questionnaire Question +comUssOlpQri.regist.qustnrIem=Questionnaire Item +comUssOlpQri.regist.writerName=Writer Name +comUssOlpQri.regist.registerDate=Register Date + +comUssOlpQri.regist.objectiveQuest=Objective Question +comUssOlpQri.regist.subjectiveQuest=Subjective Question + +comUssOlpQri.regist.newWindow=New Window + +comUssOlpQri.title.submit=Submit + +comUssOlpQri.regist.mxmmChoiseCo=Number of Maximum Choice + +comUssOlpQri.title.template=Template +comUssOlpQri.title.etcAnswer=Possibility of Other Answer +comUssOlpQri.title.inputSubjQuest=Input of Subjective Question +comUssOlpQri.title.checkBox=Check Box + +comUssOlpQri.alt.compulsoryInput=Compulsory Input Indicator + +#Javascript alert# +comUssOlpQri.alert.input=must be written! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qri/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olp/qri/message_ko.properties new file mode 100644 index 00000000..ca3d26d6 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qri/message_ko.properties @@ -0,0 +1,39 @@ +#\uc124\ubb38\uad00\ub9ac-\uc124\ubb38\uc870\uc0ac'\ubcf4\uae30' \uba54\uc2dc\uc9c0# +comUssOlpQri.title=\uc124\ubb38\uc870\uc0ac +comUssOlpQri.titleManage=\uc124\ubb38\uc870\uc0ac\uad00\ub9ac +comUssOlpQri.searchCondition.ETC_ANSWER_CN=\uae30\ud0c0\ub2f5\ubcc0\ub0b4\uc6a9 +comUssOlpQri.searchCondition.RESPOND_ANSWER_CN=\uc751\ub2f5\uc790\ub2f5\ubcc0\ub0b4\uc6a9 +comUssOlpQri.searchCondition.RESPOND_NM=\uc751\ub2f5\uc790\uba85 + +comUssOlpQri.regist.qestnrCn=\uc124\ubb38\uad00\ub9ac\uc815\ubcf4 +comUssOlpQri.regist.qestnrQesitmCn=\uc124\ubb38\ubb38\ud56d\uc815\ubcf4 +comUssOlpQri.regist.qestnTyCode=\uc124\ubb38\uc720\ud615 +comUssOlpQri.regist.qustnrIemCn=\uc124\ubb38\ud56d\ubaa9\uc815\ubcf4 +comUssOlpQri.regist.respondAnswerCn=\uc751\ub2f5\uc790\ub2f5\ubcc0\ub0b4\uc6a9 +comUssOlpQri.regist.etcAnswerCn=\uae30\ud0c0\ub2f5\ubcc0\ub0b4\uc6a9 +comUssOlpQri.regist.respondNm=\uc751\ub2f5\uc790\uba85 + +comUssOlpQri.regist.qestnType=\ubb38\ud56d\uc720\ud615 +comUssOlpQri.regist.qustnrqestn=\uc124\ubb38\ubb38\ud56d +comUssOlpQri.regist.qustnrIem=\uc124\ubb38\ud56d\ubaa9 +comUssOlpQri.regist.writerName=\uc791\uc131\uc790\uba85 +comUssOlpQri.regist.registerDate=\ub4f1\ub85d\uc77c\uc790 + +comUssOlpQri.regist.objectiveQuest=\uac1d\uad00\uc2dd +comUssOlpQri.regist.subjectiveQuest=\uc8fc\uad00\uc2dd + +comUssOlpQri.regist.newWindow=\uc0c8\ucc3d + +comUssOlpQri.title.submit=\uc804\uc1a1 + +comUssOlpQri.regist.mxmmChoiseCo=\ucd5c\ub300\uc120\ud0dd\uac74\uc218 + +comUssOlpQri.title.template=\ud15c\ud50c\ub9bf +comUssOlpQri.title.etcAnswer=\uae30\ud0c0\ub2f5\ubcc0\uc5ec\ubd80 +comUssOlpQri.title.inputSubjQuest=\uc8fc\uad00\uc2dd\ub0b4\uc6a9\uc785\ub825 +comUssOlpQri.title.checkBox=\uccb4\ud06c\ubc15\uc2a4 + +comUssOlpQri.alt.compulsoryInput=\ud544\uc218\uc785\ub825\ud45c\uc2dc + +#Javascript alert# +comUssOlpQri.alert.input=\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qrm/message_en.properties b/src/main/resources/egovframework/message/com/uss/olp/qrm/message_en.properties new file mode 100644 index 00000000..75066ebe --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qrm/message_en.properties @@ -0,0 +1,18 @@ +#Questionnaire Respondent Management Message# +comUssOlpQrm.title=Questionnaire Respondent Management +comUssOlpQrm.titleManage=Questionnaire Respondent Management +comUssOlpQrm.searchCondition.RESPOND_NM=Respond Name + +comUssOlpQrm.regist.qestnrCn=Questionnaire Contents +comUssOlpQrm.regist.sexdstnCode=Gender Distinction Code +comUssOlpQrm.regist.occpTyCode=Occupation +comUssOlpQrm.regist.respondNm=Respond Name + +comUssOlpQrm.regist.qestnrCnList=Questionnaire Contents +comUssOlpQrm.regist.registerName=Register Name +comUssOlpQrm.regist.registerDate=Register Date + +comUssOlpQrm.title.submit=Submit + +#Javascript alert# +comUssOlpQrm.alert.input=must be written! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qrm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olp/qrm/message_ko.properties new file mode 100644 index 00000000..c328b0af --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qrm/message_ko.properties @@ -0,0 +1,18 @@ +#\uc751\ub2f5\uc790\uad00\ub9ac \uba54\uc2dc\uc9c0# +comUssOlpQrm.title=\uc751\ub2f5\uc790\uc815\ubcf4 +comUssOlpQrm.titleManage=\uc751\ub2f5\uc790\uad00\ub9ac +comUssOlpQrm.searchCondition.RESPOND_NM=\uc751\ub2f5\uc790\uba85 + +comUssOlpQrm.regist.qestnrCn=\uc124\ubb38\uad00\ub9ac\uc815\ubcf4 +comUssOlpQrm.regist.sexdstnCode=\uc131\ubcc4 +comUssOlpQrm.regist.occpTyCode=\uc9c1\uc5c5 +comUssOlpQrm.regist.respondNm=\uc751\ub2f5\uc790\uba85 + +comUssOlpQrm.regist.qestnrCnList=\uc124\ubb38\uc9c0\uc815\ubcf4(\uc81c\ubaa9) +comUssOlpQrm.regist.registerName=\ub4f1\ub85d\uc790 +comUssOlpQrm.regist.registerDate=\ub4f1\ub85d\uc77c\uc790 + +comUssOlpQrm.title.submit=\uc804\uc1a1 + +#Javascript alert# +comUssOlpQrm.alert.input=\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qtm/message_en.properties b/src/main/resources/egovframework/message/com/uss/olp/qtm/message_en.properties new file mode 100644 index 00000000..a8dfb0d7 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qtm/message_en.properties @@ -0,0 +1,25 @@ +#Questionnaire Template Management Message# +comUssOlpQtm.menu=Menu +comUssOlpQtm.title=Questionnaire Template Management +comUssOlpQtm.searchCondition.QUSTNR_TMPLAT_DC=Questionnaire Template Contents +comUssOlpQtm.searchCondition.QUSTNR_TMPLAT_TY=Questionnaire Template Type + +comUssOlpQtm.regist.qestnrTmplatTy=Questionnaire Template Type +comUssOlpQtm.regist.egovfile=Template Type Image +comUssOlpQtm.regist.egovfile.information=Template Type Image Information +comUssOlpQtm.regist.qestnrTmplatCn=Questionnaire Template Contents +comUssOlpQtm.regist.qestnrTmplatCours=Questionnaire Template file Path + +comUssOlpQtm.regist.frstRegisterNm=Register Name +comUssOlpQtm.regist.frstRegisterPnttm=Register Date + +comUssOlpQtm.regist.qestnrTmplatImage=Questionnaire Template Image + +comUssOlpQtm.title.image=Image +comUssOlpQtm.title.submit=Submit + +#Javascript alert# +comUssOlpQtm.alert.select=must be selected! +comUssOlpQtm.alert.image=Only image can be uploaded! +comUssOlpQtm.alert.total=If you delete, Questionnaire Template, Question, Item, and Questionnaire Survey +comUssOlpQtm.alert.delete=will be deleted together! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/olp/qtm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/olp/qtm/message_ko.properties new file mode 100644 index 00000000..e2ed6e58 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/olp/qtm/message_ko.properties @@ -0,0 +1,25 @@ +#\uc124\ubb38\ud15c\ud50c\ub9bf\uad00\ub9ac \uba54\uc2dc\uc9c0# +comUssOlpQtm.menu=\uba54\ub274 +comUssOlpQtm.title=\uc124\ubb38\ud15c\ud50c\ub9bf\uad00\ub9ac +comUssOlpQtm.searchCondition.QUSTNR_TMPLAT_DC=\ud15c\ud50c\ub9bf\uc124\uba85 +comUssOlpQtm.searchCondition.QUSTNR_TMPLAT_TY=\ud15c\ud50c\ub9bf\uc720\ud615 + +comUssOlpQtm.regist.qestnrTmplatTy=\ud15c\ud50c\ub9bf\uc720\ud615 +comUssOlpQtm.regist.egovfile=\ud15c\ud50c\ub9bf\uc720\ud615 \uc774\ubbf8\uc9c0 +comUssOlpQtm.regist.egovfile.information=\ud15c\ud50c\ub9bf\uc720\ud615 \uc774\ubbf8\uc9c0 \uc815\ubcf4 +comUssOlpQtm.regist.qestnrTmplatCn=\ud15c\ud50c\ub9bf\uc124\uba85 +comUssOlpQtm.regist.qestnrTmplatCours=\ud15c\ud50c\ub9bf \ud30c\uc77c(\uacbd\ub85c) + +comUssOlpQtm.regist.frstRegisterNm=\uc791\uc131\uc790\uba85 +comUssOlpQtm.regist.frstRegisterPnttm=\ub4f1\ub85d\uc77c\uc790 + +comUssOlpQtm.regist.qestnrTmplatImage=\ud15c\ud50c\ub9bf \uc774\ubbf8\uc9c0 + +comUssOlpQtm.title.image=\uc774\ubbf8\uc9c0 +comUssOlpQtm.title.submit=\uc804\uc1a1 + +#Javascript alert# +comUssOlpQtm.alert.select=\ub97c \uc120\ud0dd\ud574\uc8fc\uc138\uc694! +comUssOlpQtm.alert.image=\uc774\ubbf8\uc9c0 \ud615\uc2dd\uc758 \ud655\uc7a5\uc790\ub9cc \uc5c5\ub85c\ub4dc \uac00\ub2a5\ud569\ub2c8\ub2e4! +comUssOlpQtm.alert.total=\uc0ad\uc81c\uc2dc \uc124\ubb38\ud15c\ud50c\ub9bf, \uc124\ubb38\ud56d\ubaa9, \uc124\ubb38\ubb38\ud56d, \uc124\ubb38\uc751\ub2f5\uc790\uad00\ub9ac, \uc124\ubb38\uc870\uc0ac(\uc124\ubb38\uacb0\uacfc) +comUssOlpQtm.alert.delete=\uc815\ubcf4\uac00 \ud568\uaed8 \uc0ad\uc81c\ub429\ub2c8\ub2e4! \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/sam/cpy/message_en.properties b/src/main/resources/egovframework/message/com/uss/sam/cpy/message_en.properties new file mode 100644 index 00000000..d192e6a4 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/sam/cpy/message_en.properties @@ -0,0 +1,16 @@ +#Copyright Protection Policy# +ussSamCpy.cpyrhtPrtcPolicyListInqire.cpyrhtPrtcPolicyListInqire=Privacy Policy List +ussSamCpy.cpyrhtPrtcPolicyListInqire.cpyrhtPrtcPolicyCn=Privacy Policy Contents +ussSamCpy.cpyrhtPrtcPolicyListInqire.lastUpdtPnttm=Registration date + +ussSamCpy.cpyrhtPrtcPolicyCnRegist.cpyrhtPrtcPolicyCnRegist=Privacy Policy Regist +ussSamCpy.cpyrhtPrtcPolicyCnRegist.cpyrhtPrtcPolicyCn=Privacy Policy Contents + +ussSamCpy.cpyrhtPrtcPolicyCnUpdt.cpyrhtPrtcPolicyCnUpdt=Privacy Policy Update +ussSamCpy.cpyrhtPrtcPolicyCnUpdt.cpyrhtPrtcPolicyCn=Privacy Policy Contents + +ussSamCpy.cpyrhtPrtcPolicyDetailInqire.cpyrhtPrtcPolicyDetailInqire=Privacy Policy Detail +ussSamCpy.cpyrhtPrtcPolicyDetailInqire.cpyrhtPrtcPolicyCn=Privacy Policy Contents +ussSamCpy.cpyrhtPrtcPolicyDetailInqire.lastUpdtPnttm=registration date + +ussSamCpy.cpyrhtPrtcPolicy.validate.cpyrhtPrtcPolicyCn=Privacy Policy Contents \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/sam/cpy/message_ko.properties b/src/main/resources/egovframework/message/com/uss/sam/cpy/message_ko.properties new file mode 100644 index 00000000..9f1e9097 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/sam/cpy/message_ko.properties @@ -0,0 +1,16 @@ +#\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45# +ussSamCpy.cpyrhtPrtcPolicyListInqire.cpyrhtPrtcPolicyListInqire=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45 \ubaa9\ub85d +ussSamCpy.cpyrhtPrtcPolicyListInqire.cpyrhtPrtcPolicyCn=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 +ussSamCpy.cpyrhtPrtcPolicyListInqire.lastUpdtPnttm=\ub4f1\ub85d\uc77c\uc790 + +ussSamCpy.cpyrhtPrtcPolicyCnRegist.cpyrhtPrtcPolicyCnRegist=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45 \ub4f1\ub85d +ussSamCpy.cpyrhtPrtcPolicyCnRegist.cpyrhtPrtcPolicyCn=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 + +ussSamCpy.cpyrhtPrtcPolicyCnUpdt.cpyrhtPrtcPolicyCnUpdt=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45 \uc218\uc815 +ussSamCpy.cpyrhtPrtcPolicyCnUpdt.cpyrhtPrtcPolicyCn=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 + +ussSamCpy.cpyrhtPrtcPolicyDetailInqire.cpyrhtPrtcPolicyDetailInqire=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45 \uc0c1\uc138\ubcf4\uae30 +ussSamCpy.cpyrhtPrtcPolicyDetailInqire.cpyrhtPrtcPolicyCn=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 +ussSamCpy.cpyrhtPrtcPolicyDetailInqire.lastUpdtPnttm=\ub4f1\ub85d\uc77c\uc790 + +ussSamCpy.cpyrhtPrtcPolicy.validate.cpyrhtPrtcPolicyCn=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/sam/ipm/message_en.properties b/src/main/resources/egovframework/message/com/uss/sam/ipm/message_en.properties new file mode 100644 index 00000000..12eb2742 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/sam/ipm/message_en.properties @@ -0,0 +1,26 @@ +#Privacy Policy Management# +ussSamIpm.indvdlInfoPolicyList.indvdlInfoPolicyList=Privacy Policy Management List +ussSamIpm.indvdlInfoPolicyList.indvdlInfoPolicyNm=Privacy Policy Name +ussSamIpm.indvdlInfoPolicyList.indvdlInfoPolicyCn=Privacy Policy Contents +ussSamIpm.indvdlInfoPolicyList.indvdlInfoscrPolicyAgreAt=Agreement +ussSamIpm.indvdlInfoPolicyList.frstRegisterNm=Registrant +ussSamIpm.indvdlInfoPolicyList.frstRegistPnttm=Registration date + +ussSamIpm.indvdlInfoPolicyRegist.indvdlInfoPolicyRegist=Privacy Policy Management Regist +ussSamIpm.indvdlInfoPolicyRegist.indvdlInfoNm=Privacy Policy Name +ussSamIpm.indvdlInfoPolicyRegist.indvdlInfoDc=Privacy Policy Contents +ussSamIpm.indvdlInfoPolicyRegist.indvdlInfoYn=Agreement + +ussSamIpm.indvdlInfoPolicyDetail.indvdlInfoPolicyDetail=Privacy Policy Management Detail +ussSamIpm.indvdlInfoPolicyDetail.indvdlInfoNm=Privacy Policy Name +ussSamIpm.indvdlInfoPolicyDetail.indvdlInfoDc=Privacy Policy Contents +ussSamIpm.indvdlInfoPolicyDetail.indvdlInfoYn=Agreement + +ussSamIpm.indvdlInfoPolicyUpdt.indvdlInfoPolicyUpdt=Privacy Policy Management Update +ussSamIpm.indvdlInfoPolicyUpdt.indvdlInfoNm=Privacy Policy Name +ussSamIpm.indvdlInfoPolicyUpdt.indvdlInfoDc=Privacy Policy Contents +ussSamIpm.indvdlInfoPolicyUpdt.indvdlInfoYn=Agreement + +ussSamIpm.indvdlInfoPolicy.indvdlInfoNm=Privacy Policy Name +ussSamIpm.indvdlInfoPolicy.indvdlInfoDc=Privacy Policy Contents +ussSamIpm.indvdlInfoPolicy.indvdlInfoYn=Agreement \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/sam/ipm/message_ko.properties b/src/main/resources/egovframework/message/com/uss/sam/ipm/message_ko.properties new file mode 100644 index 00000000..35a8d8d4 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/sam/ipm/message_ko.properties @@ -0,0 +1,26 @@ +#\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45 \uad00\ub9ac# +ussSamIpm.indvdlInfoPolicyList.indvdlInfoPolicyList=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45 \ubaa9\ub85d +ussSamIpm.indvdlInfoPolicyList.indvdlInfoPolicyNm=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\uba85 +ussSamIpm.indvdlInfoPolicyList.indvdlInfoPolicyCn=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 +ussSamIpm.indvdlInfoPolicyList.indvdlInfoscrPolicyAgreAt=\ub3d9\uc758\uc5ec\ubd80 +ussSamIpm.indvdlInfoPolicyList.frstRegisterNm=\ub4f1\ub85d\uc790 +ussSamIpm.indvdlInfoPolicyList.frstRegistPnttm=\ub4f1\ub85d\uc77c\uc790 + +ussSamIpm.indvdlInfoPolicyRegist.indvdlInfoPolicyRegist=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45 \uad00\ub9ac \ub4f1\ub85d +ussSamIpm.indvdlInfoPolicyRegist.indvdlInfoNm=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\uba85 +ussSamIpm.indvdlInfoPolicyRegist.indvdlInfoDc=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 +ussSamIpm.indvdlInfoPolicyRegist.indvdlInfoYn=\ub3d9\uc758\uc5ec\ubd80 + +ussSamIpm.indvdlInfoPolicyDetail.indvdlInfoPolicyDetail=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45 \uad00\ub9ac \uc0c1\uc138\ubcf4\uae30 +ussSamIpm.indvdlInfoPolicyDetail.indvdlInfoNm=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\uba85 +ussSamIpm.indvdlInfoPolicyDetail.indvdlInfoDc=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 +ussSamIpm.indvdlInfoPolicyDetail.indvdlInfoYn=\ub3d9\uc758\uc5ec\ubd80 + +ussSamIpm.indvdlInfoPolicyUpdt.indvdlInfoPolicyUpdt=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45 \uad00\ub9ac \uc0c1\uc138\ubcf4\uae30 +ussSamIpm.indvdlInfoPolicyUpdt.indvdlInfoNm=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\uba85 +ussSamIpm.indvdlInfoPolicyUpdt.indvdlInfoDc=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 +ussSamIpm.indvdlInfoPolicyUpdt.indvdlInfoYn=\ub3d9\uc758\uc5ec\ubd80 + +ussSamIpm.indvdlInfoPolicy.indvdlInfoNm=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\uba85 +ussSamIpm.indvdlInfoPolicy.indvdlInfoDc=\uac1c\uc778\uc815\ubcf4\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 +ussSamIpm.indvdlInfoPolicy.indvdlInfoYn=\ub3d9\uc758\uc5ec\ubd80 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/sam/stp/message_en.properties b/src/main/resources/egovframework/message/com/uss/sam/stp/message_en.properties new file mode 100644 index 00000000..78cdaa00 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/sam/stp/message_en.properties @@ -0,0 +1,5 @@ +#Provision Management Message# +comUssSamStp.title=Provision Management +comUssSamStp.list.useStplatNm=Provision Name +comUssSamStp.list.useStplatCn=Provision Contents +comUssSamStp.list.infoProvdAgreCn=Informational Provision Agreement Contents \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/sam/stp/message_ko.properties b/src/main/resources/egovframework/message/com/uss/sam/stp/message_ko.properties new file mode 100644 index 00000000..24119cee --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/sam/stp/message_ko.properties @@ -0,0 +1,5 @@ +#\uc57d\uad00\uad00\ub9ac Message# +comUssSamStp.title=\uc57d\uad00\uad00\ub9ac +comUssSamStp.list.useStplatNm=\uc57d\uad00\uba85 +comUssSamStp.list.useStplatCn=\uc57d\uad00\ub0b4\uc6a9 +comUssSamStp.list.infoProvdAgreCn=\uc815\ubcf4\uc81c\uacf5\ub3d9\uc758\ub0b4\uc6a9 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/uss/umt/message_en.properties b/src/main/resources/egovframework/message/com/uss/umt/message_en.properties new file mode 100644 index 00000000..f18eaca3 --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/umt/message_en.properties @@ -0,0 +1,148 @@ +#Login Provision Management# +comUssUmt.stplatCnfirmt.title=Provision Confirmation +comUssUmt.stplatCnfirmt.useStplatCn=Provision Contents +comUssUmt.stplatCnfirmt.infoProvdAgreCn=Informational Contents Agreement Contents + +comUssUmt.stplatCnfirmtMsg.useStplat=Agree to the Terms and Conditions of the content. +comUssUmt.stplatCnfirmtMsg.infoProvdAgre=Agree with the use of information. + +comUssUmt.stplatCnfirmtValidate.disagreeStplatCnfirmt=You can not sign up if you don't agree to the Provision Contents. + +comUssUmt.common.lockAt=Login authorization limit status +comUssUmt.common.lockAtBtn=Release limits for login authentication +comUssUmt.common.lockAtConfirm=Are you sure you want to disable the login limit? + +#department Management# +comUssUmt.deptManage.title=Department Management + +comUssUmt.deptManageList.deptId=Department ID +comUssUmt.deptManageList.deptName=Department Name +comUssUmt.deptManageList.deptDc=Description +comUssUmt.deptManageSearchCondition.searchKeywordText=Department Name + +comUssUmt.deptManageRegist.deptId=Department ID +comUssUmt.deptManageRegist.deptName=Department Name +comUssUmt.deptManageRegist.deptDc=Description + +#Member Management# +comUssUmt.userManage.title=Member Management + +comUssUmt.userManageSsearch.sbscrbSttusTitle=Selection to the Condition of Registration Status +comUssUmt.userManageSsearch.sbscrbSttusAll=Status(All) +comUssUmt.userManageSsearch.sbscrbSttusA=Sign Up +comUssUmt.userManageSsearch.sbscrbSttusD=Delete +comUssUmt.userManageSsearch.sbscrbSttusP=Approval +comUssUmt.userManageSsearch.searchConditioTitle=Select Condition of Inquiry +comUssUmt.userManageSsearch.searchConditionId=ID +comUssUmt.userManageSsearch.searchConditionName=Name + +comUssUmt.userManageList.id=ID +comUssUmt.userManageList.name=User Name +comUssUmt.userManageList.email=User Email +comUssUmt.userManageList.phone=Phone Number +comUssUmt.userManageList.sbscrbSttus=Registration Status + +comUssUmt.userManageRegist.id=User ID +comUssUmt.userManageRegist.name=Member User Name +comUssUmt.userManageRegist.pass=Password +comUssUmt.userManageRegist.passConfirm=Password Confirmation +comUssUmt.userManageRegist.passHit=Password Hint +comUssUmt.userManageRegist.passOk=Password Answer +comUssUmt.userManageRegist.saxTypeCode=Gender Identification Code +comUssUmt.userManageRegist.tel=Phone Number +comUssUmt.userManageRegist.fax=Fax Number +comUssUmt.userManageRegist.phone=Mobile Phone Number +comUssUmt.userManageRegist.email=Email +comUssUmt.userManageRegist.post=Postal Code +comUssUmt.userManageRegist.addr=Address +comUssUmt.userManageRegist.addrDetail=Detail Address +comUssUmt.userManageRegist.groupId=Group ID +comUssUmt.userManageRegist.status=User Status Code +comUssUmt.userManageRegistBtn.idSearch=Search Duplicate ID + +comUssUmt.userManageRegistModal.title=Confirm Duplicate ID +comUssUmt.userManageRegistModal.userIsId=Usable Id +comUssUmt.userManageRegistModal.initStatus=Result : Check for Duplicate ID. + +comUssUmt.userManageRegistModal.result=Result +comUssUmt.userManageRegistModal.useMsg=This ID can not be used. +comUssUmt.userManageRegistModal.notUseMsg=This ID is available. +comUssUmt.userManageRegistModal.noIdMsg=This ID can not be created. + +comUssUmt.userManageModifyBtn.passwordChange=Password Change + +comUssUmt.userManagePasswordUpdt.title=Password Change +comUssUmt.userManagePasswordUpdt.id=User ID +comUssUmt.userManagePasswordUpdt.oldPass=Current Password +comUssUmt.userManagePasswordUpdt.pass=Password +comUssUmt.userManagePasswordUpdt.passConfirm=Password Confirmation + + +#User Management# +comUssUmt.deptUserManage.title=User Management + +comUssUmt.deptUserManageRegist.id=User ID +comUssUmt.deptUserManageRegist.name=User Name +comUssUmt.deptUserManageRegist.pass=Password +comUssUmt.deptUserManageRegist.passConfirm=Password Confirmation +comUssUmt.deptUserManageRegist.passHit=Password Hint +comUssUmt.deptUserManageRegist.passOk=Password Answer +comUssUmt.deptUserManageRegist.saxTypeCode=Gender Identification Code +comUssUmt.deptUserManageRegist.tel=Phone Number +comUssUmt.deptUserManageRegist.fax=Fax Number +comUssUmt.deptUserManageRegist.phone=Mobile Phone Number +comUssUmt.deptUserManageRegist.email=Email +comUssUmt.deptUserManageRegist.post=Postal Code +comUssUmt.deptUserManageRegist.addr=Address +comUssUmt.deptUserManageRegist.addrDetail=Detail Address +comUssUmt.deptUserManageRegist.groupId=Group ID +comUssUmt.deptUserManageRegist.status=User Status Code +comUssUmt.deptUserManageRegistBtn.idSearch=Search Duplicate ID +comUssUmt.deptUserManageRegist.subDn=User DN + +comUssUmt.deptUserManageRegist.insttCode=Organization Code +comUssUmt.deptUserManageRegist.orgnztId=Organization ID +comUssUmt.deptUserManageRegist.ofcps=Position +comUssUmt.deptUserManageRegist.emplNum=Employee Number +comUssUmt.deptUserManageRegist.brth=Birthday +comUssUmt.deptUserManageRegist.areaNo=Home Phone Number +comUssUmt.deptUserManageRegist.offmTelno=Office Phone Number +comUssUmt.deptUserManageRegist.fxNum=Fax Number +comUssUmt.deptUserManageRegist.emailAdres=Email +comUssUmt.deptUserManageRegistBtn.Search=Search + +#Corporate Member Management# +comUssUmt.entrprsUserManage.title=Corporate Member Management +comUssUmt.entrprsUserManageList.id=Corporate Member ID +comUssUmt.entrprsUserManageList.company=Corporate Name +comUssUmt.entrprsUserManageList.name=User Name +comUssUmt.entrprsUserManageList.regName=Registration Name +comUssUmt.entrprsUserManageList.regMail=Registration Email +comUssUmt.entrprsUserManageList.email=Email +comUssUmt.entrprsUserManageList.phone=Phone Number +comUssUmt.entrprsUserManageList.sbscrbSttus=Registration Status + +comUssUmt.entrprsUserManageRegist.id=Corporate Member ID +comUssUmt.entrprsUserManageRegist.name=Corporate Name +comUssUmt.entrprsUserManageRegist.pass=Password +comUssUmt.entrprsUserManageRegist.passConfirm=Password Confirmation +comUssUmt.entrprsUserManageRegist.passHit=Password Hint +comUssUmt.entrprsUserManageRegist.passOk=Password Answer +comUssUmt.entrprsUserManageRegist.tel=Corprate Phone Number +comUssUmt.entrprsUserManageRegist.fax=Fax Number +comUssUmt.entrprsUserManageRegist.post=Postal Code +comUssUmt.entrprsUserManageRegist.addr=Address +comUssUmt.entrprsUserManageRegist.addrDetail=Detail Address +comUssUmt.entrprsUserManageRegist.groupId=Group ID +comUssUmt.entrprsUserManageRegist.status=Corporate Member Status Code +comUssUmt.entrprsUserManageRegist.subDn=Corporate Member DN + +comUssUmt.entrprsUserManageRegist.indutyCode=Business Field +comUssUmt.entrprsUserManageRegist.entrprsSeCode=Corporate Category +comUssUmt.entrprsUserManageRegist.cxfc=CEO Name +comUssUmt.entrprsUserManageRegist.bizrno=Business Registration Number +comUssUmt.entrprsUserManageRegist.jurirno=Corporate Registration Number + +comUssUmt.entrprsUserManageRegistBtn.idSearch=Search Duplicate ID +comUssUmt.entrprsUserManageRegistBtn.Search=Search + diff --git a/src/main/resources/egovframework/message/com/uss/umt/message_ko.properties b/src/main/resources/egovframework/message/com/uss/umt/message_ko.properties new file mode 100644 index 00000000..96881bea --- /dev/null +++ b/src/main/resources/egovframework/message/com/uss/umt/message_ko.properties @@ -0,0 +1,150 @@ +#\ub85c\uadf8\uc778 \uc57d\uad00\uad00\ub9ac# +comUssUmt.stplatCnfirmt.title=\uc57d\uad00\ud655\uc778 +comUssUmt.stplatCnfirmt.useStplatCn=\uc57d\uad00\ub0b4\uc6a9 +comUssUmt.stplatCnfirmt.infoProvdAgreCn=\uc815\ubcf4\ub3d9\uc758\ub0b4\uc6a9 + +comUssUmt.stplatCnfirmtMsg.useStplat=\uc57d\uad00\ub0b4\uc6a9\uc5d0 \ub3d9\uc758\ud569\ub2c8\ub2e4. +comUssUmt.stplatCnfirmtMsg.infoProvdAgre=\uc815\ubcf4\uc774\uc6a9\ub0b4\uc6a9\uc5d0 \ub3d9\uc758\ud569\ub2c8\ub2e4. + +comUssUmt.stplatCnfirmtValidate.disagreeStplatCnfirmt=\uc57d\uad00\uc5d0 \ub3d9\uc758\ud558\uc9c0 \uc54a\uc73c\uba74 \ud68c\uc6d0\uc73c\ub85c \uac00\uc785\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. + +comUssUmt.common.lockAt=\ub85c\uadf8\uc778\uc778\uc99d\uc81c\ud55c\uc5ec\ubd80 +comUssUmt.common.lockAtBtn=\ub85c\uadf8\uc778\uc778\uc99d\uc81c\ud55c\ud574\uc81c +comUssUmt.common.lockAtConfirm=\ub85c\uadf8\uc778\uc778\uc99d\uc81c\ud55c\uc744 \ud574\uc81c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + +#\ubd80\uc11c\uad00\ub9ac# +comUssUmt.deptManage.title=\ubd80\uc11c\uad00\ub9ac + +comUssUmt.deptManageList.deptId=\ubd80\uc11c ID +comUssUmt.deptManageList.deptName=\ubd80\uc11c \uba85 +comUssUmt.deptManageList.deptDc=\uc124\uba85 +comUssUmt.deptManageSearchCondition.searchKeywordText=\ubd80\uc11c\uba85 + +comUssUmt.deptManageRegist.deptId=\ubd80\uc11c ID +comUssUmt.deptManageRegist.deptName=\ubd80\uc11c \uba85 +comUssUmt.deptManageRegist.deptDc=\uc124\uba85 + +#\uc0ac\uc6a9\uc790\uad00\ub9ac# +comUssUmt.userManage.title=\uc77c\ubc18\ud68c\uc6d0\uad00\ub9ac + +comUssUmt.userManageSsearch.sbscrbSttusTitle=\uac00\uc785\uc0c1\ud0dc\uc870\uac74 \uc120\ud0dd +comUssUmt.userManageSsearch.sbscrbSttusAll=\uc0c1\ud0dc(\uc804\uccb4) +comUssUmt.userManageSsearch.sbscrbSttusA=\uac00\uc785\uc2e0\uccad +comUssUmt.userManageSsearch.sbscrbSttusD=\uc0ad\uc81c +comUssUmt.userManageSsearch.sbscrbSttusP=\uc2b9\uc778 +comUssUmt.userManageSsearch.searchConditioTitle=\uc870\ud68c\uc870\uac74 \uc120\ud0dd +comUssUmt.userManageSsearch.searchConditionId=ID +comUssUmt.userManageSsearch.searchConditionName=\uc774\ub984 + +comUssUmt.userManageList.id=\uc544\uc774\ub514 +comUssUmt.userManageList.name=\uc0ac\uc6a9\uc790\uc774\ub984 +comUssUmt.userManageList.email=\uc0ac\uc6a9\uc790\uc774\uba54\uc77c +comUssUmt.userManageList.phone=\uc804\ud654\ubc88\ud638 +comUssUmt.userManageList.sbscrbSttus=\uac00\uc785\uc0c1\ud0dc + +comUssUmt.userManageRegist.id=\uc77c\ubc18\ud68c\uc6d0\uc544\uc774\ub514 +comUssUmt.userManageRegist.name=\uc77c\ubc18\ud68c\uc6d0\uc774\ub984 +comUssUmt.userManageRegist.pass=\ube44\ubc00\ubc88\ud638 +comUssUmt.userManageRegist.passConfirm=\ube44\ubc00\ubc88\ud638\ud655\uc778 +comUssUmt.userManageRegist.passHit=\ube44\ubc00\ubc88\ud638\ud78c\ud2b8 +comUssUmt.userManageRegist.passOk=\ube44\ubc00\ubc88\ud638\uc815\ub2f5 +comUssUmt.userManageRegist.saxTypeCode=\uc131\ubcc4\uad6c\ubd84\ucf54\ub4dc +comUssUmt.userManageRegist.tel=\uc804\ud654\ubc88\ud638 +comUssUmt.userManageRegist.fax=\ud329\uc2a4\ubc88\ud638 +comUssUmt.userManageRegist.phone=\ud578\ub4dc\ud3f0\ubc88\ud638 +comUssUmt.userManageRegist.email=\uc774\uba54\uc77c\uc8fc\uc18c +comUssUmt.userManageRegist.post=\uc6b0\ud3b8\ubc88\ud638 +comUssUmt.userManageRegist.addr=\uc8fc\uc18c +comUssUmt.userManageRegist.addrDetail=\uc0c1\uc138\uc8fc\uc18c +comUssUmt.userManageRegist.groupId=\uadf8\ub8f9\uc544\uc774\ub514 +comUssUmt.userManageRegist.status=\uc77c\ubc18\ud68c\uc6d0\uc0c1\ud0dc\ucf54\ub4dc +comUssUmt.userManageRegistBtn.idSearch=\uc911\ubcf5\uc544\uc774\ub514 \uac80\uc0c9 + +comUssUmt.userManageRegistModal.title=\uc544\uc774\ub514 \uc911\ubcf5 \ud655\uc778 +comUssUmt.userManageRegistModal.userIsId=\uc0ac\uc6a9\ud560\uc544\uc774\ub514 +comUssUmt.userManageRegistModal.initStatus=\uacb0\uacfc : \uc911\ubcf5\ud655\uc778\uc744 \uc2e4\ud589\ud558\uc2ed\uc2dc\uc624. + +comUssUmt.userManageRegistModal.result=\uacb0\uacfc +comUssUmt.userManageRegistModal.useMsg=\ub294 \uc0ac\uc6a9\ud560\uc218 \uc5c6\ub294 \uc544\uc774\ub514\uc785\ub2c8\ub2e4. +comUssUmt.userManageRegistModal.notUseMsg=\ub294 \uc0ac\uc6a9\uac00\ub2a5\ud55c \uc544\uc774\ub514\uc785\ub2c8\ub2e4. +comUssUmt.userManageRegistModal.noIdMsg=\uc0ac\uc6a9\uc774 \ubd88\uac00\ub2a5\ud55c \uc544\uc774\ub514 \uc785\ub2c8\ub2e4 + +comUssUmt.userManageModifyBtn.passwordChange=\ube44\ubc00\ubc88\ud638\ubcc0\uacbd + +comUssUmt.userManagePasswordUpdt.title=\ube44\ubc00\ubc88\ud638\ubcc0\uacbd +comUssUmt.userManagePasswordUpdt.id=\uc77c\ubc18\ud68c\uc6d0\uc544\uc774\ub514 +comUssUmt.userManagePasswordUpdt.oldPass=\uae30\uc874 \ube44\ubc00\ubc88\ud638 +comUssUmt.userManagePasswordUpdt.pass=\ube44\ubc00\ubc88\ud638 +comUssUmt.userManagePasswordUpdt.passConfirm=\ube44\ubc00\ubc88\ud638\ud655\uc778 + + +#\uc5c5\ubb34\ud68c\uc6d0\uad00\ub9ac# +comUssUmt.deptUserManage.title=\uc5c5\ubb34\uc0ac\uc6a9\uc790\uad00\ub9ac + +comUssUmt.deptUserManageRegist.id=\uc77c\ubc18\ud68c\uc6d0\uc544\uc774\ub514 +comUssUmt.deptUserManageRegist.name=\uc77c\ubc18\ud68c\uc6d0\uc774\ub984 +comUssUmt.deptUserManageRegist.pass=\ube44\ubc00\ubc88\ud638 +comUssUmt.deptUserManageRegist.passConfirm=\ube44\ubc00\ubc88\ud638\ud655\uc778 +comUssUmt.deptUserManageRegist.passHit=\ube44\ubc00\ubc88\ud638\ud78c\ud2b8 +comUssUmt.deptUserManageRegist.passOk=\ube44\ubc00\ubc88\ud638\uc815\ub2f5 +comUssUmt.deptUserManageRegist.saxTypeCode=\uc131\ubcc4\uad6c\ubd84\ucf54\ub4dc +comUssUmt.deptUserManageRegist.tel=\uc804\ud654\ubc88\ud638 +comUssUmt.deptUserManageRegist.fax=\ud329\uc2a4\ubc88\ud638 +comUssUmt.deptUserManageRegist.phone=\ud578\ub4dc\ud3f0\ubc88\ud638 +comUssUmt.deptUserManageRegist.email=\uc774\uba54\uc77c\uc8fc\uc18c +comUssUmt.deptUserManageRegist.post=\uc6b0\ud3b8\ubc88\ud638 +comUssUmt.deptUserManageRegist.addr=\uc8fc\uc18c +comUssUmt.deptUserManageRegist.addrDetail=\uc0c1\uc138\uc8fc\uc18c +comUssUmt.deptUserManageRegist.groupId=\uadf8\ub8f9\uc544\uc774\ub514 +comUssUmt.deptUserManageRegist.status=\uc77c\ubc18\ud68c\uc6d0\uc0c1\ud0dc\ucf54\ub4dc +comUssUmt.deptUserManageRegistBtn.idSearch=\uc911\ubcf5\uc544\uc774\ub514 \uac80\uc0c9 +comUssUmt.deptUserManageRegist.subDn=\uc0ac\uc6a9\uc790DN + +comUssUmt.deptUserManageRegist.insttCode=\uc18c\uc18d\uae30\uad00\ucf54\ub4dc +comUssUmt.deptUserManageRegist.orgnztId=\uc870\uc9c1\uc544\uc774\ub514 +comUssUmt.deptUserManageRegist.ofcps=\uc9c1\uc704 +comUssUmt.deptUserManageRegist.emplNum=\uc0ac\ubc88 +comUssUmt.deptUserManageRegist.brth=\uc0dd\uc77c +comUssUmt.deptUserManageRegist.areaNo=\uc9d1\uc804\ud654\ubc88\ud638 +comUssUmt.deptUserManageRegist.offmTelno=\uc0ac\ubb34\uc2e4\uc804\ud654\ubc88\ud638 +comUssUmt.deptUserManageRegist.fxNum=\ud329\uc2a4\ubc88\ud638 +comUssUmt.deptUserManageRegist.emailAdres=\uc774\uba54\uc77c\uc8fc\uc18c +comUssUmt.deptUserManageRegistBtn.Search=\uac80\uc0c9 + +#\uae30\uc5c5\ud68c\uc6d0\uad00\ub9ac# +comUssUmt.entrprsUserManage.title=\uae30\uc5c5\ud68c\uc6d0\uad00\ub9ac +comUssUmt.entrprsUserManageList.id=\uae30\uc5c5\ud68c\uc6d0\uc544\uc774\ub514 +comUssUmt.entrprsUserManageList.company=\ud68c\uc0ac\uba85 +comUssUmt.entrprsUserManageList.name=\uc0ac\uc6a9\uc790\uc774\ub984 +comUssUmt.entrprsUserManageList.regName=\uc2e0\uccad\uc790\uba85 +comUssUmt.entrprsUserManageList.regMail=\uc2e0\uccad\uc790\uc774\uba54\uc77c +comUssUmt.entrprsUserManageList.email=\uc774\uba54\uc77c +comUssUmt.entrprsUserManageList.phone=\uc804\ud654\ubc88\ud638 +comUssUmt.entrprsUserManageList.sbscrbSttus=\uac00\uc785\uc0c1\ud0dc + +comUssUmt.entrprsUserManageRegist.id=\uae30\uc5c5\ud68c\uc6d0\uc544\uc774\ub514 +comUssUmt.entrprsUserManageRegist.name=\ud68c\uc0ac\uba85 +comUssUmt.entrprsUserManageRegist.pass=\ube44\ubc00\ubc88\ud638 +comUssUmt.entrprsUserManageRegist.passConfirm=\ube44\ubc00\ubc88\ud638\ud655\uc778 +comUssUmt.entrprsUserManageRegist.passHit=\ube44\ubc00\ubc88\ud638\ud78c\ud2b8 +comUssUmt.entrprsUserManageRegist.passOk=\ube44\ubc00\ubc88\ud638\uc815\ub2f5 +comUssUmt.entrprsUserManageRegist.tel=\ud68c\uc0ac\uc804\ud654\ubc88\ud638 +comUssUmt.entrprsUserManageRegist.fax=\ud329\uc2a4\ubc88\ud638 +comUssUmt.entrprsUserManageRegist.post=\uc6b0\ud3b8\ubc88\ud638 +comUssUmt.entrprsUserManageRegist.addr=\uc8fc\uc18c +comUssUmt.entrprsUserManageRegist.addrDetail=\uc0c1\uc138\uc8fc\uc18c +comUssUmt.entrprsUserManageRegist.groupId=\uadf8\ub8f9\uc544\uc774\ub514 +comUssUmt.entrprsUserManageRegist.status=\uae30\uc5c5\ud68c\uc6d0\uc0c1\ud0dc\ucf54\ub4dc +comUssUmt.entrprsUserManageRegist.subDn=\uc0ac\uc6a9\uc790DN + +comUssUmt.entrprsUserManageRegist.indutyCode=\uc5c5\uc885 +comUssUmt.entrprsUserManageRegist.entrprsSeCode=\uae30\uc5c5\uad6c\ubd84 +comUssUmt.entrprsUserManageRegist.cxfc=\ub300\ud45c\uc774\uc0ac\uc774\ub984 +comUssUmt.entrprsUserManageRegist.bizrno=\uc0ac\uc5c5\uc790\ub4f1\ub85d\ubc88\ud638 +comUssUmt.entrprsUserManageRegist.jurirno=\ubc95\uc778\ub4f1\ub85d\ubc88\ud638 + +comUssUmt.entrprsUserManageRegistBtn.idSearch=\uc911\ubcf5\uc544\uc774\ub514 \uac80\uc0c9 +comUssUmt.entrprsUserManageRegistBtn.Search=\uac80\uc0c9 + + + diff --git a/src/main/resources/egovframework/message/com/utl/sys/dbm/message_en.properties b/src/main/resources/egovframework/message/com/utl/sys/dbm/message_en.properties new file mode 100644 index 00000000..a26312e6 --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/dbm/message_en.properties @@ -0,0 +1,31 @@ +#DB Monitoring# +comUtlSysDbm.dbMntrngList.title = DB Service Monitoring List +comUtlSysDbm.dbMntrngDetail.title = DB Service Monitoring Details +comUtlSysDbm.dbMntrngDetail.summary = Provides details about registered DB service monitoring. +comUtlSysDbm.dbMntrngModify.title = Modify DB Service Monitoring +comUtlSysDbm.dbMntrngModify.summary = DB service monitoring modification function is provided. +comUtlSysDbm.dbMntrngRegist.title = Register DB Service Monitoring +comUtlSysDbm.dbMntrngLogList.title = DB Service Monitoring Log List +comUtlSysDbm.dbMntrngLogDetail.title = DB Service Monitoring Log Details +comUtlSysDbm.dbMntrngLogDetail.summary = Provides details about the registered DB ServiceMonitor. + +comUtlSysDbm.dbMntrng.period = Period +comUtlSysDbm.dbMntrng.seq = No +comUtlSysDbm.dbMntrng.logID = LogID +comUtlSysDbm.dbMntrng.dataSourceName = Data Source +comUtlSysDbm.dbMntrng.serverName = Server Name +comUtlSysDbm.dbMntrng.dbms = DBMS +comUtlSysDbm.dbMntrng.managerName = Manager Name +comUtlSysDbm.dbMntrng.managerEmail = Email +comUtlSysDbm.dbMntrng.createdDateTime = Created Datetime +comUtlSysDbm.dbMntrng.status = Status +comUtlSysDbm.dbMntrng.checkSQL = Check SQL +comUtlSysDbm.dbMntrng.monitoringDatetime = Monitoring Datetime +comUtlSysDbm.dbMntrng.logInfo = Log Info. + +comUtlSysDbm.dbMntrng.searchStartDate = Search start date +comUtlSysDbm.dbMntrng.searchStartHour = Search start hour +comUtlSysDbm.dbMntrng.searchStartMin = Search start minute +comUtlSysDbm.dbMntrng.searchEndDate = Search end date +comUtlSysDbm.dbMntrng.searchEndHour = Search end hour +comUtlSysDbm.dbMntrng.searchEndMin = Search end minute \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/dbm/message_ko.properties b/src/main/resources/egovframework/message/com/utl/sys/dbm/message_ko.properties new file mode 100644 index 00000000..e41dad23 --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/dbm/message_ko.properties @@ -0,0 +1,31 @@ +#DB\ubaa8\ub2c8\ud130\ub9c1# +comUtlSysDbm.dbMntrngList.title = DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \ubaa9\ub85d +comUtlSysDbm.dbMntrngDetail.title = DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \uc0c1\uc138\uc870\ud68c +comUtlSysDbm.dbMntrngDetail.summary = \ub4f1\ub85d\ub41c DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1\uc5d0 \ub300\ud55c \uc0c1\uc138\uc815\ubcf4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. +comUtlSysDbm.dbMntrngModify.title = DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \uc218\uc815 +comUtlSysDbm.dbMntrngModify.summary = DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \uc218\uc815\uae30\ub2a5\uc744 \uc81c\uacf5\ud55c\ub2e4. +comUtlSysDbm.dbMntrngRegist.title = DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \ub4f1\ub85d +comUtlSysDbm.dbMntrngLogList.title = DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8 \ubaa9\ub85d +comUtlSysDbm.dbMntrngLogDetail.title = DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8 \uc0c1\uc138\uc870\ud68c +comUtlSysDbm.dbMntrngLogDetail.summary = \ub4f1\ub85d\ub41c DB\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8\uc5d0 \ub300\ud55c \uc0c1\uc138\uc815\ubcf4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. + +comUtlSysDbm.dbMntrng.period = \uae30\uac04 +comUtlSysDbm.dbMntrng.seq = \uc21c\ubc88 +comUtlSysDbm.dbMntrng.logID = \ub85c\uadf8ID +comUtlSysDbm.dbMntrng.dataSourceName = \ub370\uc774\ud0c0\uc18c\uc2a4\uba85 +comUtlSysDbm.dbMntrng.serverName = \uc11c\ubc84\uba85 +comUtlSysDbm.dbMntrng.dbms = DBMS\uc885\ub958 +comUtlSysDbm.dbMntrng.managerName = \uad00\ub9ac\uc790\uba85 +comUtlSysDbm.dbMntrng.managerEmail = \uad00\ub9ac\uc790\uc774\uba54\uc77c +comUtlSysDbm.dbMntrng.createdDateTime = \uc0dd\uc131\uc77c\uc2dc +comUtlSysDbm.dbMntrng.status = \uc0c1\ud0dc +comUtlSysDbm.dbMntrng.checkSQL = \uccb4\ud06cSQL +comUtlSysDbm.dbMntrng.monitoringDatetime = \ubaa8\ub2c8\ud130\ub9c1\uc2dc\uac01 +comUtlSysDbm.dbMntrng.logInfo = \ub85c\uadf8\uc815\ubcf4 + +comUtlSysDbm.dbMntrng.searchStartDate = \uac80\uc0c9\uc2dc\uc791\uc77c\uc790 +comUtlSysDbm.dbMntrng.searchStartHour = \uac80\uc0c9\uc2dc\uc791\uc2dc\uac04 +comUtlSysDbm.dbMntrng.searchStartMin = \uac80\uc0c9\uc2dc\uc791\ubd84 +comUtlSysDbm.dbMntrng.searchEndDate = \uac80\uc0c9\uc885\ub8cc\uc77c\uc790 +comUtlSysDbm.dbMntrng.searchEndHour = \uac80\uc0c9\uc885\ub8cc\uc2dc\uac04 +comUtlSysDbm.dbMntrng.searchEndMin = \uac80\uc0c9\uc885\ub8cc\ubd84 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/fsm/message_en.properties b/src/main/resources/egovframework/message/com/utl/sys/fsm/message_en.properties new file mode 100644 index 00000000..b6edcf87 --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/fsm/message_en.properties @@ -0,0 +1,62 @@ +# File system monitoring # +comUtlSysFsm.fileSysMntrng.title = File system monitoring +comUtlSysFsm.fileSysMntrngLog.title = File system monitoring log + +comUtlSysFsm.fileSysMntrng.fileSysNm.label = File system name +comUtlSysFsm.fileSysMntrng.fileSysManageNm.label = File system administration name +comUtlSysFsm.fileSysMntrng.fileSysMg.label = File system size +comUtlSysFsm.fileSysMntrng.fileSysThrhld.label = Filesystem Threshold +comUtlSysFsm.fileSysMntrng.fileSysUsgQty.label = File system usage +comUtlSysFsm.fileSysMntrng.mngrNm.label = Administrator name +comUtlSysFsm.fileSysMntrng.mngrEmailAddr.label = Administrator email address +comUtlSysFsm.fileSysMntrng.mntrngSttus.label = Monitoring status +comUtlSysFsm.fileSysMntrng.creatDt.label = Date last created + +comUtlSysFsm.fileSysMntrngList.seq.label = number +comUtlSysFsm.fileSysMntrngList.fileSysNm.label = File system name +comUtlSysFsm.fileSysMntrngList.fileSysManageNm.label = File system administration name +comUtlSysFsm.fileSysMntrngList.fileSysMg.label = Size +comUtlSysFsm.fileSysMntrngList.fileSysThrhld.label = Threshold +comUtlSysFsm.fileSysMntrngList.fileSysUsgQty.label = Usage +comUtlSysFsm.fileSysMntrngList.mntrngSttus.label = Status +comUtlSysFsm.fileSysMntrngList.mngrNm.label = Admin-name +comUtlSysFsm.fileSysMntrngList.guideOne=If your OS is Window 10, you need to run Eclipse as an administrator +comUtlSysFsm.fileSysMntrngList.guideTwo=Globals.OsType needs to be changed in globals.properties to suit the environment you are using on UNIX or WINDOWS.
    The differences in system capacity paths between WINDOW and UNIX are also visible at the top of globals.properties. + +comUtlSysFsm.fileSysMntrngLog.logInfo.label = Log information +comUtlSysFsm.fileSysMntrngLog.logId.label = Log ID +comUtlSysFsm.fileSysMntrngLog.fileSysNm.label = File system name +comUtlSysFsm.fileSysMntrngLog.fileSysManageNm.label = File system administration name +comUtlSysFsm.fileSysMntrngLog.fileSysMg.label = File system size +comUtlSysFsm.fileSysMntrngLog.fileSysThrhld.label = File system threshold +comUtlSysFsm.fileSysMntrngLog.fileSysUsgQty.label = File system usage +comUtlSysFsm.fileSysMntrngLog.mntrngSttus.label = Monitoring status +comUtlSysFsm.fileSysMntrngLog.creatDt.label = Creation date and time + +comUtlSysFsm.fileSysMntrngLogList.seq.label = number +comUtlSysFsm.fileSysMntrngLogList.fileSysNm.label = File system name +comUtlSysFsm.fileSysMntrngLogList.fileSysManageNm.label = File system administration name +comUtlSysFsm.fileSysMntrngLogList.fileSysMg.label = Size +comUtlSysFsm.fileSysMntrngLogList.fileSysThrhld.label = Threshold +comUtlSysFsm.fileSysMntrngLogList.fileSysUsgQty.label = Usage +comUtlSysFsm.fileSysMntrngLogList.mntrngSttus.label = Status +comUtlSysFsm.fileSysMntrngLogList.creatDt.label = Date created +comUtlSysFsm.fileSysMntrngLogList.mngrNm.label = Administrator name +comUtlSysFsm.fileSysMntrngLogList.validate.bgnDe = Search start date +comUtlSysFsm.fileSysMntrngLogList.validate.endDe = Search end date +comUtlSysFsm.fileSysMntrngLogList.validate.bgnDeHourendDeHour = The search end date can not be earlier than the search start date. +comUtlSysFsm.fileSysMntrngLogList.select = Please select +comUtlSysFsm.fileSysMntrngLogList.list = list + +#EgovFileSysMntrngRegist +comUtlSysFsm.fileSysMntrngRegist.notApplicableFileSysTrue = The file system name is invalid. +comUtlSysFsm.fileSysMntrngRegist.fileSysMg = Click on the File System Check button to check the size of the file system. +comUtlSysFsm.fileSysMntrngRegist.fileSysThrhldG = You must enter a file system threshold of 1G or more. +comUtlSysFsm.fileSysMntrngRegist.fileSysThrhldLimit = The file system threshold can not be greater than the file system size. +comUtlSysFsm.fileSysMntrngRegist.selectFileSysMg = Check the file system + +#EgovFileSysMntrngUpdt +comUtlSysFsm.fileSysMntrngUpdt.fileSysMg = You must enter a file system size of 1G or more. +comUtlSysFsm.fileSysMntrngUpdt.fileSysThrhldG = You must enter a file system threshold of 1G or more. +comUtlSysFsm.fileSysMntrngUpdt.fileSysThrhldLimit = The file system threshold can not be greater than the file system size. +comUtlSysFsm.fileSysMntrngUpdt.tableSummary = This table is used to modify file system monitoring target information. It consists of file system name, file system management name, file system size, file system threshold, administrator name, and administrator e-mail address information. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/fsm/message_ko.properties b/src/main/resources/egovframework/message/com/utl/sys/fsm/message_ko.properties new file mode 100644 index 00000000..704466cf --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/fsm/message_ko.properties @@ -0,0 +1,62 @@ +#\ud30c\uc77c\uc2dc\uc2a4\ud15c\ubaa8\ub2c8\ud130\ub9c1# +comUtlSysFsm.fileSysMntrng.title = \ud30c\uc77c\uc2dc\uc2a4\ud15c\ubaa8\ub2c8\ud130\ub9c1 +comUtlSysFsm.fileSysMntrngLog.title = \ud30c\uc77c\uc2dc\uc2a4\ud15c\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8 + +comUtlSysFsm.fileSysMntrng.fileSysNm.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c\uba85 +comUtlSysFsm.fileSysMntrng.fileSysManageNm.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c\uad00\ub9ac\uba85 +comUtlSysFsm.fileSysMntrng.fileSysMg.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c \ud06c\uae30 +comUtlSysFsm.fileSysMntrng.fileSysThrhld.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c \uc784\uacc4\uce58 +comUtlSysFsm.fileSysMntrng.fileSysUsgQty.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c \uc0ac\uc6a9\ub7c9 +comUtlSysFsm.fileSysMntrng.mngrNm.label=\uad00\ub9ac\uc790\uba85 +comUtlSysFsm.fileSysMntrng.mngrEmailAddr.label=\uad00\ub9ac\uc790\uc774\uba54\uc77c\uc8fc\uc18c +comUtlSysFsm.fileSysMntrng.mntrngSttus.label=\ubaa8\ub2c8\ud130\ub9c1\uc0c1\ud0dc +comUtlSysFsm.fileSysMntrng.creatDt.label=\ub9c8\uc9c0\ub9c9 \uc0dd\uc131\uc77c\uc2dc + +comUtlSysFsm.fileSysMntrngList.seq.label=\ubc88\ud638 +comUtlSysFsm.fileSysMntrngList.fileSysNm.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c\uba85 +comUtlSysFsm.fileSysMntrngList.fileSysManageNm.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c\uad00\ub9ac\uba85 +comUtlSysFsm.fileSysMntrngList.fileSysMg.label=\ud06c\uae30 +comUtlSysFsm.fileSysMntrngList.fileSysThrhld.label=\uc784\uacc4\uce58 +comUtlSysFsm.fileSysMntrngList.fileSysUsgQty.label=\uc0ac\uc6a9\ub7c9 +comUtlSysFsm.fileSysMntrngList.mntrngSttus.label=\uc0c1\ud0dc +comUtlSysFsm.fileSysMntrngList.mngrNm.label=\uad00\ub9ac\uc790\uba85 +comUtlSysFsm.fileSysMntrngList.guideOne=\uc6b4\uc601\uccb4\uc81c\uac00 \uc708\ub3c4\uc6b0 10\uc77c \uacbd\uc6b0, \uc774\ud074\ub9bd\uc2a4\ub97c \uad00\ub9ac\uc790 \uad8c\ud55c\uc73c\ub85c \uc2e4\ud589\ud574\uc57c \ud569\ub2c8\ub2e4. +comUtlSysFsm.fileSysMntrngList.guideTwo=globals.properties\uc5d0\uc11c Globals.OsType\uc744 UNIX \ub610\ub294 WINDOWS\uc5d0 \uc0ac\uc6a9\uc911\uc778 \ud658\uacbd\uc5d0 \ub9de\uac8c \ubcc0\uacbd\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
    WINDOW\uc640 UNIX\uc758 \uc2dc\uc2a4\ud15c \uc6a9\ub7c9 \uacbd\ub85c\uc758 \ucc28\uc774\ub3c4 globals.properties \uc0c1\ub2e8\uc5d0\uc11c \ud655\uc778 \uac00\ub2a5\ud569\ub2c8\ub2e4. + +comUtlSysFsm.fileSysMntrngLog.logInfo.label=\ub85c\uadf8\uc815\ubcf4 +comUtlSysFsm.fileSysMntrngLog.logId.label=\ub85c\uadf8ID +comUtlSysFsm.fileSysMntrngLog.fileSysNm.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c\uba85 +comUtlSysFsm.fileSysMntrngLog.fileSysManageNm.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c\uad00\ub9ac\uba85 +comUtlSysFsm.fileSysMntrngLog.fileSysMg.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c \ud06c\uae30 +comUtlSysFsm.fileSysMntrngLog.fileSysThrhld.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c \uc784\uacc4\uce58 +comUtlSysFsm.fileSysMntrngLog.fileSysUsgQty.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c \uc0ac\uc6a9\ub7c9 +comUtlSysFsm.fileSysMntrngLog.mntrngSttus.label=\ubaa8\ub2c8\ud130\ub9c1\uc0c1\ud0dc +comUtlSysFsm.fileSysMntrngLog.creatDt.label=\uc0dd\uc131\uc77c\uc2dc + +comUtlSysFsm.fileSysMntrngLogList.seq.label=\ubc88\ud638 +comUtlSysFsm.fileSysMntrngLogList.fileSysNm.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c\uba85 +comUtlSysFsm.fileSysMntrngLogList.fileSysManageNm.label=\ud30c\uc77c\uc2dc\uc2a4\ud15c\uad00\ub9ac\uba85 +comUtlSysFsm.fileSysMntrngLogList.fileSysMg.label=\ud06c\uae30 +comUtlSysFsm.fileSysMntrngLogList.fileSysThrhld.label=\uc784\uacc4\uce58 +comUtlSysFsm.fileSysMntrngLogList.fileSysUsgQty.label=\uc0ac\uc6a9\ub7c9 +comUtlSysFsm.fileSysMntrngLogList.mntrngSttus.label=\uc0c1\ud0dc +comUtlSysFsm.fileSysMntrngLogList.creatDt.label=\uc0dd\uc131\uc77c\uc2dc +comUtlSysFsm.fileSysMntrngLogList.mngrNm.label=\uad00\ub9ac\uc790\uba85 +comUtlSysFsm.fileSysMntrngLogList.validate.bgnDe=\uac80\uc0c9\uc2dc\uc791\uc77c\uc790 +comUtlSysFsm.fileSysMntrngLogList.validate.endDe=\uac80\uc0c9\uc885\ub8cc\uc77c\uc790 +comUtlSysFsm.fileSysMntrngLogList.validate.bgnDeHourendDeHour=\uac80\uc0c9\uc885\ub8cc\uc77c\uc2dc\uac00 \uac80\uc0c9\uc2dc\uc791\uc77c\uc2dc\ubcf4\ub2e4 \ube60\ub97c\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comUtlSysFsm.fileSysMntrngLogList.select=\uc120\ud0dd\ud558\uc138\uc694 +comUtlSysFsm.fileSysMntrngLogList.list=\ubaa9\ub85d + +#EgovFileSysMntrngRegist +comUtlSysFsm.fileSysMntrngRegist.notApplicableFileSysTrue=\ud30c\uc77c\uc2dc\uc2a4\ud15c\uba85\uc774 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. +comUtlSysFsm.fileSysMntrngRegist.fileSysMg=\ud30c\uc77c\uc2dc\uc2a4\ud15c\ud655\uc778 \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec, \ud30c\uc77c\uc2dc\uc2a4\ud15c\uc758 \ud06c\uae30\ub97c \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4. +comUtlSysFsm.fileSysMntrngRegist.fileSysThrhldG=\ud30c\uc77c\uc2dc\uc2a4\ud15c \uc784\uacc4\uce58\ub97c 1G \uc774\uc0c1 \uc785\ub825\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4. +comUtlSysFsm.fileSysMntrngRegist.fileSysThrhldLimit=\ud30c\uc77c\uc2dc\uc2a4\ud15c \uc784\uacc4\uce58\ub294 \ud30c\uc77c\uc2dc\uc2a4\ud15c \ud06c\uae30\ubcf4\ub2e4 \ud074 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comUtlSysFsm.fileSysMntrngRegist.selectFileSysMg=\ud30c\uc77c\uc2dc\uc2a4\ud15c\ud655\uc778 + +#EgovFileSysMntrngUpdt +comUtlSysFsm.fileSysMntrngUpdt.fileSysMg=\ud30c\uc77c\uc2dc\uc2a4\ud15c \ud06c\uae30\ub97c 1G \uc774\uc0c1 \uc785\ub825\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4. +comUtlSysFsm.fileSysMntrngUpdt.fileSysThrhldG=\ud30c\uc77c\uc2dc\uc2a4\ud15c \uc784\uacc4\uce58\ub97c 1G \uc774\uc0c1 \uc785\ub825\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4. +comUtlSysFsm.fileSysMntrngUpdt.fileSysThrhldLimit=\ud30c\uc77c\uc2dc\uc2a4\ud15c \uc784\uacc4\uce58\ub294 \ud30c\uc77c\uc2dc\uc2a4\ud15c \ud06c\uae30\ubcf4\ub2e4 \ud074 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comUtlSysFsm.fileSysMntrngUpdt.tableSummary=\uc774 \ud45c\ub294 \ud30c\uc77c\uc2dc\uc2a4\ud15c\ubaa8\ub2c8\ud130\ub9c1 \ub300\uc0c1 \uc815\ubcf4\ub97c \uc218\uc815\ud558\uae30 \uc704\ud55c \ud45c\uc774\uba70, \ud30c\uc77c\uc2dc\uc2a4\ud15c\uba85, \ud30c\uc77c\uc2dc\uc2a4\ud15c\uad00\ub9ac\uba85, \ud30c\uc77c\uc2dc\uc2a4\ud15c \ud06c\uae30, \ud30c\uc77c\uc2dc\uc2a4\ud15c \uc784\uacc4\uce58, \uad00\ub9ac\uc790\uba85, \uad00\ub9ac\uc790\uc774\uba54\uc77c\uc8fc\uc18c \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4 . \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/htm/message_en.properties b/src/main/resources/egovframework/message/com/utl/sys/htm/message_en.properties new file mode 100644 index 00000000..715619cc --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/htm/message_en.properties @@ -0,0 +1,31 @@ +#HTTP Monitoring# +comUtlSysHtm.comUtlHttpMonList.title = HTTP Monitoring List +comUtlSysHtm.comUtlHttpMonDetail.title = HTTP Monitoring Details +comUtlSysHtm.comUtlHttpMonDetail.summary = This table provides the target information for HTTP service monitoring and consists of Web service termination, system URL, status, administrator name, and administrator email information. +comUtlSysHtm.comUtlHttpMonModify.title = Modify HTTP Monitoring +comUtlSysHtm.comUtlHttpMonModify.summary = This table provides the target information for HTTP service monitoring and consists of Web service termination, system URL, status, administrator name, and administrator email information. +comUtlSysHtm.comUtlHttpMonRegist.title = Regist HTTP Monitoring +comUtlSysHtm.comUtlHttpMonLogList.title = HTTP Monitoring Log List +comUtlSysHtm.comUtlHttpMonLogDetail.title = HTTP Monitoring Log Details +comUtlSysHtm.comUtlHttpMonLogDetail.summary = This table provides the target information for HTTP service monitoring and consists of Web service termination, system URL, status, administrator name, and administrator email information. + +comUtlSysHtm.comUtlHttpMon.period = Period +comUtlSysHtm.comUtlHttpMon.seq = No +comUtlSysHtm.comUtlHttpMon.logID = LogID +comUtlSysHtm.comUtlHttpMon.processID = Process ID +comUtlSysHtm.comUtlHttpMon.webService = Web Service +comUtlSysHtm.comUtlHttpMon.systemURL = System URL +comUtlSysHtm.comUtlHttpMon.managerName = Manager +comUtlSysHtm.comUtlHttpMon.managerEmail = Email +comUtlSysHtm.comUtlHttpMon.createdDateTime = Created Datetime +comUtlSysHtm.comUtlHttpMon.lastCreatedDateTime = Lastly Created Datetime +comUtlSysHtm.comUtlHttpMon.status = Status +comUtlSysHtm.comUtlHttpMon.monitoringDatetime = Monitoring Datetime +comUtlSysHtm.comUtlHttpMon.logInfo = Log + +comUtlSysHtm.comUtlHttpMon.searchStartDate = Search start date +comUtlSysHtm.comUtlHttpMon.searchStartHour = Search start hour +comUtlSysHtm.comUtlHttpMon.searchStartMin = Search start minute +comUtlSysHtm.comUtlHttpMon.searchEndDate = Search end date +comUtlSysHtm.comUtlHttpMon.searchEndHour = Search end hour +comUtlSysHtm.comUtlHttpMon.searchEndMin = Search end minute \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/htm/message_ko.properties b/src/main/resources/egovframework/message/com/utl/sys/htm/message_ko.properties new file mode 100644 index 00000000..43b4920d --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/htm/message_ko.properties @@ -0,0 +1,31 @@ +#HTTP\ubaa8\ub2c8\ud130\ub9c1# +comUtlSysHtm.comUtlHttpMonList.title = HTTP\ubaa8\ub2c8\ud130\ub9c1 \ubaa9\ub85d +comUtlSysHtm.comUtlHttpMonDetail.title = HTTP\ubaa8\ub2c8\ud130\ub9c1 \uc0c1\uc138\uc870\ud68c +comUtlSysHtm.comUtlHttpMonDetail.summary = \uc774 \ud45c\ub294 HTTP\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \ub300\uc0c1 \uc815\ubcf4\ub97c \uc81c\uacf5\ud558\uba70, \uc6f9\uc11c\ube44\uc2a4\uc885\ub8cc, \uc2dc\uc2a4\ud15cURL, \uc0c1\ud0dc, \uad00\ub9ac\uc790\uba85, \uad00\ub9ac\uc790\uc774\uba54\uc77c \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4 . +comUtlSysHtm.comUtlHttpMonModify.title = HTTP\ubaa8\ub2c8\ud130\ub9c1 \uc218\uc815 +comUtlSysHtm.comUtlHttpMonModify.summary = \uc774 \ud45c\ub294 HTTP\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \ub300\uc0c1 \uc815\ubcf4\ub97c \uc81c\uacf5\ud558\uba70, \uc6f9\uc11c\ube44\uc2a4\uc885\ub8cc, \uc2dc\uc2a4\ud15cURL, \uc0c1\ud0dc, \uad00\ub9ac\uc790\uba85, \uad00\ub9ac\uc790\uc774\uba54\uc77c \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4 . +comUtlSysHtm.comUtlHttpMonRegist.title = HTTP\ubaa8\ub2c8\ud130\ub9c1 \ub4f1\ub85d +comUtlSysHtm.comUtlHttpMonLogList.title = HTTP\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8 \ubaa9\ub85d +comUtlSysHtm.comUtlHttpMonLogDetail.title = HTTP\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8 \uc0c1\uc138\uc870\ud68c +comUtlSysHtm.comUtlHttpMonLogDetail.summary = \uc774 \ud45c\ub294 HTTP\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \ub300\uc0c1 \uc815\ubcf4\ub97c \uc81c\uacf5\ud558\uba70, \ub85c\uadf8ID, \ud504\ub85c\uc138\uc2a4ID, \uc6f9\uc11c\ube44\uc2a4\uc885\ub958, \uc0c1\ud0dc, \ub85c\uadf8 \uc815\ubcf4, \ub9c8\uc9c0\ub9c9\uc0dd\uc131\uc77c\uc2dc\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4 . + +comUtlSysHtm.comUtlHttpMon.period = \uae30\uac04 +comUtlSysHtm.comUtlHttpMon.seq = \uc21c\ubc88 +comUtlSysHtm.comUtlHttpMon.logID = \ub85c\uadf8ID +comUtlSysHtm.comUtlHttpMon.processID = \ud504\ub85c\uc138\uc2a4ID +comUtlSysHtm.comUtlHttpMon.webService = \uc6f9\uc11c\ube44\uc2a4\uc885\ub958 +comUtlSysHtm.comUtlHttpMon.systemURL = \uc2dc\uc2a4\ud15cURL +comUtlSysHtm.comUtlHttpMon.managerName = \uad00\ub9ac\uc790\uba85 +comUtlSysHtm.comUtlHttpMon.managerEmail = \uad00\ub9ac\uc790\uc774\uba54\uc77c +comUtlSysHtm.comUtlHttpMon.createdDateTime = \uc0dd\uc131\uc77c\uc2dc +comUtlSysHtm.comUtlHttpMon.lastCreatedDateTime = \ub9c8\uc9c0\ub9c9 \uc0dd\uc131\uc77c\uc2dc +comUtlSysHtm.comUtlHttpMon.status = \uc0c1\ud0dc +comUtlSysHtm.comUtlHttpMon.monitoringDatetime = \ubaa8\ub2c8\ud130\ub9c1\uc2dc\uac01 +comUtlSysHtm.comUtlHttpMon.logInfo = \ub85c\uadf8 + +comUtlSysHtm.comUtlHttpMon.searchStartDate = \uac80\uc0c9\uc2dc\uc791\uc77c\uc790 +comUtlSysHtm.comUtlHttpMon.searchStartHour = \uac80\uc0c9\uc2dc\uc791\uc2dc\uac04 +comUtlSysHtm.comUtlHttpMon.searchStartMin = \uac80\uc0c9\uc2dc\uc791\ubd84 +comUtlSysHtm.comUtlHttpMon.searchEndDate = \uac80\uc0c9\uc885\ub8cc\uc77c\uc790 +comUtlSysHtm.comUtlHttpMon.searchEndHour = \uac80\uc0c9\uc885\ub8cc\uc2dc\uac04 +comUtlSysHtm.comUtlHttpMon.searchEndMin = \uac80\uc0c9\uc885\ub8cc\ubd84 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/nsm/message_en.properties b/src/main/resources/egovframework/message/com/utl/sys/nsm/message_en.properties new file mode 100644 index 00000000..b45eaa87 --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/nsm/message_en.properties @@ -0,0 +1,37 @@ +#Network Service Monitoring# +comUtlSysNsm.ntwrkSvcMntrng.title = Network Service Monitoring +comUtlSysNsm.ntwrkSvcMntrngLog.title = Network Service Monitoring Log + +comUtlSysNsm.ntwrkSvcMntrng.sysIp.label=System IP +comUtlSysNsm.ntwrkSvcMntrng.sysPort.label=System Port +comUtlSysNsm.ntwrkSvcMntrng.sysNm.label=System Name +comUtlSysNsm.ntwrkSvcMntrng.mngrNm.label=Manager Name +comUtlSysNsm.ntwrkSvcMntrng.mngrEmailAddr.label=Admin Email +comUtlSysNsm.ntwrkSvcMntrng.mntrngSttus.label=Monitoring Status +comUtlSysNsm.ntwrkSvcMntrng.creatDt.label=Creation Date +comUtlSysNsm.ntwrkSvcMntrng.validate.alert.duplicate=There are duplicate network services IP and Port. + +comUtlSysNsm.ntwrkSvcMntrngList.num.label=Num. +comUtlSysNsm.ntwrkSvcMntrngList.sysIp.label=System IP +comUtlSysNsm.ntwrkSvcMntrngList.sysPort.label=System Port +comUtlSysNsm.ntwrkSvcMntrngList.sysNm.label=System Name +comUtlSysNsm.ntwrkSvcMntrngList.mntrngSttus.label=Monitoring Status +comUtlSysNsm.ntwrkSvcMntrngList.mngrNm.label=Manager Name + +comUtlSysNsm.ntwrkSvcMntrngLog.logId.label=Log ID +comUtlSysNsm.ntwrkSvcMntrngLog.logInfo.label=Log Information +comUtlSysNsm.ntwrkSvcMntrngLog.num.label=Num. +comUtlSysNsm.ntwrkSvcMntrngLog.sysIp.label=System IP +comUtlSysNsm.ntwrkSvcMntrngLog.sysPort.label=System Port +comUtlSysNsm.ntwrkSvcMntrngLog.sysNm.label=System Name +comUtlSysNsm.ntwrkSvcMntrngLog.mntrngSttus.label=Monitoring Status +comUtlSysNsm.ntwrkSvcMntrngLog.mngrNm.label=Manager Name +comUtlSysNsm.ntwrkSvcMntrngLog.creatDt.label=Created Date +comUtlSysNsm.ntwrkSvcMntrngLog.validate.alert.bgnDe=Search Start Date +comUtlSysNsm.ntwrkSvcMntrngLog.validate.alert.endDe=Search End Date +comUtlSysNsm.ntwrkSvcMntrngLog.validate.alert.diffBgnDeEndDe=The search end date can not be earlier than the search start date. +comUtlSysNsm.ntwrkSvcMntrngLog.title.searchBgnDe=Enter Start Date +comUtlSysNsm.ntwrkSvcMntrngLog.title.searchBgnHour=Select Start Time +comUtlSysNsm.ntwrkSvcMntrngLog.title.searchEndDe=Enter End Date +comUtlSysNsm.ntwrkSvcMntrngLog.title.searchEndHour=Select End Time +comUtlSysNsm.ntwrkSvcMntrngLog.title.searchWrd=Enter Search Terms diff --git a/src/main/resources/egovframework/message/com/utl/sys/nsm/message_ko.properties b/src/main/resources/egovframework/message/com/utl/sys/nsm/message_ko.properties new file mode 100644 index 00000000..d62cd5ea --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/nsm/message_ko.properties @@ -0,0 +1,40 @@ +#\ub124\ud2b8\uc6cc\ud06c\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1# +comUtlSysNsm.ntwrkSvcMntrng.title = \ub124\ud2b8\uc6cc\ud06c\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1 +comUtlSysNsm.ntwrkSvcMntrngLog.title = \ub124\ud2b8\uc6cc\ud06c\uc11c\ube44\uc2a4\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8 + +comUtlSysNsm.ntwrkSvcMntrng.sysIp.label=\uc2dc\uc2a4\ud15cIP +comUtlSysNsm.ntwrkSvcMntrng.sysPort.label=\uc2dc\uc2a4\ud15c\ud3ec\ud2b8 +comUtlSysNsm.ntwrkSvcMntrng.sysNm.label=\uc2dc\uc2a4\ud15c\uba85 +comUtlSysNsm.ntwrkSvcMntrng.mngrNm.label=\uad00\ub9ac\uc790\uba85 +comUtlSysNsm.ntwrkSvcMntrng.mngrEmailAddr.label=\uad00\ub9ac\uc790\uc774\uba54\uc77c\uc8fc\uc18c +comUtlSysNsm.ntwrkSvcMntrng.mntrngSttus.label=\ubaa8\ub2c8\ud130\ub9c1\uc0c1\ud0dc +comUtlSysNsm.ntwrkSvcMntrng.creatDt.label=\ub9c8\uc9c0\ub9c9 \uc0dd\uc131\uc77c\uc2dc +comUtlSysNsm.ntwrkSvcMntrng.validate.alert.duplicate=\uc911\ubcf5\ub41c \ub124\ud2b8\uc6cc\ud06c\uc11c\ube44\uc2a4\uc758 IP\uc640 Port\uac00 \uc788\uc2b5\ub2c8\ub2e4. + +comUtlSysNsm.ntwrkSvcMntrngList.num.label=\ubc88\ud638 +comUtlSysNsm.ntwrkSvcMntrngList.sysIp.label=\uc2dc\uc2a4\ud15cIP +comUtlSysNsm.ntwrkSvcMntrngList.sysPort.label=\uc2dc\uc2a4\ud15c\ud3ec\ud2b8 +comUtlSysNsm.ntwrkSvcMntrngList.sysNm.label=\uc2dc\uc2a4\ud15c\uba85 +comUtlSysNsm.ntwrkSvcMntrngList.mntrngSttus.label=\ubaa8\ub2c8\ud130\ub9c1\uc0c1\ud0dc +comUtlSysNsm.ntwrkSvcMntrngList.mngrNm.label=\uad00\ub9ac\uc790\uba85 + +comUtlSysNsm.ntwrkSvcMntrngLog.logId.label=\ub85c\uadf8ID +comUtlSysNsm.ntwrkSvcMntrngLog.logInfo.label=\ub85c\uadf8\uc815\ubcf4 +comUtlSysNsm.ntwrkSvcMntrngLog.num.label=\ubc88\ud638 +comUtlSysNsm.ntwrkSvcMntrngLog.sysIp.label=\uc2dc\uc2a4\ud15cIP +comUtlSysNsm.ntwrkSvcMntrngLog.sysPort.label=\uc2dc\uc2a4\ud15c\ud3ec\ud2b8 +comUtlSysNsm.ntwrkSvcMntrngLog.sysNm.label=\uc2dc\uc2a4\ud15c\uba85 +comUtlSysNsm.ntwrkSvcMntrngLog.mntrngSttus.label=\ubaa8\ub2c8\ud130\ub9c1\uc0c1\ud0dc +comUtlSysNsm.ntwrkSvcMntrngLog.mngrNm.label=\uad00\ub9ac\uc790\uba85 +comUtlSysNsm.ntwrkSvcMntrngLog.creatDt.label=\uc0dd\uc131\uc77c\uc2dc +comUtlSysNsm.ntwrkSvcMntrngLog.validate.alert.bgnDe=\uac80\uc0c9\uc2dc\uc791\uc77c\uc790 +comUtlSysNsm.ntwrkSvcMntrngLog.validate.alert.endDe=\uac80\uc0c9\uc885\ub8cc\uc77c\uc790 +comUtlSysNsm.ntwrkSvcMntrngLog.validate.alert.diffBgnDeEndDe=\uac80\uc0c9\uc885\ub8cc\uc77c\uc2dc\uac00 \uac80\uc0c9\uc2dc\uc791\uc77c\uc2dc\ubcf4\ub2e4 \ube60\ub97c\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. +comUtlSysNsm.ntwrkSvcMntrngLog.title.searchBgnDe=\uc870\ud68c\uc2dc\uc791\uc77c\uc790 \uc785\ub825 +comUtlSysNsm.ntwrkSvcMntrngLog.title.searchBgnHour=\uc870\ud68c\uc2dc\uc791 \uc2dc\uac04 \uc120\ud0dd +comUtlSysNsm.ntwrkSvcMntrngLog.title.searchEndDe=\uc870\ud68c\uc885\ub8cc\uc77c\uc790 \uc785\ub825 +comUtlSysNsm.ntwrkSvcMntrngLog.title.searchEndHour=\uc870\ud68c\uc885\ub8cc \uc2dc\uac04 \uc120\ud0dd +comUtlSysNsm.ntwrkSvcMntrngLog.title.searchWrd=\uac80\uc0c9\uc5b4 \uc785\ub825 + + + diff --git a/src/main/resources/egovframework/message/com/utl/sys/prm/message_en.properties b/src/main/resources/egovframework/message/com/utl/sys/prm/message_en.properties new file mode 100644 index 00000000..d5d8ffd5 --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/prm/message_en.properties @@ -0,0 +1,24 @@ +#Process Monitoring# +comUtlSysPrm.comUtlProcessMonList.title = Process Monitoring List +comUtlSysPrm.comUtlProcessMonDetail.title = Process Monitoring Details +comUtlSysPrm.comUtlProcessMonDetail.summary = This table provides information about the process monitoring targets and consists of process name, status, administrator name, and administrator email. +comUtlSysPrm.comUtlProcessMonModify.title = Modifying Process Monitoring +comUtlSysPrm.comUtlProcessMonRegist.title = Register Process Monitoring +comUtlSysPrm.comUtlProcessMonLogList.title = Process Monitoring Log List +comUtlSysPrm.comUtlProcessMonLogDetail.title = Process Monitoring Log Details +comUtlSysPrm.comUtlProcessMonLogDetail.summary = This table provides the process monitoring log target information and consists of the logID, process ID, process name, status, log, and the last generation date. + +comUtlSysPrm.comUtlProcessMon.seq = No +comUtlSysPrm.comUtlProcessMon.logID = LogID +comUtlSysPrm.comUtlProcessMon.processID = Process ID +comUtlSysPrm.comUtlProcessMon.processName = Process Name +comUtlSysPrm.comUtlProcessMon.status = Status +comUtlSysPrm.comUtlProcessMon.logInfo = Log +comUtlSysPrm.comUtlProcessMon.managerName = Manager +comUtlSysPrm.comUtlProcessMon.managerEmail = Email +comUtlSysPrm.comUtlProcessMon.createdDateTime = Created Datetime +comUtlSysPrm.comUtlProcessMon.lastCreatedDateTime = Lastly Created Datetime +comUtlSysPrm.comUtlProcessMon.searchBgnDe = Enter Start Date +comUtlSysPrm.comUtlProcessMon.searchBgnHour = Select Start Hour +comUtlSysPrm.comUtlProcessMon.searchEndDe = Enter End Date +comUtlSysPrm.comUtlProcessMon.searchEndHour = Select End hour \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/prm/message_ko.properties b/src/main/resources/egovframework/message/com/utl/sys/prm/message_ko.properties new file mode 100644 index 00000000..f6617f28 --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/prm/message_ko.properties @@ -0,0 +1,24 @@ +#\ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1# +comUtlSysPrm.comUtlProcessMonList.title = \ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \ubaa9\ub85d +comUtlSysPrm.comUtlProcessMonDetail.title = \ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \uc0c1\uc138\uc870\ud68c +comUtlSysPrm.comUtlProcessMonDetail.summary = \uc774 \ud45c\ub294 \ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \ub300\uc0c1 \uc815\ubcf4\ub97c \uc81c\uacf5\ud558\uba70, \ud504\ub85c\uc138\uc2a4\uba85, \uc0c1\ud0dc, \uad00\ub9ac\uc790\uba85, \uad00\ub9ac\uc790\uc774\uba54\uc77c\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. +comUtlSysPrm.comUtlProcessMonModify.title = \ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \uc218\uc815 +comUtlSysPrm.comUtlProcessMonRegist.title = \ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \ub4f1\ub85d +comUtlSysPrm.comUtlProcessMonLogList.title = \ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8 \ubaa9\ub85d +comUtlSysPrm.comUtlProcessMonLogDetail.title = \ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8 \uc0c1\uc138\uc870\ud68c +comUtlSysPrm.comUtlProcessMonLogDetail.summary = \uc774 \ud45c\ub294 \ud504\ub85c\uc138\uc2a4\ubaa8\ub2c8\ud130\ub9c1 \ub85c\uadf8 \ub300\uc0c1 \uc815\ubcf4\ub97c \uc81c\uacf5\ud558\uba70, \ub85c\uadf8ID, \ud504\ub85c\uc138\uc2a4ID, \ud504\ub85c\uc138\uc2a4\uba85, \uc0c1\ud0dc, \ub85c\uadf8, \ub9c8\uc9c0\ub9c9 \uc0dd\uc131\uc77c\uc2dc\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. + +comUtlSysPrm.comUtlProcessMon.seq = \uc21c\ubc88 +comUtlSysPrm.comUtlProcessMon.logID = \ub85c\uadf8ID +comUtlSysPrm.comUtlProcessMon.processID = \ud504\ub85c\uc138\uc2a4ID +comUtlSysPrm.comUtlProcessMon.processName = \ud504\ub85c\uc138\uc2a4\uba85 +comUtlSysPrm.comUtlProcessMon.status = \uc0c1\ud0dc +comUtlSysPrm.comUtlProcessMon.logInfo = \ub85c\uadf8 +comUtlSysPrm.comUtlProcessMon.managerName = \uad00\ub9ac\uc790\uba85 +comUtlSysPrm.comUtlProcessMon.managerEmail = \uad00\ub9ac\uc790\uc774\uba54\uc77c +comUtlSysPrm.comUtlProcessMon.createdDateTime = \uc0dd\uc131\uc77c\uc2dc +comUtlSysPrm.comUtlProcessMon.lastCreatedDateTime = \ub9c8\uc9c0\ub9c9 \uc0dd\uc131\uc77c\uc2dc +comUtlSysPrm.comUtlProcessMon.searchBgnDe = \uc870\ud68c\uc2dc\uc791\uc77c\uc790 \uc785\ub825 +comUtlSysPrm.comUtlProcessMon.searchBgnHour = \uc870\ud68c\uc2dc\uc791 \uc2dc \uc120\ud0dd +comUtlSysPrm.comUtlProcessMon.searchEndDe = \uc870\ud68c\uc885\ub8cc\uc77c\uc790 \uc785\ub825 +comUtlSysPrm.comUtlProcessMon.searchEndHour = \uc870\ud68c\uc885\ub8cc \uc2dc \uc120\ud0dd \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/pxy/message_en.properties b/src/main/resources/egovframework/message/com/utl/sys/pxy/message_en.properties new file mode 100644 index 00000000..6ae77d43 --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/pxy/message_en.properties @@ -0,0 +1,47 @@ +# Proxy service # +comUtlSysPxy.proxyLog.title = Proxy log +comUtlSysPxy.proxySvc.title = Proxy Settings + +comUtlSysPxy.proxySvc.proxyId.label = Proxy ID +comUtlSysPxy.proxySvc.proxyNm.label = proxy name +comUtlSysPxy.proxySvc.proxyIp.label = Proxy IP +comUtlSysPxy.proxySvc.proxyPort.label = Proxy Port +comUtlSysPxy.proxySvc.trgetSvcNm.label = target service name +comUtlSysPxy.proxySvc.svcDc.label = Service Description +comUtlSysPxy.proxySvc.svcIp.label = Service IP +comUtlSysPxy.proxySvc.svcPort.label = Service Port +comUtlSysPxy.proxySvc.svcSttusNm.label = Service Status + +comUtlSysPxy.proxySvcList.proxyId.label = Proxy ID +comUtlSysPxy.proxySvcList.proxyNm.label = proxy name +comUtlSysPxy.proxySvcList.proxyPort.label = Proxy Port +comUtlSysPxy.proxySvcList.trgetSvcNm.label = target service name +comUtlSysPxy.proxySvcList.svcIp.label = Service IP/Port +comUtlSysPxy.proxySvcList.svcSttusNm.label = Status +comUtlSysPxy.proxySvcList.checknum = Date format is invalid +comUtlSysPxy.proxySvcList.strTmpFromDateEndDate = The start date can not be greater than the end date +comUtlSysPxy.proxySvcList.pmProxyLogVO.strStartDate = Proxy log start date +comUtlSysPxy.proxySvcList.pmProxyLogVO.strEndDate = Proxy log end date + +comUtlSysPxy.proxyLog.period.label = duration +comUtlSysPxy.proxyLog.proxyId.label = Proxy ID +comUtlSysPxy.proxyLog.proxyNm.label = Target Service +comUtlSysPxy.proxyLog.clntPort.label = Proxy Port +comUtlSysPxy.proxyLog.clntIp.label = Client IP +comUtlSysPxy.proxyLog.conectTime.label =connected time +comUtlSysPxy.proxyLog.log = Log + +comUtlSysPxy.proxySvcDetail.title=Proxy Detail View +comUtlSysPxy.proxySvcDetail.summary = Provides detailed information about proxy settings. + +comUtlSysPxy.proxySvcUpdtl.title=Change Proxy Settings +comUtlSysPxy.proxySvcUpdt.summary = Modify the proxy configuration information. +comUtlSysPxy.proxySvcUpdt.ipValueException = is the exception ip. +comUtlSysPxy.proxySvcUpdt.ipFormalException = IP format mismatch. +comUtlSysPxy.proxySvcUpdt.svcSttus.run = Normal +comUtlSysPxy.proxySvcUpdt.svcSttus.stop = Stop + +comUtlSysPxy.proxySvcRegist.ipValueException = is the exception ip. +comUtlSysPxy.proxySvcRegist.ipFormalException = IP format mismatch. +comUtlSysPxy.proxySvcRegist.svcSttus.run = Normal +comUtlSysPxy.proxySvcRegist.svcSttus.stop = Stop \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/pxy/message_ko.properties b/src/main/resources/egovframework/message/com/utl/sys/pxy/message_ko.properties new file mode 100644 index 00000000..264a0a0d --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/pxy/message_ko.properties @@ -0,0 +1,47 @@ +#\ud504\ub85d\uc2dc\uc11c\ube44\uc2a4# +comUtlSysPxy.proxyLog.title=\ud504\ub85d\uc2dc\ub85c\uadf8 +comUtlSysPxy.proxySvc.title=\ud504\ub85d\uc2dc\uc124\uc815 + +comUtlSysPxy.proxySvc.proxyId.label=\ud504\ub85d\uc2dcID +comUtlSysPxy.proxySvc.proxyNm.label=\ud504\ub85d\uc2dc\uba85 +comUtlSysPxy.proxySvc.proxyIp.label=\ud504\ub85d\uc2dcIP +comUtlSysPxy.proxySvc.proxyPort.label=\ud504\ub85d\uc2dcPort +comUtlSysPxy.proxySvc.trgetSvcNm.label=\ub300\uc0c1\uc11c\ube44\uc2a4\uba85 +comUtlSysPxy.proxySvc.svcDc.label=\uc11c\ube44\uc2a4\uc124\uba85 +comUtlSysPxy.proxySvc.svcIp.label=\uc11c\ube44\uc2a4IP +comUtlSysPxy.proxySvc.svcPort.label=\uc11c\ube44\uc2a4Port +comUtlSysPxy.proxySvc.svcSttusNm.label=\uc11c\ube44\uc2a4\uc0c1\ud0dc + +comUtlSysPxy.proxySvcList.proxyId.label=\ud504\ub85d\uc2dcID +comUtlSysPxy.proxySvcList.proxyNm.label=\ud504\ub85d\uc2dc\uba85 +comUtlSysPxy.proxySvcList.proxyPort.label=\ud504\ub85d\uc2dcPort +comUtlSysPxy.proxySvcList.trgetSvcNm.label=\ub300\uc0c1\uc11c\ube44\uc2a4\uba85 +comUtlSysPxy.proxySvcList.svcIp.label=\uc11c\ube44\uc2a4IP/Port +comUtlSysPxy.proxySvcList.svcSttusNm.label=\uc0c1\ud0dc +comUtlSysPxy.proxySvcList.checknum=\ub0a0\uc9dc \ud615\uc2dd\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4 +comUtlSysPxy.proxySvcList.strTmpFromDateEndDate=\uc2dc\uc791\uc77c\uc790\ub294 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ud074 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +comUtlSysPxy.proxySvcList.pmProxyLogVO.strStartDate=\ud504\ub85d\uc2dc\ub85c\uadf8 \uc2dc\uc791\uc77c\uc790 +comUtlSysPxy.proxySvcList.pmProxyLogVO.strEndDate=\ud504\ub85d\uc2dc\ub85c\uadf8 \uc885\ub8cc\uc77c\uc790 + +comUtlSysPxy.proxyLog.period.label=\uae30\uac04 +comUtlSysPxy.proxyLog.proxyId.label=\ud504\ub85d\uc2dcID +comUtlSysPxy.proxyLog.proxyNm.label=\ub300\uc0c1\uc11c\ube44\uc2a4 +comUtlSysPxy.proxyLog.clntPort.label=\ud504\ub85d\uc2dcPort +comUtlSysPxy.proxyLog.clntIp.label=\ud074\ub77c\uc774\uc5b8\ud2b8IP +comUtlSysPxy.proxyLog.conectTime.label=\uc811\uc18d\uc77c\uc2dc +comUtlSysPxy.proxyLog.log=\ub85c\uadf8 + +comUtlSysPxy.proxySvcDetail.title=\ud504\ub85d\uc2dc\uc124\uc815 \uc0c1\uc138\uc870\ud68c +comUtlSysPxy.proxySvcDetail.summary=\ud504\ub85d\uc2dc\uc124\uc815\uc5d0 \ub300\ud55c \uc0c1\uc138\uc815\ubcf4\ub97c \uc81c\uacf5\ud55c\ub2e4. + +comUtlSysPxy.proxySvcUpdtl.title=\ud504\ub85d\uc2dc\uc124\uc815 \uc218\uc815 +comUtlSysPxy.proxySvcUpdt.summary=\ud504\ub85d\uc2dc\uc124\uc815 \uc815\ubcf4\ub97c \uc218\uc815\ud55c\ub2e4. +comUtlSysPxy.proxySvcUpdt.ipValueException=\ub294 \uc608\uc678 \uc544\uc774\ud53c \uc785\ub2c8\ub2e4. +comUtlSysPxy.proxySvcUpdt.ipFormalException=IP \ud615\uc2dd\uc774 \uc77c\uce58 \ud558\uc9c0\uc54a\uc2b5\ub2c8\ub2e4. +comUtlSysPxy.proxySvcUpdt.svcSttus.run=\uc815\uc0c1 +comUtlSysPxy.proxySvcUpdt.svcSttus.stop=\uc911\uc9c0 + +comUtlSysPxy.proxySvcRegist.ipValueException=\ub294 \uc608\uc678 \uc544\uc774\ud53c \uc785\ub2c8\ub2e4. +comUtlSysPxy.proxySvcRegist.ipFormalException=IP \ud615\uc2dd\uc774 \uc77c\uce58 \ud558\uc9c0\uc54a\uc2b5\ub2c8\ub2e4. +comUtlSysPxy.proxySvcRegist.svcSttus.run=\uc815\uc0c1 +comUtlSysPxy.proxySvcRegist.svcSttus.stop=\uc911\uc9c0 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/rsc/message_en.properties b/src/main/resources/egovframework/message/com/utl/sys/rsc/message_en.properties new file mode 100644 index 00000000..187791a2 --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/rsc/message_en.properties @@ -0,0 +1,7 @@ +#Login Sesion Check# +utlSysRsc.loginSessionCheck.loginSessionCheck=Login Session Check +utlSysRsc.loginSessionCheck.validate.confirmSetLoginSession=Are you sure? +utlSysRsc.loginSessionCheck.url=URL +utlSysRsc.loginSessionCheck.sessionURL=Session URL +utlSysRsc.loginSessionCheck.set=SET +utlSysRsc.loginSessionCheck.sessionView=Move \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/rsc/message_ko.properties b/src/main/resources/egovframework/message/com/utl/sys/rsc/message_ko.properties new file mode 100644 index 00000000..290354ea --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/rsc/message_ko.properties @@ -0,0 +1,7 @@ +#\ub85c\uadf8\uc778\uc138\uc158\uc815\ubcf4\uccb4\ud06c# +utlSysRsc.loginSessionCheck.loginSessionCheck=\ub85c\uadf8\uc778 \uc138\uc158\uc815\ubcf4 \uccb4\ud06c +utlSysRsc.loginSessionCheck.validate.confirmSetLoginSession=\uc124\uc815\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +utlSysRsc.loginSessionCheck.url=URL +utlSysRsc.loginSessionCheck.sessionURL=\uc138\uc158 URL +utlSysRsc.loginSessionCheck.set=\uc124\uc815 +utlSysRsc.loginSessionCheck.sessionView=\uc774\ub3d9 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/srm/message_en.properties b/src/main/resources/egovframework/message/com/utl/sys/srm/message_en.properties new file mode 100644 index 00000000..06d6b13a --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/srm/message_en.properties @@ -0,0 +1,41 @@ +#Server Resource Monitoring # + +ultSysScm.mntrngServer.Title=Server Resource Monitoring + +ultSysScm.mntrngServerList.Title=Server Resource Monitoring +ultSysScm.mntrngServerList.ServerName=Server H/W Name + +ultSysScm.mntrngServerList.ServerId=Server H/W ID +ultSysScm.mntrngServerList.ServerIp=Server H/W IP +ultSysScm.mntrngServerList.ServerEmail=E-Mail + +ultSysScm.mntrngServerList.btnLog=Log + + +#Server Resource Monitoring Log List# +ultSysScm.mntrngResrceServerList.Title=Server Resource Monitoring Log +ultSysScm.mntrngResrceServerList.scServerName=Server H/W Nm +ultSysScm.mntrngResrceServerList.scBetween=between +ultSysScm.mntrngResrceServerList.scFromDate=search start date +ultSysScm.mntrngResrceServerList.scToDate=search start date + +ultSysScm.mntrngResrceServerList.listServerName=Server H/W Name +ultSysScm.mntrngResrceServerList.listServerIp=Server H/W IP +ultSysScm.mntrngResrceServerList.listCpuUse=CPU use +ultSysScm.mntrngResrceServerList.lisMemoryUse=Memory use +ultSysScm.mntrngResrceServerList.listServerStatus=Service status +ultSysScm.mntrngResrceServerList.listCreateDatetime=Create date + +ultSysScm.mntrngResrceServerList.validate.datatFail=Date format is invalid! +ultSysScm.mntrngResrceServerList.validate.datatCheck=Start date can not be greater than end date! + +#Server Resource Monitoring Log Detail# +ultSysScm.mntrngServerDetail.Title=Server Resource Monitoring Log +ultSysScm.mntrngServerDetail.logId=log ID +ultSysScm.mntrngServerDetail.serverName=server H/W name +ultSysScm.mntrngServerDetail.serverIp=server H/W IP +ultSysScm.mntrngServerDetail.cpuUse=Cpu Use +ultSysScm.mntrngServerDetail.memoryUse=Memory use +ultSysScm.mntrngServerDetail.serviceStatus=Service status +ultSysScm.mntrngServerDetail.logInfo=Log info +ultSysScm.mntrngServerDetail.crateDate=Create date diff --git a/src/main/resources/egovframework/message/com/utl/sys/srm/message_ko.properties b/src/main/resources/egovframework/message/com/utl/sys/srm/message_ko.properties new file mode 100644 index 00000000..45e8f11f --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/srm/message_ko.properties @@ -0,0 +1,41 @@ +#\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1-\ub300\uc0c1\ubaa9\ub85d# + +ultSysScm.mntrngServer.Title=\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1 + +ultSysScm.mntrngServerList.Title=\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1 \ubaa9\ub85d\uc870\ud68c +ultSysScm.mntrngServerList.ServerName=\uc11c\ubc84H/W \uba85 + +ultSysScm.mntrngServerList.ServerId=\uc11c\ubc84H/W ID +ultSysScm.mntrngServerList.ServerIp=\uc11c\ubc84H/W IP +ultSysScm.mntrngServerList.ServerEmail=\ub2f4\ub2f9\uc790 E-Mail + +ultSysScm.mntrngServerList.btnLog=\ub85c\uadf8 + + +#\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1 \ub85c\uadf8 \ubaa9\ub85d +ultSysScm.mntrngResrceServerList.Title=\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1 \ub85c\uadf8 +ultSysScm.mntrngResrceServerList.scServerName=\uc11c\ubc84H/W \uba85 +ultSysScm.mntrngResrceServerList.scBetween=\uae30\uac04 +ultSysScm.mntrngResrceServerList.scFromDate=\uac80\uc0c9 \uc2dc\uc791\uc77c\uc790 +ultSysScm.mntrngResrceServerList.scToDate=\uac80\uc0c9 \uc885\ub8cc\uc77c\uc790 + +ultSysScm.mntrngResrceServerList.listServerName=\uc11c\ubc84H/W \uba85 +ultSysScm.mntrngResrceServerList.listServerIp=\uc11c\ubc84H/W IP +ultSysScm.mntrngResrceServerList.listCpuUse=CPU\uc0ac\uc6a9\ub960 +ultSysScm.mntrngResrceServerList.lisMemoryUse=\uba54\ubaa8\ub9ac\uc0ac\uc6a9\ub960 +ultSysScm.mntrngResrceServerList.listServerStatus=\uc11c\ube44\uc2a4\uc0c1\ud0dc +ultSysScm.mntrngResrceServerList.listCreateDatetime=\uc0dd\uc131\uc77c\uc2dc + +ultSysScm.mntrngResrceServerList.validate.datatFail=\ub0a0\uc9dc \ud615\uc2dd\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4! +ultSysScm.mntrngResrceServerList.validate.datatCheck=\uc2dc\uc791\uc77c\uc790\ub294 \uc885\ub8cc\uc77c\uc790\ubcf4\ub2e4 \ud074 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! + +#\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1 \uc0c1\uc138\uc870\ud68c +ultSysScm.mntrngServerDetail.Title=\uc11c\ubc84\uc790\uc6d0\ubaa8\ub2c8\ud130\ub9c1 \ub85c\uadf8 +ultSysScm.mntrngServerDetail.logId=\ub85c\uadf8ID +ultSysScm.mntrngServerDetail.serverName=\uc11c\ubc84H/W \uba85 +ultSysScm.mntrngServerDetail.serverIp=\uc11c\ubc84H/W IP +ultSysScm.mntrngServerDetail.cpuUse=CPU\uc0ac\uc6a9\ub960 +ultSysScm.mntrngServerDetail.memoryUse=\uba54\ubaa8\ub9ac\uc0ac\uc6a9\ub960 +ultSysScm.mntrngServerDetail.serviceStatus=\uc11c\ube44\uc2a4\uc0c1\ud0dc +ultSysScm.mntrngServerDetail.logInfo=\ub85c\uadf8\uc815\ubcf4 +ultSysScm.mntrngServerDetail.crateDate=\uc0dd\uc131\uc77c\uc2dc diff --git a/src/main/resources/egovframework/message/com/utl/sys/ssy/message_en.properties b/src/main/resources/egovframework/message/com/utl/sys/ssy/message_en.properties new file mode 100644 index 00000000..af3a70ec --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/ssy/message_en.properties @@ -0,0 +1,32 @@ +#Synchrized Server# +comUtlSysSsy.download.msg=Do you want to download it? +comUtlSysSsy.sync.msg=Are you sure you want to sync? + +comUtlSysSsy.synchrn.title=Sync files +comUtlSysSsy.synchrnServer.title=Synchronization target server +comUtlSysSsy.synchrnServerFile.title=Sync target file + +comUtlSysSsy.synchrnServer.serverId.label=Server ID +comUtlSysSsy.synchrnServer.serverNm.label=Server Name +comUtlSysSsy.synchrnServer.serverIp.label=Server IP +comUtlSysSsy.synchrnServer.serverPort.label=Server Port +comUtlSysSsy.synchrnServer.ftpId.label=FTP ID +comUtlSysSsy.synchrnServer.ftpPassword.label=FTP Password +comUtlSysSsy.synchrnServer.synchrnLc.label=Sync Location +comUtlSysSsy.synchrnServer.reflctAt.label=Sync Status +comUtlSysSsy.synchrnServer.lastUpdusrId.label=registrant + +comUtlSysSsy.synchrnServer.fileSelect.label=Select File +comUtlSysSsy.synchrnServer.seq.label=num. +comUtlSysSsy.synchrnServer.fileNm.label=File Name +comUtlSysSsy.synchrnServer.fileList.label=List of files +comUtlSysSsy.synchrnServer.fileDownload.label=DownLoad +comUtlSysSsy.synchrnServer.fileDelete.label=delete +comUtlSysSsy.synchrnServer.nofile.label=Server connection is not possible + +comUtlSysSsy.synchrnServer.validate.noList=No synced target list. +comUtlSysSsy.synchrnServer.validate.noSelectedFile=No files selected. +comUtlSysSsy.synchrnServer.validate.noQueryResult=No query results found. +comUtlSysSsy.synchrnServer.synch=synchronization +comUtlSysSsy.synchrnServer.validate.exceptIP=is an exceptional IP. +comUtlSysSsy.synchrnServer.validate.misMatchIP=IP format mismatch. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/ssy/message_ko.properties b/src/main/resources/egovframework/message/com/utl/sys/ssy/message_ko.properties new file mode 100644 index 00000000..f0ac7133 --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/ssy/message_ko.properties @@ -0,0 +1,32 @@ +#\ud30c\uc77c\ub3d9\uae30\ud654(\ub300\uc0c1\uc11c\ubc84)# +comUtlSysSsy.download.msg=\ub2e4\uc6b4\ub85c\ub4dc\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +comUtlSysSsy.sync.msg=\ub3d9\uae30\ud654\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? + +comUtlSysSsy.synchrn.title=\ub3d9\uae30\ud654\ud30c\uc77c +comUtlSysSsy.synchrnServer.title=\ub3d9\uae30\ud654\ub300\uc0c1 \uc11c\ubc84 +comUtlSysSsy.synchrnServerFile.title=\ub3d9\uae30\ud654\ub300\uc0c1 \ud30c\uc77c + +comUtlSysSsy.synchrnServer.serverId.label=\uc11c\ubc84ID +comUtlSysSsy.synchrnServer.serverNm.label=\uc11c\ubc84\uba85 +comUtlSysSsy.synchrnServer.serverIp.label=\uc11c\ubc84 IP +comUtlSysSsy.synchrnServer.serverPort.label=\uc11c\ubc84 Port +comUtlSysSsy.synchrnServer.ftpId.label=FTP ID +comUtlSysSsy.synchrnServer.ftpPassword.label=FTP \ube44\ubc00\ubc88\ud638 +comUtlSysSsy.synchrnServer.synchrnLc.label=\ub3d9\uae30\ud654 \uc704\uce58 +comUtlSysSsy.synchrnServer.reflctAt.label=\ub3d9\uae30\ud654 \uc5ec\ubd80 +comUtlSysSsy.synchrnServer.lastUpdusrId.label=\ub4f1\ub85d\uc790 + +comUtlSysSsy.synchrnServer.fileSelect.label=\ud30c\uc77c \uc120\ud0dd +comUtlSysSsy.synchrnServer.seq.label=\uc21c\ubc88 +comUtlSysSsy.synchrnServer.fileNm.label=\ud30c\uc77c\uba85 +comUtlSysSsy.synchrnServer.fileList.label=\ud30c\uc77c \ubaa9\ub85d +comUtlSysSsy.synchrnServer.fileDownload.label=\ub2e4\uc6b4\ub85c\ub4dc +comUtlSysSsy.synchrnServer.fileDelete.label=\uc0ad\uc81c +comUtlSysSsy.synchrnServer.nofile.label=\uc11c\ubc84\uc811\uc18d\uc774 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4 + +comUtlSysSsy.synchrnServer.validate.noList=\ub3d9\uae30\ud654 \ub300\uc0c1\ubaa9\ub85d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +comUtlSysSsy.synchrnServer.validate.noSelectedFile=\uc120\ud0dd\ub41c \ud30c\uc77c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. +comUtlSysSsy.synchrnServer.validate.noQueryResult=\uc870\ud68c\ub41c \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. +comUtlSysSsy.synchrnServer.synch=\ub3d9\uae30\ud654 +comUtlSysSsy.synchrnServer.validate.exceptIP=\ub294 \uc608\uc678 \uc544\uc774\ud53c \uc785\ub2c8\ub2e4. +comUtlSysSsy.synchrnServer.validate.misMatchIP=IP \ud615\uc2dd\uc774 \uc77c\uce58 \ud558\uc9c0\uc54a\uc2b5\ub2c8\ub2e4. \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/trm/message_en.properties b/src/main/resources/egovframework/message/com/utl/sys/trm/message_en.properties new file mode 100644 index 00000000..7ad468ce --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/trm/message_en.properties @@ -0,0 +1,33 @@ +#Transmission and reception monitoring# +comUtlSysTrm.trsmrcvMntrngList.title = Transmission and Reception Monitoring List +comUtlSysTrm.trsmrcvMntrngDetail.title = Transmission and Reception Monitoring Details +comUtlSysTrm.trsmrcvMntrngDetail.summary = Provides details about registered transmission and reception monitoring. +comUtlSysTrm.trsmrcvMntrngUpdt.title = Modifying Transmission and Reception Monitoring +comUtlSysTrm.trsmrcvMntrngUpdt.summary = It provides a function to modify transmission and reception monitoring. +comUtlSysTrm.trsmrcvMntrngRegist.title = Register Transmission and Reception Monitoring +comUtlSysTrm.trsmrcvMntrngLogList.title = Transmission and Reception Monitoring Log List +comUtlSysTrm.trsmrcvMntrngLogDetail.title = Transmission and Reception Monitoring Log Details +comUtlSysTrm.trsmrcvMntrngLogDetail.summary = Provides detailed information about the sending and receiving monitor logs. + +comUtlSysTrm.trsmrcvMntrng.logID = LogID +comUtlSysTrm.trsmrcvMntrng.interOperationID = Link ID +comUtlSysTrm.trsmrcvMntrng.interOperationName = Link Name +comUtlSysTrm.trsmrcvMntrng.interOperationPopup = Link information check pop-up provided +comUtlSysTrm.trsmrcvMntrng.testClassName = Test Class Name +comUtlSysTrm.trsmrcvMntrng.managerName = Manager +comUtlSysTrm.trsmrcvMntrng.managerEmail = Manager Email +comUtlSysTrm.trsmrcvMntrng.monitoringDateTime = Monitoring Datetime +comUtlSysTrm.trsmrcvMntrng.provider = Provider +comUtlSysTrm.trsmrcvMntrng.provideSystem = Provider System +comUtlSysTrm.trsmrcvMntrng.service = Services +comUtlSysTrm.trsmrcvMntrng.requester = Requester +comUtlSysTrm.trsmrcvMntrng.requestSystem = Reguesting System +comUtlSysTrm.trsmrcvMntrng.status = Status +comUtlSysTrm.trsmrcvMntrng.logInfo = Log Information + +comUtlSysTrm.trsmrcvMntrng.searchStartDate = Search start date +comUtlSysTrm.trsmrcvMntrng.searchStartHour = Search start hour +comUtlSysTrm.trsmrcvMntrng.searchStartMin = Search start minute +comUtlSysTrm.trsmrcvMntrng.searchEndDate = Search end date +comUtlSysTrm.trsmrcvMntrng.searchEndHour = Search end hour +comUtlSysTrm.trsmrcvMntrng.searchEndMin = Search end minute \ No newline at end of file diff --git a/src/main/resources/egovframework/message/com/utl/sys/trm/message_ko.properties b/src/main/resources/egovframework/message/com/utl/sys/trm/message_ko.properties new file mode 100644 index 00000000..bc21457d --- /dev/null +++ b/src/main/resources/egovframework/message/com/utl/sys/trm/message_ko.properties @@ -0,0 +1,33 @@ +#\uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1# +comUtlSysTrm.trsmrcvMntrngList.title = \uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1 \ubaa9\ub85d +comUtlSysTrm.trsmrcvMntrngDetail.title = \uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1 \uc0c1\uc138\uc870\ud68c +comUtlSysTrm.trsmrcvMntrngDetail.summary = \ub4f1\ub85d\ub41c \uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1\uc5d0 \ub300\ud55c \uc0c1\uc138\uc815\ubcf4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. +comUtlSysTrm.trsmrcvMntrngUpdt.title = \uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1 \uc218\uc815 +comUtlSysTrm.trsmrcvMntrngUpdt.summary = \uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1 \uc218\uc815\uae30\ub2a5\uc744 \uc81c\uacf5\ud55c\ub2e4. +comUtlSysTrm.trsmrcvMntrngRegist.title = \uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1 \ub4f1\ub85d +comUtlSysTrm.trsmrcvMntrngLogList.title = \uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8 \ubaa9\ub85d +comUtlSysTrm.trsmrcvMntrngLogDetail.title = \uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8 \uc0c1\uc138\uc870\ud68c +comUtlSysTrm.trsmrcvMntrngLogDetail.summary = \uc1a1\uc218\uc2e0\ubaa8\ub2c8\ud130\ub9c1\ub85c\uadf8\uc5d0 \ub300\ud55c \uc0c1\uc138\uc815\ubcf4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. + +comUtlSysTrm.trsmrcvMntrng.logID = \ub85c\uadf8ID +comUtlSysTrm.trsmrcvMntrng.interOperationID = \uc5f0\uacc4ID +comUtlSysTrm.trsmrcvMntrng.interOperationName = \uc5f0\uacc4\uba85 +comUtlSysTrm.trsmrcvMntrng.interOperationPopup = \uc5f0\uacc4\uc815\ubcf4\uc870\ud68c\ud31d\uc5c5 \uc81c\uacf5 +comUtlSysTrm.trsmrcvMntrng.testClassName = \ud14c\uc2a4\ud2b8\ud074\ub798\uc2a4\uba85 +comUtlSysTrm.trsmrcvMntrng.managerName = \uad00\ub9ac\uc790\uba85 +comUtlSysTrm.trsmrcvMntrng.managerEmail = \uad00\ub9ac\uc790\uc774\uba54\uc77c +comUtlSysTrm.trsmrcvMntrng.monitoringDateTime = \ubaa8\ub2c8\ud130\ub9c1\uc2dc\uac01 +comUtlSysTrm.trsmrcvMntrng.provider = \uc81c\uacf5\uae30\uad00 +comUtlSysTrm.trsmrcvMntrng.provideSystem = \uc81c\uacf5\uc2dc\uc2a4\ud15c +comUtlSysTrm.trsmrcvMntrng.service = \uc81c\uacf5\uc11c\ube44\uc2a4 +comUtlSysTrm.trsmrcvMntrng.requester = \uc694\uccad\uae30\uad00 +comUtlSysTrm.trsmrcvMntrng.requestSystem = \uc694\uccad\uc2dc\uc2a4\ud15c +comUtlSysTrm.trsmrcvMntrng.status = \uc0c1\ud0dc +comUtlSysTrm.trsmrcvMntrng.logInfo = \ub85c\uadf8\uc815\ubcf4 + +comUtlSysTrm.trsmrcvMntrng.searchStartDate = \uac80\uc0c9\uc2dc\uc791\uc77c\uc790 +comUtlSysTrm.trsmrcvMntrng.searchStartHour = \uac80\uc0c9\uc2dc\uc791\uc2dc\uac04 +comUtlSysTrm.trsmrcvMntrng.searchStartMin = \uac80\uc0c9\uc2dc\uc791\ubd84 +comUtlSysTrm.trsmrcvMntrng.searchEndDate = \uac80\uc0c9\uc885\ub8cc\uc77c\uc790 +comUtlSysTrm.trsmrcvMntrng.searchEndHour = \uac80\uc0c9\uc885\ub8cc\uc2dc\uac04 +comUtlSysTrm.trsmrcvMntrng.searchEndMin = \uac80\uc0c9\uc885\ub8cc\ubd84 \ No newline at end of file diff --git a/src/main/resources/egovframework/message/nlib/sample/message_en.properties b/src/main/resources/egovframework/message/nlib/sample/message_en.properties new file mode 100644 index 00000000..024a3145 --- /dev/null +++ b/src/main/resources/egovframework/message/nlib/sample/message_en.properties @@ -0,0 +1,2 @@ +# \uc0d8\ud50c +nlib.sample.title=\uc628\ub77c\uc778\uc790\ub8cc\ub300\ucd9c\uc2dc\uc2a4\ud15c diff --git a/src/main/resources/egovframework/message/nlib/sample/message_ko.properties b/src/main/resources/egovframework/message/nlib/sample/message_ko.properties new file mode 100644 index 00000000..77bfce05 --- /dev/null +++ b/src/main/resources/egovframework/message/nlib/sample/message_ko.properties @@ -0,0 +1,2 @@ +# \uc0d8\ud50c +nlib.sample.title=\uc628\ub77c\uc778\uc790\ub8cc\ub300\ucd9c\uc2dc\uc2a4\ud15c \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/context-aspect.xml b/src/main/resources/egovframework/spring/com/context-aspect.xml new file mode 100644 index 00000000..ef502a1a --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-aspect.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + **service.impl.* + + + + + + + + + + + + + + + + **service.impl.* + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/context-common.xml b/src/main/resources/egovframework/spring/com/context-common.xml new file mode 100644 index 00000000..3c49518e --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-common.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + classpath*:egovframework/message/com/**/* + classpath*:egovframework/message/nlib/**/* + classpath:/egovframework/rte/fdl/idgnr/messages/idgnr + classpath:/egovframework/rte/fdl/property/messages/properties + classpath:/egovframework/egovProps/globals + classpath:/egovframework/nlibProps/nlib + + + + + 60 + + + + + + + + + + + + + + + + + + + + + + + + + * + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/spring/com/context-config.xml b/src/main/resources/egovframework/spring/com/context-config.xml new file mode 100644 index 00000000..ccd92ecb --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-config.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/context-crypto.xml b/src/main/resources/egovframework/spring/com/context-crypto.xml new file mode 100644 index 00000000..90505125 --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-crypto.xml @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/context-datasource.xml b/src/main/resources/egovframework/spring/com/context-datasource.xml new file mode 100644 index 00000000..241ad2c9 --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-datasource.xml @@ -0,0 +1,39 @@ + + + + + + + classpath:/egovframework/egovProps/globals.properties + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/spring/com/context-egovuserdetailshelper.xml b/src/main/resources/egovframework/spring/com/context-egovuserdetailshelper.xml new file mode 100644 index 00000000..c89242bb --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-egovuserdetailshelper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/spring/com/context-mail.xml b/src/main/resources/egovframework/spring/com/context-mail.xml new file mode 100644 index 00000000..9ac88ad2 --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-mail.xml @@ -0,0 +1,60 @@ + + + + + + + + + + true + true + true + + + + + + + + + + + + true + true + true + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/context-mapper.xml b/src/main/resources/egovframework/spring/com/context-mapper.xml new file mode 100644 index 00000000..7222d888 --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-mapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + classpath:/egovframework/mapper/com/**/*_${Globals.DbType}.xml + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/context-properties.xml b/src/main/resources/egovframework/spring/com/context-properties.xml new file mode 100644 index 00000000..1d8550d1 --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-properties.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/spring/com/context-security.xml b/src/main/resources/egovframework/spring/com/context-security.xml new file mode 100644 index 00000000..9a9b3072 --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-security.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/spring/com/context-transaction.xml b/src/main/resources/egovframework/spring/com/context-transaction.xml new file mode 100644 index 00000000..b3881e77 --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-transaction.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/spring/com/context-validator.xml b/src/main/resources/egovframework/spring/com/context-validator.xml new file mode 100644 index 00000000..7b66d760 --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-validator.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + classpath:/egovframework/validator/com-rules.xml + classpath:/egovframework/validator/validator-rules.xml + classpath:/egovframework/validator/**/*.xml + + + + + diff --git a/src/main/resources/egovframework/spring/com/context-whitelist.xml b/src/main/resources/egovframework/spring/com/context-whitelist.xml new file mode 100644 index 00000000..482e299b --- /dev/null +++ b/src/main/resources/egovframework/spring/com/context-whitelist.xml @@ -0,0 +1,35 @@ + + + + + + /egovframework/com/sym/mnu/stm/EgovSiteMap + /cmm/sym/mpm/EgovSiteMap + /egovframework/com/main_bottom + + + + + + + comthtrsmrcvmntrngloginfo + comtczip + + + + + /uss/umt/EgovMberSbscrbView.do + /uss/umt/EgovEntrprsMberSbscrbView.do + /uss/olh/qna/QnaCnRegistView.do + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/idgn/context-idgn-File.xml b/src/main/resources/egovframework/spring/com/idgn/context-idgn-File.xml new file mode 100644 index 00000000..6c667b11 --- /dev/null +++ b/src/main/resources/egovframework/spring/com/idgn/context-idgn-File.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/idgn/context-idgn-MailMsg.xml b/src/main/resources/egovframework/spring/com/idgn/context-idgn-MailMsg.xml new file mode 100644 index 00000000..33b2ae6e --- /dev/null +++ b/src/main/resources/egovframework/spring/com/idgn/context-idgn-MailMsg.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/com/idgn/context-idgn-RestDe.xml b/src/main/resources/egovframework/spring/com/idgn/context-idgn-RestDe.xml new file mode 100644 index 00000000..867b8a25 --- /dev/null +++ b/src/main/resources/egovframework/spring/com/idgn/context-idgn-RestDe.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/validator/com-rules.xml b/src/main/resources/egovframework/validator/com-rules.xml new file mode 100644 index 00000000..f8b44c68 --- /dev/null +++ b/src/main/resources/egovframework/validator/com-rules.xml @@ -0,0 +1,403 @@ + + + + + + + + + + 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + function checkPassword1(pwd) { + p_pass = pwd.value; + + if (pwd.value.length < 8 || pwd.value.length > 20 ){ + + pwd.value =""; + pwd.focus(); + return false; + } + return pwd; + } + ]]> + + + + + 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + function checkPassword2(pwd) { + var str = pwd.value; + for (var i=0; i < str .length; i++) { + ch_char = str .charAt(i); + ch = ch_char.charCodeAt(); + if( (ch >= 33 && ch <= 47) || (ch >= 58 && ch <= 64) || (ch >= 91 && ch <= 96) || (ch >= 123 && ch <= 126) ) { + return false; + } + } + return pwd; + } + ]]> + + + + + 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + function checkPassword3(pwd) { + p_pass = pwd.value; + var cnt=0,cnt2=1,cnt3=1; + var temp=""; + + for(i=0;i < p_pass.length;i++){ + temp_pass1 = p_pass.charAt(i); + next_pass = (parseInt(temp_pass1.charCodeAt(0)))+1; + temp_p = p_pass.charAt(i+1); + temp_pass2 = (parseInt(temp_p.charCodeAt(0))); + if (temp_pass2 == next_pass) + cnt2 = cnt2 + 1; + else + cnt2 = 1; + if (temp_pass1 == temp_p) + cnt3 = cnt3 + 1; + else + cnt3 = 1; + if (cnt2 > 3) break; + if (cnt3 > 3) break; + } + if (cnt2 > 3){ + pwd.value =""; + pwd.focus(); + return false; + } + return pwd; + } + ]]> + + + + + 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + function checkPassword4(pwd) { + p_pass = pwd.value; + var cnt=0,cnt2=1,cnt3=1; + var temp=""; + + for(i=0;i < p_pass.length;i++){ + temp_pass1 = p_pass.charAt(i); + next_pass = (parseInt(temp_pass1.charCodeAt(0)))+1; + temp_p = p_pass.charAt(i+1); + temp_pass2 = (parseInt(temp_p.charCodeAt(0))); + if (temp_pass2 == next_pass) + cnt2 = cnt2 + 1; + else + cnt2 = 1; + if (temp_pass1 == temp_p) + cnt3 = cnt3 + 1; + else + cnt3 = 1; + if (cnt2 > 3) break; + if (cnt3 > 3) break; + } + if (cnt3 > 3){ + pwd.value =""; + pwd.focus(); + return false; + } + return pwd; + } + ]]> + + + + = 0) { + value = field.options[si].value; + } + } else { + value = field.value; + } + + if (value.length > 0) { + + if (!isOK(value)) { + bValid = false; + if (i == 0) { + focusField = field; + } + fields[i++] = oInteger[x][1]; + + } else { + var iValue = parseInt(value); + if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) { + if (i == 0) { + focusField = field; + } + fields[i++] = oInteger[x][1]; + bValid = false; + } + } + } + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + function isOK(vv){ + if (vv >0) return true; + else return false; + } + ]]> + + + + 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + function checkEnglish(EnglishStr){ + for(var i=0;i + + + + + + diff --git a/src/main/resources/egovframework/validator/com/cop/ems/EgovMailRegist.xml b/src/main/resources/egovframework/validator/com/cop/ems/EgovMailRegist.xml new file mode 100644 index 00000000..fca445c3 --- /dev/null +++ b/src/main/resources/egovframework/validator/com/cop/ems/EgovMailRegist.xml @@ -0,0 +1,30 @@ + + + + + + +
    + + + + + maxlength + 50 + + + + + + + + maxlength + 60 + + +
    +
    + +
    \ No newline at end of file diff --git a/src/main/resources/egovframework/validator/com/sec/ram/EgovSecurityManage.xml b/src/main/resources/egovframework/validator/com/sec/ram/EgovSecurityManage.xml new file mode 100644 index 00000000..23eaa7e3 --- /dev/null +++ b/src/main/resources/egovframework/validator/com/sec/ram/EgovSecurityManage.xml @@ -0,0 +1,95 @@ + + + + + + +
    + + + + + maxlength + 30 + + + + + + + maxlength + 60 + + + + + + + maxlength + 200 + + +
    +
    + + +
    + + + + + maxlength + 60 + + + + + + + maxlength + 100 + + +
    +
    + + +
    + + + + + maxlength + 60 + + + + + + + maxlength + 300 + + + + + + + maxlength + 200 + + + + + + + maxlength + 10 + + +
    +
    + +
    \ No newline at end of file diff --git a/src/main/resources/egovframework/validator/com/sym/cal/EgovRestdeManage.xml b/src/main/resources/egovframework/validator/com/sym/cal/EgovRestdeManage.xml new file mode 100644 index 00000000..f3c016bd --- /dev/null +++ b/src/main/resources/egovframework/validator/com/sym/cal/EgovRestdeManage.xml @@ -0,0 +1,42 @@ + + + + + + +
    + + + + + maxlength + 8 + + + + + + + maxlength + 50 + + + + + + + maxlength + 200 + + + + + +
    + + +
    + +
    \ No newline at end of file diff --git a/src/main/resources/egovframework/validator/com/uat/uap/EgovLoginPolicy.xml b/src/main/resources/egovframework/validator/com/uat/uap/EgovLoginPolicy.xml new file mode 100644 index 00000000..45b954ae --- /dev/null +++ b/src/main/resources/egovframework/validator/com/uat/uap/EgovLoginPolicy.xml @@ -0,0 +1,24 @@ + + + + + + +
    + + + + + maxlength + 23 + + + + + +
    +
    + +
    \ No newline at end of file diff --git a/src/main/resources/egovframework/validator/com/uat/uia/EgovIdPasswordSearch.xml b/src/main/resources/egovframework/validator/com/uat/uia/EgovIdPasswordSearch.xml new file mode 100644 index 00000000..2afca8a2 --- /dev/null +++ b/src/main/resources/egovframework/validator/com/uat/uia/EgovIdPasswordSearch.xml @@ -0,0 +1,28 @@ + + + + + + +
    + + + + + + + + + + + + + + + +
    +
    + +
    \ No newline at end of file diff --git a/src/main/resources/egovframework/validator/com/utl/sim/EgovSysInfo.xml b/src/main/resources/egovframework/validator/com/utl/sim/EgovSysInfo.xml new file mode 100644 index 00000000..c3ae5f8f --- /dev/null +++ b/src/main/resources/egovframework/validator/com/utl/sim/EgovSysInfo.xml @@ -0,0 +1,16 @@ + + + + + + +
    + + + +
    +
    + +
    \ No newline at end of file diff --git a/src/main/resources/egovframework/validator/validator-rules.xml b/src/main/resources/egovframework/validator/validator-rules.xml new file mode 100644 index 00000000..c8acceba --- /dev/null +++ b/src/main/resources/egovframework/validator/validator-rules.xml @@ -0,0 +1,1222 @@ + + + + + + + + + + = 0) { + value = field.options[si].value; + } + } else if (field.type == 'radio' || field.type == 'checkbox') { + if (field.checked) { + value = field.value; + } + } else { + value = field.value; + } + if (trim(value).length == 0) { + if ((i == 0) && (field.type != 'hidden')) { + focusField = field; + } + fields[i++] = oRequired[x][1]; + isValid = false; + } + } else if (field.type == "select-multiple") { + var numOptions = field.options.length; + lastSelected=-1; + for(loop=numOptions-1;loop>=0;loop--) { + if(field.options[loop].selected) { + lastSelected = loop; + value = field.options[loop].value; + break; + } + } + if(lastSelected < 0 || trim(value).length == 0) { + if(i == 0) { + focusField = field; + } + fields[i++] = oRequired[x][1]; + isValid=false; + } + } else if ((field.length > 0) && (field[0].type == 'radio' || field[0].type == 'checkbox')) { + isChecked=-1; + for (loop=0;loop < field.length;loop++) { + if (field[loop].checked) { + isChecked=loop; + break; // only one needs to be checked + } + } + if (isChecked < 0) { + if (i == 0) { + focusField = field[0]; + } + fields[i++] = oRequired[x][1]; + isValid=false; + } + } + } + if (fields.length > 0) { + try{ + fields.focus(); + }catch(e){ + console.log(e); + } + alert(fields.join('\n')); + } + return isValid; + } + + // Trim whitespace from left and right sides of s. + function trim(s) { + return s.replace( /^\s*/, "" ).replace( /\s*$/, "" ); + } + + ]]> + + + + + + + + + + + + + 0) && (field.value.length < iMin)) { + if (i == 0) { + focusField = field; + } + fields[i++] = oMinLength[x][1]; + isValid = false; + } + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return isValid; + }]]> + + + + + + + + iMax) { + if (i == 0) { + focusField = field; + } + fields[i++] = oMaxLength[x][1]; + isValid = false; + } + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return isValid; + }]]> + + + + + + + + 0)) { + + if (!matchPattern(field.value, oMasked[x][2]("mask"))) { + if (i == 0) { + focusField = field; + } + fields[i++] = oMasked[x][1]; + isValid = false; + } + } + } + + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return isValid; + } + + function matchPattern(value, mask) { + return mask.exec(value); + }]]> + + + + + + + + = 0) { + value = field.options[si].value; + } + } else { + value = field.value; + } + + if (value.length > 0) { + if (!isAllDigits(value)) { + bValid = false; + if (i == 0) { + focusField = field; + } + fields[i++] = oByte[x][1]; + + } else { + + var iValue = parseInt(value); + if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) { + if (i == 0) { + focusField = field; + } + fields[i++] = oByte[x][1]; + bValid = false; + } + } + } + + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + }]]> + + + + + + + + = 0) { + value = field.options[si].value; + } + } else { + value = field.value; + } + + if (value.length > 0) { + if (!isAllDigits(value)) { + bValid = false; + if (i == 0) { + focusField = field; + } + fields[i++] = oShort[x][1]; + + } else { + + var iValue = parseInt(value); + if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) { + if (i == 0) { + focusField = field; + } + fields[i++] = oShort[x][1]; + bValid = false; + } + } + } + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + }]]> + + + + + + + + = 0) { + value = field.options[si].value; + } + } else { + value = field.value; + } + + if (value.length > 0) { + + if (!isAllDigits(value)) { + bValid = false; + if (i == 0) { + focusField = field; + } + fields[i++] = oInteger[x][1]; + + } else { + var iValue = parseInt(value); + if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) { + if (i == 0) { + focusField = field; + } + fields[i++] = oInteger[x][1]; + bValid = false; + } + } + } + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + function isAllDigits(argvalue) { + argvalue = argvalue.toString(); + var validChars = "0123456789"; + var startFrom = 0; + if (argvalue.substring(0, 2) == "0x") { + validChars = "0123456789abcdefABCDEF"; + startFrom = 2; + } else if (argvalue.charAt(0) == "0") { + validChars = "01234567"; + startFrom = 1; + } else if (argvalue.charAt(0) == "-") { + startFrom = 1; + } + + for (var n = startFrom; n < argvalue.length; n++) { + if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false; + } + return true; + }]]> + + + + + + + + + + + = 0) { + value = field.options[si].value; + } + } else { + value = field.value; + } + + if (value.length > 0) { + // remove '.' before checking digits + var tempArray = value.split('.'); + var joinedString= tempArray.join(''); + + if (!isAllDigits(joinedString)) { + bValid = false; + if (i == 0) { + focusField = field; + } + fields[i++] = oFloat[x][1]; + + } else { + var iValue = parseFloat(value); + if (isNaN(iValue)) { + if (i == 0) { + focusField = field; + } + fields[i++] = oFloat[x][1]; + bValid = false; + } + } + } + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + }]]> + + + + + + + + + + + 0) && + (datePattern.length > 0)) { + var MONTH = "MM"; + var DAY = "dd"; + var YEAR = "yyyy"; + var orderMonth = datePattern.indexOf(MONTH); + var orderDay = datePattern.indexOf(DAY); + var orderYear = datePattern.indexOf(YEAR); + if ((orderDay < orderYear && orderDay > orderMonth)) { + var iDelim1 = orderMonth + MONTH.length; + var iDelim2 = orderDay + DAY.length; + var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); + var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); + if (iDelim1 == orderDay && iDelim2 == orderYear) { + dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$"); + } else if (iDelim1 == orderDay) { + dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$"); + } else if (iDelim2 == orderYear) { + dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$"); + } else { + dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$"); + } + var matched = dateRegexp.exec(value); + if(matched != null) { + if (!isValidDate(matched[2], matched[1], matched[3])) { + if (i == 0) { + focusField = form[oDate[x][0]]; + } + fields[i++] = oDate[x][1]; + bValid = false; + } + } else { + if (i == 0) { + focusField = form[oDate[x][0]]; + } + fields[i++] = oDate[x][1]; + bValid = false; + } + } else if ((orderMonth < orderYear && orderMonth > orderDay)) { + var iDelim1 = orderDay + DAY.length; + var iDelim2 = orderMonth + MONTH.length; + var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); + var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); + if (iDelim1 == orderMonth && iDelim2 == orderYear) { + dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$"); + } else if (iDelim1 == orderMonth) { + dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$"); + } else if (iDelim2 == orderYear) { + dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$"); + } else { + dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$"); + } + var matched = dateRegexp.exec(value); + if(matched != null) { + if (!isValidDate(matched[1], matched[2], matched[3])) { + if (i == 0) { + focusField = form[oDate[x][0]]; + } + fields[i++] = oDate[x][1]; + bValid = false; + } + } else { + if (i == 0) { + focusField = form[oDate[x][0]]; + } + fields[i++] = oDate[x][1]; + bValid = false; + } + } else if ((orderMonth > orderYear && orderMonth < orderDay)) { + var iDelim1 = orderYear + YEAR.length; + var iDelim2 = orderMonth + MONTH.length; + var delim1 = datePattern.substring(iDelim1, iDelim1 + 1); + var delim2 = datePattern.substring(iDelim2, iDelim2 + 1); + if (iDelim1 == orderMonth && iDelim2 == orderDay) { + dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$"); + } else if (iDelim1 == orderMonth) { + dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$"); + } else if (iDelim2 == orderDay) { + dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$"); + } else { + dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$"); + } + var matched = dateRegexp.exec(value); + if(matched != null) { + if (!isValidDate(matched[3], matched[2], matched[1])) { + if (i == 0) { + focusField = form[oDate[x][0]]; + } + fields[i++] = oDate[x][1]; + bValid = false; + } + } else { + if (i == 0) { + focusField = form[oDate[x][0]]; + } + fields[i++] = oDate[x][1]; + bValid = false; + } + } else { + if (i == 0) { + focusField = form[oDate[x][0]]; + } + fields[i++] = oDate[x][1]; + bValid = false; + } + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + function isValidDate(day, month, year) { + if (month < 1 || month > 12) { + return false; + } + if (day < 1 || day > 31) { + return false; + } + if ((month == 4 || month == 6 || month == 9 || month == 11) && + (day == 31)) { + return false; + } + if (month == 2) { + var leap = (year % 4 == 0 && + (year % 100 != 0 || year % 400 == 0)); + if (day>29 || (day == 29 && !leap)) { + return false; + } + } + return true; + }]]> + + + + + + + + + + + + + + + 0)) { + + var iMin = parseInt(oRange[x][2]("min")); + var iMax = parseInt(oRange[x][2]("max")); + var iValue = parseInt(field.value); + if (!(iValue >= iMin && iValue <= iMax)) { + if (i == 0) { + focusField = field; + } + fields[i++] = oRange[x][1]; + isValid = false; + } + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return isValid; + }]]> + + + + + + + 0)) { + + var fMin = parseFloat(oRange[x][2]("min")); + var fMax = parseFloat(oRange[x][2]("max")); + var fValue = parseFloat(field.value); + if (!(fValue >= fMin && fValue <= fMax)) { + if (i == 0) { + focusField = field; + } + fields[i++] = oRange[x][1]; + isValid = false; + } + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return isValid; + }]]> + + + + + + + 0)) { + if (!luhnCheck(form[oCreditCard[x][0]].value)) { + if (i == 0) { + focusField = form[oCreditCard[x][0]]; + } + fields[i++] = oCreditCard[x][1]; + bValid = false; + } + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + /** + * Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl + */ + function luhnCheck(cardNumber) { + if (isLuhnNum(cardNumber)) { + var no_digit = cardNumber.length; + var oddoeven = no_digit & 1; + var sum = 0; + for (var count = 0; count < no_digit; count++) { + var digit = parseInt(cardNumber.charAt(count)); + if (!((count & 1) ^ oddoeven)) { + digit *= 2; + if (digit > 9) digit -= 9; + }; + sum += digit; + }; + if (sum == 0) return false; + if (sum % 10 == 0) return true; + }; + return false; + } + + function isLuhnNum(argvalue) { + argvalue = argvalue.toString(); + if (argvalue.length == 0) { + return false; + } + for (var n = 0; n < argvalue.length; n++) { + if ((argvalue.substring(n, n+1) < "0") || + (argvalue.substring(n,n+1) > "9")) { + return false; + } + } + return true; + }]]> + + + + + + + + 0)) { + if (!checkEmail(form[oEmail[x][0]].value)) { + if (i == 0) { + focusField = form[oEmail[x][0]]; + } + fields[i++] = oEmail[x][1]; + bValid = false; + } + } + } + if (fields.length > 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + /** + * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com), + * http://javascript.internet.com + */ + function checkEmail(emailStr) { + if (emailStr.length == 0) { + return true; + } + var emailPat=/^(.+)@(.+)$/; + var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"; + var validChars="\[^\\s" + specialChars + "\]"; + var quotedUser="(\"[^\"]*\")"; + var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/; + var atom=validChars + '+'; + var word="(" + atom + "|" + quotedUser + ")"; + var userPat=new RegExp("^" + word + "(\\." + word + ")*$"); + var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$"); + var matchArray=emailStr.match(emailPat); + if (matchArray == null) { + return false; + } + var user=matchArray[1]; + var domain=matchArray[2]; + if (user.match(userPat) == null) { + return false; + } + var IPArray = domain.match(ipDomainPat); + if (IPArray != null) { + for (var i = 1; i <= 4; i++) { + if (IPArray[i] > 255) { + return false; + } + } + return true; + } + var domainArray=domain.match(domainPat); + if (domainArray == null) { + return false; + } + var atomPat=new RegExp(atom,"g"); + var domArr=domain.match(atomPat); + var len=domArr.length; + if ((domArr[domArr.length-1].length < 2) || + (domArr[domArr.length-1].length > 3)) { + return false; + } + if (len < 2) { + return false; + } + return true; + }]]> + + + + + + + 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + /** + * Reference: JS Guide + * http://jsguide.net/ver2/articles/frame.php?artnum=002 + */ + function checkIhIdNum(ihidnum){ + + fmt = /^\d{6}[1234]\d{6}$/; + if(!fmt.test(ihidnum)){ + return false; + } + + birthYear = (ihidnum.charAt(7) <= "2") ? "19" : "20"; + birthYear += ihidnum.substr(0, 2); + birthMonth = ihidnum.substr(2, 2) - 1; + birthDate = ihidnum.substr(4, 2); + birth = new Date(birthYear, birthMonth, birthDate); + + if( birth.getYear() % 100 != ihidnum.substr(0, 2) || + birth.getMonth() != birthMonth || + birth.getDate() != birthDate) { + return false; + } + + var arrDivide = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5]; + var checkdigit = 0; + for(var i=0;i + + + + 0) { + focusField.focus(); + alert(fields.join('\n')); + } + return bValid; + } + + function checkKorean(koreanStr){ + for(var i=0;i + + + + + + + diff --git a/src/main/resources/iams/nlib/dapi-url-map.properties b/src/main/resources/iams/nlib/dapi-url-map.properties new file mode 100644 index 00000000..ec143ddc --- /dev/null +++ b/src/main/resources/iams/nlib/dapi-url-map.properties @@ -0,0 +1,20 @@ +#----------------------------------------------------------------------- +# +# dapi-url-map.properties +# +# [\ud615\uc2dd] \uc11c\ube44\uc2a4\uba85 \uc8fc\uc785\ubcc0\uc218\uba85.\ud568\uc218\uba85=URI +# +#----------------------------------------------------------------------- +# 1. key = value \uad6c\uc870\uc785\ub2c8\ub2e4. +# 2. key\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \ud3ec\ud568\ubd88\uac00, value\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \uac00\ub2a5 +# 3. key\uac12\uc73c\ub85c \ud55c\uae00\uc744 \uc0ac\uc6a9\ubd88\uac00, value\uac12\uc740 \ud55c\uae00\uc0ac\uc6a9\uc774 \uac00\ub2a5 +# 4. \uc904\uc744 \ubc14\uafc0 \ud544\uc694\uac00 \uc788\uc73c\uba74 '\'\ub97c \ub77c\uc778\uc758 \ub05d\uc5d0 \ucd94\uac00(\ub9cc\uc57d '\'\ubb38\uc790\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\ub294 '\\'\ub97c \uc0ac\uc6a9) +# 5. Windows\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '\\' or '/' ('\' \uc0ac\uc6a9\ud558\uba74 \uc548\ub428) +# 6. Unix\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '/' +# 7. \uc8fc\uc11d\ubb38 \ucc98\ub9ac\ub294 #\uc0ac\uc6a9 +# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83 +#----------------------------------------------------------------------- + +# \uc0d8\ud50c \uc790\ub8cc \uc870\ud68c +sampleDataApiService.getSampleInfo = /uac/service/exports + diff --git a/src/main/resources/iams/nlib/nlib.properties b/src/main/resources/iams/nlib/nlib.properties new file mode 100644 index 00000000..72e81117 --- /dev/null +++ b/src/main/resources/iams/nlib/nlib.properties @@ -0,0 +1,29 @@ +#----------------------------------------------------------------------- +# +# nlib.properties : \uc628\ub77c\uc778\uc790\ub8cc\ub300\ucd9c\uad00\ub9ac\uc2dc\uc2a4\ud15c +# +# @\ud504\ub85c\uc81d\ud2b8\uba85: \uc9c0\ubc29\ubb38\ud654\uc6d0 \ud1b5\ud569\uc790\ub8cc\uad00\ub9ac\uc2dc\uc2a4\ud15c \uad6c\ucd95\uc0ac\uc5c5 (2021) +#----------------------------------------------------------------------- +# 1. key = value \uad6c\uc870\uc785\ub2c8\ub2e4. +# 2. key\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \ud3ec\ud568\ubd88\uac00, value\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \uac00\ub2a5 +# 3. key\uac12\uc73c\ub85c \ud55c\uae00\uc744 \uc0ac\uc6a9\ubd88\uac00, value\uac12\uc740 \ud55c\uae00\uc0ac\uc6a9\uc774 \uac00\ub2a5 +# 4. \uc904\uc744 \ubc14\uafc0 \ud544\uc694\uac00 \uc788\uc73c\uba74 '\'\ub97c \ub77c\uc778\uc758 \ub05d\uc5d0 \ucd94\uac00(\ub9cc\uc57d '\'\ubb38\uc790\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\ub294 '\\'\ub97c \uc0ac\uc6a9) +# 5. Windows\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '\\' or '/' ('\' \uc0ac\uc6a9\ud558\uba74 \uc548\ub428) +# 6. Unix\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '/' +# 7. \uc8fc\uc11d\ubb38 \ucc98\ub9ac\ub294 #\uc0ac\uc6a9 +# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83 +#----------------------------------------------------------------------- + +#---------------------------------------- +# DataAPI \uc811\uc18d\uc815\ubcf4 +#---------------------------------------- +# \uac1c\ubc1c \uc11c\ubc84 +#dataapi.server.ip = 210.181.197.70 +#dataapi.server.port = 80 +#dataapi.server.protocol = http + +# \ub85c\uceec \uc11c\ubc84 +dataapi.server.ip = localhost +dataapi.server.port = 8088 +dataapi.server.protocol = http + diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml new file mode 100644 index 00000000..2cec9b24 --- /dev/null +++ b/src/main/resources/log4j2.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/META-INF/MANIFEST.MF b/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 00000000..254272e1 --- /dev/null +++ b/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml b/src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml new file mode 100644 index 00000000..06577642 --- /dev/null +++ b/src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + egovframework/com/cmm/error/dataAccessFailure + egovframework/com/cmm/error/dataAccessFailure + egovframework/com/cmm/error/egovBizException + egovframework/com/uat/uia/EgovLoginUsr + egovframework/com/cmm/error/EgovXssException + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/EgovMainView.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/EgovMainView.jsp new file mode 100644 index 00000000..8e6d2fa9 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/EgovMainView.jsp @@ -0,0 +1,91 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + +<spring:message code="comSymMnuMpm.mainView.mainViewTitle"/> + + + + + + + + + + +
    + + +
    +
    +

    +
    + +
    + +

    +
    + +
    + +

    +
    + +
    +
    + +
    + +

    +
    + +
    + + +

    +
    + +
    + +

    + +
    +
    + + +

    +
    + + + +
    + + + +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovModal.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovModal.jsp new file mode 100644 index 00000000..6c008381 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovModal.jsp @@ -0,0 +1,57 @@ +<% + /** + * @Class Name : EgovModal.jsp + * @Description : 모달 JSP + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2016.07.13 장동한 최초 생성 + * + * @author 2016 표준프레임워크유지보수 개발팀 장동한 + * @since 2016.07.13 + * @version 1.0 + * @see + * + */ +%> +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ page import="egovframework.com.cmm.EgovWebUtil" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<% + String sScriptYn = request.getParameter("scriptYn") == null ? "" : (String)request.getParameter("scriptYn"); + String sModelName = request.getParameter("modalName") == null ? "" : (String)request.getParameter("modalName"); +%> +<%if(sScriptYn.equals("Y")){ %> + + +<%} %> + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitBottom.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitBottom.jsp new file mode 100644 index 00000000..356cf839 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitBottom.jsp @@ -0,0 +1,18 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + +eGovFrame 공통 컴포넌트 + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitContent.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitContent.jsp new file mode 100644 index 00000000..785c0174 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitContent.jsp @@ -0,0 +1,35 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + +eGovFrame <spring:message code="comCmm.unitContent.1"/> + + + + ${loginVO.name } + + + + +

    +

    +

    +

    +

    + +
    egovframework.com.cmm.web.EgovComIndexController.java

    + +

    +


    +

    +

    +

    +

    +

    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitLeft.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitLeft.jsp new file mode 100644 index 00000000..3104b0ec --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitLeft.jsp @@ -0,0 +1,107 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + +eGovFrame 공통 컴포넌트 + + + + +

    + + + + + + + + + + + +
      + + + +
    • + +
    • + +
      + +
    • + +
    • + +
      + + +
    • + +
    • + +
      + +
    • + +
    • + +
      + +
    • + +
    • + +
      + +
    • + +
    • + +
      + +
    • + +
    • + +
      + +
    • + +
    • + +
      + +
    • + +
    • + +
      + +
    • + +
    • + +
      + +
    • + +
    • + +
      + + comCmm.left.${result.order} + +
      +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitMain.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitMain.jsp new file mode 100644 index 00000000..2a9199d7 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitMain.jsp @@ -0,0 +1,17 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + +eGovFrame 공통 컴포넌트 + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitTop.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitTop.jsp new file mode 100644 index 00000000..9d0c5ddd --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/EgovUnitTop.jsp @@ -0,0 +1,23 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + +eGovFrame 공통 컴포넌트 + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/EgovXssException.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/EgovXssException.jsp new file mode 100644 index 00000000..d0985ec7 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/EgovXssException.jsp @@ -0,0 +1,38 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + +<spring:message code="title.html"/> + + + + + +
    +

    +
    + +

    User authorization Error

    + +
    +
    +
    +

    ${exception.message}

    +


    + +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/accessDenied.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/accessDenied.jsp new file mode 100644 index 00000000..79323da1 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/accessDenied.jsp @@ -0,0 +1,38 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> + + + + + +<spring:message code="title.html"/> + + + + +
    +

    +
    + +

    ${pageTitle}

    + +
    +
    +
    +

    +

    ${pageTitle}

    + +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/dataAccessFailure.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/dataAccessFailure.jsp new file mode 100644 index 00000000..e8a8bd7e --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/dataAccessFailure.jsp @@ -0,0 +1,39 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> + + + + + +<spring:message code="title.html"/> + + + + + +
    +

    +
    + +

    ${pageTitle}

    + +
    +
    +
    +

    +

    ${pageTitle}

    + +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovBizException.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovBizException.jsp new file mode 100644 index 00000000..4b474248 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovBizException.jsp @@ -0,0 +1,39 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> + + + + + +<spring:message code="title.html"/> + + + + + +
    +

    +
    + +

    ${pageTitle}

    + +
    +
    +
    +

    +

    ${pageTitle}

    + +
    +
    +
    +
    +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovError.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovError.jsp new file mode 100644 index 00000000..3dfbde6f --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovError.jsp @@ -0,0 +1,39 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> + + + + + +<spring:message code="title.html"/> + + + + + +
    +

    +
    + +

    ${pageTitle}

    + +
    +
    +
    +

    +

    ${pageTitle}

    + +
    +
    +
    +
    +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovHttpSessionException.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovHttpSessionException.jsp new file mode 100644 index 00000000..abfd7a89 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/error/egovHttpSessionException.jsp @@ -0,0 +1,39 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> + + + + + +<spring:message code="title.html"/> + + + + + +
    +

    +
    + +

    ${pageTitle}

    + +
    +
    +
    +

    +

    ${pageTitle}

    + +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/fms/EgovFileList.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/fms/EgovFileList.jsp new file mode 100644 index 00000000..c2a3222c --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/fms/EgovFileList.jsp @@ -0,0 +1,150 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> + +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<% + +/** + * @Class Name : EgovFileList.jsp + * @Description : 파일 목록화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ---------- ------ --------------------------- + * @ 2009.03.26 이삼섭 최초 생성 + * 2011.07.20 옥찬우 Tag id속성 추가( Line : 68 ) + * 2018.09.11 신용호 불필요한 function 삭제 - fn_egov_multi_selector_update_delete + * + * @author 공통서비스 개발팀 이삼섭 + * @since 2009.03.26 + * @version 1.0 + * @see + * + */ +%> + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +  [ byte] + ','','egov_file_view_table_tr_${status.count}');" alt=""> + + + ','')"> +  [ byte] + + + + +
    + +
    + +
    diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/fms/EgovImgFileList.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/fms/EgovImgFileList.jsp new file mode 100644 index 00000000..331c0d3a --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/fms/EgovImgFileList.jsp @@ -0,0 +1,39 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<% + /** + * @Class Name : EgovImgFileList.jsp + * @Description : 이미지 파일 조회화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.31 이삼섭 최초 생성 + * + * @author 공통서비스 개발팀 이삼섭 + * @since 2009.03.31 + * @version 1.0 + * @see + * + */ +%> +이미지파일목록 + + + + + + + + + + + + + +
    + ?atchFileId=&fileSn=' width="640" alt="해당파일이미지"/> +
    diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/validator.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/validator.jsp new file mode 100644 index 00000000..5fd6058f --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cmm/validator.jsp @@ -0,0 +1,4 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page language="java" contentType="application/javascript" pageEncoding="UTF-8"%> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailDetail.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailDetail.jsp new file mode 100644 index 00000000..3f8f9ff2 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailDetail.jsp @@ -0,0 +1,140 @@ +<% + /** + * @Class Name : EgovMailDetail.jsp + * @Description : 발송메일 상세 조회 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.11 박지욱 최초 생성 + * 2016.06.13 장동한 표준프레임워크 v3.6 개선 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.11 + * @version 1.0 + * @see + * + */ +%> +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<%pageContext.setAttribute("crlf", "\r\n"); %> + + + + +<spring:message code="comCopSymEms.regist.title" /> <spring:message code="title.detail" /> + + + + + + + + + + + + +
    +
    + + +

    + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${pageTitle}
    ${resultInfo.dsptchPerson}
    ${resultInfo.recptnPerson}
    ${resultInfo.sj}
    ${resultInfo.sndngResultCode}
    ${resultInfo.mssageId}.xml
    + + +   +
    + +
    + + "> + "> +
    + +
    +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailDtls.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailDtls.jsp new file mode 100644 index 00000000..00907b67 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailDtls.jsp @@ -0,0 +1,229 @@ +<% + /** + * @Class Name : EgovMailDtls.jsp + * @Description : 발송메일 내역 조회 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- --------- --------------------------- + * @ 2009.03.11 박지욱 최초 생성 + * @ 2011.09.30 이기하 데이터 없을시 메시지 추가 + * 2016.06.13 장동한 표준프레임워크 v3.6 개선 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.11 + * @version 1.0 + * @see + * + */ +%> +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> + + + + +${pageTitle} <spring:message code="title.list" /> + + + + + + + + + + +
    +

    ${pageTitle}

    +
    + + + + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + ${resultInfo.sndngResultCode}${resultInfo.dsptchPerson}${resultInfo.recptnPerson}${resultInfo.sj}${resultInfo.sndngDe}
    + + + + + +
    +
    + +
    + + +
    + +
    + + + +
    +
    + +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailRegist.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailRegist.jsp new file mode 100644 index 00000000..0a1d055e --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/cop/ems/EgovMailRegist.jsp @@ -0,0 +1,156 @@ +<% +/** + * @Class Name : EgovMailRegist.jsp + * @Description : 발송메일 등록 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정 내용 + * @ ---------- -------- --------------------------- + * @ 2009.03.11 박지욱 최초 생성 + * @ 2011.12.06 이기하 첨부파일 기능 추가(fileStreCours) + * 2016.06.13 장동한 표준프레임워크 v3.6 개선 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.11 + * @version 1.0 + * @see + * + */ +%> +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> + + + + +${pageTitle} <spring:message code="title.create" /> + + + + + + + + + + + + + +
    + +

    ${pageTitle}

    + + + + + + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${title} * + +
    +
    ${title} * + +
    +
    ${title} + + + + + + + +
    +
    +
    +
    ${title} + +
    + + +
    + " title=" " /> +
    + + +
    + + +
    + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/head.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/head.jsp new file mode 100644 index 00000000..9062b344 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/head.jsp @@ -0,0 +1,47 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ page import="egovframework.com.cmm.util.EgovUserDetailsHelper" %> + + + + +
    + + +
    + +
    +
      +
    • +
    • 로그아웃
    • +
    +
    +
    +
    + +
    + +
    diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/main_bottom.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/main_bottom.jsp new file mode 100644 index 00000000..f346ef44 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/main_bottom.jsp @@ -0,0 +1,22 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + +<spring:message code="comSymMnuMpm.main_bottom.mainBottomTitle"/> + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/main_head.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/main_head.jsp new file mode 100644 index 00000000..b4dbec42 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/main_head.jsp @@ -0,0 +1,66 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + +HeadMenu + + + + + + + +
    + + +
    + +
    + +
    +
      +
    • 공통서비스 테스트 사이트
    • +
    • 로그아웃
    • +
    +
    +
    +
    + +
    + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/main_left.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/main_left.jsp new file mode 100644 index 00000000..35e3f767 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/main_left.jsp @@ -0,0 +1,67 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> + +<% + /** + * @Class Name : left.jsp + * @Description : 좌측메뉴화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.10 이용 최초 생성 + * + * @author 공통서비스 개발팀 이용 + * @since 2009.03.10 + * @version 1.0 + * @see + * + */ + + /* Image Path 설정 */ + String imagePath_icon = "/images/egovframework/com/sym/mnu/mpm/icon/"; + String imagePath_button = "/images/egovframework/com/sym/mnu/mpm/button/"; +%> + + + + + +메뉴정보등록 + + + + +
    +
    + + + + + + +
    +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/menu_index.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/menu_index.jsp new file mode 100644 index 00000000..5bf78d47 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/menu_index.jsp @@ -0,0 +1,38 @@ + +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<% + /** + * @Class Name : EgovMainMenuIndex.jsp + * @Description : MainMenuIndex Page + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.10 이용 최초 생성 + * + * @author 공통서비스 개발팀 이용 + * @since 2009.03.10 + * @version 1.0 + * @see + * ?vStartP= + */ + +%> + + + + +Menu Index frame + + + + + + " scrolling="no" name="main_left" marginwidth="0" marginheight="0"> + " name="main_right" marginwidth="0" marginheight="0"> + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorInsert.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorInsert.jsp new file mode 100644 index 00000000..d2ca4cd0 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorInsert.jsp @@ -0,0 +1,135 @@ +<% +/** + * @Class Name : EgovAuthorInsert.java + * @Description : EgovAuthorInsert jsp + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.02.01 lee.m.j 최초 생성 + * 2016.06.13 장동한 표준프레임워크 v3.6 개선 + * + * @author lee.m.j + * @since 2009.03.11 + * @version 1.0 + * @see + * + */ + %> +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> + + + + +${pageTitle} <spring:message code="title.create" /> + + + + + + + + + + + + +
    + +

    ${pageTitle}

    + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${pageTitle}
    ${title} * + +
    +
    ${title} * + +
    +
    ${title} * + +
    +
    + + +
    + " title=" " /> + "> +
    + +
    +
    + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorManage.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorManage.jsp new file mode 100644 index 00000000..ac2836e3 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorManage.jsp @@ -0,0 +1,236 @@ +<% + /** + * @Class Name : EgovAuthorManage.java + * @Description : EgovAuthorManage List 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.01 Lee.m.j 최초 생성 + * 2016.06.13 장동한 표준프레임워크 v3.6 개선 + * + * @author 실행환경 개발팀 홍길동 + * @since 2009.02.01 + * @version 1.0 + * @see + * + */ +%> +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> + + + + +${pageTitle} <spring:message code="title.list" /> + + + + + + + + +
    +

    ${pageTitle}

    + + + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${pageTitle}
    ">
    " />')">" onclick="javascript:fncSelectAuthorRole('')">롤 정보
    + + + + + + + +
    + + + + + + +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorRoleManage.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorRoleManage.jsp new file mode 100644 index 00000000..8416fde0 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorRoleManage.jsp @@ -0,0 +1,257 @@ +<% +/** + * @Class Name : EgovAuthorRoleManage.java + * @Description : EgovAuthorRoleManage.jsp + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ --------- -------- --------------------------- + * @ 2009.02.01 lee.m.j 최초 생성 + * 2016.06.13 장동한 표준프레임워크 v3.6 개선 + * + * @author lee.m.j + * @since 2009.03.21 + * @version 1.0 + * @see + * + */ +%> +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> + + + + +${pageTitle} <spring:message code="title.list" /> + + + + + +
    + +

    ${pageTitle}

    + + + + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${pageTitle}
    ">
    " /> + +
    + + + + + + + + + + + + + "/> + +
    +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorUpdate.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorUpdate.jsp new file mode 100644 index 00000000..9bbf61f4 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sec/ram/EgovAuthorUpdate.jsp @@ -0,0 +1,127 @@ +<% +/** + * @Class Name : egovAuthorUpdate.java + * @Description : egovAuthorUpdate jsp + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.02.01 lee.m.j 최초 생성 + * 2016.06.13 장동한 표준프레임워크 v3.6 개선 + * + * @author lee.m.j + * @since 2009.03.11 + * @version 1.0 + * @see + * + */ + %> +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> + + + + +${pageTitle} <spring:message code="title.update" /> + + + + + + + + + + + + +
    + +

    ${pageTitle}

    + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${pageTitle}
    ${title} * + +
    +
    ${title} * + +
    +
    ${title} * + +
    +
    + + +
    + " title=" " /> + "> +
    + +
    + + + +
    + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministCalPopup.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministCalPopup.jsp new file mode 100644 index 00000000..d16bb78e --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministCalPopup.jsp @@ -0,0 +1,42 @@ + +<% + /** + * @Class Name : EgovAdministCalPopup.jsp + * @Description : EgovAdministCalPopup 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + +행정달력 + + + + +
    + +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministCalendar.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministCalendar.jsp new file mode 100644 index 00000000..b44c81cf --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministCalendar.jsp @@ -0,0 +1,168 @@ + +<% + /** + * @Class Name : EgovAdministCalendar.jsp + * @Description : EgovAdministCalendar 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + +행정달력 + + + +Insert title here + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + 이전년도 + + 이전달 + ${resultList[0].year}년${resultList[0].month}월 + 다음달 + + 다음년도 +
    + ${result.day} + + ${result.day} +
    +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministDayCalendar.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministDayCalendar.jsp new file mode 100644 index 00000000..988a35b9 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministDayCalendar.jsp @@ -0,0 +1,171 @@ + +<% + /** + * @Class Name : EgovAdministDayCalendar.jsp + * @Description : EgovAdministDayCalendar 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + + + + + + + + + + + +행정달력 + + + +행정달력 일간 + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    요일날짜휴일
    color:red;} > + + + + + + + + color:red;} > + ${resultList[0].year}년 ${resultList[0].month}월 ${resultList[0].day}일 + + + +
    ${restde.restdeNm}
    +
    +
    +
    +
    +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministMonthCalendar.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministMonthCalendar.jsp new file mode 100644 index 00000000..5e0d1d28 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministMonthCalendar.jsp @@ -0,0 +1,165 @@ + +<% + /** + * @Class Name : EgovAdministMonthCalendar.jsp + * @Description : EgovAdministMonthCalendar 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + + + + + + + + +행정달력 + + + +행정달력 월간 + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result.day} + +
    ${restde.restdeNm}
    +
    +
    ${result.day} + +
    ${restde.restdeNm}
    +
    +
    ${result.day}
    +
    +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministWeekCalendar.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministWeekCalendar.jsp new file mode 100644 index 00000000..41dd2ee2 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministWeekCalendar.jsp @@ -0,0 +1,222 @@ + +<% + /** + * @Class Name : EgovAdministWeekCalendar.jsp + * @Description : EgovAdministWeekCalendar 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + + + + + + + + + + +행정달력 + + + +행정달력 주간 + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    요일날짜휴일
    color:red;} > + ${resultList_1[0].year}년 ${resultList_1[0].month}월 ${resultList_1[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_2[0].year}년 ${resultList_2[0].month}월 ${resultList_2[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_3[0].year}년 ${resultList_3[0].month}월 ${resultList_3[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_4[0].year}년 ${resultList_4[0].month}월 ${resultList_4[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_5[0].year}년 ${resultList_5[0].month}월 ${resultList_5[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_6[0].year}년 ${resultList_6[0].month}월 ${resultList_6[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_7[0].year}년 ${resultList_7[0].month}월 ${resultList_7[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    +
    +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministYearCalendar.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministYearCalendar.jsp new file mode 100644 index 00000000..8a68f383 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovAdministYearCalendar.jsp @@ -0,0 +1,832 @@ + +<% + /** + * @Class Name : EgovAdministYearCalendar.jsp + * @Description : EgovAdministYearCalendar 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + + + + + + + + +행정달력 + + + +행정달력 연간 + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_1.day} + +
    ${restde_1.restdeNm}
    +
    +
    ${result_1.day} + +
    ${restde_1.restdeNm}
    +
    +
    ${result_1.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_2.day} + +
    ${restde_2.restdeNm}
    +
    +
    ${result_2.day} + +
    ${restde_2.restdeNm}
    +
    +
    ${result_2.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_3.day} + +
    ${restde_3.restdeNm}
    +
    +
    ${result_3.day} + +
    ${restde_3.restdeNm}
    +
    +
    ${result_3.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_4.day} + +
    ${restde_4.restdeNm}
    +
    +
    ${result_4.day} + +
    ${restde_4.restdeNm}
    +
    +
    ${result_4.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_5.day} + +
    ${restde_5.restdeNm}
    +
    +
    ${result_5.day} + +
    ${restde_5.restdeNm}
    +
    +
    ${result_5.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_6.day} + +
    ${restde_6.restdeNm}
    +
    +
    ${result_6.day} + +
    ${restde_6.restdeNm}
    +
    +
    ${result_6.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_7.day} + +
    ${restde_7.restdeNm}
    +
    +
    ${result_7.day} + +
    ${restde_7.restdeNm}
    +
    +
    ${result_7.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_8.day} + +
    ${restde_8.restdeNm}
    +
    +
    ${result_8.day} + +
    ${restde_8.restdeNm}
    +
    +
    ${result_8.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_9.day} + +
    ${restde_9.restdeNm}
    +
    +
    ${result_9.day} + +
    ${restde_9.restdeNm}
    +
    +
    ${result_9.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_10.day} + +
    ${restde_10.restdeNm}
    +
    +
    ${result_10.day} + +
    ${restde_10.restdeNm}
    +
    +
    ${result_10.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_11.day} + +
    ${restde_11.restdeNm}
    +
    +
    ${result_11.day} + +
    ${restde_11.restdeNm}
    +
    +
    ${result_11.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_12.day} + +
    ${restde_12.restdeNm}
    +
    +
    ${result_12.day} + +
    ${restde_12.restdeNm}
    +
    +
    ${result_12.day}
    + + + + + + + +
    +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovCalPopup.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovCalPopup.jsp new file mode 100644 index 00000000..dacf76ef --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovCalPopup.jsp @@ -0,0 +1,43 @@ + +<% + /** + * @Class Name : EgovNormalCalPopup.jsp + * @Description : EgovNormalCalPopup 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.10.13 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.10.13 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + +달력 + + + + +
    + +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovCalendar.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovCalendar.jsp new file mode 100644 index 00000000..f146e364 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovCalendar.jsp @@ -0,0 +1,160 @@ + +<% + /** + * @Class Name : EgovCalendar.jsp + * @Description : EgovCalendar 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.10.13 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.10.13 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + +달력 + + + +달력 + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + 이전년도 + + 이전달 + ${resultList[0].year}년${resultList[0].month}월 + 다음달 + + 다음년도 +
    + ${result.day} + + ${result.day} +
    +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalCalPopup.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalCalPopup.jsp new file mode 100644 index 00000000..97a013a5 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalCalPopup.jsp @@ -0,0 +1,44 @@ + +<% + /** + * @Class Name : EgovNormalCalPopup.jsp + * @Description : EgovNormalCalPopup 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + +일반달력 + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalCalendar.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalCalendar.jsp new file mode 100644 index 00000000..545df2c0 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalCalendar.jsp @@ -0,0 +1,163 @@ + +<% + /** + * @Class Name : EgovNormalCalendar.jsp + * @Description : EgovNormalCalendar 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + +일반달력 + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + 이전년도 + + 이전달 + ${resultList[0].year}년${resultList[0].month}월 + 다음달 + + 다음년도 +
    + ${result.day} + + ${result.day} +
    +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalDayCalendar.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalDayCalendar.jsp new file mode 100644 index 00000000..4b50e723 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalDayCalendar.jsp @@ -0,0 +1,171 @@ + +<% + /** + * @Class Name : EgovNormalDayCalendar.jsp + * @Description : EgovNormalDayCalendar 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + + + + + + + + + + + +일반달력 + + + +일반달력 일간 + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    요일날짜휴일
    color:red;} > + + + + + + + + color:red;} > + ${resultList[0].year}년 ${resultList[0].month}월 ${resultList[0].day}일 + + + +
    ${restde.restdeNm}
    +
    +
    +
    +
    +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalMonthCalendar.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalMonthCalendar.jsp new file mode 100644 index 00000000..6ef67a45 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalMonthCalendar.jsp @@ -0,0 +1,165 @@ + +<% + /** + * @Class Name : EgovNormalMonthCalendar.jsp + * @Description : EgovNormalMonthCalendar 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + + + + + + + + +일반달력 + + + +일반달력 월간 + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result.day} + +
    ${restde.restdeNm}
    +
    +
    ${result.day} + +
    ${restde.restdeNm}
    +
    +
    ${result.day}
    +
    +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalWeekCalendar.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalWeekCalendar.jsp new file mode 100644 index 00000000..18496ced --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalWeekCalendar.jsp @@ -0,0 +1,222 @@ + +<% + /** + * @Class Name : EgovNormalWeekCalendar.jsp + * @Description : EgovNormalWeekCalendar 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + + + + + + + + + + +일반달력 + + + +일반달력 주간 + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    요일날짜휴일
    color:red;} > + ${resultList_1[0].year}년 ${resultList_1[0].month}월 ${resultList_1[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_2[0].year}년 ${resultList_2[0].month}월 ${resultList_2[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_3[0].year}년 ${resultList_3[0].month}월 ${resultList_3[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_4[0].year}년 ${resultList_4[0].month}월 ${resultList_4[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_5[0].year}년 ${resultList_5[0].month}월 ${resultList_5[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_6[0].year}년 ${resultList_6[0].month}월 ${resultList_6[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    color:red;} > + ${resultList_7[0].year}년 ${resultList_7[0].month}월 ${resultList_7[0].day}일 + color:red;} > + + +
    ${restde.restdeNm}
    +
    +
    +
    +
    +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalYearCalendar.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalYearCalendar.jsp new file mode 100644 index 00000000..34d9fc81 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovNormalYearCalendar.jsp @@ -0,0 +1,831 @@ + +<% + /** + * @Class Name : EgovNormalYearCalendar.jsp + * @Description : EgovNormalYearCalendar 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + + + + + + + + + +일반달력 + + + +일반달력 연간 + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_1.day} + +
    ${restde_1.restdeNm}
    +
    +
    ${result_1.day} + +
    ${restde_1.restdeNm}
    +
    +
    ${result_1.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_2.day} + +
    ${restde_2.restdeNm}
    +
    +
    ${result_2.day} + +
    ${restde_2.restdeNm}
    +
    +
    ${result_2.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_3.day} + +
    ${restde_3.restdeNm}
    +
    +
    ${result_3.day} + +
    ${restde_3.restdeNm}
    +
    +
    ${result_3.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_4.day} + +
    ${restde_4.restdeNm}
    +
    +
    ${result_4.day} + +
    ${restde_4.restdeNm}
    +
    +
    ${result_4.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_5.day} + +
    ${restde_5.restdeNm}
    +
    +
    ${result_5.day} + +
    ${restde_5.restdeNm}
    +
    +
    ${result_5.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_6.day} + +
    ${restde_6.restdeNm}
    +
    +
    ${result_6.day} + +
    ${restde_6.restdeNm}
    +
    +
    ${result_6.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_7.day} + +
    ${restde_7.restdeNm}
    +
    +
    ${result_7.day} + +
    ${restde_7.restdeNm}
    +
    +
    ${result_7.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_8.day} + +
    ${restde_8.restdeNm}
    +
    +
    ${result_8.day} + +
    ${restde_8.restdeNm}
    +
    +
    ${result_8.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_9.day} + +
    ${restde_9.restdeNm}
    +
    +
    ${result_9.day} + +
    ${restde_9.restdeNm}
    +
    +
    ${result_9.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_10.day} + +
    ${restde_10.restdeNm}
    +
    +
    ${result_10.day} + +
    ${restde_10.restdeNm}
    +
    +
    ${result_10.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_11.day} + +
    ${restde_11.restdeNm}
    +
    +
    ${result_11.day} + +
    ${restde_11.restdeNm}
    +
    +
    ${result_11.day}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${result_12.day} + +
    ${restde_12.restdeNm}
    +
    +
    ${result_12.day} + +
    ${restde_12.restdeNm}
    +
    +
    ${result_12.day}
    + + + + + + + +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeDetail.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeDetail.jsp new file mode 100644 index 00000000..e02639a6 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeDetail.jsp @@ -0,0 +1,117 @@ + +<% + /** + * @Class Name : EgovRestdeDetail.jsp + * @Description : EgovRestdeDetail 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * 2011.08.12 서준식 CSS 경로 수정 + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + +${pageTitle} + + + + + + + +
    + +

    ${pageTitle}

    + + + + + + + + + + + + + + + + + + + + + + + +
    * + -- +
    * + ${result.restdeNm} +
    * + +
    * + ${result.restdeSe} +
    + + +
    + " onclick="fn_egov_modify_Restde(); return false;" /> + + +
    +
    +
    + + +
    + + +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeList.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeList.jsp new file mode 100644 index 00000000..9c01213f --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeList.jsp @@ -0,0 +1,149 @@ + +<% + /** + * @Class Name : EgovRestdeList.jsp + * @Description : EgovRestdeList 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * 2011.08.12 서준식 페이징 번호 정렬이 리스트와 일치하도록 수정 + CSS 경로 수정 + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> + + + + +${pageTitle} + + + + + + + + +
    +

    ${pageTitle}

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    --${resultInfo.restdeNm}${resultInfo.restdeSe}
    + +
    + + + + + + +
    +
    + + +
    + +
    + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeModify.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeModify.jsp new file mode 100644 index 00000000..c65a3e76 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeModify.jsp @@ -0,0 +1,119 @@ + +<% + /** + * @Class Name : EgovRestdeModify.jsp + * @Description : EgovRestdeModify 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.04.01 이중호 최초 생성 + * 2011.08.12 서준식 CSS 경로 수정 + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> + + + + +${pageTitle} + + + + + + + + + + + + + + +
    + +

    ${pageTitle}

    + + + + + + + + + + + + + + + + + + + + + + + +
    * + -- +
    * + + +
    * + + +
    * + + + +
    + + +
    + + " onclick="fn_egov_regist_Restde(document.restde); return false;" /> +
    +
    +
    + + +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeRegist.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeRegist.jsp new file mode 100644 index 00000000..77080bb9 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/sym/cal/EgovRestdeRegist.jsp @@ -0,0 +1,124 @@ + +<% + /** + * @Class Name : EgovRestdeRegist.jsp + * @Description : EgovRestdeRegist 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * 2011.08.12 서준식 CSS 경로 수정 + * + * @author 공통서비스팀 + * @since 2009.04.01 + * @version 1.0 + * @see + * + */ +%> + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> + + + + +${pageTitle} + + + + + + + + + + + + +
    + +

    ${pageTitle}

    + + + + + + + + + + + + + + + + + + + + + + + +
    * + + + (새창)" style="width:70px"/> + 달력창팝업버튼이미지 +
    * + + +
    * + + +
    * + + + +
    + + +
    + " onclick="fn_egov_list_Restde(); return false;" /> + +
    +
    +
    + + + + + + +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyList.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyList.jsp new file mode 100644 index 00000000..45c064d0 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyList.jsp @@ -0,0 +1,269 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ page import="egovframework.com.cmm.LoginVO" %> +<%@ page import="egovframework.com.cmm.util.EgovUserDetailsHelper" %> +<% +/** + * @Class Name : EgovLoginPolicyList.java + * @Description : EgovLoginPolicyList jsp + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ --------- -------- --------------------------- + * @ 2009.02.01 lee.m.j 최초 생성 + * @ 2011.09.30 이기하 데이터 없을시 메시지 추가 + * @ 2018.09.03 신용호 공통컴포넌트 3.8 개선 + * + * @author lee.m.j + * @since 2009.03.21 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ +%> + + + + +<spring:message code="comUatUap.LoginPolicyList.title" /> + + + + + + + + + + +
    +

    + + + + + + + + + + + + + + + + + + + + + <%-- 데이터를 없을때 화면에 메세지를 출력해준다 --%> + + + + + + + + + + + + + + +
    + +
    +
    + "> + + + "> + " onclick="fncSelectLoginPolicy(''); return false;"> +
    +
    YN
    + + + + + + +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyRegist.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyRegist.jsp new file mode 100644 index 00000000..6c859d73 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyRegist.jsp @@ -0,0 +1,168 @@ +<%-- +/** + * @Class Name : EgovLoginPolicyRegist.java + * @Description : EgovLoginPolicyRegist jsp + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.02.01 lee.m.j 최초 생성 + * @ 2018.09.03 신용호 공통컴포넌트 3.8 개선 + * + * @author lee.m.j + * @since 2009.03.11 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ + --%> +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> + + + + + + +<spring:message code="comUatUap.loginPolicyRegist.title"/> + + + + + + + + + +
    + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    * + " size="30" maxlength="30" readonly="readonly" /> +
    * + " size="30" maxlength="50" readonly="readonly" /> +
    * + " size="30" maxLength="23" />  +
    * +   +
    + + +
    + " onclick="fncLoginPolicyInsert(); return false;" /> + &searchCondition=1" onclick="fncSelectLoginPolicyList(); return false;"> +
    +
    + + + + +
    +
    + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyUpdt.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyUpdt.jsp new file mode 100644 index 00000000..1e0c30e4 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uap/EgovLoginPolicyUpdt.jsp @@ -0,0 +1,186 @@ + +<%-- +/** + * @Class Name : EgovLoginPolicyUpdt.java + * @Description : EgovLoginPolicyUpdt jsp + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.02.01 lee.m.j 최초 생성 + * @ 2018.09.03 신용호 공통컴포넌트 3.8 개선 + * + * @author lee.m.j + * @since 2009.03.11 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ + --%> +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> + + + +<spring:message code="comUatUap.loginPolicyUpdt.title"/> +" rel="stylesheet" type="text/css"> +" rel="stylesheet" type="text/css"> + + + + + + + + + + +
    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    * + " type="text" readonly value="" readonly="readonly" style="width:180px" /> +
    * + " type="text" value="" maxLength="50" readonly="readonly" style="width:180px" /> +
    * + " type="text" value="" maxLength="23" size="30" >  +
    * + +
    * + " type="text" value="" maxLength="50" readonly="readonly" style="width:180px" /> +
    + + + +
    +
    + + + + + + +
    + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiInstall.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiInstall.jsp new file mode 100644 index 00000000..7e221d55 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiInstall.jsp @@ -0,0 +1,127 @@ + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<% + /** + * @Class Name : EgovGpkiInstall.jsp + * @Description : GPKI 인증을 위한 모듈 인스톨 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.31 박지욱 최초 생성 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.31 + * @version 1.0 + * @see + * + */ +%> + + + + + + + +MOPAS GPKI 인스톨 + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + +


    GPKI 인증관리센터입니다..

    + [ 프로그램 설치시 주의사항 ]

    +
    +   1. 처음 접속하시는 분은 [보안경고]창이 표시되면 반드시 [예(Y)]
    +      누르셔서 프로그램을 설치하셔야 합니다.
    +      *보안에 필요한 프로그램 설치이므로 [아니오(N)]를 선택하시면
    +      서비스를 이용하실 수 없습니다.

    +   2. 보안프로그램 설치중 오류가 발생하거나 장시간 화면이 정지해
    +      있을 경우, 아래의 [보안프로그램 내려받기]를 눌러 다운받으신
    +      프로그램 실행 하여 보안프로그램을 수동설치십시오.

    +   3. 설치예상시간
    +      - 초고속 인터넷 사용자 : 약 30초
    +      - 전화모뎀 사용자 : 약 2~3분
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + +
    + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiIssu.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiIssu.jsp new file mode 100644 index 00000000..fdee8e33 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiIssu.jsp @@ -0,0 +1,174 @@ + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<% + /** + * @Class Name : EgovGpkiIssu.jsp + * @Description : 인증서 안내화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.25 박지욱 최초 생성 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.25 + * @version 1.0 + * @see + * + */ +%> + + + + +MOPAS GPKI 인증서 안내 + + + +
    + +

    인증서 안내 페이지

    + +

    행정전자서명 인증서란?

    + +

    “행정전자서명 인증서”라 함은 행정전자서명이 진정한 것임을 확인ㆍ증명할 수 있도록 하기 위하여 행정기관, 보조기관, 보좌기관, 전자문서유통 및 행정정보 공공이용, 공공기반, 은행 또는 사용자에게 발급하는 전자적 정보를 말한다.

    전자거래시 인증서를 사용하면 신원확인, 문서의 위·변조, 거래사실의 부인 방지 등의 효과를 얻을 수 있습니다. 인증서에는 인증서 버전, 인증서 일련번호, 인증서의 유효기간, 발급기관명 및 전자서명 알고리즘 정보, 가입자 이름 및 신원확인정보 등이 포함되어 있다.

    + +

    인증서 발급 대상

    + +

    행정전자서명 인증서 발급대상은 다음의 2가지로 분류된다.
    + 첫째는 인증관리체계상 인증업무수행 인증기관, 등록기관, 원격등록기관에 해당하는 행정기관이 대상이며
    + 둘째는 정보화시스템에 적용하기 위한 행정기관, 보조기관, 보좌기관, 공무원 그리고 해당 공무원과 행정기관, 보조기관, 보좌기관에서 관리하는 정보통신 장비가 일반 인증서 발급 대상이다.
    + 셋째는 전자문서 유통 및 행정정보 공동이용 공공기관, 은행법으로 지정된 기관과 사용자가 발급대상이다. +

    + +

    인증/등록기관 인증서

    + + + + + + + + + + + + + + + + + +
    최상위 인증기관인증관리센터는 행정전자서명 인증업무 수행 등에 활용하도록 최상위인증기관에 인증서를 발급합니다.
    인증기관용인증관리센터는 안전행전부 장관이 지정ㆍ고시하는 정부인증기관을 대상으로 인증업무 수행등에 활용하도록 인증서를 발급합니다.
    등록기관용인증관리센터는 등록기관 등록업무 수행 등에 활용하도록 등록기관 지정 행정기관에 인증서를 발급합니다.
    + +

    기관/개인 인증서

    + + + + + + + + + + + + + + + + + + + + + + + +
    기관기관용인증관리센터는 사무관리규정에 따라 관인을 가질수 있는 행정기관, 보조기관, 보좌기관등의 과단위까지의 1개의 기관용 인증서를 발급합니다.
    특수목적용인증관리센터는 사무관리규정에 따라 행정기관의 업무를 관인과 같이 처리할 수 없도록 규정한 특수관인을 관리하는 경우에 특수목적용 인증서를 발급합니다.
    서버용인증관리센터는 행정기관에서 관리해야할 책임이 있는 정보통신 장비가 일정 규칙에 의해 정보통신 장비가 지속적으로 행정업무를 처리하고자 하는 경우에 서버 단위로 인증서를 발급합니다.
    개인인증관리센터는 행정기관 소속 공무원이 사용자인증 및 전자결재, 보안메일 등의 행정업무 또는 전자상거래 등에서 활용하도록 하기 위해 부처별 개인단위로 인증서를 발급합니다.
    + +

    인증/등록기관

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    구분ou명cn명DN명(예)
    최상위 인증기관ou=GPKcn=Root CAcn=Root CA, ou=GPKI, o=Government of Korea,c=KR
    인증기관ou=GPKIcn=CA + 기관코드(7) + 일련번호(2)cn=CA131000001, ou=GPKI, o=Government of Korea,c=KR
    등록기관cn=해당인증기관,
    + ou=GPKI
    cn=RA + 기관코드(7) + 일련번호(2)cn=RA131000001,cn=CA131000001, ou=GPKI, o=Government of Korea,c=KR
    + +

    기관/개인

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    구분ou명cn명DN명
    기관 기관용ou=최하위기관명, ou=상위기관명, ou=최상위기관명-ou=보안관리팀, ou=전자정부본부, ou=안전행전부, o=Government of Korea, c=KR
    서버용ou=Group of Servercn=SVR + 기관코드(7) + 일련번호(3)cn=SVR131000001, ou=Group of Server, o=Government of Korea, c=KR
    개인  ou=people, ou=최상위기관명cn=기관구분자(3) + 이름 + 일련번호(3)
    + *일련번호:동명이인
    cn=001홍길동001, ou=people, ou=안전행전부, o=Government of Korea, c=KR
    +
    + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiRegist.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiRegist.jsp new file mode 100644 index 00000000..bc88cb53 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovGpkiRegist.jsp @@ -0,0 +1,111 @@ + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<% + /** + * @Class Name : EgovLoginUsr.jsp + * @Description : Login 인증 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.03 박지욱 최초 생성 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.03 + * @version 1.0 + * @see + * + */ +%> + + + + + + + + + +GPKI 인증서 등록 + + + + +
    + + + + + + + + +
    제목아이콘이미지 인증서 DN 추출
    + + + + +
    +
    + + + +
    + + + + + + + + +
    +
    + + +
    + + + + + + + + + + + +
    인증서비밀번호   +    + 버튼이미지
    DN값 추출
    버튼이미지
    DN값   +    + 버튼이미지
    DN값 전달
    버튼이미지
    + + + + + + +
    + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovIdPasswordResult.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovIdPasswordResult.jsp new file mode 100644 index 00000000..576c0048 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovIdPasswordResult.jsp @@ -0,0 +1,71 @@ + +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<% + /** + * @Class Name : EgovIdPasswordResult.jsp + * @Description : 아이디/비밀번호 찾기 결과화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.17 박지욱 최초 생성 + * 2016.06.13 김연호 표준프레임워크 v3.6 개선 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.17 + * @version 1.0 + * @see + * + */ +%> + + + + + +${pageTitle} + + + +
    +

    +
    +

    + +
    +
    +
    +

    ${pageTitle}

    +

    ${resultInfo}

    + + +
    +
    +
    +
    + +
    + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovIdPasswordSearch.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovIdPasswordSearch.jsp new file mode 100644 index 00000000..fe237310 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovIdPasswordSearch.jsp @@ -0,0 +1,192 @@ +<% + /** + * @Class Name : EgovIdPasswordSearch.jsp + * @Description : 아이디/비밀번호 찾기 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.09 박지욱 최초 생성 + * 2016.06.13 김연호 표준프레임워크 v3.6 개선 + * @author 공통서비스팀 + * @since 2009.03.09 + * @version 1.0 + * @see + * + */ +%> +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> + + + + +${pageTitle} + + + + + + + + +
    + + + + + + + + +
    + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsr.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsr.jsp new file mode 100644 index 00000000..03ae12bf --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsr.jsp @@ -0,0 +1,311 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<% + /** + * @Class Name : EgovLoginUsr.jsp + * @Description : Login 인증 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.03 박지욱 최초 생성 + * @ 2011.09.25 서준식 사용자 관리 패키지가 미포함 되었을때에 회원가입 오류 메시지 표시 + * @ 2011.10.27 서준식 사용자 입력 탭 순서 변경 + * @ 2017.07.21 장동한 로그인인증제한 작업 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.03 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ +%> + + + + +<spring:message code="comUatUia.title" /> + + + + + + + + + + + + + + + + + +
    +
    +" title=""> +
    +
    + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsrOauth.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsrOauth.jsp new file mode 100644 index 00000000..355055ad --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsrOauth.jsp @@ -0,0 +1,315 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<% + /** + * @Class Name : EgovLoginUsr.jsp + * @Description : Login 인증 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.03 박지욱 최초 생성 + * @ 2011.09.25 서준식 사용자 관리 패키지가 미포함 되었을때에 회원가입 오류 메시지 표시 + * @ 2011.10.27 서준식 사용자 입력 탭 순서 변경 + * @ 2017.07.21 장동한 로그인인증제한 작업 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.03 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ +%> + + + + +<spring:message code="comUatUia.title" /> + + + + + + + + + + + + + + + + + +
    +
    +" title=""> +
    +
    + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsrOauthResult.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsrOauthResult.jsp new file mode 100644 index 00000000..a92de2c3 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/uat/uia/EgovLoginUsrOauthResult.jsp @@ -0,0 +1,97 @@ +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<% + /** + * @Class Name : EgovLoginUsr.jsp + * @Description : Login 인증 화면 + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2009.03.03 박지욱 최초 생성 + * @ 2011.09.25 서준식 사용자 관리 패키지가 미포함 되었을때에 회원가입 오류 메시지 표시 + * @ 2011.10.27 서준식 사용자 입력 탭 순서 변경 + * @ 2017.07.21 장동한 로그인인증제한 작업 + * + * @author 공통서비스 개발팀 박지욱 + * @since 2009.03.03 + * @version 1.0 + * @see + * + * Copyright (C) 2009 by MOPAS All right reserved. + */ +%> + + + + +<spring:message code="comUatUia.title" /> + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/egovframework/com/utl/wed/EgovInsertImage.jsp b/src/main/webapp/WEB-INF/jsp/egovframework/com/utl/wed/EgovInsertImage.jsp new file mode 100644 index 00000000..1f81e369 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/egovframework/com/utl/wed/EgovInsertImage.jsp @@ -0,0 +1,444 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" + pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<% + /** + * @Class Name : EgovInsertImage.jsp + * @Description : 웹에디터 이미지 upload 기능을 위한 팝업 화면 (기존 insert_image.html 대체) + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ----------- -------- --------------------------- + * @ 2009.08.26 한성곤 최초 생성 + * @ 2012.12.18 이기하 image alt 생성기능 추가 + * + * @author 공통컴포넌트개발팀 한성곤 + * @since 2009.08.26 + * @version 1.0 + * @see + */ + + //htmlArea v3.0 - Copyright (c) 2002, 2003 interactivetools.com, inc. + //This copyright notice MUST stay intact for use (see license.txt). + // + //Portions (c) dynarch.com, 2003 + // + //A free WYSIWYG editor replacement for + +
    + + + +
    + + + + +
    +
    Mihai Bazon
    + + Last modified: Wed Jan 28 11:10:40 EET 2004 + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/character_map.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/character_map.html new file mode 100644 index 00000000..1f88d4d5 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/character_map.html @@ -0,0 +1,30 @@ + + + Test of CharacterMap plugin + + + + + + + + + + + +

    Test of DynamicCSS plugin

    + + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/context-menu.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/context-menu.html new file mode 100644 index 00000000..e469c96a --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/context-menu.html @@ -0,0 +1,95 @@ + + + Test of ContextMenu plugin + + + + + + + + + + + +

    Test of ContextMenu plugin

    + + + + +
    +
    Mihai Bazon
    + + Last modified: Wed Jan 28 11:10:29 EET 2004 + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/core.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/core.html new file mode 100644 index 00000000..5375137c --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/core.html @@ -0,0 +1,186 @@ + + +Example of HTMLArea 3.0 + + + + + + + + + + + + + + + + +

    HTMLArea 3.0

    + +

    A replacement for TEXTAREA elements. © InteractiveTools.com, 2003-2004.

    + +
    + + + +

    + + + + + +submit + + + +

    + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/css.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/css.html new file mode 100644 index 00000000..842bf69b --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/css.html @@ -0,0 +1,90 @@ + + + Test of CSS plugin + + + + + + + + + + + +

    Test of FullPage plugin

    + + + +
    +
    Mihai Bazon
    + + Last modified: Wed Jan 28 11:10:16 EET 2004 + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/custom.css b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/custom.css new file mode 100644 index 00000000..e2690df0 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/custom.css @@ -0,0 +1,29 @@ +body { background-color: #234; color: #dd8; font-family: tahoma; font-size: 12px; } + +a:link, a:visited { color: #8cf; } +a:hover { color: #ff8; } + +h1 { background-color: #456; color: #ff8; padding: 2px 5px; border: 1px solid; border-color: #678 #012 #012 #678; } + +/* syntax highlighting (used by the first combo defined for the CSS plugin) */ + +pre { margin: 0px 1em; padding: 5px 1em; background-color: #000; border: 1px dotted #02d; border-left: 2px solid #04f; } +.code { color: #f5deb3; } +.string { color: #00ffff; } +.comment { color: #8fbc8f; } +.variable-name { color: #fa8072; } +.type { color: #90ee90; font-weight: bold; } +.reference { color: #ee82ee; } +.preprocessor { color: #faf; } +.keyword { color: #ffffff; font-weight: bold; } +.function-name { color: #ace; } +.html-tag { font-weight: bold; } +.html-helper-italic { font-style: italic; } +.warning { color: #ffa500; font-weight: bold; } +.html-helper-bold { font-weight: bold; } + +/* info combo */ + +.quote { font-style: italic; color: #ee9; } +.highlight { background-color: yellow; color: #000; } +.deprecated { text-decoration: line-through; color: #aaa; } diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/dynamic.css b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/dynamic.css new file mode 100644 index 00000000..2d905140 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/dynamic.css @@ -0,0 +1,45 @@ +p { + FONT-FAMILY: Arial, Helvetica; + FONT-SIZE: 9pt; + FONT-WEIGHT: normal; + COLOR: #000000; +} + +p.p1 { + FONT-FAMILY: Arial, Helvetica; + FONT-SIZE: 11pt; + FONT-WEIGHT: normal; + COLOR: #000000; +} + +p.p2 { + FONT-FAMILY: Arial, Helvetica; + FONT-SIZE: 13pt; + FONT-WEIGHT: normal; + COLOR: #000000; +} + +div { + FONT-FAMILY: Arial, Helvetica; + FONT-SIZE: 9pt; + FONT-WEIGHT: bold; + COLOR: #000000; +} + +div.div1 { + FONT-FAMILY: Arial, Helvetica; + FONT-SIZE: 11pt; + FONT-WEIGHT: bold; + COLOR: #000000; +} + +div.div2 { + FONT-FAMILY: Arial, Helvetica; + FONT-SIZE: 13pt; + FONT-WEIGHT: bold; + COLOR: #000000; +} + +.quote { font-style: italic; color: #ee9; } +.highlight { background-color: yellow; color: #000; } +.deprecated { text-decoration: line-through; color: #aaa; } diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/dynamic_css.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/dynamic_css.html new file mode 100644 index 00000000..8b141f72 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/dynamic_css.html @@ -0,0 +1,44 @@ + + + Test of CSS plugin + + + + + + + + + + + +

    Test of DynamicCSS plugin

    + + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/empty.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/empty.html new file mode 100644 index 00000000..a2b69098 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/empty.html @@ -0,0 +1,22 @@ + + + HTMLArea 3.0 core test + + + + + + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/full-page.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/full-page.html new file mode 100644 index 00000000..2d7ccefb --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/full-page.html @@ -0,0 +1,77 @@ + + + Test of FullPage plugin + + + + + + + + + + + +

    Test of FullPage plugin

    + + + +
    +
    Mihai Bazon
    + + Last modified: Wed Aug 11 13:59:07 CEST 2004 + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/fully-loaded.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/fully-loaded.html new file mode 100644 index 00000000..cc0efb4a --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/fully-loaded.html @@ -0,0 +1,262 @@ + + +Example of HTMLArea 3.0 + + + + + + + + + + + + + + + + + + + + + +

    HTMLArea 3.0

    + +

    A replacement for TEXTAREA elements. © InteractiveTools.com, 2003-2004.

    + +
    + + + +

    + + + + + +submit + + + +

    + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/index.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/index.html new file mode 100644 index 00000000..b281da9f --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/index.html @@ -0,0 +1,43 @@ + + +HTMLArea examples index + + + +

    HTMLArea: auto-generated examples index

    + + + +
    +
    mihai_bazon@yahoo.com
    + Last modified: Sun Feb 1 13:30:39 EET 2004 + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/list-type.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/list-type.html new file mode 100644 index 00000000..6bfa4f32 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/list-type.html @@ -0,0 +1,66 @@ + + + +Example of HTMLArea 3.0 -- ListType plugin + + + + + + + + + + + + + + +

    HTMLArea :: the ListType plugin

    + +
    + + + +
    + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/remove-font-tags.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/remove-font-tags.html new file mode 100644 index 00000000..7135bdda --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/remove-font-tags.html @@ -0,0 +1,41 @@ + + + The "htmlRemoveTags" feature + + + + + + + + + + + +

    Remove FONT tags

    + + + + +
    +
    Mihai Bazon
    + + Last modified: Wed Apr 28 15:09:09 EEST 2004 + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/spell-checker.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/spell-checker.html new file mode 100644 index 00000000..7d186be7 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/spell-checker.html @@ -0,0 +1,132 @@ + + +Example of HTMLArea 3.0 + + + + + + + + + + + + + + + + + +

    HTMLArea 3.0

    + +

    A replacement for TEXTAREA elements. © InteractiveTools.com, 2003-2004.

    + +

    Plugins: + SpellChecker (sponsored by American Bible Society). +

    + +
    + + + +

    + + + + + +submit + + + +

    + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/table-operations.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/table-operations.html new file mode 100644 index 00000000..834d1029 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/table-operations.html @@ -0,0 +1,116 @@ + + +Example of HTMLArea 3.0 + + + + + + + + + + + + + + + + + +

    HTMLArea 3.0

    + +

    A replacement for TEXTAREA elements. © InteractiveTools.com, 2003-2004.

    + +

    Page that demonstrates the additional features of the +TableOperations plugin (sponsored by Zapatec Inc.).

    + +
    + + + +

    + + + + + +submit + + + +

    + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/test.cgi b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/test.cgi new file mode 100644 index 00000000..f8b1dcfe --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/examples/test.cgi @@ -0,0 +1,21 @@ +#! /usr/bin/perl -w +# +# +# + + + +use CGI; + +print "Content-type: text/html\n\n"; +$c = new CGI; +$ta = $c->param('ta'); + +print < + + +$ta + + +EOF diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/htmlarea.css b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/htmlarea.css new file mode 100644 index 00000000..a7c6b956 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/htmlarea.css @@ -0,0 +1,180 @@ +.htmlarea { background: #fff; } + +.htmlarea .toolbar { + cursor: default; + background: ButtonFace; + padding: 3px; + border: 1px solid; + border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; +} +.htmlarea .toolbar table { font-family: tahoma,verdana,sans-serif; font-size: 11px; } +.htmlarea .toolbar img { border: none; } +.htmlarea .toolbar .label { padding: 0px 3px; } + +.htmlarea .toolbar .button { + background: ButtonFace; + color: ButtonText; + border: 1px solid ButtonFace; + padding: 1px; + margin: 0px; + width: 18px; + height: 18px; +} +.htmlarea .toolbar .buttonHover { + border: 1px solid; + border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; +} +.htmlarea .toolbar .buttonActive, .htmlarea .toolbar .buttonPressed { + padding: 2px 0px 0px 2px; + border: 1px solid; + border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; +} +.htmlarea .toolbar .buttonPressed { + background: ButtonHighlight; +} +.htmlarea .toolbar .indicator { + padding: 0px 3px; + overflow: hidden; + width: 20px; + text-align: center; + cursor: default; + border: 1px solid ButtonShadow; +} + +.htmlarea .toolbar .buttonDisabled img { + filter: gray() alpha(opacity = 25); + -moz-opacity: 0.25; +} + +.htmlarea .toolbar .separator { + position: relative; + margin: 3px; + border-left: 1px solid ButtonShadow; + border-right: 1px solid ButtonHighlight; + width: 0px; + height: 16px; + padding: 0px; +} + +.htmlarea .toolbar .space { width: 5px; } + +.htmlarea .toolbar select { font: 11px Tahoma,Verdana,sans-serif; } + +.htmlarea .toolbar select, +.htmlarea .toolbar select:hover, +.htmlarea .toolbar select:active { background: FieldFace; color: ButtonText; } + +.htmlarea .statusBar { + border: 1px solid; + border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; + padding: 2px 4px; + background-color: ButtonFace; + color: ButtonText; + font: 11px Tahoma,Verdana,sans-serif; +} + +.htmlarea .statusBar .statusBarTree a { + padding: 2px 5px; + color: #00f; +} + +.htmlarea .statusBar .statusBarTree a:visited { color: #00f; } +.htmlarea .statusBar .statusBarTree a:hover { + background-color: Highlight; + color: HighlightText; + padding: 1px 4px; + border: 1px solid HighlightText; +} + + +/* Hidden DIV popup dialogs (PopupDiv) */ + +.dialog { + color: ButtonText; + background: ButtonFace; +} + +.dialog .content { padding: 2px; } + +.dialog, .dialog button, .dialog input, .dialog select, .dialog textarea, .dialog table { + font: 11px Tahoma,Verdana,sans-serif; +} + +.dialog table { border-collapse: collapse; } + +.dialog .title { + background: #008; + color: #ff8; + border-bottom: 1px solid #000; + padding: 1px 0px 2px 5px; + font-size: 12px; + font-weight: bold; + cursor: default; +} + +.dialog .title .button { + float: right; + border: 1px solid #66a; + padding: 0px 1px 0px 2px; + margin-right: 1px; + color: #fff; + text-align: center; +} + +.dialog .title .button-hilite { border-color: #88f; background: #44c; } + +.dialog button { + width: 5em; + padding: 0px; +} + +.dialog .buttonColor { + padding: 1px; + cursor: default; + border: 1px solid; + border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; +} + +.dialog .buttonColor-hilite { + border-color: #000; +} + +.dialog .buttonColor .chooser, .dialog .buttonColor .nocolor { + height: 0.6em; + border: 1px solid; + padding: 0px 1em; + border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; +} + +.dialog .buttonColor .nocolor { padding: 0px; } +.dialog .buttonColor .nocolor-hilite { background-color: #fff; color: #f00; } + +.dialog .label { text-align: right; width: 6em; } +.dialog .value input { width: 100%; } +.dialog .buttons { text-align: right; padding: 2px 4px 0px 4px; } + +.dialog legend { font-weight: bold; } +.dialog fieldset table { margin: 2px 0px; } + +.popupdiv { + border: 2px solid; + border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; +} + +.popupwin { + padding: 0px; + margin: 0px; +} + +.popupwin .title { + background: #fff; + color: #000; + font-weight: bold; + font-size: 120%; + padding: 3px 10px; + margin-bottom: 10px; + border-bottom: 1px solid black; + letter-spacing: 2px; +} + +form { margin: 0px; border: none; } diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/htmlarea.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/htmlarea.js new file mode 100644 index 00000000..87527e1b --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/htmlarea.js @@ -0,0 +1,3015 @@ +// htmlArea v3.0 - Copyright (c) 2003-2005 dynarch.com +// 2002-2003 interactivetools.com, inc. +// This copyright notice MUST stay intact for use (see license.txt). +// +// A free WYSIWYG editor replacement for + +
    +
    Mihai Bazon
    + + +Last modified on Sat Oct 25 01:06:59 2003 + + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/html-tidy-config.cfg b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/html-tidy-config.cfg new file mode 100644 index 00000000..996e1ff6 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/html-tidy-config.cfg @@ -0,0 +1,29 @@ +// Default configuration file for the htmlArea, HtmlTidy plugin +// By Adam Wright, for The University of Western Australia +// +// Evertything you always wanted to know about HTML Tidy * +// can be found at http://tidy.sourceforge.net/, and a +// quick reference to the configuration options exists at +// http://tidy.sourceforge.net/docs/quickref.html +// +// * But were afraid to ask +// +// Distributed under the same terms as HTMLArea itself. +// This notice MUST stay intact for use (see license.txt). + +word-2000: yes +clean: no +drop-font-tags: yes +doctype: auto +drop-empty-paras: yes +drop-proprietary-attributes: yes +enclose-block-text: yes +enclose-text: yes +escape-cdata: yes +logical-emphasis: yes +indent: auto +indent-spaces: 2 +break-before-br: yes +output-xhtml: yes + +force-output: yes diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/html-tidy.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/html-tidy.js new file mode 100644 index 00000000..71a2027f --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/html-tidy.js @@ -0,0 +1,128 @@ +// Plugin for htmlArea to run code through the server's HTML Tidy +// By Adam Wright, for The University of Western Australia +// +// Distributed under the same terms as HTMLArea itself. +// This notice MUST stay intact for use (see license.txt). + +function HtmlTidy(editor) { + this.editor = editor; + + var cfg = editor.config; + var tt = HtmlTidy.I18N; + var bl = HtmlTidy.btnList; + var self = this; + + this.onMode = this.__onMode; + + // register the toolbar buttons provided by this plugin + var toolbar = []; + for (var i = 0; i < bl.length; ++i) { + var btn = bl[i]; + if (btn == "html-tidy") { + var id = "HT-html-tidy"; + cfg.registerButton(id, tt[id], editor.imgURL(btn[0] + ".gif", "HtmlTidy"), true, + function(editor, id) { + // dispatch button press event + self.buttonPress(editor, id); + }, btn[1]); + toolbar.push(id); + } else if (btn == "html-auto-tidy") { + var ht_class = { + id : "HT-auto-tidy", + options : { "Auto-Tidy" : "auto", "Don't Tidy" : "noauto" }, + action : function (editor) { self.__onSelect(editor, this); }, + refresh : function (editor) { }, + context : "body" + }; + cfg.registerDropdown(ht_class); + } + } + + for (var i in toolbar) { + cfg.toolbar[0].push(toolbar[i]); + } +}; + +HtmlTidy._pluginInfo = { + name : "HtmlTidy", + version : "1.0", + developer : "Adam Wright", + developer_url : "http://blog.hipikat.org/", + sponsor : "The University of Western Australia", + sponsor_url : "http://www.uwa.edu.au/", + license : "htmlArea" +}; + +HtmlTidy.prototype.__onSelect = function(editor, obj) { + // Get the toolbar element object + var elem = editor._toolbarObjects[obj.id].element; + + // Set our onMode event appropriately + if (elem.value == "auto") + this.onMode = this.__onMode; + else + this.onMode = null; +}; + +HtmlTidy.prototype.__onMode = function(mode) { + if ( mode == "textmode" ) { + this.buttonPress(this.editor, "HT-html-tidy"); + } +}; + +HtmlTidy.btnList = [ + null, // separator + ["html-tidy"], + ["html-auto-tidy"] +]; + +HtmlTidy.prototype.onGenerateOnce = function() { + var editor = this.editor; + + var ifr = document.createElement("iframe"); + ifr.name = "htiframe_name"; + var s = ifr.style; + s.position = "absolute"; + s.width = s.height = s.border = s.left = s.top = s.padding = s.margin = "0px"; + document.body.appendChild(ifr); + + var frm = '
    '; + + var newdiv = document.createElement('div'); + newdiv.style.display = "none"; + newdiv.innerHTML = frm; + document.body.appendChild(newdiv); +}; + +HtmlTidy.prototype.buttonPress = function(editor, id) { + var i18n = HtmlTidy.I18N; + + switch (id) { + case "HT-html-tidy": + + var oldhtml = editor.getHTML(); + + // Ask the server for some nice new html, based on the old... + var myform = document.getElementById('htiform_id'); + var txtarea = document.getElementById('htisource_id'); + txtarea.value = editor.getHTML(); + + // Apply the 'meanwhile' text, e.g. "Tidying HTML, please wait..." + editor.setHTML(i18n['tidying']); + + // The returning tidying processing script needs to find the editor + window._editorRef = editor; + + // ...And send our old source off for processing! + myform.submit(); + break; + } +}; + +HtmlTidy.prototype.processTidied = function(newSrc) { + editor = this.editor; + editor.setHTML(newSrc); +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/img/html-tidy.gif b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/HtmlTidy/img/html-tidy.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed1cbb1bd40077b5ba53f234f67387732120550b GIT binary patch literal 107 zcmZ?wbhEHb6k-r!IK;rPaN$Cwq^}H;Ees3{|B-;=PZmZ71{MY#Mg~R(0U%^xHt^VW zMp1Va`%>Ynerv?vMsMRdsH!C)>Bc;PEuLk|`;%w%!m@tc{<=$E_k{E90?5U z95Nmo794Em5aweMP+&OR%*V(eabd#4!>v5b9A`2nK62>gleSuNB5?76E-_U<0Ci3; ArT_o{ literal 0 HcmV?d00001 diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/img/spell-check.gif b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/img/spell-check.gif new file mode 100644 index 0000000000000000000000000000000000000000..29bd11ae9865647f02b6b05e2088b511650d1924 GIT binary patch literal 107 zcmZ?wbhEHb6k-r!SjYeZ|NsAIU}y%Cia%KxxfqxkbU>mYc?Kq%IsGe7_cF-zD6>^9 zSolCs+ShSw@9Y!36C%T|XR+km<~34!(rzjJOUdI;!{LQW?J^RQCzdL|6mVM};?Brm F4FDL!B)9+o literal 0 HcmV?d00001 diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/cz.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/cz.js new file mode 100644 index 00000000..15cfce81 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/cz.js @@ -0,0 +1,37 @@ +// I18N constants + +// LANG: "cz", ENCODING: UTF-8 | ISO-8859-2 +// Author: Jiri Löw, + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +SpellChecker.I18N = { + "CONFIRM_LINK_CLICK" : "Prosím potvrďte otevření tohoto odkazu", + "Cancel" : "Zrušit", + "Dictionary" : "Slovník", + "Finished list of mispelled words" : "Dokončen seznam chybných slov", + "I will open it in a new page." : "Bude otevřen jej v nové stránce.", + "Ignore all" : "Ignorovat vše", + "Ignore" : "Ignorovat", + "NO_ERRORS" : "Podle zvoleného slovníku nebyla nalezena žádná chybná slova.", + "NO_ERRORS_CLOSING" : "Kontrola správnosti slov dokončena, nebyla nalezena žádná chybná slova. Ukončování ...", + "OK" : "OK", + "Original word" : "Původní slovo", + "Please wait. Calling spell checker." : "Prosím čekejte. Komunikuace s kontrolou správnosti slov.", + "Please wait: changing dictionary to" : "Prosím čekejte: změna adresáře na", + "QUIT_CONFIRMATION" : "Změny budou zrušeny a kontrola správnosti slov ukončena. Prosím potvrďte.", + "Re-check" : "Překontrolovat", + "Replace all" : "Zaměnit všechno", + "Replace with" : "Zaměnit za", + "Replace" : "Zaměnit", + "SC-spell-check" : "Kontrola správnosti slov", + "Suggestions" : "Doporučení", + "pliz weit ;-)" : "strpení prosím ;-)" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/da.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/da.js new file mode 100644 index 00000000..690293ec --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/da.js @@ -0,0 +1,37 @@ +// I18N constants + +// LANG: "en", ENCODING: UTF-8 | ISO-8859-1 +// Author: Steen Sønderup, + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +SpellChecker.I18N = { + "CONFIRM_LINK_CLICK" : "Vil du følge dette link?", + "Cancel" : "Anuler", + "Dictionary" : "Ordbog", + "Finished list of mispelled words" : "Listen med stavefejl er gennemgået", + "I will open it in a new page." : "Jeg vil åbne det i en ny side.", + "Ignore all" : "Ignorer alle", + "Ignore" : "Ignorer", + "NO_ERRORS" : "Der blev ikke fundet nogle stavefejl med den valgte ordbog.", + "NO_ERRORS_CLOSING" : "Stavekontrollen er gennemført, der blev ikke fundet nogle stavefejl. Lukker...", + "OK" : "OK", + "Original word" : "Oprindeligt ord", + "Please wait. Calling spell checker." : "Vent venligst. Henter stavekontrol.", + "Please wait: changing dictionary to" : "Vent venligst: skifter ordbog til", + "QUIT_CONFIRMATION" : "Alle dine ændringer vil gå tabt, vil du fortsætte?", + "Re-check" : "Tjek igen", + "Replace all" : "Erstat alle", + "Replace with" : "Erstat med", + "Replace" : "Erstat", + "SC-spell-check" : "Stavekontrol", + "Suggestions" : "Forslag", + "pliz weit ;-)" : "Vent venligst" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/de.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/de.js new file mode 100644 index 00000000..1a8f4b52 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/de.js @@ -0,0 +1,28 @@ +// I18N constants + +// LANG: "en", ENCODING: UTF-8 | ISO-8859-1 +// Author: Broxx, + +SpellChecker.I18N = { + "CONFIRM_LINK_CLICK" : "Wollen Sie diesen Link oeffnen", + "Cancel" : "Abbrechen", + "Dictionary" : "Woerterbuch", + "Finished list of mispelled words" : "Liste der nicht bekannten Woerter", + "I will open it in a new page." : "Wird auf neuer Seite geoeffnet", + "Ignore all" : "Alle ignorieren", + "Ignore" : "Ignorieren", + "NO_ERRORS" : "Keine falschen Woerter mit gewaehlten Woerterbuch gefunden", + "NO_ERRORS_CLOSING" : "Rechtsschreibpruefung wurde ohne Fehler fertiggestellt. Wird nun geschlossen...", + "OK" : "OK", + "Original word" : "Original Wort", + "Please wait. Calling spell checker." : "Bitte warten. Woerterbuch wird durchsucht.", + "Please wait: changing dictionary to" : "Bitte warten: Woerterbuch wechseln zu", + "QUIT_CONFIRMATION" : "Aenderungen werden nicht uebernommen. Bitte bestaettigen.", + "Re-check" : "Neuueberpruefung", + "Replace all" : "Alle ersetzen", + "Replace with" : "Ersetzen mit", + "Replace" : "Ersetzen", + "SC-spell-check" : "Ueberpruefung", + "Suggestions" : "Vorschlag", + "pliz weit ;-)" : "bittsche wartn ;-)" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/en.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/en.js new file mode 100644 index 00000000..529cc6c4 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/en.js @@ -0,0 +1,38 @@ +// I18N constants + +// LANG: "en", ENCODING: UTF-8 | ISO-8859-1 +// Author: Mihai Bazon, http://dynarch.com/mishoo + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +SpellChecker.I18N = { + "CONFIRM_LINK_CLICK" : "Please confirm that you want to open this link", + "Cancel" : "Cancel", + "Dictionary" : "Dictionary", + "Finished list of mispelled words" : "Finished list of mispelled words", + "I will open it in a new page." : "I will open it in a new page.", + "Ignore all" : "Ignore all", + "Ignore" : "Ignore", + "NO_ERRORS" : "No mispelled words found with the selected dictionary.", + "NO_ERRORS_CLOSING" : "Spell check complete, didn't find any mispelled words. Closing now...", + "OK" : "OK", + "Original word" : "Original word", + "Please wait. Calling spell checker." : "Please wait. Calling spell checker.", + "Please wait: changing dictionary to" : "Please wait: changing dictionary to", + "QUIT_CONFIRMATION" : "This will drop changes and quit spell checker. Please confirm.", + "Re-check" : "Re-check", + "Replace all" : "Replace all", + "Replace with" : "Replace with", + "Replace" : "Replace", + "Revert" : "Revert", + "SC-spell-check" : "Spell-check", + "Suggestions" : "Suggestions", + "pliz weit ;-)" : "pliz weit ;-)" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/he.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/he.js new file mode 100644 index 00000000..acf98527 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/he.js @@ -0,0 +1,38 @@ +// I18N constants + +// LANG: "en", ENCODING: UTF-8 | ISO-8859-1 +// Author: Mihai Bazon, http://dynarch.com/mishoo + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +SpellChecker.I18N = { + "CONFIRM_LINK_CLICK" : "אנא אשר שברצונך לפתוח קישור זה", + "Cancel" : "ביטול", + "Dictionary" : "מילון", + "Finished list of mispelled words" : "הסתיימה רשימת המילים המאויתות באופן שגוי", + "I will open it in a new page." : "אני אפתח את זה בחלון חדש.", + "Ignore all" : "התעלם מהכל", + "Ignore" : "התעלם", + "NO_ERRORS" : "לא נמצאו מילים מאויתות באופן שגוי עם המילון הנבחר.", + "NO_ERRORS_CLOSING" : "בדיקת האיות נסתיימה, לא נמצאו מילים מאויתות באופן שגוי. נסגר כעת...", + "OK" : "אישור", + "Original word" : "המילה המקורית", + "Please wait. Calling spell checker." : "אנא המתן. קורא לבודק איות.", + "Please wait: changing dictionary to" : "אנא המתן: מחליף מילון ל-", + "QUIT_CONFIRMATION" : "זה יבטל את השינויים ויצא מבודק האיות. אנא אשר.", + "Re-check" : "בדוק מחדש", + "Replace all" : "החלף הכל", + "Replace with" : "החלף ב-", + "Replace" : "החלף", + "Revert" : "החזר שינויים", + "SC-spell-check" : "בדיקת איות", + "Suggestions" : "הצעות", + "pliz weit ;-)" : "ענא המטן ;-)" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/hu.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/hu.js new file mode 100644 index 00000000..64102c55 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/hu.js @@ -0,0 +1,37 @@ +// I18N constants + +// LANG: "hu", ENCODING: UTF-8 +// Author: Miklós Somogyi, + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +SpellChecker.I18N = { + "CONFIRM_LINK_CLICK" : "Megerősítés", + "Cancel" : "Mégsem", + "Dictionary" : "Szótár", + "Finished list of mispelled words" : "A tévesztett szavak listájának vége", + "I will open it in a new page." : "Megnyitás új lapon", + "Ignore all" : "Minden elvetése", + "Ignore" : "Elvetés", + "NO_ERRORS" : "A választott szótár szerint nincs tévesztett szó.", + "NO_ERRORS_CLOSING" : "A helyesírásellenőrzés kész, tévesztett szó nem fordult elő. Bezárás...", + "OK" : "Rendben", + "Original word" : "Eredeti szó", + "Please wait. Calling spell checker." : "Kis türelmet, a helyesírásellenőrző hívása folyamatban.", + "Please wait: changing dictionary to" : "Kis türelmet, szótár cseréje", + "QUIT_CONFIRMATION" : "Kilépés a változások eldobásával. Jóváhagyja?", + "Re-check" : "Újraellenőrzés", + "Replace all" : "Mind cseréje", + "Replace with" : "Csere a következőre:", + "Replace" : "Csere", + "SC-spell-check" : "Helyesírásellenőrzés", + "Suggestions" : "Tippek", + "pliz weit ;-)" : "Kis türelmet ;-)" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/it.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/it.js new file mode 100644 index 00000000..0af5f770 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/it.js @@ -0,0 +1,28 @@ +// I18N constants + +// LANG: "it", ENCODING: UTF-8 | ISO-8859-1 +// Author: Fabio Rotondo, + +SpellChecker.I18N = { + "CONFIRM_LINK_CLICK" : "Devi confermare l'apertura di questo link", + "Cancel" : "Annulla", + "Dictionary" : "Dizionario", + "Finished list of mispelled words" : "La lista delle parole scritte male è terminata", + "I will open it in a new page." : "Lo aprirò in una nuova pagina.", + "Ignore all" : "Ignora sempre", + "Ignore" : "Ignora", + "NO_ERRORS" : "Non sono state trovate parole scritte male con il dizionario selezionato.", + "NO_ERRORS_CLOSING" : "Controllo completato, non sono state trovate parole scritte male. Sto chiudendo...", + "OK" : "OK", + "Original word" : "Parola originale", + "Please wait. Calling spell checker." : "Attendere. Sto invocando lo Spell Checker.", + "Please wait: changing dictionary to" : "Attendere. Cambio il dizionario in", + "QUIT_CONFIRMATION" : "Questo annullerà le modifiche e chiuderà lo Spell Checker. Conferma.", + "Re-check" : "Ricontrolla", + "Replace all" : "Sostituisci sempre", + "Replace with" : "Stostituisci con", + "Replace" : "Sostituisci", + "SC-spell-check" : "Spell-check", + "Suggestions" : "Suggerimenti", + "pliz weit ;-)" : "Attendere Prego ;-)" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/nl.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/nl.js new file mode 100644 index 00000000..dab1c728 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/nl.js @@ -0,0 +1,39 @@ +// I18N constants + +// LANG: "nl", ENCODING: UTF-8 | ISO-8859-1 +// Author: A.H van den Broek http://www.kontaktfm.nl +// Email : tonbroek@kontaktfm.nl + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +SpellChecker.I18N = { + "CONFIRM_LINK_CLICK" : "Weet u zeker dat u deze link wilt openen?", + "Cancel" : "Annuleer", + "Dictionary" : "Woordenboek", + "Finished list of mispelled words" : "klaar met de lijst van fouten woorden", + "I will open it in a new page." : "Ik zal het in een nieuwe pagina openen.", + "Ignore all" : "alles overslaan", + "Ignore" : "Overslaan", + "NO_ERRORS" : "Geen fouten gevonden met dit woordenboek.", + "NO_ERRORS_CLOSING" : "Spell checking is klaar, geen fouten gevonden. spell checking word gesloten...", + "OK" : "OK", + "Original word" : "Originele woord", + "Please wait. Calling spell checker." : "Even wachten. spell checker wordt geladen.", + "Please wait: changing dictionary to" : "even wachten: woordenboek wordt veranderd naar", + "QUIT_CONFIRMATION" : "Dit zal alle veranderingen annuleren en de spell checker sluiten. Weet u het zeker?", + "Re-check" : "Opnieuw", + "Replace all" : "Alles vervangen", + "Replace with" : "Vervangen met", + "Replace" : "Vervangen", + "Revert" : "Omkeren", + "SC-spell-check" : "Spell-check", + "Suggestions" : "Suggestie", + "pliz weit ;-)" : "Even wachten ;-)" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/ro.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/ro.js new file mode 100644 index 00000000..d8e96b9b --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/lang/ro.js @@ -0,0 +1,37 @@ +// I18N constants + +// LANG: "ro", ENCODING: UTF-8 +// Author: Mihai Bazon, http://dynarch.com/mishoo + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +SpellChecker.I18N = { + "CONFIRM_LINK_CLICK" : "Vă rog confirmaţi că vreţi să deschideţi acest link", + "Cancel" : "Anulează", + "Dictionary" : "Dicţionar", + "Finished list of mispelled words" : "Am terminat lista de cuvinte greşite", + "I will open it in a new page." : "O voi deschide într-o altă fereastră.", + "Ignore all" : "Ignoră toate", + "Ignore" : "Ignoră", + "NO_ERRORS" : "Nu am găsit nici un cuvânt greşit cu acest dicţionar.", + "NO_ERRORS_CLOSING" : "Am terminat, nu am detectat nici o greşeală. Acum închid fereastra...", + "OK" : "OK", + "Original word" : "Cuvântul original", + "Please wait. Calling spell checker." : "Vă rog aşteptaţi. Apelez spell-checker-ul.", + "Please wait: changing dictionary to" : "Vă rog aşteptaţi. Schimb dicţionarul cu", + "QUIT_CONFIRMATION" : "Doriţi să renunţaţi la modificări şi să închid spell-checker-ul?", + "Re-check" : "Scanează", + "Replace all" : "Înlocuieşte toate", + "Replace with" : "Înlocuieşte cu", + "Replace" : "Înlocuieşte", + "SC-spell-check" : "Detectează greşeli", + "Suggestions" : "Sugestii", + "pliz weit ;-)" : "va rog ashteptatzi ;-)" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/readme-tech.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/readme-tech.html new file mode 100644 index 00000000..0897962b --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/readme-tech.html @@ -0,0 +1,114 @@ + + + + HTMLArea Spell Checker + + + +

    HTMLArea Spell Checker

    + +

    The HTMLArea Spell Checker subsystem consists of the following + files:

    + +
      + +
    • spell-checker.js — the spell checker plugin interface for + HTMLArea
    • + +
    • spell-checker-ui.html — the HTML code for the user + interface
    • + +
    • spell-checker-ui.js — functionality of the user + interface
    • + +
    • spell-checker-logic.cgi — Perl CGI script that checks a text + given through POST for spelling errors
    • + +
    • spell-checker-style.css — style for mispelled words
    • + +
    • lang/en.js — main language file (English).
    • + +
    + +

    Process overview

    + +

    + When an end-user clicks the "spell-check" button in the HTMLArea + editor, a new window is opened with the URL of "spell-check-ui.html". + This window initializes itself with the text found in the editor (uses + window.opener.SpellChecker.editor global variable) and it + submits the text to the server-side script "spell-check-logic.cgi". + The target of the FORM is an inline frame which is used both to + display the text and correcting. +

    + +

    + Further, spell-check-logic.cgi calls Aspell for each portion of plain + text found in the given HTML. It rebuilds an HTML file that contains + clear marks of which words are incorrect, along with suggestions for + each of them. This file is then loaded in the inline frame. Upon + loading, a JavaScript function from "spell-check-ui.js" is called. + This function will retrieve all mispelled words from the HTML of the + iframe and will setup the user interface so that it allows correction. +

    + +

    The server-side script (spell-check-logic.cgi)

    + +

    + Unicode safety — the program is + Unicode safe. HTML entities are expanded into their corresponding + Unicode characters. These characters will be matched as part of the + word passed to Aspell. All texts passed to Aspell are in Unicode + (when appropriate). However, Aspell seems to not support Unicode + yet (thread concerning Aspell and Unicode). + This mean that words containing Unicode + characters that are not in 0..255 are likely to be reported as "mispelled" by Aspell. +

    + +

    + Update: though I've never seen it mentioned + anywhere, it looks that Aspell does, in fact, speak + Unicode. Or else, maybe Text::Aspell does + transparent conversion; anyway, this new version of our + SpellChecker plugin is, as tests show so far, fully + Unicode-safe... well, probably the only freeware + Web-based spell-checker which happens to have Unicode support. +

    + +

    + The Perl Unicode manual (man perluniintro) states: +

    + +
    + + Starting from Perl 5.6.0, Perl has had the capacity to handle Unicode + natively. Perl 5.8.0, however, is the first recommended release for + serious Unicode work. The maintenance release 5.6.1 fixed many of the + problems of the initial Unicode implementation, but for example regular + expressions still do not work with Unicode in 5.6.1. + +
    + +

    In other words, do not assume that this script is + Unicode-safe on Perl interpreters older than 5.8.0.

    + +

    The following Perl modules are required:

    + + + +

    Of these, only Text::Aspell might need to be installed manually. The + others are likely to be available by default in most Perl distributions.

    + +
    +
    Mihai Bazon
    + + Last modified: Fri Jan 30 19:14:11 EET 2004 + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-logic.cgi b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-logic.cgi new file mode 100644 index 00000000..cccb4d25 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-logic.cgi @@ -0,0 +1,210 @@ +#! /usr/bin/perl -w + +# Spell Checker Plugin for HTMLArea-3.0 +# Sponsored by www.americanbible.org +# Implementation by Mihai Bazon, http://dynarch.com/mishoo/ +# +# (c) dynarch.com 2003. +# Distributed under the same terms as HTMLArea itself. +# This notice MUST stay intact for use (see license.txt). +# +# $Id: spell-check-logic.cgi,v 1.10 2004/01/31 13:47:05 mishoo Exp $ + +use strict; +use utf8; +use Encode; +use Text::Aspell; +use XML::DOM; +use CGI; + +my $TIMER_start = undef; +eval { + use Time::HiRes qw( gettimeofday tv_interval ); + $TIMER_start = [gettimeofday()]; +}; +# use POSIX qw( locale_h ); + +binmode STDIN, ':utf8'; +binmode STDOUT, ':utf8'; + +my $debug = 0; + +my $speller = new Text::Aspell; +my $cgi = new CGI; + +my $total_words = 0; +my $total_mispelled = 0; +my $total_suggestions = 0; +my $total_words_suggested = 0; + +# FIXME: report a nice error... +die "Can't create speller!" unless $speller; + +my $dict = $cgi->param('dictionary') || $cgi->cookie('dictionary') || 'en'; + +# add configurable option for this +$speller->set_option('lang', $dict); +$speller->set_option('encoding', 'UTF-8'); +#setlocale(LC_CTYPE, $dict); + +# ultra, fast, normal, bad-spellers +# bad-spellers seems to cause segmentation fault +$speller->set_option('sug-mode', 'normal'); + +my %suggested_words = (); +keys %suggested_words = 128; + +my $file_content = decode('UTF-8', $cgi->param('content')); +$file_content = parse_with_dom($file_content); + +my $ck_dictionary = $cgi->cookie(-name => 'dictionary', + -value => $dict, + -expires => '+30d'); + +print $cgi->header(-type => 'text/html; charset: utf-8', + -cookie => $ck_dictionary); + +my $js_suggested_words = make_js_hash(\%suggested_words); +my $js_spellcheck_info = make_js_hash_from_array + ([ + [ 'Total words' , $total_words ], + [ 'Mispelled words' , $total_mispelled . ' in dictionary \"'.$dict.'\"' ], + [ 'Total suggestions' , $total_suggestions ], + [ 'Total words suggested' , $total_words_suggested ], + [ 'Spell-checked in' , defined $TIMER_start ? (tv_interval($TIMER_start) . ' seconds') : 'n/a' ] + ]); + +print qq^ + + + + + + +^; + +print $file_content; +if ($cgi->param('init') eq '1') { + my @dicts = $speller->dictionary_info(); + my $dictionaries = ''; + foreach my $i (@dicts) { + next if $i->{jargon}; + my $name = $i->{name}; + if ($name eq $dict) { + $name = '@'.$name; + } + $dictionaries .= ',' . $name; + } + $dictionaries =~ s/^,//; + print qq^
    $dictionaries
    ^; +} + +print ''; + +# Perl is beautiful. +sub spellcheck { + my $node = shift; + my $doc = $node->getOwnerDocument; + my $check = sub { # called for each word in the text + # input is in UTF-8 + my $word = shift; + my $already_suggested = defined $suggested_words{$word}; + ++$total_words; + if (!$already_suggested && $speller->check($word)) { + return undef; + } else { + # we should have suggestions; give them back to browser in UTF-8 + ++$total_mispelled; + if (!$already_suggested) { + # compute suggestions for this word + my @suggestions = $speller->suggest($word); + my $suggestions = decode($speller->get_option('encoding'), join(',', @suggestions)); + $suggested_words{$word} = $suggestions; + ++$total_suggestions; + $total_words_suggested += scalar @suggestions; + } + # HA-spellcheck-error + my $err = $doc->createElement('span'); + $err->setAttribute('class', 'HA-spellcheck-error'); + my $tmp = $doc->createTextNode; + $tmp->setNodeValue($word); + $err->appendChild($tmp); + return $err; + } + }; + while ($node->getNodeValue =~ /([\p{IsWord}']+)/) { + my $word = $1; + my $before = $`; + my $after = $'; + my $df = &$check($word); + if (!$df) { + $before .= $word; + } + { + my $parent = $node->getParentNode; + my $n1 = $doc->createTextNode; + $n1->setNodeValue($before); + $parent->insertBefore($n1, $node); + $parent->insertBefore($df, $node) if $df; + $node->setNodeValue($after); + } + } +}; + +sub check_inner_text { + my $node = shift; + my $text = ''; + for (my $i = $node->getFirstChild; defined $i; $i = $i->getNextSibling) { + if ($i->getNodeType == TEXT_NODE) { + spellcheck($i); + } + } +}; + +sub parse_with_dom { + my ($text) = @_; + $text = ''.$text.''; + + my $parser = new XML::DOM::Parser; + if ($debug) { + open(FOO, '>:utf8', '/tmp/foo'); + print FOO $text; + close FOO; + } + my $doc = $parser->parse($text); + my $nodes = $doc->getElementsByTagName('*'); + my $n = $nodes->getLength; + + for (my $i = 0; $i < $n; ++$i) { + my $node = $nodes->item($i); + if ($node->getNodeType == ELEMENT_NODE) { + check_inner_text($node); + } + } + + my $ret = $doc->toString; + $ret =~ s{(.*)}{$1}sg; + return $ret; +}; + +sub make_js_hash { + my ($hash) = @_; + my $js_hash = ''; + while (my ($key, $val) = each %$hash) { + $js_hash .= ',' if $js_hash; + $js_hash .= '"'.$key.'":"'.$val.'"'; + } + return $js_hash; +}; + +sub make_js_hash_from_array { + my ($array) = @_; + my $js_hash = ''; + foreach my $i (@$array) { + $js_hash .= ',' if $js_hash; + $js_hash .= '"'.$i->[0].'":"'.$i->[1].'"'; + } + return $js_hash; +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-style.css b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-style.css new file mode 100644 index 00000000..1408ba06 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-style.css @@ -0,0 +1,10 @@ +.HA-spellcheck-error { border-bottom: 1px dashed #f00; cursor: default; } +.HA-spellcheck-same { background-color: #cef; color: #000; } +.HA-spellcheck-hover { background-color: #433; color: white; } +.HA-spellcheck-fixed { border-bottom: 1px dashed #0b8; } +.HA-spellcheck-current { background-color: #9be; color: #000; } +.HA-spellcheck-suggestions { display: none; } + +#HA-spellcheck-dictionaries { display: none; } + +a:link, a:visited { color: #55e; } diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-ui.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-ui.html new file mode 100644 index 00000000..d98d27d5 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-ui.html @@ -0,0 +1,122 @@ + + + + + Spell Checker + + + + + + + + + +
    + + + + + + + + + + + + + +
    +
    Dictionary + + +
    + Please wait. Calling spell checker. +
    +
    + +
    +
    Original word
    +
    pliz weit ;-)
    +
    + +
    +
    Replace with
    +
    +
    +
    +
    +
    +
    +
    Suggestions
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    + + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-ui.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-ui.js new file mode 100644 index 00000000..939a4201 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-check-ui.js @@ -0,0 +1,397 @@ +// Spell Checker Plugin for HTMLArea-3.0 +// Sponsored by www.americanbible.org +// Implementation by Mihai Bazon, http://dynarch.com/mishoo/ +// +// (c) dynarch.com 2003-2005. +// Distributed under the same terms as HTMLArea itself. +// This notice MUST stay intact for use (see license.txt). +// +// $Id: spell-check-ui.js,v 1.11 2005/01/20 17:49:03 mishoo Exp $ + +// internationalization file was already loaded in parent ;-) +var SpellChecker = window.opener.SpellChecker; +var i18n = SpellChecker.I18N; + +var HTMLArea = window.opener.HTMLArea; +var is_ie = HTMLArea.is_ie; +var editor = SpellChecker.editor; +var frame = null; +var currentElement = null; +var wrongWords = null; +var modified = false; +var allWords = {}; +var fixedWords = []; +var suggested_words = {}; + +function makeCleanDoc(leaveFixed) { + // document.getElementById("status").innerHTML = 'Please wait: rendering valid HTML'; + var words = wrongWords.concat(fixedWords); + for (var i = words.length; --i >= 0;) { + var el = words[i]; + if (!(leaveFixed && /HA-spellcheck-fixed/.test(el.className))) { + el.parentNode.insertBefore(el.firstChild, el); + el.parentNode.removeChild(el); + } else + el.className = "HA-spellcheck-fixed"; + } + // we should use innerHTML here, but IE6's implementation fucks up the + // HTML to such extent that our poor Perl parser doesn't understand it + // anymore. + return window.opener.HTMLArea.getHTML(frame.contentWindow.document.body, false, editor); +}; + +function recheckClicked() { + document.getElementById("status").innerHTML = i18n["Please wait: changing dictionary to"] + ': "' + document.getElementById("f_dictionary").value + '".'; + var field = document.getElementById("f_content"); + field.value = makeCleanDoc(true); + field.form.submit(); +}; + +function saveClicked() { + if (modified) { + editor.setHTML(makeCleanDoc(false)); + } + window.close(); + return false; +}; + +function cancelClicked() { + var ok = true; + if (modified) { + ok = confirm(i18n["QUIT_CONFIRMATION"]); + } + if (ok) { + window.close(); + } + return false; +}; + +function replaceWord(el) { + var replacement = document.getElementById("v_replacement").value; + var this_word_modified = (el.innerHTML != replacement); + if (this_word_modified) + modified = true; + if (el) { + el.className = el.className.replace(/\s*HA-spellcheck-(hover|fixed)\s*/g, " "); + } + el.className += " HA-spellcheck-fixed"; + el.__msh_fixed = true; + if (!this_word_modified) { + return false; + } + el.innerHTML = replacement; +}; + +function replaceClicked() { + replaceWord(currentElement); + var start = currentElement.__msh_id; + var index = start; + do { + ++index; + if (index == wrongWords.length) { + index = 0; + } + } while ((index != start) && wrongWords[index].__msh_fixed); + if (index == start) { + index = 0; + alert(i18n["Finished list of mispelled words"]); + } + wrongWords[index].__msh_wordClicked(true); + return false; +}; + +function revertClicked() { + document.getElementById("v_replacement").value = currentElement.__msh_origWord; + replaceWord(currentElement); + currentElement.className = "HA-spellcheck-error HA-spellcheck-current"; + return false; +}; + +function replaceAllClicked() { + var replacement = document.getElementById("v_replacement").value; + var ok = true; + var spans = allWords[currentElement.__msh_origWord]; + if (spans.length == 0) { + alert("An impossible condition just happened. Call FBI. ;-)"); + } else if (spans.length == 1) { + replaceClicked(); + return false; + } + /* + var message = "The word \"" + currentElement.__msh_origWord + "\" occurs " + spans.length + " times.\n"; + if (replacement == currentElement.__msh_origWord) { + ok = confirm(message + "Ignore all occurrences?"); + } else { + ok = confirm(message + "Replace all occurrences with \"" + replacement + "\"?"); + } + */ + if (ok) { + for (var i = 0; i < spans.length; ++i) { + if (spans[i] != currentElement) { + replaceWord(spans[i]); + } + } + // replace current element the last, so that we jump to the next word ;-) + replaceClicked(); + } + return false; +}; + +function ignoreClicked() { + document.getElementById("v_replacement").value = currentElement.__msh_origWord; + replaceClicked(); + return false; +}; + +function ignoreAllClicked() { + document.getElementById("v_replacement").value = currentElement.__msh_origWord; + replaceAllClicked(); + return false; +}; + +function learnClicked() { + alert("Not [yet] implemented"); + return false; +}; + +function internationalizeWindow() { + var types = ["div", "span", "button"]; + for (var i = 0; i < types.length; ++i) { + var tag = types[i]; + var els = document.getElementsByTagName(tag); + for (var j = els.length; --j >= 0;) { + var el = els[j]; + if (el.childNodes.length == 1 && /\S/.test(el.innerHTML)) { + var txt = el.innerHTML; + if (typeof i18n[txt] != "undefined") { + el.innerHTML = i18n[txt]; + } + } + } + } +}; + +function initDocument() { + internationalizeWindow(); + modified = false; + frame = document.getElementById("i_framecontent"); + var field = document.getElementById("f_content"); + field.value = HTMLArea.getHTML(editor._doc.body, false, editor); + field.form.submit(); + document.getElementById("f_init").value = "0"; + + // assign some global event handlers + + var select = document.getElementById("v_suggestions"); + select.onchange = function() { + document.getElementById("v_replacement").value = this.value; + }; + if (is_ie) { + select.attachEvent("ondblclick", replaceClicked); + } else { + select.addEventListener("dblclick", replaceClicked, true); + } + + document.getElementById("b_replace").onclick = replaceClicked; + // document.getElementById("b_learn").onclick = learnClicked; + document.getElementById("b_replall").onclick = replaceAllClicked; + document.getElementById("b_ignore").onclick = ignoreClicked; + document.getElementById("b_ignall").onclick = ignoreAllClicked; + document.getElementById("b_recheck").onclick = recheckClicked; + document.getElementById("b_revert").onclick = revertClicked; + document.getElementById("b_info").onclick = displayInfo; + + document.getElementById("b_ok").onclick = saveClicked; + document.getElementById("b_cancel").onclick = cancelClicked; + + select = document.getElementById("v_dictionaries"); + select.onchange = function() { + document.getElementById("f_dictionary").value = this.value; + }; +}; + +function getAbsolutePos(el) { + var r = { x: el.offsetLeft, y: el.offsetTop }; + if (el.offsetParent) { + var tmp = getAbsolutePos(el.offsetParent); + r.x += tmp.x; + r.y += tmp.y; + } + return r; +}; + +function wordClicked(scroll) { + var self = this; + if (scroll) (function() { + var pos = getAbsolutePos(self); + var ws = { x: frame.offsetWidth - 4, + y: frame.offsetHeight - 4 }; + var wp = { x: frame.contentWindow.document.body.scrollLeft, + y: frame.contentWindow.document.body.scrollTop }; + pos.x -= Math.round(ws.x/2); + if (pos.x < 0) pos.x = 0; + pos.y -= Math.round(ws.y/2); + if (pos.y < 0) pos.y = 0; + frame.contentWindow.scrollTo(pos.x, pos.y); + })(); + if (currentElement) { + var a = allWords[currentElement.__msh_origWord]; + currentElement.className = currentElement.className.replace(/\s*HA-spellcheck-current\s*/g, " "); + for (var i = 0; i < a.length; ++i) { + var el = a[i]; + if (el != currentElement) { + el.className = el.className.replace(/\s*HA-spellcheck-same\s*/g, " "); + } + } + } + currentElement = this; + this.className += " HA-spellcheck-current"; + var a = allWords[currentElement.__msh_origWord]; + for (var i = 0; i < a.length; ++i) { + var el = a[i]; + if (el != currentElement) { + el.className += " HA-spellcheck-same"; + } + } + // document.getElementById("b_replall").disabled = (a.length <= 1); + // document.getElementById("b_ignall").disabled = (a.length <= 1); + var txt; + if (a.length == 1) { + txt = "one occurrence"; + } else if (a.length == 2) { + txt = "two occurrences"; + } else { + txt = a.length + " occurrences"; + } + var suggestions = suggested_words[this.__msh_origWord]; + if (suggestions) + suggestions = suggestions.split(/,/); + else + suggestions = []; + var select = document.getElementById("v_suggestions"); + document.getElementById("statusbar").innerHTML = "Found " + txt + + ' for word "' + currentElement.__msh_origWord + '"'; + for (var i = select.length; --i >= 0;) { + select.remove(i); + } + for (var i = 0; i < suggestions.length; ++i) { + var txt = suggestions[i]; + var option = document.createElement("option"); + option.value = txt; + option.appendChild(document.createTextNode(txt)); + select.appendChild(option); + } + document.getElementById("v_currentWord").innerHTML = this.__msh_origWord; + if (suggestions.length > 0) { + select.selectedIndex = 0; + select.onchange(); + } else { + document.getElementById("v_replacement").value = this.innerHTML; + } + select.style.display = "none"; + select.style.display = "block"; + return false; +}; + +function wordMouseOver() { + this.className += " HA-spellcheck-hover"; +}; + +function wordMouseOut() { + this.className = this.className.replace(/\s*HA-spellcheck-hover\s*/g, " "); +}; + +function displayInfo() { + var info = frame.contentWindow.spellcheck_info; + if (!info) + alert("No information available"); + else { + var txt = "** Document information **"; + for (var i in info) { + txt += "\n" + i + " : " + info[i]; + } + alert(txt); + } + return false; +}; + +function finishedSpellChecking() { + // initialization of global variables + currentElement = null; + wrongWords = null; + allWords = {}; + fixedWords = []; + suggested_words = frame.contentWindow.suggested_words; + + document.getElementById("status").innerHTML = "HTMLArea Spell Checker (info)"; + var doc = frame.contentWindow.document; + var spans = doc.getElementsByTagName("span"); + var sps = []; + var id = 0; + for (var i = 0; i < spans.length; ++i) { + var el = spans[i]; + if (/HA-spellcheck-error/.test(el.className)) { + sps.push(el); + el.__msh_wordClicked = wordClicked; + el.onclick = function(ev) { + ev || (ev = window.event); + ev && HTMLArea._stopEvent(ev); + return this.__msh_wordClicked(false); + }; + el.onmouseover = wordMouseOver; + el.onmouseout = wordMouseOut; + el.__msh_id = id++; + var txt = (el.__msh_origWord = el.firstChild.data); + el.__msh_fixed = false; + if (typeof allWords[txt] == "undefined") { + allWords[txt] = [el]; + } else { + allWords[txt].push(el); + } + } else if (/HA-spellcheck-fixed/.test(el.className)) { + fixedWords.push(el); + } + } + wrongWords = sps; + if (sps.length == 0) { + if (!modified) { + alert(i18n["NO_ERRORS_CLOSING"]); + window.close(); + } else { + alert(i18n["NO_ERRORS"]); + } + return false; + } + (currentElement = sps[0]).__msh_wordClicked(true); + var as = doc.getElementsByTagName("a"); + for (var i = as.length; --i >= 0;) { + var a = as[i]; + a.onclick = function() { + if (confirm(i18n["CONFIRM_LINK_CLICK"] + ":\n" + + this.href + "\n" + i18n["I will open it in a new page."])) { + window.open(this.href); + } + return false; + }; + } + var dicts = doc.getElementById("HA-spellcheck-dictionaries"); + if (dicts) { + dicts.parentNode.removeChild(dicts); + dicts = dicts.innerHTML.split(/,/); + var select = document.getElementById("v_dictionaries"); + for (var i = select.length; --i >= 0;) { + select.remove(i); + } + for (var i = 0; i < dicts.length; ++i) { + var txt = dicts[i]; + var option = document.createElement("option"); + if (/^@(.*)$/.test(txt)) { + txt = RegExp.$1; + option.selected = true; + } + option.value = txt; + option.appendChild(document.createTextNode(txt)); + select.appendChild(option); + } + } +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-checker.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-checker.js new file mode 100644 index 00000000..c486b657 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/SpellChecker/spell-checker.js @@ -0,0 +1,79 @@ +// Spell Checker Plugin for HTMLArea-3.0 +// Sponsored by www.americanbible.org +// Implementation by Mihai Bazon, http://dynarch.com/mishoo/ +// +// (c) dynarch.com 2003-2005. +// Distributed under the same terms as HTMLArea itself. +// This notice MUST stay intact for use (see license.txt). +// +// $Id: spell-checker.js,v 1.9 2005/01/20 17:49:02 mishoo Exp $ + +function SpellChecker(editor) { + this.editor = editor; + + var cfg = editor.config; + var tt = SpellChecker.I18N; + var bl = SpellChecker.btnList; + var self = this; + + // register the toolbar buttons provided by this plugin + var toolbar = []; + for (var i = 0; i < bl.length; ++i) { + var btn = bl[i]; + if (!btn) { + toolbar.push("separator"); + } else { + var id = "SC-" + btn[0]; + cfg.registerButton(id, tt[id], editor.imgURL(btn[0] + ".gif", "SpellChecker"), false, + function(editor, id) { + // dispatch button press event + self.buttonPress(editor, id); + }, btn[1]); + toolbar.push(id); + } + } + + for (var i = 0; i < toolbar.length; ++i) { + cfg.toolbar[0].push(toolbar[i]); + } +}; + +SpellChecker._pluginInfo = { + name : "SpellChecker", + version : "1.0", + developer : "Mihai Bazon", + developer_url : "http://dynarch.com/mishoo/", + c_owner : "Mihai Bazon", + sponsor : "American Bible Society", + sponsor_url : "http://www.americanbible.org", + license : "htmlArea" +}; + +SpellChecker.btnList = [ + null, // separator + ["spell-check"] + ]; + +SpellChecker.prototype.buttonPress = function(editor, id) { + switch (id) { + case "SC-spell-check": + SpellChecker.editor = editor; + SpellChecker.init = true; + var uiurl = _editor_url + "plugins/SpellChecker/spell-check-ui.html"; + var win; + if (HTMLArea.is_ie) { + win = window.open(uiurl, "SC_spell_checker", + "toolbar=no,location=no,directories=no,status=no,menubar=no," + + "scrollbars=no,resizable=yes,width=600,height=450"); + } else { + win = window.open(uiurl, "SC_spell_checker", + "toolbar=no,menubar=no,personalbar=no,width=600,height=450," + + "scrollbars=no,resizable=yes"); + } + win.focus(); + break; + } +}; + +// this needs to be global, it's accessed from spell-check-ui.html +SpellChecker.editor = null; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/cell-delete.gif b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/cell-delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..df9594f44f8dbf6b910b66ae2ff5cb35495fbcd6 GIT binary patch literal 101 zcmZ?wbhEHb6k-r!SjYeZ|A7EZD*j|)WME)s&;f~ppn)TKkU`Oy~SG?aZxx}>{(YF> z`B+JrKS}gjjC*KO0^35@IT`A`iVut$c$WLdCLdCGU>Ut$e3xd9L4VrgUnvdzk8`|I IRTvno0nX7beExx}>-aR()r=UupZ`P|&?8O&f4BeeTy_fY?nvg1dtY;4is z1{uPThBAOKf`k(yf=HqWILtwZJLCvQI?B=WOrYTE!3ZIRYOH_-81R4s5y(IVkgx<3 zo=_qZnWzK`R$##kDnua*RRCyX9r^%aj8+!dTbhwZH_8~sG?uYzJKf==$RLxf9^f<| zS$E1A&UBWuNt#BfixNXjvBYL>G5S5IU<5N*!Ir~v4E3avk<4TzTO%trk{4BsViv22 zp>B_p4|x=Wvr#=*RHfQ8D>ZZP=2DchR3(gi(e&EwE@}_ku6Aa) zXg0KP8xzAaEz8=R_F)L*956BDX(fi==0i32fgPUdS>9qa@21#n#zLV?HS)L_7DHc; zv1LSNWJQBFPLJ&FF6>gdJAeM_tFzQ4V(XA2zyLFu%*@RH|Nj600RR90A^8LW000L7 zEC2ui01^Na000AEc)Hx~Cdw1SJ4Wbj>dV=tc?~Fpnh%_>bN&{gfC0MUhg`r>oc(+HWmg@z8pGoa>g~b}i&Uo{^l!w!pw*E?| J`l$yA06RU|K-&NS literal 0 HcmV?d00001 diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/cell-split.gif b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/cell-split.gif new file mode 100644 index 0000000000000000000000000000000000000000..8bd011e1941e0b7293404abf1692a0f59ef590d0 GIT binary patch literal 907 zcmW+#J!qC;47`>O?I1!yCx_IfA`V&{6hRLKwc?=Q&@rNe=p-VzdEzE@u$#EVA6#4t zIy$7{pl-Seg26#?6E~^ynWur5=lk*|x!m3Jo?1S6=~H2_+(tiAtbg1s1%ZLKL!41%Nizp$`zoXk~%Dr5R~-ql{rpV;Q@)(;ZHV3^K{; z0Z#Lgb*G%+OlLWpq-m78C^5toOKj#Aqu+xHMlgdFY&k5)P){lu$xK$VHL_wOc~QkE zX0eJG>h?JKkVi2{tDsiRY+$=drZALzO|RYVqV}-u zYG;OvWR$};VK2&ob*x{L;xjEELLABafS5 zG4%BqTSjC?Ry26y^vLe+!p`Mn^H;<(Nt3=T6HK;_KKob4!k?Kb;2-w&%l;zff!QnA zoZEGJJvQ#nZceSdTYr24(^G#p7q5SNdvE8$-q%+iTsn1s`-!F1TOYq3yFGLE$%VPK zr_0lelZ}I)*LL4|bm+!B-tYf@_ThnR)8`)kzI^`n@tb>hoO$(g`SH=GpH}xQU4HXo L<>l3FvpDh}Kw5Uq literal 0 HcmV?d00001 diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/col-delete.gif b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/col-delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..565afdc523b9d3afb789d43afa8c647e614b9f84 GIT binary patch literal 100 zcmZ?wbhEHb6k-r!SjYeZ|A7EZD*j|)WME)s&;f~pt8#2}(dY`SWJwcVvvSkEwbJ?-Hg#%>JWO$Z*7MV@XEU-p2^d;t%Ly@9 F0{~hZC+PqH literal 0 HcmV?d00001 diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/col-insert-before.gif b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/col-insert-before.gif new file mode 100644 index 0000000000000000000000000000000000000000..9be8a6e4e92682c94a05aefc4953688cc43657e7 GIT binary patch literal 110 zcmZ?wbhEHb6k-r!IK%(~4;vc(|Nqax(7*tsU_kLF3nK#qJA)2L1xPIevvI|)JO4g3 zIyCN3I9KJ`=AhAaPQcc=$|!U9ru^h%$A7G4P!#x{`O>zxPyBaf*I|WRNpA)QYXGI3 BEn@%x literal 0 HcmV?d00001 diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/col-split.gif b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/col-split.gif new file mode 100644 index 0000000000000000000000000000000000000000..83f21d14b3bfffbb1f9ec1695cc7474a9f5b7bba GIT binary patch literal 908 zcmW+#J&cZF5S%*-DsqL0DE1nchyqa%g-Im1T5~YOLC{SLZ;mBv7+vLsjef#e2?94px>G@Mfk6oI<41QpQHXm&s>VHype9jkZ z>omAQhA^a|3?Pgk;e?1Fk|+WWbI{=qIl_^Sa`ZeCD7bnsLP((+D_{WzJfJ`XGEe~| zEWv~)l!!zoDuIF(Snz@hQOH6S0NPlGK0p|wl?C>eW~9-LGKMjYW$fBccQ`3B$Rw)= zIL$}aopOdVo#kwjrcvsm#1K;~v6)+peh(@b!3J*i|QGg-;j$cl~RMHQo% z#VTT`+vDUz9>pN7f?74Rf$b)l!jz^mVXzqs`BHu{^)(+`x=XHbrK`M0c6S$c zZbV2amDEmHsQGxOLJ`VPh1woVHA(NfRHQOhsrJlD&D^`W6s0Ux3FBTgy>`2c+QYW1 zof$5g4K3Wp#IQ`uvNorE7y>y5ObmHiiQ%{TP|bZ{hi7`0w;0X4DK?w2P$*N4JZ^@? z(AQ&Z8Ic)T(cq2KBfGl`JC~D<^@t@&lfEnyOg4```&Y;8@2yk7KOE?n{YA_G+pb|_ z``$Av@#fC9jj0RoR-T^3^wi&txtrhK-rF_1|Mk^}mrp;~aq{r}TOYrkxV?4Z+4=2@ z&*!J-CU1^>T70(lXzu2pE$*pv#mSd y-ZH$X!ONt?@^V#DTY;4BZl(`^&sDL@Kl$NQ6En|0!_Y>n?o{Vz&RQ`B25SKFr6l_R literal 0 HcmV?d00001 diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/row-insert-above.gif b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/row-insert-above.gif new file mode 100644 index 0000000000000000000000000000000000000000..e39c948b03c050f19b1165fae710d356ca093620 GIT binary patch literal 116 zcmZ?wbhEHb6k-r!IK;rf@c%ypL(9X4hW{W2kOu{dKUo+V7}yzffPz4kLJSPdmKD41 z{4-#4&6@gIz`%k>!J|aht#F=8-$->CMz|NopIqJG?&1io(5i?@5`Iya(B;rVe$O@nHw{h!4^hn@6q0&{wHO}X1@Be zO@kX`2tyjm0Ky0oPKXF1i6Y=I2OaK^BOK`{N6#~Xf~yB3gcPc=0v2Gv0}4bS0~J8R z5=?kPiAZFk5-3=K1uv)&g)CG7ppA9t1B5YJSzvEzMjG8HV;Iv|#;)yjhm#_MOtN}_ z(|lyzDQ7s-S5s8ur?*lv<3Olc|;2Ai>vk98WkL3*BAU-Pl0yW|R2y2^WGcXwgu zMue17N$rG%nvZuX6rl`NsO_;-lk~1jMJiL3YR|0H%)OgSQOZ)4Fz!XuYqz_oJ#4$$ znc-ZKb+{7{YA_GQ`fLF zefZ*fe7HZgGr794{$c_9CV!vJFCF=K@6hb=_sfrNep)`TFt_sa_w~=K$FAJnTz+%w v!pgzvjpvK2dFkQY(y60QPHugD%G*DF-FdtA?eXbz4=!)Kd;NWFGQrvZ{*!eQ literal 0 HcmV?d00001 diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/table-prop.gif b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/img/table-prop.gif new file mode 100644 index 0000000000000000000000000000000000000000..e15a4a4445482677100bdebe0c8b5d621c14f438 GIT binary patch literal 145 zcmZ?wbhEHb6k-r!Sj5J_z|e5uzySv1ng9R)KXc{`kPl=4NyVQmj0_BH3_3tIP^Az9 z19Mo$t~>8ky_gRetG4r`;<20bf&ea313?Kh<{UyJ%Ls@}L6JL%-jsWo{X3=Gx)=N>w3 literal 0 HcmV?d00001 diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/cz.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/cz.js new file mode 100644 index 00000000..aa443410 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/cz.js @@ -0,0 +1,90 @@ +// I18N constants + +// LANG: "cz", ENCODING: UTF-8 | ISO-8859-2 +// Author: Jiri Löw, + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +TableOperations.I18N = { + "Align": "Zarovnání", + "All four sides": "Všechny čtyři strany", + "Background": "Pozadí", + "Baseline": "Základní linka", + "Border": "Obrys", + "Borders": "Obrysy", + "Bottom": "Dolů", + "CSS Style": "Kaskádové styly (CSS)", + "Caption": "Titulek", + "Cell Properties": "Vlastnosti buňky", + "Center": "Na střed", + "Char": "Znak", + "Collapsed borders": "Stlačené okraje", + "Color": "Barva", + "Description": "Popis", + "FG Color": "Barva popředí", + "Float": "Obtékání", + "Frames": "Rámečky", + "Height": "Výška", + "How many columns would you like to merge?": "Kolik sloupců si přejete spojit?", + "How many rows would you like to merge?": "Kolik řádků si přejete spojit?", + "Image URL": "Adresa obrázku", + "Justify": "Do stran", + "Layout": "Rozložení", + "Left": "Vlevo", + "Margin": "Okraj", + "Middle": "Na střed", + "No rules": "Žádné čáry", + "No sides": "Žádné strany", + "None": "Žádné", + "Padding": "Odsazování", + "Please click into some cell": "Prosím klikněte do některé buňky", + "Right": "Vpravo", + "Row Properties": "Vlastnosti řádku", + "Rules will appear between all rows and columns": "Čáry mezi všemi řádky i sloupci", + "Rules will appear between columns only": "Čáry pouze mezi sloupci", + "Rules will appear between rows only": "Čáry pouze mezi řádky", + "Rules": "Čáry", + "Spacing and padding": "Mezery a odsazování", + "Spacing": "Mezery", + "Summary": "Shrnutí", + "TO-cell-delete": "Smazat buňku", + "TO-cell-insert-after": "Vložit buňku za", + "TO-cell-insert-before": "Vložit buňku před", + "TO-cell-merge": "Spojit buňky", + "TO-cell-prop": "Vlastnosti buňky", + "TO-cell-split": "Rozdělit buňku", + "TO-col-delete": "Smazat sloupec", + "TO-col-insert-after": "Vložit sloupec za", + "TO-col-insert-before": "Vložit sloupec před", + "TO-col-split": "Rozdělit sloupec", + "TO-row-delete": "Smazat řádek", + "TO-row-insert-above": "Smazat řádek nad", + "TO-row-insert-under": "Smazat řádek pod", + "TO-row-prop": "Vlastnosti řádku", + "TO-row-split": "Rozdělit řádek", + "TO-table-prop": "Vlastnosti tabulky", + "Table Properties": "Vlastnosti tabulky", + "Text align": "Zarovnání textu", + "The bottom side only": "Pouze spodní strana", + "The left-hand side only": "Pouze levá strana", + "The right and left sides only": "Pouze levá a pravá strana", + "The right-hand side only": "Pouze pravá strana", + "The top and bottom sides only": "Pouze horní a dolní strana", + "The top side only": "Pouze horní strana", + "Top": "Nahoru", + "Unset color": "Zrušit barvu", + "Vertical align": "Svislé zarovnání", + "Width": "Šířka", + "not-del-last-cell": "HTMLArea zbaběle odmítá smazat poslední buňku v řádku.", + "not-del-last-col": "HTMLArea zbaběle odmítá smazat poslední sloupec v tabulce.", + "not-del-last-row": "HTMLArea zbaběle odmítá smazat poslední řádek v tabulce.", + "percent": "procent", + "pixels": "pixelů" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/da.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/da.js new file mode 100644 index 00000000..08a6f1b1 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/da.js @@ -0,0 +1,90 @@ +// I18N constants + +// LANG: "da", ENCODING: UTF-8 | ISO-8859-1 +// Author: Steen Sønderup, + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +TableOperations.I18N = { + "Align": "Placer", + "All four sides": "Alle fire sider", + "Background": "Baggrund", + "Baseline": "Bundlinie", + "Border": "Kant", + "Borders": "Kanter", + "Bottom": "Bund", + "CSS Style": "Stil [CSS]", + "Caption": "Titel", + "Cell Properties": "Celle egenskaber", + "Center": "Centrer", + "Char": "Plads", + "Collapsed borders": "Sammensmelt rammer", + "Color": "Farve", + "Description": "Beskrivelse", + "FG Color": "Font farve", + "Float": "Justering", + "Frames": "Udvendig", + "Height": "Højde", + "How many columns would you like to merge?": "Hvor mange kollonner vil du samle?", + "How many rows would you like to merge?": "Hvor mange rækker vil du samle?", + "Image URL": "Billede URL", + "Justify": "Lige margener", + "Layout": "Opsætning", + "Left": "Venstre", + "Margin": "Margen", + "Middle": "Centrer", + "No rules": "Ingen rammer", + "No sides": "Ingen sider", + "None": "Ingen", + "Padding": "Margen", + "Please click into some cell": "Klik på en celle", + "Right": "Højre", + "Row Properties": "Række egenskaber", + "Rules will appear between all rows and columns": "Rammer mellem rækker og kolonner", + "Rules will appear between columns only": "Kun rammer mellem kolonner", + "Rules will appear between rows only": "Kun rammer mellem rækker", + "Rules": "Invendig", + "Spacing and padding": "Afstand og margen", + "Spacing": "Afstand", + "Summary": "Beskrivelse", + "TO-cell-delete": "Slet celle", + "TO-cell-insert-after": "Indsæt celle efter", + "TO-cell-insert-before": "Indsæt celle før", + "TO-cell-merge": "Sammensæt celler", + "TO-cell-prop": "Celle egenskaber", + "TO-cell-split": "Opdel celle", + "TO-col-delete": "Slet kollonne", + "TO-col-insert-after": "Indsæt kolonne efter", + "TO-col-insert-before": "Indsæt kolonne før", + "TO-col-split": "Opdel kolonne", + "TO-row-delete": "Slet række", + "TO-row-insert-above": "Indsæt række før", + "TO-row-insert-under": "Indsæt række efter", + "TO-row-prop": "Række egenskaber", + "TO-row-split": "Opdel række", + "TO-table-prop": "Tabel egenskaber", + "Table Properties": "Tabel egenskaber", + "Text align": "Tekst", + "The bottom side only": "Kun i bunden", + "The left-hand side only": "Kun i højre side", + "The right and left sides only": "Kun i siderne", + "The right-hand side only": "Kun i venstre side", + "The top and bottom sides only": "Kun i top og bund", + "The top side only": "Kun i toppen", + "Top": "Top", + "Unset color": "Farve ikke valgt", + "Vertical align": "Vertikal placering", + "Width": "Bredde", + "not-del-last-cell": "Du kan ikke slette den sidste celle i en række.", + "not-del-last-col": "Du kan ikke slette den sidste kolonne i en tabel.", + "not-del-last-row": "Du kan ikke slette den sidste række i en tabel.", + "percent": "procent", + "pixels": "pixel" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/de.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/de.js new file mode 100644 index 00000000..1128cff6 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/de.js @@ -0,0 +1,81 @@ +// I18N constants + +// LANG: "de", ENCODING: UTF-8 | ISO-8859-1 +// Author: broxx, + +TableOperations.I18N = { + "Align": "Ausrichten", + "All four sides": "Alle 4 Seiten", + "Background": "Hintergrund", + "Baseline": "Basislinie", + "Border": "Rand", + "Borders": "Raender", + "Bottom": "Unten", + "CSS Style": "Style [CSS]", + "Caption": "Ueberschrift", + "Cell Properties": "Zellen", + "Center": "Zentrieren", + "Char": "Zeichen", + "Collapsed borders": "Collapsed borders", + "Color": "Farbe", + "Description": "Beschreibung", + "FG Color": "FG Farbe", + "Float": "Ausrichtung", + "Frames": "Rahmen", + "Height": "Hoehe", + "How many columns would you like to merge?": "Wieviele Spalten willst du verbinden?", + "How many rows would you like to merge?": "Wieviele Zeilen willst du verbinden?", + "Image URL": "Bild URL", + "Justify": "Justieren", + "Layout": "Layout", + "Left": "Links", + "Margin": "Rand", + "Middle": "Mitte", + "No rules": "Keine Balken", + "No sides": "Keine Seiten", + "None": "Keine", + "Padding": "Auffuellung", + "Please click into some cell": "Waehle eine Zelle", + "Right": "Rechts", + "Row Properties": "Reihen", + "Rules will appear between all rows and columns": "Balken zwischen Reihen und Spalten", + "Rules will appear between columns only": "Balken zwischen Spalten", + "Rules will appear between rows only": "Balken zwischen Reihen", + "Rules": "Balken", + "Spacing and padding": "Abstaende", + "Spacing": "Abstand", + "Summary": "Zusammenfassung", + "TO-cell-delete": "Zelle loeschen", + "TO-cell-insert-after": "Zelle einfuegen nach", + "TO-cell-insert-before": "Zelle einfuegen bevor", + "TO-cell-merge": "Zellen zusammenfuegen", + "TO-cell-prop": "Zelleinstellungen", + "TO-cell-split": "Zellen aufteilen", + "TO-col-delete": "Spalte loeschen", + "TO-col-insert-after": "Spalte einfuegen nach", + "TO-col-insert-before": "Spalte einfuegen bevor", + "TO-col-split": "Spalte aufteilen", + "TO-row-delete": "Reihe loeschen", + "TO-row-insert-above": "Reihe einfuegen vor", + "TO-row-insert-under": "Reihe einfuegen nach", + "TO-row-prop": "Reiheneinstellungen", + "TO-row-split": "Reihen aufteilen", + "TO-table-prop": "Tabelle", + "Table Properties": "Tabelle", + "Text align": "Ausrichtung", + "The bottom side only": "Nur untere Seite", + "The left-hand side only": "Nur linke Seite", + "The right and left sides only": "Nur linke und rechte Seite", + "The right-hand side only": "Nur rechte Seite", + "The top and bottom sides only": "Nur obere und untere Seite", + "The top side only": "Nur obere Seite", + "Top": "Oben", + "Unset color": "Farbe", + "Vertical align": "Ausrichtung", + "Width": "Breite", + "not-del-last-cell": "Letzte Zelle in dieser Reihe!", + "not-del-last-col": "Letzte Spalte in dieser Tabelle!", + "not-del-last-row": "Letzte Reihe in dieser Tabelle", + "percent": "%", + "pixels": "pixels" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/el.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/el.js new file mode 100644 index 00000000..06bae5cf --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/el.js @@ -0,0 +1,81 @@ +// I18N constants + +// LANG: "el", ENCODING: UTF-8 | ISO-8859-7 +// Author: Dimitris Glezos, dimitris@glezos.com + +TableOperations.I18N = { + "Align": "Στοίχηση", + "All four sides": "Και οι 4 πλευρές", + "Background": "Φόντο", + "Baseline": "Baseline", + "Border": "Περίγραμμα", + "Borders": "Περιγράμματα", + "Bottom": "Κάτω μέρος", + "CSS Style": "Στυλ [CSS]", + "Caption": "Λεζάντα", + "Cell Properties": "Ιδιότητες Κελιού", + "Center": "Κέντρο", + "Char": "Χαρακτήρας", + "Collapsed borders": "Συμπτυγμένα περιγράμματα", + "Color": "Χρώμα", + "Description": "Περιγραφή", + "FG Color": "Χρώμα αντικειμένων", + "Float": "Float", + "Frames": "Frames", + "Height": "Ύψος", + "How many columns would you like to merge?": "Πόσες στήλες θέλετε να ενώσετε;", + "How many rows would you like to merge?": "Πόσες γραμμές θέλετε να ενώσετε;", + "Image URL": "URL εικόνας", + "Justify": "Πλήρης στοίχηση", + "Layout": "Διάταξη", + "Left": "Αριστερά", + "Margin": "Περιθώριο", + "Middle": "Κέντρο", + "No rules": "Χωρίς Γραμμές", + "No sides": "No sides", + "None": "Τίποτα", + "Padding": "Εσοχή", + "Please click into some cell": "Κάντε κλικ μέσα σε κάποιο κελί", + "Right": "Δεξιά", + "Row Properties": "Ιδιότητες Γραμμής", + "Rules will appear between all rows and columns": "Γραμμές θα εμφανίζονται μεταξύ όλων των γραμμών και στηλών", + "Rules will appear between columns only": "Γραμμές θα εμφανίζονται μόνο μεταξύ στηλών", + "Rules will appear between rows only": "Γραμμές θα εμφανίζονται μόνο μεταξύ γραμμών", + "Rules": "Γραμμές", + "Spacing and padding": "Αποστάσεις και εσοχές", + "Spacing": "Αποστάσεις", + "Summary": "Σύνοψη", + "TO-cell-delete": "Διαγραφή κελιού", + "TO-cell-insert-after": "Εισαγωγή κελιού μετά", + "TO-cell-insert-before": "Εισαγωγή κελιού πριν", + "TO-cell-merge": "Συγχώνευση κελιών", + "TO-cell-prop": "Ιδιότητες κελιού", + "TO-cell-split": "Διαίρεση κελιού", + "TO-col-delete": "Διαγραφή στήλης", + "TO-col-insert-after": "Εισαγωγή στήλης μετά", + "TO-col-insert-before": "Εισαγωγή στήλης πριν", + "TO-col-split": "Διαίρεση στήλης", + "TO-row-delete": "Διαγραφή γραμμής", + "TO-row-insert-above": "Εισαγωγή γραμμής μετά", + "TO-row-insert-under": "Εισαγωγή γραμμής πριν", + "TO-row-prop": "Ιδιότητες γραμμής", + "TO-row-split": "Διαίρεση γραμμής", + "TO-table-prop": "Ιδιότητες πίνακα", + "Table Properties": "Ιδιότητες πίνακα", + "Text align": "Στοίχηση κειμένου", + "The bottom side only": "Η κάτω πλευρά μόνο", + "The left-hand side only": "Η αριστερή πλευρά μόνο", + "The right and left sides only": "Οι δεξιές και αριστερές πλευρές μόνο", + "The right-hand side only": "Η δεξιά πλευρά μόνο", + "The top and bottom sides only": "Οι πάνω και κάτω πλευρές μόνο", + "The top side only": "Η πάνω πλευρά μόνο", + "Top": "Πάνω", + "Unset color": "Αναίρεση χρώματος", + "Vertical align": "Κατακόρυφη στοίχηση", + "Width": "Πλάτος", + "not-del-last-cell": "Δεν μπορεί να διαγραφεί το τελευταίο κελί σε μια γραμμή.", + "not-del-last-col": "Δεν μπορεί να διαγραφεί η τελευταία στήλη σε ένα πίνακα.", + "not-del-last-row": "Δεν μπορεί να διαγραφεί η τελευταία γραμμή σε ένα πίνακα.", + "percent": "τοις εκατόν", + "pixels": "pixels" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/en.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/en.js new file mode 100644 index 00000000..7168e097 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/en.js @@ -0,0 +1,90 @@ +// I18N constants + +// LANG: "en", ENCODING: UTF-8 | ISO-8859-1 +// Author: Mihai Bazon, http://dynarch.com/mishoo + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +TableOperations.I18N = { + "Align": "Align", + "All four sides": "All four sides", + "Background": "Background", + "Baseline": "Baseline", + "Border": "Border", + "Borders": "Borders", + "Bottom": "Bottom", + "CSS Style": "Style [CSS]", + "Caption": "Caption", + "Cell Properties": "Cell Properties", + "Center": "Center", + "Char": "Char", + "Collapsed borders": "Collapsed borders", + "Color": "Color", + "Description": "Description", + "FG Color": "FG Color", + "Float": "Float", + "Frames": "Frames", + "Height": "Height", + "How many columns would you like to merge?": "How many columns would you like to merge?", + "How many rows would you like to merge?": "How many rows would you like to merge?", + "Image URL": "Image URL", + "Justify": "Justify", + "Layout": "Layout", + "Left": "Left", + "Margin": "Margin", + "Middle": "Middle", + "No rules": "No rules", + "No sides": "No sides", + "None": "None", + "Padding": "Padding", + "Please click into some cell": "Please click into some cell", + "Right": "Right", + "Row Properties": "Row Properties", + "Rules will appear between all rows and columns": "Rules will appear between all rows and columns", + "Rules will appear between columns only": "Rules will appear between columns only", + "Rules will appear between rows only": "Rules will appear between rows only", + "Rules": "Rules", + "Spacing and padding": "Spacing and padding", + "Spacing": "Spacing", + "Summary": "Summary", + "TO-cell-delete": "Delete cell", + "TO-cell-insert-after": "Insert cell after", + "TO-cell-insert-before": "Insert cell before", + "TO-cell-merge": "Merge cells", + "TO-cell-prop": "Cell properties", + "TO-cell-split": "Split cell", + "TO-col-delete": "Delete column", + "TO-col-insert-after": "Insert column after", + "TO-col-insert-before": "Insert column before", + "TO-col-split": "Split column", + "TO-row-delete": "Delete row", + "TO-row-insert-above": "Insert row before", + "TO-row-insert-under": "Insert row after", + "TO-row-prop": "Row properties", + "TO-row-split": "Split row", + "TO-table-prop": "Table properties", + "Table Properties": "Table Properties", + "Text align": "Text align", + "The bottom side only": "The bottom side only", + "The left-hand side only": "The left-hand side only", + "The right and left sides only": "The right and left sides only", + "The right-hand side only": "The right-hand side only", + "The top and bottom sides only": "The top and bottom sides only", + "The top side only": "The top side only", + "Top": "Top", + "Unset color": "Unset color", + "Vertical align": "Vertical align", + "Width": "Width", + "not-del-last-cell": "HTMLArea cowardly refuses to delete the last cell in row.", + "not-del-last-col": "HTMLArea cowardly refuses to delete the last column in table.", + "not-del-last-row": "HTMLArea cowardly refuses to delete the last row in table.", + "percent": "percent", + "pixels": "pixels" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/fi.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/fi.js new file mode 100644 index 00000000..891f1688 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/fi.js @@ -0,0 +1,66 @@ +TableOperations.I18N = { + "Align": "Kohdistus", + "All four sides": "Kaikki nelj sivua", + "Background": "Tausta", + "Baseline": "Takaraja", + "Border": "Reuna", + "Borders": "Reunat", + "Bottom": "Alle", + "CSS Style": "Tyyli [CSS]", + "Caption": "Otsikko", + "Cell Properties": "Solun asetukset", + "Center": "Keskelle", + "Char": "Merkki", + "Collapsed borders": "Luhistetut reunat", + "Color": "Vri", + "Description": "Kuvaus", + "FG Color": "FG Vri", + "Frames": "Kehykset", + "Image URL": "Kuvan osoite", + "Layout": "Sommittelu", + "Left": "Vasen", + "Margin": "Marginaali", + "Middle": "Keskelle", + "No rules": "Ei viivoja", + "No sides": "Ei sivuja", + "Padding": "Palstantyte", + "Right": "Oikea", + "Row Properties": "Rivin asetukset", + "Rules will appear between all rows and columns": "Viivat jokaisen rivin ja sarakkeen vlill", + "Rules will appear between columns only": "Viivat ainoastaan sarakkeiden vlill", + "Rules will appear between rows only": "Viivat ainoastaan rivien vlill", + "Rules": "Viivat", + "Spacing": "Palstatila", + "Summary": "Yhteenveto", + "TO-cell-delete": "Poista solu", + "TO-cell-insert-after": "Lis solu pern", + "TO-cell-insert-before": "Lis solu ennen", + "TO-cell-merge": "Yhdist solut", + "TO-cell-prop": "Solun asetukset", + "TO-cell-split": "Jaa solu", + "TO-col-delete": "Poista sarake", + "TO-col-insert-after": "Lis sarake pern", + "TO-col-insert-before": "Lis sarake ennen", + "TO-col-split": "Jaa sarake", + "TO-row-delete": "Poista rivi", + "TO-row-insert-above": "Lis rivi ylpuolelle", + "TO-row-insert-under": "Lis rivi alapuolelle", + "TO-row-prop": "Rivin asetukset", + "TO-row-split": "Jaa rivi", + "TO-table-prop": "Taulukon asetukset", + "Top": "Yls", + "Table Properties": "Taulukon asetukset", + "The bottom side only": "Ainoastaan alapuolelle", + "The left-hand side only": "Ainoastaan vasenreuna", + "The right and left sides only": "Oikea- ja vasenreuna", + "The right-hand side only": "Ainoastaan oikeareuna", + "The top and bottom sides only": "Yl- ja alapuoli.", + "The top side only": "Ainoastaan ylpuoli", + "Vertical align": "Vertikaali kohdistus", + "Width": "Leveys", + "not-del-last-cell": "Ei voida poistaa viimeist solua rivist.", + "not-del-last-col": "Ei voida poistaa viimeist saraketta taulusta.", + "not-del-last-row": "Ei voida poistaa viimeist rivi taulusta.", + "percent": "prosenttia", + "pixels": "pikseli" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/fr.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/fr.js new file mode 100644 index 00000000..56616ea7 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/fr.js @@ -0,0 +1,90 @@ +// I18N constants + +// LANG: "fr", ENCODING: UTF-8 | ISO-8859-1 +// Author: Cédric Guillemette, http://www.ebdata.com + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +TableOperations.I18N = { + "Align": "Aligner", + "All four sides": "Quatre cotés", + "Background": "Arrière plan", + "Baseline": "Ligne de base", + "Border": "Bordure", + "Borders": "Bordures", + "Bottom": "Bas", + "CSS Style": "Style [CSS]", + "Caption": "Étiquette", + "Cell Properties": "Propriétés de cellule", + "Center": "Centre", + "Char": "Charactère", + "Collapsed borders": "Bordure effondrés", + "Color": "Couleur", + "Description": "Description", + "FG Color": "Couleur de face", + "Float": "Flotteur", + "Frames": "Vues", + "Height": "Largeur", + "How many columns would you like to merge?": "Combien de colonnes voulez-vous fusionner?", + "How many rows would you like to merge?": "Combien de rangées voulez-vous fusionner?", + "Image URL": "URL pour l'image", + "Justify": "Justifié", + "Layout": "Arrangement", + "Left": "Gauche", + "Margin": "Marge", + "Middle": "Milieu", + "No rules": "Aucun règlement", + "No sides": "Aucun côtés", + "None": "Aucun", + "Padding": "Remplissage", + "Please click into some cell": "Cliquer sur une cellule", + "Right": "Droit", + "Row Properties": "Propriétés de rangée", + "Rules will appear between all rows and columns": "Les règles vont apparaître entre les rangées et les cellules", + "Rules will appear between columns only": "Les règles vont apparaître entre les colonnes seulement", + "Rules will appear between rows only": "Les règles vont apparaître entre les rangées seulement", + "Rules": "Les règles", + "Spacing and padding": "Espacement et remplissage", + "Spacing": "Espacement", + "Summary": "Sommaire", + "TO-cell-delete": "Supprimer une cellule", + "TO-cell-insert-after": "Insérer une cellule après", + "TO-cell-insert-before": "Insérer une cellule avant", + "TO-cell-merge": "Fusionner les cellules", + "TO-cell-prop": "Cell properties", + "TO-cell-split": "Diviser la cellule", + "TO-col-delete": "Supprimer la colonne", + "TO-col-insert-after": "Insérer une colonne après", + "TO-col-insert-before": "Insérer une colonne avant", + "TO-col-split": "Diviser une colonne", + "TO-row-delete": "Supprimer une rangée", + "TO-row-insert-above": "Insérer une rangée avant", + "TO-row-insert-under": "Insérer une rangée après", + "TO-row-prop": "Propriétés de rangée", + "TO-row-split": "Diviser la rangée", + "TO-table-prop": "Propriétés de table", + "Table Properties": "Propriétés de table", + "Text align": "Aligner le texte", + "The bottom side only": "Côté du bas seulement", + "The left-hand side only": "Côté gauche seulement", + "The right and left sides only": "Côté gauche et droit seulement", + "The right-hand side only": "Côté droit seulement", + "The top and bottom sides only": "Côté haut et bas seulement", + "The top side only": "Côté haut seulement", + "Top": "Haut", + "Unset color": "Enlever la couleur", + "Vertical align": "Alignement vertical", + "Width": "Longeur", + "not-del-last-cell": "HTMLArea refuse de supprimer la dernière cellule de la rangée.", + "not-del-last-col": "HTMLArea refuse de supprimer la dernière colonne de la table.", + "not-del-last-row": "HTMLArea refuse de supprimer la dernière rangée de la table", + "percent": "pourcentage", + "pixels": "pixels" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/he.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/he.js new file mode 100644 index 00000000..b968bfac --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/he.js @@ -0,0 +1,90 @@ +// I18N constants + +// LANG: "he", ENCODING: UTF-8 +// Author: Liron Newman, http://www.eesh.net, + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +TableOperations.I18N = { + "Align": "ישור", + "All four sides": "כל ארבעת הצדדים", + "Background": "רקע", + "Baseline": "קו בסיס", + "Border": "גבול", + "Borders": "גבולות", + "Bottom": "תחתון", + "CSS Style": "סגנון [CSS]", + "Caption": "כותרת", + "Cell Properties": "מאפייני תא", + "Center": "מרכז", + "Char": "תו", + "Collapsed borders": "גבולות קורסים", + "Color": "צבע", + "Description": "תיאור", + "FG Color": "צבע קידמה", + "Float": "מרחף", + "Frames": "מסגרות", + "Height": "גובה", + "How many columns would you like to merge?": "כמה טורים ברצונך למזג?", + "How many rows would you like to merge?": "כמה שורות ברצונך למזג?", + "Image URL": "URL התמונה", + "Justify": "ישור", + "Layout": "פריסה", + "Left": "שמאל", + "Margin": "שוליים", + "Middle": "אמצע", + "No rules": "ללא קווים", + "No sides": "ללא צדדים", + "None": "אין", + "Padding": "ריווח בשוליים", + "Please click into some cell": "אנא לחץ על תא כלשהו", + "Right": "ימין", + "Row Properties": "מאפייני שורה", + "Rules will appear between all rows and columns": "קווים יופיעו בין כל השורות והטורים", + "Rules will appear between columns only": "קווים יופיעו בין טורים בלבד", + "Rules will appear between rows only": "קווים יופיעו בין שורות בלבד", + "Rules": "קווים", + "Spacing and padding": "ריווח ושוליים", + "Spacing": "ריווח", + "Summary": "סיכום", + "TO-cell-delete": "מחק תא", + "TO-cell-insert-after": "הכנס תא אחרי", + "TO-cell-insert-before": "הכנס תא לפני", + "TO-cell-merge": "מזג תאים", + "TO-cell-prop": "מאפייני תא", + "TO-cell-split": "פצל תא", + "TO-col-delete": "מחק טור", + "TO-col-insert-after": "הכנס טור אחרי", + "TO-col-insert-before": "הכנס טור לפני", + "TO-col-split": "פצל טור", + "TO-row-delete": "מחק שורה", + "TO-row-insert-above": "הכנס שורה לפני", + "TO-row-insert-under": "הכנס שורה אחרי", + "TO-row-prop": "מאפייני שורה", + "TO-row-split": "פצל שורה", + "TO-table-prop": "מאפייני טבלה", + "Table Properties": "מאפייני טבלה", + "Text align": "ישור טקסט", + "The bottom side only": "הצד התחתון בלבד", + "The left-hand side only": "הצד השמאלי בלבד", + "The right and left sides only": "הצדדים הימני והשמאלי בלבד", + "The right-hand side only": "הצד הימני בלבד", + "The top and bottom sides only": "הצדדים העליון והתחתון בלבד", + "The top side only": "הצד העליון בלבד", + "Top": "עליון", + "Unset color": "צבע לא נבחר", + "Vertical align": "יישור אנכי", + "Width": "רוחב", + "not-del-last-cell": "HTMLArea מסרב בפחדנות למחוק את התא האחרון בשורה.", + "not-del-last-col": "HTMLArea מסרב בפחדנות למחוק את הטור האחרון בטבלה.", + "not-del-last-row": "HTMLArea מסרב בפחדנות למחוק את השורה האחרונה בטבלה.", + "percent": "אחוז", + "pixels": "פיקסלים" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/hu.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/hu.js new file mode 100644 index 00000000..828aec15 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/hu.js @@ -0,0 +1,63 @@ +// I18N constants + +// LANG: "hu", ENCODING: UTF-8 +// Author: Miklós Somogyi, + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +HTMLArea.I18N = { + + // the following should be the filename without .js extension + // it will be used for automatically load plugin language. + lang: "hu", + + tooltips: { + bold: "Félkövér", + italic: "Dőlt", + underline: "Aláhúzott", + strikethrough: "Áthúzott", + subscript: "Alsó index", + superscript: "Felső index", + justifyleft: "Balra zárt", + justifycenter: "Középre zárt", + justifyright: "Jobbra zárt", + justifyfull: "Sorkizárt", + orderedlist: "Számozott lista", + unorderedlist: "Számozatlan lista", + outdent: "Behúzás csökkentése", + indent: "Behúzás növelése", + forecolor: "Karakterszín", + hilitecolor: "Háttérszín", + horizontalrule: "Elválasztó vonal", + createlink: "Hiperhivatkozás beszúrása", + insertimage: "Kép beszúrása", + inserttable: "Táblázat beszúrása", + htmlmode: "HTML forrás be/ki", + popupeditor: "Szerkesztő külön ablakban", + about: "Névjegy", + showhelp: "Súgó", + textindicator: "Aktuális stílus", + undo: "Visszavonás", + redo: "Újra végrehajtás", + cut: "Kivágás", + copy: "Másolás", + paste: "Beillesztés" + }, + + buttons: { + "ok": "Rendben", + "cancel": "Mégsem" + }, + + msg: { + "Path": "Hierarchia", + "TEXT_MODE": "Forrás mód. Visszaváltás [<>] gomb" + } +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/it.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/it.js new file mode 100644 index 00000000..ccbdc94d --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/it.js @@ -0,0 +1,81 @@ +// I18N constants + +// LANG: "it", ENCODING: UTF-8 | ISO-8859-1 +// Author: Fabio Rotondo + +TableOperations.I18N = { + "Align": "Allinea", + "All four sides": "Tutti e quattro i lati", + "Background": "Sfondo", + "Baseline": "Allineamento", + "Border": "Bordo", + "Borders": "Bordi", + "Bottom": "Basso", + "CSS Style": "Stile [CSS]", + "Caption": "Titolo", + "Cell Properties": "Proprietà della Cella", + "Center": "Centra", + "Char": "Carattere", + "Collapsed borders": "Bordi chiusi", + "Color": "Colore", + "Description": "Descrizione", + "FG Color": "Colore Principale", + "Float": "Fluttuante", + "Frames": "Frames", + "Height": "Altezza", + "How many columns would you like to merge?": "Quante colonne vuoi unire?", + "How many rows would you like to merge?": "Quante righe vuoi unire?", + "Image URL": "URL dell'Immagine", + "Justify": "Justifica", + "Layout": "Layout", + "Left": "Sinistra", + "Margin": "Margine", + "Middle": "Centrale", + "No rules": "Nessun righello", + "No sides": "Nessun lato", + "None": "Nulla", + "Padding": "Padding", + "Please click into some cell": "Per favore, clicca in una cella", + "Right": "Destra", + "Row Properties": "Proprietà della Riga", + "Rules will appear between all rows and columns": "Le linee appariranno tra tutte le righe e colonne", + "Rules will appear between columns only": "Le linee appariranno solo tra le colonne", + "Rules will appear between rows only": "Le linee appariranno solo tra le righe", + "Rules": "Linee", + "Spacing and padding": "Spaziatura e Padding", + "Spacing": "Spaziatura", + "Summary": "Sommario", + "TO-cell-delete": "Cancella cella", + "TO-cell-insert-after": "Inserisci cella dopo", + "TO-cell-insert-before": "Inserisci cella prima", + "TO-cell-merge": "Unisci celle", + "TO-cell-prop": "Proprietà della cella", + "TO-cell-split": "Dividi cella", + "TO-col-delete": "Cancella colonna", + "TO-col-insert-after": "Inserisci colonna dopo", + "TO-col-insert-before": "Inserisci colonna prima", + "TO-col-split": "Dividi colonna", + "TO-row-delete": "Cancella riga", + "TO-row-insert-above": "Inserisci riga prima", + "TO-row-insert-under": "Inserisci riga dopo", + "TO-row-prop": "Proprietà della riga", + "TO-row-split": "Dividi riga", + "TO-table-prop": "Proprietà della Tabella", + "Table Properties": "Proprietà della Tabella", + "Text align": "Allineamento del Testo", + "The bottom side only": "Solo la parte inferiore", + "The left-hand side only": "Solo la parte sinistra", + "The right and left sides only": "Solo destra e sinistra", + "The right-hand side only": "Solo la parte destra", + "The top and bottom sides only": "Solo sopra e sotto", + "The top side only": "Solo la parte sopra", + "Top": "Alto", + "Unset color": "Rimuovi colore", + "Vertical align": "Allineamento verticale", + "Width": "Larghezza", + "not-del-last-cell": "HTMLArea si rifiuta codardamente di cancellare l'ultima cella nella riga.", + "not-del-last-col": "HTMLArea si rifiuta codardamente di cancellare l'ultima colonna nella tabella.", + "not-del-last-row": "HTMLArea si rifiuta codardamente di cancellare l'ultima riga nella tabella.", + "percent": "percento", + "pixels": "pixels" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/nl.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/nl.js new file mode 100644 index 00000000..aea62d81 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/nl.js @@ -0,0 +1,90 @@ +// I18N constants + +// LANG: "nl", ENCODING: UTF-8 | ISO-8859-1 +// Author: Michel Weegeerink (info@mmc-shop.nl), http://mmc-shop.nl + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +TableOperations.I18N = { + "Align": "Uitlijning", + "All four sides": "Alle 4 zijden", + "Background": "Achtergrond", + "Baseline": "Basis", + "Border": "Rand", + "Borders": "Randen", + "Bottom": "Onder", + "CSS Style": "CSS Style", + "Caption": "Opmerking", + "Cell Properties": "Celeigenschappen", + "Center": "Centreren", + "Char": "Karakter", + "Collapsed borders": "Geen randen", + "Color": "Kleur", + "Description": "Omschrijving", + "FG Color": "Voorgrond", + "Float": "Zwevend", + "Frames": "Frames", + "Height": "Hoogte", + "How many columns would you like to merge?": "Hoeveel kolommen wilt u samenvoegen?", + "How many rows would you like to merge?": "Hoeveel rijen wilt u samenvoegen?", + "Image URL": "Afbeelding URL", + "Justify": "Uitvullen", + "Layout": "Opmaak", + "Left": "Links", + "Margin": "Marge", + "Middle": "Midden", + "No rules": "Geen regels", + "No sides": "Geen zijlijnen", + "None": "Geen", + "Padding": "Celmarge", + "Please click into some cell": "Klik in een cel a.u.b.", + "Right": "Rechts", + "Row Properties": "Rijeigenschappen", + "Rules will appear between all rows and columns": "Regels verschijnen tussen alle rijen en kolommen", + "Rules will appear between columns only": "Regels verschijnen enkel tussen de kolommen", + "Rules will appear between rows only": "Regels verschijnen enkel tussen de rijen", + "Rules": "Regels", + "Spacing and padding": "Celmarge en afstand tussen cellen", + "Spacing": "marge", + "Summary": "Overzicht", + "TO-cell-delete": "Cel verwijderen", + "TO-cell-insert-after": "Voeg cel toe achter", + "TO-cell-insert-before": "Voeg cel toe voor", + "TO-cell-merge": "Cellen samenvoegen", + "TO-cell-prop": "Celeigenschappen", + "TO-cell-split": "Cel splitsen", + "TO-col-delete": "Kolom verwijderen", + "TO-col-insert-after": "Kolom invoegen achter", + "TO-col-insert-before": "Kolom invoegen voor", + "TO-col-split": "Kolom splitsen", + "TO-row-delete": "Rij verwijderen", + "TO-row-insert-above": "Rij invoegen boven", + "TO-row-insert-under": "Rij invoegen onder", + "TO-row-prop": "Rij eigenschappen", + "TO-row-split": "Rij splitsen", + "TO-table-prop": "Tabel eigenschappen", + "Table Properties": "Tabel eigenschappen", + "Text align": "Text uitlijning", + "The bottom side only": "Enkel aan de onderkant", + "The left-hand side only": "Enkel aan de linkerkant", + "The right and left sides only": "Enkel aan de linker en rechterkant", + "The right-hand side only": "Enkel aan de rechterkant", + "The top and bottom sides only": "Enkel aan de bovenen onderkant", + "The top side only": "Enkel aan de bovenkant", + "Top": "Boven", + "Unset color": "Wis kleur", + "Vertical align": "Vertikale uitlijning", + "Width": "Breedte", + "not-del-last-cell": "HTMLArea kan de laatste cel in deze tabel niet verwijderen.", + "not-del-last-col": "HTMLArea kan de laatste kolom in deze tabel niet verwijderen.", + "not-del-last-row": "HTMLArea kan de laatste rij in deze tabel niet verwijderen.", + "percent": "procent", + "pixels": "pixels" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/no.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/no.js new file mode 100644 index 00000000..9ebac5fa --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/no.js @@ -0,0 +1,91 @@ +// I18N constants + +// LANG: "en", ENCODING: UTF-8 | ISO-8859-1 +// Author: Mihai Bazon, +// translated into Norwegia: ses@online.no 11.11.03 + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +TableOperations.I18N = { + "Align": "Juster", + "All four sides": "Alle fire sider", + "Background": "Bakgrund", + "Baseline": "Grunnlinje", + "Border": "Kantlinje", + "Borders": "Kantlinjer", + "Bottom": "Bunn", + "CSS Style": "Stil [CSS]", + "Caption": "Overskrift", + "Cell Properties": "Celleegenskaper", + "Center": "Sentrer", + "Char": "Tegn", + "Collapsed borders": "Fjern kantlinjer", + "Color": "Farge", + "Description": "Beskrivelse", + "FG Color": "FG farge", + "Float": "Flytende", + "Frames": "rammer", + "Height": "Hyde", + "How many columns would you like to merge?": "Hvor mange kolonner vil du sl sammen?", + "How many rows would you like to merge?": "Hvor mange rader vil du sl sammen?", + "Image URL": "Bildets URL", + "Justify": "Juster", + "Layout": "Layout", + "Left": "Venstre", + "Margin": "Marg", + "Middle": "Midten", + "No rules": "Ingen linjal", + "No sides": "Ingen sider", + "None": "Ingen", + "Padding": "Luft", + "Please click into some cell": "Klikk i en eller annen celle", + "Right": "Hyre", + "Row Properties": "Egenskaper for rad", + "Rules will appear between all rows and columns": "Linjer vil synes mellom alle rader og kolonner", + "Rules will appear between columns only": "Linjer vil synes kun mellom kolonner", + "Rules will appear between rows only": "Linjer vil synes kun mellom rader", + "Rules": "Linjer", + "Spacing and padding": "Luft", + "Spacing": "Luft", + "Summary": "Sammendrag", + "TO-cell-delete": "Slett celle", + "TO-cell-insert-after": "Sett inn celle etter", + "TO-cell-insert-before": "Sett inn celle foran", + "TO-cell-merge": "Sl sammen celler", + "TO-cell-prop": "Egenskaper for celle", + "TO-cell-split": "Del celle", + "TO-col-delete": "Slett kolonne", + "TO-col-insert-after": "Skyt inn kolonne etter", + "TO-col-insert-before": "Skyt inn kolonne fr", + "TO-col-split": "Del kolonne", + "TO-row-delete": "Slett rad", + "TO-row-insert-above": "Skyt inn rad foran", + "TO-row-insert-under": "Skyt inn rad etter", + "TO-row-prop": "Egenskaper for rad", + "TO-row-split": "Del rad", + "TO-table-prop": "Tabellegenskaper", + "Table Properties": "Tabellegenskaper", + "Text align": "Juster tekst", + "The bottom side only": "Bunnen kun", + "The left-hand side only": "Venstresiden kun", + "The right and left sides only": "Hyre- og venstresiden kun", + "The right-hand side only": "Hyresiden kun", + "The top and bottom sides only": "The top and bottom sides only", + "The top side only": "Overkanten kun", + "Top": "Overkant", + "Unset color": "Ikke-bestemt farge", + "Vertical align": "Vertikal justering", + "Width": "Bredde", + "not-del-last-cell": "HTMLArea nekter slette siste cellen i tabellen.", + "not-del-last-col": "HTMLArea nekter slette siste kolonnen i tabellen.", + "not-del-last-row": "HTMLArea nekter slette siste raden i tabellen.", + "percent": "prosent", + "pixels": "billedpunkter" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/ro.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/ro.js new file mode 100644 index 00000000..a008f21a --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/lang/ro.js @@ -0,0 +1,90 @@ +// I18N constants + +// LANG: "ro", ENCODING: UTF-8 +// Author: Mihai Bazon, http://dynarch.com/mishoo + +// FOR TRANSLATORS: +// +// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE +// (at least a valid email address) +// +// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; +// (if this is not possible, please include a comment +// that states what encoding is necessary.) + +TableOperations.I18N = { + "Align": "Aliniere", + "All four sides": "Toate părţile", + "Background": "Fundal", + "Baseline": "Baseline", + "Border": "Chenar", + "Borders": "Chenare", + "Bottom": "Jos", + "CSS Style": "Stil [CSS]", + "Caption": "Titlu de tabel", + "Cell Properties": "Proprietăţile celulei", + "Center": "Centru", + "Char": "Caracter", + "Collapsed borders": "Chenare asimilate", + "Color": "Culoare", + "Description": "Descriere", + "FG Color": "Culoare text", + "Float": "Poziţie", + "Frames": "Chenare", + "Height": "Înălţimea", + "How many columns would you like to merge?": "Câte coloane vrei să uneşti?", + "How many rows would you like to merge?": "Câte linii vrei să uneşti?", + "Image URL": "URL-ul imaginii", + "Justify": "Justify", + "Layout": "Aranjament", + "Left": "Stânga", + "Margin": "Margine", + "Middle": "Mijloc", + "No rules": "Fără linii", + "No sides": "Fără părţi", + "None": "Nimic", + "Padding": "Spaţiere", + "Please click into some cell": "Vă rog să daţi click într-o celulă", + "Right": "Dreapta", + "Row Properties": "Proprietăţile liniei", + "Rules will appear between all rows and columns": "Vor apărea linii între toate rândurile şi coloanele", + "Rules will appear between columns only": "Vor apărea doar linii verticale", + "Rules will appear between rows only": "Vor apărea doar linii orizontale", + "Rules": "Linii", + "Spacing and padding": "Spaţierea", + "Spacing": "Între celule", + "Summary": "Sumar", + "TO-cell-delete": "Şterge celula", + "TO-cell-insert-after": "Inserează o celulă la dreapta", + "TO-cell-insert-before": "Inserează o celulă la stânga", + "TO-cell-merge": "Uneşte celulele", + "TO-cell-prop": "Proprietăţile celulei", + "TO-cell-split": "Împarte celula", + "TO-col-delete": "Şterge coloana", + "TO-col-insert-after": "Inserează o coloană la dreapta", + "TO-col-insert-before": "Inserează o coloană la stânga", + "TO-col-split": "Împarte coloana", + "TO-row-delete": "Şterge rândul", + "TO-row-insert-above": "Inserează un rând înainte", + "TO-row-insert-under": "Inserează un rând după", + "TO-row-prop": "Proprietăţile rândului", + "TO-row-split": "Împarte rândul", + "TO-table-prop": "Proprietăţile tabelei", + "Table Properties": "Proprietăţile tabelei", + "Text align": "Aliniere", + "The bottom side only": "Doar partea de jos", + "The left-hand side only": "Doar partea din stânga", + "The right and left sides only": "Partea din stânga şi cea din dreapta", + "The right-hand side only": "Doar partea din dreapta", + "The top and bottom sides only": "Partea de sus si cea de jos", + "The top side only": "Doar partea de sus", + "Top": "Sus", + "Unset color": "Dezactivează culoarea", + "Vertical align": "Aliniere pe verticală", + "Width": "Lăţime", + "not-del-last-cell": "HTMLArea refuză cu laşitate să şteargă ultima celulă din rând.", + "not-del-last-col": "HTMLArea refuză cu laşitate să şteargă ultima coloamă din tabela.", + "not-del-last-row": "HTMLArea refuză cu laşitate să şteargă ultimul rând din tabela.", + "percent": "procente", + "pixels": "pixeli" +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/table-operations.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/table-operations.js new file mode 100644 index 00000000..a0cf8257 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/plugins/TableOperations/table-operations.js @@ -0,0 +1,1113 @@ +// Table Operations Plugin for HTMLArea-3.0 +// Implementation by Mihai Bazon. Sponsored by http://www.zapatec.com +// +// Copyright (c) dynarch.com 2003-2005 +// This copyright notice must stay intact for use. +// +// $Id: table-operations.js,v 1.7 2005/01/20 17:49:02 mishoo Exp $ + +// Object that will encapsulate all the table operations provided by +// HTMLArea-3.0 (except "insert table" which is included in the main file) +function TableOperations(editor) { + this.editor = editor; + + var cfg = editor.config; + var tt = TableOperations.I18N; + var bl = TableOperations.btnList; + var self = this; + + // register the toolbar buttons provided by this plugin + var toolbar = ["linebreak"]; + for (var i = 0; i < bl.length; ++i) { + var btn = bl[i]; + if (!btn) { + toolbar.push("separator"); + } else { + var id = "TO-" + btn[0]; + cfg.registerButton(id, tt[id], editor.imgURL(btn[0] + ".gif", "TableOperations"), false, + function(editor, id) { + // dispatch button press event + self.buttonPress(editor, id); + }, btn[1]); + toolbar.push(id); + } + } + + // add a new line in the toolbar + cfg.toolbar.push(toolbar); +}; + +TableOperations._pluginInfo = { + name : "TableOperations", + version : "1.0", + developer : "Mihai Bazon", + developer_url : "http://dynarch.com/mishoo/", + c_owner : "Mihai Bazon", + sponsor : "Zapatec Inc.", + sponsor_url : "http://www.bloki.com", + license : "htmlArea" +}; + +/************************ + * UTILITIES + ************************/ + +// retrieves the closest element having the specified tagName in the list of +// ancestors of the current selection/caret. +TableOperations.prototype.getClosest = function(tagName) { + var editor = this.editor; + var ancestors = editor.getAllAncestors(); + var ret = null; + tagName = ("" + tagName).toLowerCase(); + for (var i = 0; i < ancestors.length; ++i) { + var el = ancestors[i]; + if (el.tagName.toLowerCase() == tagName) { + ret = el; + break; + } + } + return ret; +}; + +// this function requires the file PopupDiv/PopupWin to be loaded from browser +TableOperations.prototype.dialogTableProperties = function() { + var i18n = TableOperations.I18N; + // retrieve existing values + var table = this.getClosest("table"); + // this.editor.selectNodeContents(table); + // this.editor.updateToolbar(); + + var dialog = new PopupWin(this.editor, i18n["Table Properties"], function(dialog, params) { + TableOperations.processStyle(params, table); + for (var i in params) { + var val = params[i]; + switch (i) { + case "f_caption": + if (/\S/.test(val)) { + // contains non white-space characters + var caption = table.getElementsByTagName("caption")[0]; + if (!caption) { + caption = dialog.editor._doc.createElement("caption"); + table.insertBefore(caption, table.firstChild); + } + caption.innerHTML = val; + } else { + // search for caption and delete it if found + var caption = table.getElementsByTagName("caption")[0]; + if (caption) { + caption.parentNode.removeChild(caption); + } + } + break; + case "f_summary": + table.summary = val; + break; + case "f_width": + table.style.width = ("" + val) + params.f_unit; + break; + case "f_align": + table.align = val; + break; + case "f_spacing": + table.cellSpacing = val; + break; + case "f_padding": + table.cellPadding = val; + break; + case "f_borders": + table.border = val; + break; + case "f_frames": + table.frame = val; + break; + case "f_rules": + table.rules = val; + break; + } + } + // various workarounds to refresh the table display (Gecko, + // what's going on?! do not disappoint me!) + dialog.editor.forceRedraw(); + dialog.editor.focusEditor(); + dialog.editor.updateToolbar(); + var save_collapse = table.style.borderCollapse; + table.style.borderCollapse = "collapse"; + table.style.borderCollapse = "separate"; + table.style.borderCollapse = save_collapse; + }, + + // this function gets called when the dialog needs to be initialized + function (dialog) { + + var f_caption = ""; + var capel = table.getElementsByTagName("caption")[0]; + if (capel) { + f_caption = capel.innerHTML; + } + var f_summary = table.summary; + var f_width = parseInt(table.style.width); + isNaN(f_width) && (f_width = ""); + var f_unit = /%/.test(table.style.width) ? 'percent' : 'pixels'; + var f_align = table.align; + var f_spacing = table.cellSpacing; + var f_padding = table.cellPadding; + var f_borders = table.border; + var f_frames = table.frame; + var f_rules = table.rules; + + function selected(val) { + return val ? " selected" : ""; + }; + + // dialog contents + dialog.content.style.width = "400px"; + dialog.content.innerHTML = " \ +
    " + i18n["Table Properties"] + "\ +
    \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ +
    \ +
    " + i18n["Description"] + " \ + \ + \ + \ + \ + \ + \ + \ + \ +
    " + i18n["Caption"] + ":
    " + i18n["Summary"] + ":
    \ +
    \ +
    \ +
    " + i18n["Spacing and padding"] + " \ + \ + \ + \ + \ + \ +
    " + i18n["Spacing"] + ":  " + i18n["Padding"] + ":\ +   " + i18n["pixels"] + "\ +
    \ +
    \ +
    \ +
    Frame and borders \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ +
    " + i18n["Borders"] + ":   " + i18n["pixels"] + "
    " + i18n["Frames"] + ": \ + \ +
    " + i18n["Rules"] + ": \ + \ +
    \ +
    \ +
    \ +"; + var st_prop = TableOperations.createStyleFieldset(dialog.doc, dialog.editor, table); + var p = dialog.doc.getElementById("--HA-style"); + p.appendChild(st_prop); + var st_layout = TableOperations.createStyleLayoutFieldset(dialog.doc, dialog.editor, table); + p = dialog.doc.getElementById("--HA-layout"); + p.appendChild(st_layout); + dialog.modal = true; + dialog.addButtons("ok", "cancel"); + dialog.showAtElement(dialog.editor._iframe, "c"); + }); +}; + +// this function requires the file PopupDiv/PopupWin to be loaded from browser +TableOperations.prototype.dialogRowCellProperties = function(cell) { + var i18n = TableOperations.I18N; + // retrieve existing values + var element = this.getClosest(cell ? "td" : "tr"); + var table = this.getClosest("table"); + // this.editor.selectNodeContents(element); + // this.editor.updateToolbar(); + + var dialog = new PopupWin(this.editor, i18n[cell ? "Cell Properties" : "Row Properties"], function(dialog, params) { + TableOperations.processStyle(params, element); + for (var i in params) { + var val = params[i]; + switch (i) { + case "f_align": + element.align = val; + break; + case "f_char": + element.ch = val; + break; + case "f_valign": + element.vAlign = val; + break; + } + } + // various workarounds to refresh the table display (Gecko, + // what's going on?! do not disappoint me!) + dialog.editor.forceRedraw(); + dialog.editor.focusEditor(); + dialog.editor.updateToolbar(); + var save_collapse = table.style.borderCollapse; + table.style.borderCollapse = "collapse"; + table.style.borderCollapse = "separate"; + table.style.borderCollapse = save_collapse; + }, + + // this function gets called when the dialog needs to be initialized + function (dialog) { + + var f_align = element.align; + var f_valign = element.vAlign; + var f_char = element.ch; + + function selected(val) { + return val ? " selected" : ""; + }; + + // dialog contents + dialog.content.style.width = "400px"; + dialog.content.innerHTML = " \ +
    " + i18n[cell ? "Cell Properties" : "Row Properties"] + "
    \ + \ + \ + \ + \ + \ + \ + \ +
    \ +
    \ +"; + var st_prop = TableOperations.createStyleFieldset(dialog.doc, dialog.editor, element); + var p = dialog.doc.getElementById("--HA-style"); + p.appendChild(st_prop); + var st_layout = TableOperations.createStyleLayoutFieldset(dialog.doc, dialog.editor, element); + p = dialog.doc.getElementById("--HA-layout"); + p.appendChild(st_layout); + dialog.modal = true; + dialog.addButtons("ok", "cancel"); + dialog.showAtElement(dialog.editor._iframe, "c"); + }); +}; + +// this function gets called when some button from the TableOperations toolbar +// was pressed. +TableOperations.prototype.buttonPress = function(editor, button_id) { + this.editor = editor; + var mozbr = HTMLArea.is_gecko ? "
    " : ""; + var i18n = TableOperations.I18N; + + // helper function that clears the content in a table row + function clearRow(tr) { + var tds = tr.getElementsByTagName("td"); + for (var i = tds.length; --i >= 0;) { + var td = tds[i]; + td.rowSpan = 1; + td.innerHTML = mozbr; + } + }; + + function splitRow(td) { + var n = parseInt("" + td.rowSpan); + var nc = parseInt("" + td.colSpan); + td.rowSpan = 1; + tr = td.parentNode; + var itr = tr.rowIndex; + var trs = tr.parentNode.rows; + var index = td.cellIndex; + while (--n > 0) { + tr = trs[++itr]; + var otd = editor._doc.createElement("td"); + otd.colSpan = td.colSpan; + otd.innerHTML = mozbr; + tr.insertBefore(otd, tr.cells[index]); + } + editor.forceRedraw(); + editor.updateToolbar(); + }; + + function splitCol(td) { + var nc = parseInt("" + td.colSpan); + td.colSpan = 1; + tr = td.parentNode; + var ref = td.nextSibling; + while (--nc > 0) { + var otd = editor._doc.createElement("td"); + otd.rowSpan = td.rowSpan; + otd.innerHTML = mozbr; + tr.insertBefore(otd, ref); + } + editor.forceRedraw(); + editor.updateToolbar(); + }; + + function splitCell(td) { + var nc = parseInt("" + td.colSpan); + splitCol(td); + var items = td.parentNode.cells; + var index = td.cellIndex; + while (nc-- > 0) { + splitRow(items[index++]); + } + }; + + function selectNextNode(el) { + var node = el.nextSibling; + while (node && node.nodeType != 1) { + node = node.nextSibling; + } + if (!node) { + node = el.previousSibling; + while (node && node.nodeType != 1) { + node = node.previousSibling; + } + } + if (!node) { + node = el.parentNode; + } + editor.selectNodeContents(node); + }; + + switch (button_id) { + // ROWS + + case "TO-row-insert-above": + case "TO-row-insert-under": + var tr = this.getClosest("tr"); + if (!tr) { + break; + } + var otr = tr.cloneNode(true); + clearRow(otr); + tr.parentNode.insertBefore(otr, /under/.test(button_id) ? tr.nextSibling : tr); + editor.forceRedraw(); + editor.focusEditor(); + break; + case "TO-row-delete": + var tr = this.getClosest("tr"); + if (!tr) { + break; + } + var par = tr.parentNode; + if (par.rows.length == 1) { + alert(i18n["not-del-last-row"]); + break; + } + // set the caret first to a position that doesn't + // disappear. + selectNextNode(tr); + par.removeChild(tr); + editor.forceRedraw(); + editor.focusEditor(); + editor.updateToolbar(); + break; + case "TO-row-split": + var td = this.getClosest("td"); + if (!td) { + break; + } + splitRow(td); + break; + + // COLUMNS + + case "TO-col-insert-before": + case "TO-col-insert-after": + var td = this.getClosest("td"); + if (!td) { + break; + } + var rows = td.parentNode.parentNode.rows; + var index = td.cellIndex; + for (var i = rows.length; --i >= 0;) { + var tr = rows[i]; + var ref = tr.cells[index + (/after/.test(button_id) ? 1 : 0)]; + var otd = editor._doc.createElement("td"); + otd.innerHTML = mozbr; + tr.insertBefore(otd, ref); + } + editor.focusEditor(); + break; + case "TO-col-split": + var td = this.getClosest("td"); + if (!td) { + break; + } + splitCol(td); + break; + case "TO-col-delete": + var td = this.getClosest("td"); + if (!td) { + break; + } + var index = td.cellIndex; + if (td.parentNode.cells.length == 1) { + alert(i18n["not-del-last-col"]); + break; + } + // set the caret first to a position that doesn't disappear + selectNextNode(td); + var rows = td.parentNode.parentNode.rows; + for (var i = rows.length; --i >= 0;) { + var tr = rows[i]; + tr.removeChild(tr.cells[index]); + } + editor.forceRedraw(); + editor.focusEditor(); + editor.updateToolbar(); + break; + + // CELLS + + case "TO-cell-split": + var td = this.getClosest("td"); + if (!td) { + break; + } + splitCell(td); + break; + case "TO-cell-insert-before": + case "TO-cell-insert-after": + var td = this.getClosest("td"); + if (!td) { + break; + } + var tr = td.parentNode; + var otd = editor._doc.createElement("td"); + otd.innerHTML = mozbr; + tr.insertBefore(otd, /after/.test(button_id) ? td.nextSibling : td); + editor.forceRedraw(); + editor.focusEditor(); + break; + case "TO-cell-delete": + var td = this.getClosest("td"); + if (!td) { + break; + } + if (td.parentNode.cells.length == 1) { + alert(i18n["not-del-last-cell"]); + break; + } + // set the caret first to a position that doesn't disappear + selectNextNode(td); + td.parentNode.removeChild(td); + editor.forceRedraw(); + editor.updateToolbar(); + break; + case "TO-cell-merge": + // !! FIXME: Mozilla specific !! + var sel = editor._getSelection(); + var range, i = 0; + var rows = []; + var row = null; + var cells = null; + if (!HTMLArea.is_ie) { + try { + while (range = sel.getRangeAt(i++)) { + var td = range.startContainer.childNodes[range.startOffset]; + if (td.parentNode != row) { + row = td.parentNode; + (cells) && rows.push(cells); + cells = []; + } + cells.push(td); + } + } catch(e) {/* finished walking through selection */} + rows.push(cells); + } else { + // Internet Explorer "browser" + var td = this.getClosest("td"); + if (!td) { + alert(i18n["Please click into some cell"]); + break; + } + var tr = td.parentElement; + var no_cols = prompt(i18n["How many columns would you like to merge?"], 2); + if (!no_cols) { + // cancelled + break; + } + var no_rows = prompt(i18n["How many rows would you like to merge?"], 2); + if (!no_rows) { + // cancelled + break; + } + var cell_index = td.cellIndex; + while (no_rows-- > 0) { + td = tr.cells[cell_index]; + cells = [td]; + for (var i = 1; i < no_cols; ++i) { + td = td.nextSibling; + if (!td) { + break; + } + cells.push(td); + } + rows.push(cells); + tr = tr.nextSibling; + if (!tr) { + break; + } + } + } + var HTML = ""; + for (i = 0; i < rows.length; ++i) { + // i && (HTML += "
    "); + var cells = rows[i]; + for (var j = 0; j < cells.length; ++j) { + // j && (HTML += " "); + var cell = cells[j]; + HTML += cell.innerHTML; + (i || j) && (cell.parentNode.removeChild(cell)); + } + } + var td = rows[0][0]; + td.innerHTML = HTML; + td.rowSpan = rows.length; + td.colSpan = rows[0].length; + editor.selectNodeContents(td); + editor.forceRedraw(); + editor.focusEditor(); + break; + + // PROPERTIES + + case "TO-table-prop": + this.dialogTableProperties(); + break; + + case "TO-row-prop": + this.dialogRowCellProperties(false); + break; + + case "TO-cell-prop": + this.dialogRowCellProperties(true); + break; + + default: + alert("Button [" + button_id + "] not yet implemented"); + } +}; + +// the list of buttons added by this plugin +TableOperations.btnList = [ + // table properties button + ["table-prop", "table"], + null, // separator + + // ROWS + ["row-prop", "tr"], + ["row-insert-above", "tr"], + ["row-insert-under", "tr"], + ["row-delete", "tr"], + ["row-split", "td[rowSpan!=1]"], + null, + + // COLS + ["col-insert-before", "td"], + ["col-insert-after", "td"], + ["col-delete", "td"], + ["col-split", "td[colSpan!=1]"], + null, + + // CELLS + ["cell-prop", "td"], + ["cell-insert-before", "td"], + ["cell-insert-after", "td"], + ["cell-delete", "td"], + ["cell-merge", "tr"], + ["cell-split", "td[colSpan!=1,rowSpan!=1]"] + ]; + + + +//// GENERIC CODE [style of any element; this should be moved into a separate +//// file as it'll be very useful] +//// BEGIN GENERIC CODE ----------------------------------------------------- + +TableOperations.getLength = function(value) { + var len = parseInt(value); + if (isNaN(len)) { + len = ""; + } + return len; +}; + +// Applies the style found in "params" to the given element. +TableOperations.processStyle = function(params, element) { + var style = element.style; + for (var i in params) { + var val = params[i]; + switch (i) { + case "f_st_backgroundColor": + style.backgroundColor = val; + break; + case "f_st_color": + style.color = val; + break; + case "f_st_backgroundImage": + if (/\S/.test(val)) { + style.backgroundImage = "url(" + val + ")"; + } else { + style.backgroundImage = "none"; + } + break; + case "f_st_borderWidth": + style.borderWidth = val; + break; + case "f_st_borderStyle": + style.borderStyle = val; + break; + case "f_st_borderColor": + style.borderColor = val; + break; + case "f_st_borderCollapse": + style.borderCollapse = val ? "collapse" : ""; + break; + case "f_st_width": + if (/\S/.test(val)) { + style.width = val + params["f_st_widthUnit"]; + } else { + style.width = ""; + } + break; + case "f_st_height": + if (/\S/.test(val)) { + style.height = val + params["f_st_heightUnit"]; + } else { + style.height = ""; + } + break; + case "f_st_textAlign": + if (val == "char") { + var ch = params["f_st_textAlignChar"]; + if (ch == '"') { + ch = '\\"'; + } + style.textAlign = '"' + ch + '"'; + } else { + style.textAlign = val; + } + break; + case "f_st_verticalAlign": + style.verticalAlign = val; + break; + case "f_st_float": + style.cssFloat = val; + break; +// case "f_st_margin": +// style.margin = val + "px"; +// break; +// case "f_st_padding": +// style.padding = val + "px"; +// break; + } + } +}; + +// Returns an HTML element for a widget that allows color selection. That is, +// a button that contains the given color, if any, and when pressed will popup +// the sooner-or-later-to-be-rewritten select_color.html dialog allowing user +// to select some color. If a color is selected, an input field with the name +// "f_st_"+name will be updated with the color value in #123456 format. +TableOperations.createColorButton = function(doc, editor, color, name) { + if (!color) { + color = ""; + } else if (!/#/.test(color)) { + color = HTMLArea._colorToRgb(color); + } + + var df = doc.createElement("span"); + var field = doc.createElement("input"); + field.type = "hidden"; + df.appendChild(field); + field.name = "f_st_" + name; + field.value = color; + var button = doc.createElement("span"); + button.className = "buttonColor"; + df.appendChild(button); + var span = doc.createElement("span"); + span.className = "chooser"; + // span.innerHTML = "       "; + span.style.backgroundColor = color; + button.appendChild(span); + button.onmouseover = function() { if (!this.disabled) { this.className += " buttonColor-hilite"; }}; + button.onmouseout = function() { if (!this.disabled) { this.className = "buttonColor"; }}; + span.onclick = function() { + if (this.parentNode.disabled) { + return false; + } + editor._popupDialog("select_color.html", function(color) { + if (color) { + span.style.backgroundColor = "#" + color; + field.value = "#" + color; + } + }, color); + }; + var span2 = doc.createElement("span"); + span2.innerHTML = "×"; + span2.className = "nocolor"; + span2.title = TableOperations.I18N["Unset color"]; + button.appendChild(span2); + span2.onmouseover = function() { if (!this.parentNode.disabled) { this.className += " nocolor-hilite"; }}; + span2.onmouseout = function() { if (!this.parentNode.disabled) { this.className = "nocolor"; }}; + span2.onclick = function() { + span.style.backgroundColor = ""; + field.value = ""; + }; + return df; +}; + +TableOperations.createStyleLayoutFieldset = function(doc, editor, el) { + var i18n = TableOperations.I18N; + var fieldset = doc.createElement("fieldset"); + var legend = doc.createElement("legend"); + fieldset.appendChild(legend); + legend.innerHTML = i18n["Layout"]; + var table = doc.createElement("table"); + fieldset.appendChild(table); + table.style.width = "100%"; + var tbody = doc.createElement("tbody"); + table.appendChild(tbody); + + var tagname = el.tagName.toLowerCase(); + var tr, td, input, select, option, options, i; + + if (tagname != "td" && tagname != "tr" && tagname != "th") { + tr = doc.createElement("tr"); + tbody.appendChild(tr); + td = doc.createElement("td"); + td.className = "label"; + tr.appendChild(td); + td.innerHTML = i18n["Float"] + ":"; + td = doc.createElement("td"); + tr.appendChild(td); + select = doc.createElement("select"); + td.appendChild(select); + select.name = "f_st_float"; + options = ["None", "Left", "Right"]; + for (var i = 0; i < options.length; ++i) { + var Val = options[i]; + var val = options[i].toLowerCase(); + option = doc.createElement("option"); + option.innerHTML = i18n[Val]; + option.value = val; + option.selected = (("" + el.style.cssFloat).toLowerCase() == val); + select.appendChild(option); + } + } + + tr = doc.createElement("tr"); + tbody.appendChild(tr); + td = doc.createElement("td"); + td.className = "label"; + tr.appendChild(td); + td.innerHTML = i18n["Width"] + ":"; + td = doc.createElement("td"); + tr.appendChild(td); + input = doc.createElement("input"); + input.type = "text"; + input.value = TableOperations.getLength(el.style.width); + input.size = "5"; + input.name = "f_st_width"; + input.style.marginRight = "0.5em"; + td.appendChild(input); + select = doc.createElement("select"); + select.name = "f_st_widthUnit"; + option = doc.createElement("option"); + option.innerHTML = i18n["percent"]; + option.value = "%"; + option.selected = /%/.test(el.style.width); + select.appendChild(option); + option = doc.createElement("option"); + option.innerHTML = i18n["pixels"]; + option.value = "px"; + option.selected = /px/.test(el.style.width); + select.appendChild(option); + td.appendChild(select); + + select.style.marginRight = "0.5em"; + td.appendChild(doc.createTextNode(i18n["Text align"] + ":")); + select = doc.createElement("select"); + select.style.marginLeft = select.style.marginRight = "0.5em"; + td.appendChild(select); + select.name = "f_st_textAlign"; + options = ["Left", "Center", "Right", "Justify"]; + if (tagname == "td") { + options.push("Char"); + } + input = doc.createElement("input"); + input.name = "f_st_textAlignChar"; + input.size = "1"; + input.style.fontFamily = "monospace"; + td.appendChild(input); + for (var i = 0; i < options.length; ++i) { + var Val = options[i]; + var val = Val.toLowerCase(); + option = doc.createElement("option"); + option.value = val; + option.innerHTML = i18n[Val]; + option.selected = (el.style.textAlign.toLowerCase() == val); + select.appendChild(option); + } + function setCharVisibility(value) { + input.style.visibility = value ? "visible" : "hidden"; + if (value) { + input.focus(); + input.select(); + } + }; + select.onchange = function() { setCharVisibility(this.value == "char"); }; + setCharVisibility(select.value == "char"); + + tr = doc.createElement("tr"); + tbody.appendChild(tr); + td = doc.createElement("td"); + td.className = "label"; + tr.appendChild(td); + td.innerHTML = i18n["Height"] + ":"; + td = doc.createElement("td"); + tr.appendChild(td); + input = doc.createElement("input"); + input.type = "text"; + input.value = TableOperations.getLength(el.style.height); + input.size = "5"; + input.name = "f_st_height"; + input.style.marginRight = "0.5em"; + td.appendChild(input); + select = doc.createElement("select"); + select.name = "f_st_heightUnit"; + option = doc.createElement("option"); + option.innerHTML = i18n["percent"]; + option.value = "%"; + option.selected = /%/.test(el.style.height); + select.appendChild(option); + option = doc.createElement("option"); + option.innerHTML = i18n["pixels"]; + option.value = "px"; + option.selected = /px/.test(el.style.height); + select.appendChild(option); + td.appendChild(select); + + select.style.marginRight = "0.5em"; + td.appendChild(doc.createTextNode(i18n["Vertical align"] + ":")); + select = doc.createElement("select"); + select.name = "f_st_verticalAlign"; + select.style.marginLeft = "0.5em"; + td.appendChild(select); + options = ["Top", "Middle", "Bottom", "Baseline"]; + for (var i = 0; i < options.length; ++i) { + var Val = options[i]; + var val = Val.toLowerCase(); + option = doc.createElement("option"); + option.value = val; + option.innerHTML = i18n[Val]; + option.selected = (el.style.verticalAlign.toLowerCase() == val); + select.appendChild(option); + } + + return fieldset; +}; + +// Returns an HTML element containing the style attributes for the given +// element. This can be easily embedded into any dialog; the functionality is +// also provided. +TableOperations.createStyleFieldset = function(doc, editor, el) { + var i18n = TableOperations.I18N; + var fieldset = doc.createElement("fieldset"); + var legend = doc.createElement("legend"); + fieldset.appendChild(legend); + legend.innerHTML = i18n["CSS Style"]; + var table = doc.createElement("table"); + fieldset.appendChild(table); + table.style.width = "100%"; + var tbody = doc.createElement("tbody"); + table.appendChild(tbody); + + var tr, td, input, select, option, options, i; + + tr = doc.createElement("tr"); + tbody.appendChild(tr); + td = doc.createElement("td"); + tr.appendChild(td); + td.className = "label"; + td.innerHTML = i18n["Background"] + ":"; + td = doc.createElement("td"); + tr.appendChild(td); + var df = TableOperations.createColorButton(doc, editor, el.style.backgroundColor, "backgroundColor"); + df.firstChild.nextSibling.style.marginRight = "0.5em"; + td.appendChild(df); + td.appendChild(doc.createTextNode(i18n["Image URL"] + ": ")); + input = doc.createElement("input"); + input.type = "text"; + input.name = "f_st_backgroundImage"; + if (el.style.backgroundImage.match(/url\(\s*(.*?)\s*\)/)) { + input.value = RegExp.$1; + } + // input.style.width = "100%"; + td.appendChild(input); + + tr = doc.createElement("tr"); + tbody.appendChild(tr); + td = doc.createElement("td"); + tr.appendChild(td); + td.className = "label"; + td.innerHTML = i18n["FG Color"] + ":"; + td = doc.createElement("td"); + tr.appendChild(td); + td.appendChild(TableOperations.createColorButton(doc, editor, el.style.color, "color")); + + // for better alignment we include an invisible field. + input = doc.createElement("input"); + input.style.visibility = "hidden"; + input.type = "text"; + td.appendChild(input); + + tr = doc.createElement("tr"); + tbody.appendChild(tr); + td = doc.createElement("td"); + tr.appendChild(td); + td.className = "label"; + td.innerHTML = i18n["Border"] + ":"; + td = doc.createElement("td"); + tr.appendChild(td); + + var colorButton = TableOperations.createColorButton(doc, editor, el.style.borderColor, "borderColor"); + var btn = colorButton.firstChild.nextSibling; + td.appendChild(colorButton); + // borderFields.push(btn); + btn.style.marginRight = "0.5em"; + + select = doc.createElement("select"); + var borderFields = []; + td.appendChild(select); + select.name = "f_st_borderStyle"; + options = ["none", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]; + var currentBorderStyle = el.style.borderStyle; + // Gecko reports "solid solid solid solid" for "border-style: solid". + // That is, "top right bottom left" -- we only consider the first + // value. + (currentBorderStyle.match(/([^\s]*)\s/)) && (currentBorderStyle = RegExp.$1); + for (var i in options) { + var val = options[i]; + option = doc.createElement("option"); + option.value = val; + option.innerHTML = val; + (val == currentBorderStyle) && (option.selected = true); + select.appendChild(option); + } + select.style.marginRight = "0.5em"; + function setBorderFieldsStatus(value) { + for (var i = 0; i < borderFields.length; ++i) { + var el = borderFields[i]; + el.style.visibility = value ? "hidden" : "visible"; + if (!value && (el.tagName.toLowerCase() == "input")) { + el.focus(); + el.select(); + } + } + }; + select.onchange = function() { setBorderFieldsStatus(this.value == "none"); }; + + input = doc.createElement("input"); + borderFields.push(input); + input.type = "text"; + input.name = "f_st_borderWidth"; + input.value = TableOperations.getLength(el.style.borderWidth); + input.size = "5"; + td.appendChild(input); + input.style.marginRight = "0.5em"; + var span = doc.createElement("span"); + span.innerHTML = i18n["pixels"]; + td.appendChild(span); + borderFields.push(span); + + setBorderFieldsStatus(select.value == "none"); + + if (el.tagName.toLowerCase() == "table") { + // the border-collapse style is only for tables + tr = doc.createElement("tr"); + tbody.appendChild(tr); + td = doc.createElement("td"); + td.className = "label"; + tr.appendChild(td); + input = doc.createElement("input"); + input.type = "checkbox"; + input.name = "f_st_borderCollapse"; + input.id = "f_st_borderCollapse"; + var val = (/collapse/i.test(el.style.borderCollapse)); + input.checked = val ? 1 : 0; + td.appendChild(input); + + td = doc.createElement("td"); + tr.appendChild(td); + var label = doc.createElement("label"); + label.htmlFor = "f_st_borderCollapse"; + label.innerHTML = i18n["Collapsed borders"]; + td.appendChild(label); + } + +// tr = doc.createElement("tr"); +// tbody.appendChild(tr); +// td = doc.createElement("td"); +// td.className = "label"; +// tr.appendChild(td); +// td.innerHTML = i18n["Margin"] + ":"; +// td = doc.createElement("td"); +// tr.appendChild(td); +// input = doc.createElement("input"); +// input.type = "text"; +// input.size = "5"; +// input.name = "f_st_margin"; +// td.appendChild(input); +// input.style.marginRight = "0.5em"; +// td.appendChild(doc.createTextNode(i18n["Padding"] + ":")); + +// input = doc.createElement("input"); +// input.type = "text"; +// input.size = "5"; +// input.name = "f_st_padding"; +// td.appendChild(input); +// input.style.marginLeft = "0.5em"; +// input.style.marginRight = "0.5em"; +// td.appendChild(doc.createTextNode(i18n["pixels"])); + + return fieldset; +}; + +//// END GENERIC CODE ------------------------------------------------------- diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popupdiv.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popupdiv.js new file mode 100644 index 00000000..c2f8d3be --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popupdiv.js @@ -0,0 +1,369 @@ +/** This file is derived from PopupDiv, developed by Mihai Bazon for + * SamWare.net. Modifications were needed to make it usable in HTMLArea. + * HTMLArea is a free WYSIWYG online HTML editor from InteractiveTools.com. + * + * This file does not function standalone. It is dependent of global functions + * defined in HTMLArea-3.0 (htmlarea.js). + * + * Please see file htmlarea.js for further details. + **/ + +var is_ie = ( (navigator.userAgent.toLowerCase().indexOf("msie") != -1) && + (navigator.userAgent.toLowerCase().indexOf("opera") == -1) ); +var is_compat = (document.compatMode == "BackCompat"); + +function PopupDiv(editor, titleText, handler, initFunction) { + var self = this; + + this.editor = editor; + this.doc = editor._mdoc; + this.handler = handler; + + var el = this.doc.createElement("div"); + el.className = "content"; + + var popup = this.doc.createElement("div"); + popup.className = "dialog popupdiv"; + this.element = popup; + var s = popup.style; + s.position = "absolute"; + s.left = "0px"; + s.top = "0px"; + + var title = this.doc.createElement("div"); + title.className = "title"; + this.title = title; + popup.appendChild(title); + + HTMLArea._addEvent(title, "mousedown", function(ev) { + self._dragStart(is_ie ? window.event : ev); + }); + + var button = this.doc.createElement("div"); + button.className = "button"; + title.appendChild(button); + button.innerHTML = "×"; + title.appendChild(this.doc.createTextNode(titleText)); + this.titleText = titleText; + + button.onmouseover = function() { + this.className += " button-hilite"; + }; + button.onmouseout = function() { + this.className = this.className.replace(/\s*button-hilite\s*/g, " "); + }; + button.onclick = function() { + this.className = this.className.replace(/\s*button-hilite\s*/g, " "); + self.close(); + }; + + popup.appendChild(el); + this.content = el; + + this.doc.body.appendChild(popup); + + this.dragging = false; + this.onShow = null; + this.onClose = null; + this.modal = false; + + initFunction(this); +}; + +PopupDiv.currentPopup = null; + +PopupDiv.prototype.showAtElement = function(el, mode) { + this.defaultSize(); + var pos, ew, eh; + var popup = this.element; + popup.style.display = "block"; + var w = popup.offsetWidth; + var h = popup.offsetHeight; + popup.style.display = "none"; + if (el != window) { + pos = PopupDiv.getAbsolutePos(el); + ew = el.offsetWidth; + eh = el.offsetHeight; + } else { + pos = {x:0, y:0}; + var size = PopupDiv.getWindowSize(); + ew = size.x; + eh = size.y; + } + var FX = false, FY = false; + if (mode.indexOf("l") != -1) { + pos.x -= w; + FX = true; + } + if (mode.indexOf("r") != -1) { + pos.x += ew; + FX = true; + } + if (mode.indexOf("t") != -1) { + pos.y -= h; + FY = true; + } + if (mode.indexOf("b") != -1) { + pos.y += eh; + FY = true; + } + if (mode.indexOf("c") != -1) { + FX || (pos.x += Math.round((ew - w) / 2)); + FY || (pos.y += Math.round((eh - h) / 2)); + } + this.showAt(pos.x, pos.y); +}; + +PopupDiv.prototype.defaultSize = function() { + var s = this.element.style; + var cs = this.element.currentStyle; + var addX = (is_ie && is_compat) ? (parseInt(cs.borderLeftWidth) + + parseInt(cs.borderRightWidth) + + parseInt(cs.paddingLeft) + + parseInt(cs.paddingRight)) : 0; + var addY = (is_ie && is_compat) ? (parseInt(cs.borderTopWidth) + + parseInt(cs.borderBottomWidth) + + parseInt(cs.paddingTop) + + parseInt(cs.paddingBottom)) : 0; + s.display = "block"; + s.width = (this.content.offsetWidth + addX) + "px"; + s.height = (this.content.offsetHeight + this.title.offsetHeight) + "px"; + s.display = "none"; +}; + +PopupDiv.prototype.showAt = function(x, y) { + this.defaultSize(); + var s = this.element.style; + s.display = "block"; + s.left = x + "px"; + s.top = y + "px"; + this.hideShowCovered(); + + PopupDiv.currentPopup = this; + HTMLArea._addEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup); + HTMLArea._addEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup); + if (is_ie && this.modal) { + this.doc.body.setCapture(false); + this.doc.body.onlosecapture = function() { + (PopupDiv.currentPopup) && (this.doc.body.setCapture(false)); + }; + } + window.event && HTMLArea._stopEvent(window.event); + + if (typeof this.onShow == "function") { + this.onShow(); + } else if (typeof this.onShow == "string") { + eval(this.onShow); + } + + var field = this.element.getElementsByTagName("input")[0]; + if (!field) { + field = this.element.getElementsByTagName("select")[0]; + } + if (!field) { + field = this.element.getElementsByTagName("textarea")[0]; + } + if (field) { + field.focus(); + } +}; + +PopupDiv.prototype.close = function() { + this.element.style.display = "none"; + PopupDiv.currentPopup = null; + this.hideShowCovered(); + HTMLArea._removeEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup); + HTMLArea._removeEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup); + is_ie && this.modal && this.doc.body.releaseCapture(); + if (typeof this.onClose == "function") { + this.onClose(); + } else if (typeof this.onClose == "string") { + eval(this.onClose); + } + this.element.parentNode.removeChild(this.element); +}; + +PopupDiv.prototype.getForm = function() { + var forms = this.content.getElementsByTagName("form"); + return (forms.length > 0) ? forms[0] : null; +}; + +PopupDiv.prototype.callHandler = function() { + var tags = ["input", "textarea", "select"]; + var params = new Object(); + for (var ti = tags.length; --ti >= 0;) { + var tag = tags[ti]; + var els = this.content.getElementsByTagName(tag); + for (var j = 0; j < els.length; ++j) { + var el = els[j]; + params[el.name] = el.value; + } + } + this.handler(this, params); + return false; +}; + +PopupDiv.getAbsolutePos = function(el) { + var r = { x: el.offsetLeft, y: el.offsetTop }; + if (el.offsetParent) { + var tmp = PopupDiv.getAbsolutePos(el.offsetParent); + r.x += tmp.x; + r.y += tmp.y; + } + return r; +}; + +PopupDiv.getWindowSize = function() { + if (window.innerHeight) { + return { y: window.innerHeight, x: window.innerWidth }; + } + if (this.doc.body.clientHeight) { + return { y: this.doc.body.clientHeight, x: this.doc.body.clientWidth }; + } + return { y: this.doc.documentElement.clientHeight, x: this.doc.documentElement.clientWidth }; +}; + +PopupDiv.prototype.hideShowCovered = function () { + var self = this; + function isContained(el) { + while (el) { + if (el == self.element) { + return true; + } + el = el.parentNode; + } + return false; + }; + var tags = new Array("applet", "select"); + var el = this.element; + + var p = PopupDiv.getAbsolutePos(el); + var EX1 = p.x; + var EX2 = el.offsetWidth + EX1; + var EY1 = p.y; + var EY2 = el.offsetHeight + EY1; + + if (el.style.display == "none") { + EX1 = EX2 = EY1 = EY2 = 0; + } + + for (var k = tags.length; k > 0; ) { + var ar = this.doc.getElementsByTagName(tags[--k]); + var cc = null; + + for (var i = ar.length; i > 0;) { + cc = ar[--i]; + if (isContained(cc)) { + cc.style.visibility = "visible"; + continue; + } + + p = PopupDiv.getAbsolutePos(cc); + var CX1 = p.x; + var CX2 = cc.offsetWidth + CX1; + var CY1 = p.y; + var CY2 = cc.offsetHeight + CY1; + + if ((CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) { + cc.style.visibility = "visible"; + } else { + cc.style.visibility = "hidden"; + } + } + } +}; + +PopupDiv.prototype._dragStart = function (ev) { + if (this.dragging) { + return false; + } + this.dragging = true; + PopupDiv.currentPopup = this; + var posX = ev.clientX; + var posY = ev.clientY; + if (is_ie) { + posY += this.doc.body.scrollTop; + posX += this.doc.body.scrollLeft; + } else { + posY += window.scrollY; + posX += window.scrollX; + } + var st = this.element.style; + this.xOffs = posX - parseInt(st.left); + this.yOffs = posY - parseInt(st.top); + HTMLArea._addEvent(this.doc, "mousemove", PopupDiv.dragIt); + HTMLArea._addEvent(this.doc, "mouseover", HTMLArea._stopEvent); + HTMLArea._addEvent(this.doc, "mouseup", PopupDiv.dragEnd); + HTMLArea._stopEvent(ev); +}; + +PopupDiv.dragIt = function (ev) { + var popup = PopupDiv.currentPopup; + if (!(popup && popup.dragging)) { + return false; + } + is_ie && (ev = window.event); + var posX = ev.clientX; + var posY = ev.clientY; + if (is_ie) { + posY += this.doc.body.scrollTop; + posX += this.doc.body.scrollLeft; + } else { + posY += window.scrollY; + posX += window.scrollX; + } + popup.hideShowCovered(); + var st = popup.element.style; + st.left = (posX - popup.xOffs) + "px"; + st.top = (posY - popup.yOffs) + "px"; + HTMLArea._stopEvent(ev); +}; + +PopupDiv.dragEnd = function () { + var popup = PopupDiv.currentPopup; + if (!popup) { + return false; + } + popup.dragging = false; + HTMLArea._removeEvent(popup.doc, "mouseup", PopupDiv.dragEnd); + HTMLArea._removeEvent(popup.doc, "mouseover", HTMLArea._stopEvent); + HTMLArea._removeEvent(popup.doc, "mousemove", PopupDiv.dragIt); + popup.hideShowCovered(); +}; + +PopupDiv.checkPopup = function (ev) { + is_ie && (ev = window.event); + var el = is_ie ? ev.srcElement : ev.target; + var cp = PopupDiv.currentPopup; + for (; (el != null) && (el != cp.element); el = el.parentNode); + if (el == null) { + cp.modal || ev.type == "mouseover" || cp.close(); + HTMLArea._stopEvent(ev); + } +}; + +PopupDiv.prototype.addButtons = function() { + var self = this; + var div = this.doc.createElement("div"); + this.content.appendChild(div); + div.className = "buttons"; + for (var i = 0; i < arguments.length; ++i) { + var btn = arguments[i]; + var button = this.doc.createElement("button"); + div.appendChild(button); + button.innerHTML = HTMLArea.I18N.buttons[btn]; + switch (btn) { + case "ok": + button.onclick = function() { + self.callHandler(); + self.close(); + }; + break; + case "cancel": + button.onclick = function() { + self.close(); + }; + break; + } + } +}; diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/about.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/about.html new file mode 100644 index 00000000..0df5243f --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/about.html @@ -0,0 +1,375 @@ + + + + + +HTMLArea3.0 정보 + + + + + + + +
    + + + +
    + +
    +
    + +
    + +

    HTMLArea

    + +

    A free WYSIWYG editor replacement for <textarea> fields.
    + For Mozilla 1.3+ (any platform) or Internet Explorer 5.5+ (Windows). +

    + +

    © 2002-2004 interactivetools.com, inc.
    + © 2003-2005 dynarch.com LLC.
    + All Rights Reserved.

    + +

    Project resources

    + + + +

    + For download section please see the project page @ SourceForge. +

    + +
    + +
    +

    Thank you

    + +

    + dynarch.com would like to thank the following + companies/persons for their donations to support development of HTMLArea (listed alphabetically): +

    + + + +

    Also many thanks to all people at InteractiveTools.com + HTMLArea forums for + contributing translations, feedback, bug reports and fixes.

    + +

    + Last but not least, this project wouldn't have existed without + InteractiveTools.com. +

    + +
    + +
    +

    htmlArea License (based on BSD license)

    + +

    © 2002-2004, interactivetools.com, inc.
    + © 2003-2004 dynarch.com LLC
    + All rights reserved.

    + +

    +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +

    + +
      +
    1. +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +
    2. + +
    3. +Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +
    4. + +
    5. +Neither the name of interactivetools.com, inc. nor the names of its +contributors may be used to endorse or promote products derived from this +software without specific prior written permission. +
    6. +
    + +

    +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +

    + +
    + +
    +

    Plugins

    +
    +
    +
    + +
    + + +
    + + +
    +
    About
    Thanks
    License
    Plugins
    + +
    + +
    + + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/blank.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/blank.html new file mode 100644 index 00000000..4b40a6be --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/blank.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/custom2.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/custom2.html new file mode 100644 index 00000000..04314a05 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/custom2.html @@ -0,0 +1,35 @@ + + + Select Phrase + + + + +
    +
    + + + + + +
    +
    + \ No newline at end of file diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/editor_help.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/editor_help.html new file mode 100644 index 00000000..c5872c2c --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/editor_help.html @@ -0,0 +1,16 @@ + + + Editor Help + + + + +

    Editor Help

    + +Todo... + + + + \ No newline at end of file diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/fullscreen.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/fullscreen.html new file mode 100644 index 00000000..9ef999cf --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/fullscreen.html @@ -0,0 +1,139 @@ + + + + Fullscreen HTMLArea + + + + + + + + + + +
    + +
    + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/fullscreen.jsp b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/fullscreen.jsp new file mode 100644 index 00000000..eef06ff3 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/fullscreen.jsp @@ -0,0 +1,139 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> <% /** * @Class Name : fullscreen.jsp * @Description : 웹에디터 전체 화면 * @Modification Information * @ * @ 수정일 수정자 수정내용 * @ ---------- -------- --------------------------- * @ 2011.09.06 이기하 기존 html -> jsp로 수정하여 contextpath 적용 * * @author 공통서비스 개발팀 이기하 * @since 2011.09.06 * @version 1.0 * @see * */ %> + + + Fullscreen HTMLArea + + + + + + + + + + +
    + +
    + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_image.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_image.html new file mode 100644 index 00000000..5aa4d379 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_image.html @@ -0,0 +1,190 @@ + + + + 그림 삽입 + + + + + + + + + + +
    그림 삽입
    + +
    + + + + + + + + + + + + + +
    이미지 URL: + +
    대체 문구:
    + +

    + +

    +Layout + +
    + +
    Alignment:
    + + +

    + +

    Border thickness:
    + + +
    + +
    + +
    +Spacing + +
    + +
    Horizontal:
    + + +

    + +

    Vertical:
    + + +
    + +
    +
    + + + + + +
    + 이미지 미리보기:
    + +
    +
    + +
    +
    + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_image.jsp b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_image.jsp new file mode 100644 index 00000000..8317acb9 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_image.jsp @@ -0,0 +1 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> <% /** * @Class Name : fullscreen.jsp * @Description : 웹에디터 전체 화면 * @Modification Information * @ * @ 수정일 수정자 수정내용 * @ ---------- -------- --------------------------- * @ 2011.09.06 이기하 기존 html -> jsp로 수정하여 contextpath 적용 * * @author 공통서비스 개발팀 이기하 * @since 2011.09.06 * @version 1.0 * @see * */ %> 그림 삽입
    그림 삽입
    이미지 URL:
    대체 문구:

    Layout
    Alignment:

    Border thickness:
    Spacing
    Horizontal:

    Vertical:

    이미지 미리보기:

    \ No newline at end of file diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_table.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_table.html new file mode 100644 index 00000000..09c07a6c --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/insert_table.html @@ -0,0 +1,313 @@ + + + + + 표 삽입 + + + + + + + + + + + + +
    표 삽입
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    행:너비:
    열:
    + +

    + +

    +Layout + +
    + +
    Alignment:
    + + +

    + +

    Border thickness:
    + + +
    + +
    + +
    +Spacing + +
    + +
    Cell spacing:
    + + +

    + +

    Cell padding:
    + + +
    + +
    + +
    + + +
    + +
    + + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/link.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/link.html new file mode 100644 index 00000000..7ab257da --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/link.html @@ -0,0 +1,156 @@ + + + + + Insert/Modify Link + + + + + + + + +
    웹링크 삽입
    +
    + + + + + + + + + + + + + +
    URL:
    타이틀 (tooltip):
    타겟: + +
    + +
    + + +
    +
    + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/old-fullscreen.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/old-fullscreen.html new file mode 100644 index 00000000..ec57941a --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/old-fullscreen.html @@ -0,0 +1,131 @@ + +Fullscreen Editor + + + + + + +
    + +
    + + \ No newline at end of file diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/old_insert_image.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/old_insert_image.html new file mode 100644 index 00000000..3edcd3eb --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/old_insert_image.html @@ -0,0 +1,206 @@ + + + + + + + +Insert Image + + + + + +
    Image URL:
    + + +
    Alternate Text:
    + + +
    +Layout +
    + +
    +Spacing +
    + +
    Alignment:
    + + +
    Horizontal:
    + + +
    Border Thickness:
    + + +
    Vertical:
    + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/popup.js b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/popup.js new file mode 100644 index 00000000..d5209108 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/popups/popup.js @@ -0,0 +1,114 @@ +// htmlArea v3.0 - Copyright (c) 2002, 2003 interactivetools.com, inc. +// This copyright notice MUST stay intact for use (see license.txt). +// +// Portions (c) dynarch.com, 2003 +// +// A free WYSIWYG editor replacement for + + +

    Where can I find out more info, download the latest version and talk to +other HTMLArea users?

    + +

    You can find out more about HTMLArea and download the latest version on +the HTMLArea +homepage and you can talk to other HTMLArea users and post any comments +or suggestions you have in the HTMLArea forum.

    + +

    Keyboard shortcuts

    + +

    The editor provides the following key combinations:

    + +
      +
    • CTRL-A -- select all
    • +
    • CTRL-B -- bold
    • +
    • CTRL-I -- italic
    • +
    • CTRL-U -- underline
    • +
    • CTRL-S -- strikethrough
    • +
    • CTRL-L -- justify left
    • +
    • CTRL-E -- justify center
    • +
    • CTRL-R -- justify right
    • +
    • CTRL-J -- justify full
    • +
    • CTRL-1 .. CTRL-6 -- headings (<h1> .. <h6>)
    • +
    • CTRL-0 (zero) -- clean content pasted from Word
    • +
    + +

    Installation

    + +

    How do I add HTMLArea to my web page?

    + +

    It's easy. First you need to upload HTMLArea files to your website. +Just follow these steps.

    + +
      +
    1. Download the latest version from the htmlArea + homepage.
    2. +
    3. Unzip the files onto your local computer (making sure to maintain the + directory structure contained in the zip).
    4. +
    5. Create a new folder on your website called /htmlarea/ (make sure it's + NOT inside the cgi-bin).
    6. +
    7. Transfer all the HTMLArea files from your local computer into the + /htmlarea/ folder on your website.
    8. +
    9. Open the example page /htmlarea/examples/core.html with your browser to make + sure everything works.
    10. +
    + +

    Once htmlArea is on your website all you need to do is add some +JavaScript to any pages that you want to add WYSIWYG editors to. Here's how +to do that.

    + +
      + +
    1. Define some global variables. "_editor_url" has to be the absolute + URL where HTMLArea resides within your + website; as we discussed, this would be “/htmlarea/”. "_editor_lang" must + be the language code in which you want HTMLArea to appear. This defaults + to "en" (English); for a list of supported languages, please look into + the "lang" subdirectory in the distribution. +
      <script type="text/javascript">
      +   _editor_url = "/htmlarea/";
      +   _editor_lang = "en";
      +</script>
      + +
    2. Include the "htmlarea.js" script: +
      <script type="text/javascript" src="/htmlarea/htmlarea.js"></script>
      +
    3. + +
    4. If you want to change all your <textarea>-s into + HTMLArea-s then you can use the simplest way to create HTMLArea:

      +
      <script type="text/javascript" defer="1">
      +    HTMLArea.replaceAll();
      +</script>
      +

      Note: you can also add the + HTMLArea.replaceAll() code to the onload + event handler for the body element, if you find it more appropriate.

      + +

      A different approach, if you have more than one textarea and only want + to change one of them, is to use HTMLArea.replace("id") -- + pass the id of your textarea. Do not use the + name attribute anymore, it's not a standard solution!

      + +
    + +

    This section applies to HTMLArea-3.0 release candidate 1 or later; prior +to this version, one needed to include more files; however, now HTMLArea is +able to include other files too (such as stylesheet, language definition +file, etc.) so you only need to define the editor path and load +"htmlarea.js". Nice, eh? ;-)

    + +

    I want to change the editor settings, how do I do that?

    + +

    While it's true that all you need is one line of JavaScript to create an +htmlArea WYSIWYG editor, you can also specify more config settings in the +code to control how the editor works and looks. Here's an example of some of +the available settings:

    + +
    var config = new HTMLArea.Config(); // create a new configuration object
    +                                    // having all the default values
    +config.width = '90%';
    +config.height = '200px';
    +
    +// the following sets a style for the page body (black text on yellow page)
    +// and makes all paragraphs be bold by default
    +config.pageStyle =
    +  'body { background-color: yellow; color: black; font-family: verdana,sans-serif } ' +
    +  'p { font-width: bold; } ';
    +
    +// the following replaces the textarea with the given id with a new
    +// HTMLArea object having the specified configuration
    +HTMLArea.replace('id', config);
    + +

    Important: It's recommended that you add +custom features and configuration to a separate file. This will ensure you +that when we release a new official version of HTMLArea you'll have less +trouble upgrading it.

    + +

    How do I customize the toolbar?

    + +

    Using the configuration object introduced above allows you to completely +control what the toolbar contains. Following is an example of a one-line, +customized toolbar, much simpler than the default one:

    + +
    var config = new HTMLArea.Config();
    +config.toolbar = [
    +  ['fontname', 'space',
    +   'fontsize', 'space',
    +   'formatblock', 'space',
    +   'bold', 'italic', 'underline']
    +];
    +HTMLArea.replace('id', config);
    + +

    The toolbar is an Array of Array objects. Each array in the toolbar +defines a new line. The default toolbar looks like this:

    + +
    config.toolbar = [
    +[ "fontname", "space",
    +  "fontsize", "space",
    +  "formatblock", "space",
    +  "bold", "italic", "underline", "separator",
    +  "strikethrough", "subscript", "superscript", "separator",
    +  "copy", "cut", "paste", "space", "undo", "redo" ],
    +
    +[ "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator",
    +  "insertorderedlist", "insertunorderedlist", "outdent", "indent", "separator",
    +  "forecolor", "hilitecolor", "textindicator", "separator",
    +  "inserthorizontalrule", "createlink", "insertimage", "inserttable", "htmlmode", "separator",
    +  "popupeditor", "separator", "showhelp", "about" ]
    +];
    + +

    Except three strings, all others in the examples above need to be defined +in the config.btnList object (detailed a bit later in this +document). The three exceptions are: 'space', 'separator' and 'linebreak'. +These three have the following meaning, and need not be present in +btnList:

    + +
      +
    • 'space' -- Inserts a space of 5 pixels (the width is configurable by external + CSS) at the current + position in the toolbar.
    • +
    • 'separator' -- Inserts a small vertical separator, for visually grouping related + buttons.
    • +
    • 'linebreak' -- Starts a new line in the toolbar. Subsequent controls will be + inserted on the new line.
    • +
    + +

    Important: It's recommended that you add +custom features and configuration to a separate file. This will ensure you +that when we release a new official version of HTMLArea you'll have less +trouble upgrading it.

    + +

    How do I create custom buttons?

    + +

    By design, the toolbar is easily extensible. For adding a custom button +one needs to follow two steps.

    + +

    1. Register the button in config.btnList.

    + +

    For each button in the toolbar, HTMLArea needs to know the following +information:

    +
      +
    • a name for it (we call it the ID of the button);
    • +
    • the path to an image to be displayed in the toolbar;
    • +
    • a tooltip for it;
    • +
    • whether the button is enabled or not in text mode;
    • +
    • what to do when the button is clicked;
    • +
    +

    You need to provide all this information for registering a new button +too. The button ID can be any string identifier and it's used when +defining the toolbar, as you saw above. We recommend starting +it with "my-" so that it won't clash with the standard ID-s (those from +the default toolbar).

    + +

    Register button example #1

    + +
    // get a default configuration
    +var config = new HTMLArea.Config();
    +// register the new button using Config.registerButton.
    +// parameters:        button ID,   tooltip,          image,           textMode,
    +config.registerButton("my-hilite", "Highlight text", "my-hilite.gif", false,
    +// function that gets called when the button is clicked
    +  function(editor, id) {
    +    editor.surroundHTML('<span class="hilite">', '</span>');
    +  }
    +);
    + +

    An alternate way of calling registerButton is exemplified above. Though +the code might be a little bit larger, using this form makes your code more +maintainable. It doesn't even needs comments as it's pretty clear.

    + +

    Register button example #2

    + +
    var config = new HTMLArea.Config();
    +config.registerButton({
    +  id        : "my-hilite",
    +  tooltip   : "Highlight text",
    +  image     : "my-hilite.gif",
    +  textMode  : false,
    +  action    : function(editor, id) {
    +                editor.surroundHTML('<span class="hilite">', '</span>');
    +              }
    +});
    + +

    You might notice that the "action" function receives two parameters: +editor and id. In the examples above we only used the +editor parameter. But it could be helpful for you to understand +both:

    + +
      +
    • editor is a reference to the HTMLArea object. Since our entire + code now has an OOP-like + design, you need to have a reference to + the editor object in order to do things with it. In previous versions of + HTMLArea, in order to identify the object an ID was used -- the ID of the + HTML element. In this version ID-s are no longer necessary.
    • + +
    • id is the button ID. Wondering why is this useful? Well, you + could use the same handler function (presuming that it's not an anonymous + function like in the examples above) for more buttons. You can see an example a bit later in this document.
    • +
    + +

    2. Inserting it into the toolbar

    + +

    At this step you need to specify where in the toolbar to insert the +button, or just create the whole toolbar again as you saw in the previous +section. You use the button ID, as shown in the examples of customizing the +toolbar in the previous section.

    + +

    For the sake of completion, following there are another examples.

    + +

    Append your button to the default toolbar

    + +
    config.toolbar.push([ "my-hilite" ]);
    + +

    Customized toolbar

    + +
    config.toolbar = [
    +  ['fontname', 'space',
    +   'fontsize', 'space',
    +   'formatblock', 'space',
    +   'separator', 'my-hilite', 'separator', 'space', // here's your button
    +   'bold', 'italic', 'underline', 'space']
    +];
    + +

    Note: in the example above our new button is +between two vertical separators. But this is by no means required. You can +put it wherever you like. Once registered in the btnList (step 1) your custom button behaves just like a default +button.

    + +

    Important: It's recommended that you add +custom features and configuration to a separate file. This will ensure you +that when we release a new official version of HTMLArea you'll have less +trouble upgrading it.

    + +

    A complete example

    + +

    Please note that it is by no means necessary to include the following +code into the htmlarea.js file. On the contrary, it might not work there. +The configuration system is designed such that you can always customize the +editor from outside files, thus keeping the htmlarea.js file +intact. This will make it easy for you to upgrade your HTMLArea when we +release a new official version. OK, I promise it's the last time I said +this. ;)

    + +
    // All our custom buttons will call this function when clicked.
    +// We use the buttonId parameter to determine what button
    +// triggered the call.
    +function clickHandler(editor, buttonId) {
    +  switch (buttonId) {
    +    case "my-toc":
    +      editor.insertHTML("<h1>Table Of Contents</h1>");
    +      break;
    +    case "my-date":
    +      editor.insertHTML((new Date()).toString());
    +      break;
    +    case "my-bold":
    +      editor.execCommand("bold");
    +      editor.execCommand("italic");
    +      break;
    +    case "my-hilite":
    +      editor.surroundHTML("<span class=\"hilite\">", "</span>");
    +      break;
    +  }
    +};
    +
    +// Create a new configuration object
    +var config = new HTMLArea.Config();
    +
    +// Register our custom buttons
    +config.registerButton("my-toc",  "Insert TOC", "my-toc.gif", false, clickHandler);
    +config.registerButton("my-date", "Insert date/time", "my-date.gif", false, clickHandler);
    +config.registerButton("my-bold", "Toggle bold/italic", "my-bold.gif", false, clickHandler);
    +config.registerButton("my-hilite", "Hilite selection", "my-hilite.gif", false, clickHandler);
    +
    +// Append the buttons to the default toolbar
    +config.toolbar.push(["linebreak", "my-toc", "my-date", "my-bold", "my-hilite"]);
    +
    +// Replace an existing textarea with an HTMLArea object having the above config.
    +HTMLArea.replace("textAreaID", config);
    + + +
    +
    © InteractiveTools.com 2002-2004. +
    dynarch.com 2003-2004
    +HTMLArea v3.0 developed by Mihai Bazon. +
    +Documentation written by Mihai Bazon. +
    + Last modified: Wed Jan 28 12:18:23 EET 2004 + + diff --git a/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/release-notes.html b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/release-notes.html new file mode 100644 index 00000000..57a692b4 --- /dev/null +++ b/src/main/webapp/html/egovframework/com/cmm/utl/htmlarea3.0/release-notes.html @@ -0,0 +1,182 @@ + + + + + HTMLArea-3.0-RC3 release notes + + + + + +

    HTMLArea-3.0-RC3 release notes

    + +

    This release was compiled on Jan , 2005 [23:43] GMT.

    + +

    Changes since 3.0-RC2b:

    + +
      +
    • Restored broken images and re-committed ALL images back to CVS in binary mode. +
    • Added error with instructions for when HTMLArea.init() isn't called first. +
    • Fixed examples to call HTMLArea.init() first: +
        +
      • 2-areas.html +
      • character_map.html +
      • css.html +
      • dynamic_css.html +
      • list-type.html +
      • remove-font-tags.html +
      +
    • +
    + + +

    Changes since 3.0-Beta:

    + +
      +
    • + New plugins +
        +
      • + ContextMenu plugin (provides a nice context menu with common + operations, including table ops, link ops, etc.) +
      • +
      • + CSS plugin (provides an easy way to insert/change CSS classes) +
      • +
      • + FullPage plugin (allows HTMLArea to edit a whole HTML file, + not only the content within <body>.) +
      • +
      +
    • +
    • + Changes in the SpellChecker plugin +
        +
      • + Many bugfixes: now it works ;-) Fully Unicode-safe. +
      • +
      • + Speed and bandwidth optimization: reports the list of + suggestions only once for each mispelled word; this helps + in cases where you have, for instance, the word “HTMLArea” + in 10 places all over the document; the list of + suggestions for it--which is kind of huge--will only be + included once. +
      • +
      • + User interface improvements: the highlighted word will + remain in view; in cases where it's normally outside, the + window will be scrolled to it. +
      • +
      • + Added a "Revert" button for those that change their minds ;-) +
      • +
      • + Added a "Info" button which reports information about the + document, retrieved by the server-side spell checker: + total number of words, total number of mispelled words, + number of suggestions made, spell check time, etc. More + can be easily added. FIXME: this part + is not yet internationalized. +
      • +
      • + The server-side spell checker now uses XML::DOM instead of + HTML::Parser, which means that it will be unable to parse + “tag-soup” HTML. It needs valid code. Usually HTMLArea + generates valid code, but on rare occasions it might fail + and the spell checker will report a gross error message. + This gonna have to be fixed, but instead of making the + spell checker accept invalid HTML I prefer to make + HTMLArea generate valid code, so changes are to be done in + other places ;-) +
      • +
      +
    • +
    • + Changes in the core editor +
        +
      • + Easier to setup: you only need to load + htmlarea.js; other scripts will be loaded + automatically. Documentation + and examples updated. +
      • +
      • + Better plugin support (they register information about + themselves with the editor; can register event handlers for + the editor, etc.) +
      • +
      • + New about box; check it out, it's cool ;-) +
      • +
      • + Word cleaner (can be enabled to automatically kill Word crap + on paste (see Config.killWordOnPaste); otherwise accessible by + pressing CTRL-0 in the editor; a toolbar button will come up + soon) +
      • +
      • + Image preview in "insert image" dialog. Also allows + modification of current image, if selected. +
      • +
      • + New "insert link" dialog, allows target and title + specification, allows editing links. +
      • +
      • + Implemented support for text direction (left-to-right or + right-to-left). +
      • +
      • + Lots of bug fixes! ... and more, I guess ;-) an + automatically generated change log + is now available. +
      • +
      +
    • +
    + +

    I don't have the power to go through the bug +system at SourceForge + now. Some of the bugs reported there may be fixed; I'll update + their status, some other time. If you reported bugs there and now + find them to be fixed, please let me know.

    + +

    3.0-Beta

    + +

    Changes since 3.0-Alpha:

    + +
      + +
    • Performance improvements.
    • + +
    • Many bugs fixed.
    • + +
    • Plugin infrastructure.
    • + +
    • TableOperations plugin.
    • + +
    • SpellChecker plugin.
    • + +
    • Status bar.
    • + +
    • API for registering custom buttons and drop-down boxes in the + toolbar.
    • + +
    • Toolbar can contain text labels.
    • + +
    • Cut, copy, paste, undo, redo buttons.
    • + +
    +
    +
    Mihai Bazon
    + + Last modified: Wed Mar 31 19:18:26 EEST 2004 + + + + + diff --git a/src/main/webapp/images/egovframework/com/cmm/bg_bar01.gif b/src/main/webapp/images/egovframework/com/cmm/bg_bar01.gif new file mode 100644 index 0000000000000000000000000000000000000000..83cf97584f2439d7e2eceedef76b3ea18da5f990 GIT binary patch literal 1095 zcmZ?wbhEHbWMmLvXkcL2xcf8%1B2p!?g-xi1((Eh+i z#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaozEwNPs zx)kDt+yc0W z16P<{m;B_?+|;}hnBEkGUL%}(K?xzZ0BEyIYEfocYKmJ?ey#%8!&aF%-Qwhi(>$o& z6x?nxz^PXs=oo!av?4__ObD2EKuma|1#;lYJ~a=R){B6Nn(_a?zkh!J`uXGgx36D5 zfBN|0{kyksUcY+z;`y_uPaZ#d_~8D%yLWEix_RUJwX0VyU%GhV{JFDdPMZ`!zF{kpYlR+RDIIg#cFVINM%8) zeo$(0erZv1Dp0vH$f^P>=c3falKi5O{QMkPC`7yIh(jSI+_}qT38wz zIvKP(UIa|kjQ{`r{qy_R&mZ5vef{$J z)5j0*-@SeF`qj%9&!0Vg^7zri2lwyYy>t84%^TORUA=Po(!~qs&z(JU`qar2$B!L7 za`@1}1N-;w-Lrew&K=vgZQZhY)5ZeMTG_VdAT{+S(zE>X{jm6 zNr?&Zaj`McQIQehVWAmo_rKzE=rmCW>q^KY-Co3Z@B`F~;CMqH&FX#K^#)_>+YJ g1av?IsLWts;_vBSdHOB?;yGKQST^0;!@yt-0CE6`@Bjb+ literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/bg_tab01_on.gif b/src/main/webapp/images/egovframework/com/cmm/bg_tab01_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..8fc0df01325055053458bcc19e8ffa3d0077b715 GIT binary patch literal 1106 zcmZ?wbhEHbbZ1~;XkcLQ>^#T7z@Ye_JHj_W!6mUI5lGwER}>^BXQ!4ZB&DWj=GiK} z-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT8hBDWwnwIorYA~z?m z*s8)-DKRBKDb)(d1_|pcDS(xfWZNn^f+Q3`b~@)5r7D=}8R#Y(m>DRT8R{7to0yxM z>nIo*7#ips80i}t=^C0_85>y{7$`u26417ylr*a#7dNO~K%T8qMoCG5mA-y?dAVM> zv0i>ry1t>Mr6tG=BO_g)3fZ zE`@j@w*YQzUa=n7J9^3ax%w4}1^R}11|ToN6#Dw&SDKp(S6y5Zl!|aKR)dQ}DhpEe zgHnt0ON)|Ify$LZRuxz|7o{eaQ#zd*q`*i<1rGcP5-ycn$7 z*VoE3uec;JFFDoI#a0QZUoSH=#mdFf*xAI~)z#e6+0oF@)xy%%z}V8v!pYgf*wxX( z%n7E~B|o_|H#M&WrZ)wl*A1s$P(sKp0NU)5T9jFqn&MWJpQ`}&uvI2*w>aZ852`l> zw_99r>eUB2MjsTdNYM-v0;U}h6P{>+9C)%%%>$zB`; zK7M%r?(Lh`uU@`*{_N?K$B!O9xPR~No!hr=-nf44>XplvE?zi)?(CVz2)%Hf~tIZta@Yt5&X9zHI4|#fug$m_KjsoY}Kx&X_)J z>XgZoCQj(@>+R|8>g;H5Yi((6YHX;ltF5W7s;nq4D=jH5DlEv)%gxEo%FIYlOHD~m zN=%54i;annii`*k3k?Yl3Jmb~^Y!ue^7L?bb9Hfca&)k_v$e6dva~QaGc_?b0%j;Z zT^(&LO$~K5RTX6=MFn{|Ss7_5NeOW=Q4wJwK>>a~ULI~PP7Zc9Ru*O^MqtVClLc5l hFfizV2vC{9z{KCuzw-23{>5{)-0I$ZZw&*3H2_<^+}fAz5BlJy*q!Gf633_Ryzw006Lv}umZEl ze}Z5Sy}>bXu*}LnKz_#G?Nb^XiV~%=>yv#fdn8mcH&!%RRbaE3#jZEN6z$`~ATq_@ z@7{|j@J(^A>Znd^;ePP&B*D8Uk9yw8z-#zo^8wn-j4X^pOkI?PM^S2IrdWy_EHBE6 zh)M_@nBrE^6+LlwkVO)VsJAFb)+9xrxcB^PFh28Tr|l~L0EwsaEa#xSQ0p1;PMafm<=|2_eHjH<=+Z07ROzl y$ML{@>b`jWdAWCURhZu>weoLpmFHL!UVtXNy)NB({zH0m`_;?!p7ybsfBgf^IwNxc literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/btn/btn_close.png b/src/main/webapp/images/egovframework/com/cmm/btn/btn_close.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7613181c592b785bdb9d1a89470469e546611b GIT binary patch literal 1072 zcmbVLJ!sTW9FHHAQYjTg(7HTQL^X0>u-d~9-zVVLpK zyj@Gz^c@|c-}vj^I$bW3VuLK;Ch0gaV)78X2$TY65!H|bS0C)69K)Pi@#_uJDBm7sfe$VAj#?JVQ3195`L!4=tX1mX+LC8L zc4ivnx+XOcAmV^-upB04*J68iO}bC7c^32_WXWRtK{d)%P{1()YDVKcLDPY5WJFch z75zGp1X1M$nU@7ll1)W06$uO;mU@d})2!KZ17GxHu`NO(ljl2~PNpMgaJ(l>A(__hcttR`edv8ZLG zVlgX;d3|=m$!~d-xPlMvqVfklxhF5eV)9s-Y=;2UID5MICsZ=JP=RQ!GRZDih-u>+E9~>Oq z1uG-&2>bfXy!GVAi_xc1`@+e`%Eo^7^7l>oY<1%!Sg&mDe1Z2~ZvUD%asJcZmV0jZ mA#41ce|F_f?ewlc0p2seZ(n*f&F@U58ZH$p_V(=kM}GhddsO)V literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/btn/btn_del.png b/src/main/webapp/images/egovframework/com/cmm/btn/btn_del.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcccd89a64a324af037e0c98026aba2ecd62d15 GIT binary patch literal 1174 zcmaJ>&2QX96!*4OTa~sTNUJuKYUEPXLcJb;uT7R@v)+(JI9+X4?H&+hJf7W{#2>Y1 zStqJQ2vGz%po&w(fdi@#5>nL@7mz@rJycxyk}B~JAk;&po_g$fHye70YRR6NH}C!4 z?|u36#@yS-j*K7SIPO?|)^4)(X#O5P$i7#4@BPb`)3ny6^HGQPQ9`(i7r6w~1Jor= zg1nV$_s9gt?ceZQZQ6F;wQv*^QLa%lyM1f98SjmHDfh z1D&`^7X8`Pgv_tbweac^Ha&jwEijQ;3?LvBfh<@KQ!6X;16+&kbFs*SfeKwJ^FvZ? zrva)_LV#A(1q^iq7-mt@3_~?80U1h~2o+I*f~;67v{V`FJUsK3cpa;0&+PbOr!v1t zX>5sNzuzzRm12~1MaeWx5z3-03rs^uS3-(1AxzJW5Nwj-#E+>Tg&;>nZq%b?o-rMU z5X6qN3mm39iDD@eGZc$b5sE>O$2HJSX_Ndzq!mTW zqb_JHMl?znqZm}HgQ|lISN+h7`su~IOv9*clK3AHZzhQXFvzpz@4-P*I;D~!D*{v$ zO(2S@3a;yV0+dvu%bE^5s>1Ksdr#$W*r!aw;)q9dEE5xKVx$OI*K|RWh{n*MCzu_t zB+CYJU99sWqbTOB^HeL1M65sa?e1W(!|rI2kj+!V2IqP=X7k8>SGOyz>>u|!-~Ej{ zaC+*elb?N{EFAh~>detQN_)*d{=((WKfh?JpNu^`v?xU;pD3i&{xN+C)R&)=*NHMacVXUZG-=aX zQ61t7c8U=aKV)o3WQ7LqddoWzUfroSoSh9v zarvc1u#l)sz{k`EiN6`dYNGLdU6rlVW5|O(gl=g3X;MwA1`HBmAPf17gYpGXPy|sf z6mo^TKtiGnQ5I%VM#`!=q~;_r_;?mAa@%U%EDvI_oyK=54OIwxy`Ip^3MA@4QBf3# zBq&K4hRDR*0kxA%5YG)2OdLCr7gCP|AXT(mWQ%G%%k;DaKOD&h@t{qtVKA{nC<-Vo zX$Z8e|3iI$gpO$)pXK{c;kdCKVpzv9*@_%?aqYP@RHzyewke4kglrDGSnCo>;w}k+ zVf4EOZm)TPOM3C0KF6}uN)S^!aB#)cc%~wFo~!BzmCJHbzNe#-D3fekxs(+p zWEhGvf*01e<{eAArI``~4Sp0T; Qprvc1$hds7fO>3sN2X+E}f9u6-eH zhN^-E*x2|G6FUPV49pDt0sa7j1%3chIj2d=Kx*lHA9|kW{kZ3zZME(%FWp(&w%EsbC_P_D^;afJ{rp+$hCVO<~#F(plq=$hOIQzJb9q;()3$Afo?yleI(yskL zbxFWG8HP`Th_N}Ywvk4Tdw?nE;e9{U;IB`gA@Ds7?nt&^M>_8No1++Sk6Imfbl@r; z+*k*-RAmAIrVdDh!!S`(4UTnHw$6?b1Y-z2(BOGeU3&}YB*sAE<)SOd6;M(5l2oaz zRaSv0lq4jSQCTR8WpzzZ*F-S+Ad41zdurP-C$ZR0gMCUP6`|p9$PddriT6=SQ4}PI zNEC|ZHXm$xjswoVc+cQJ;h$Q*?S{KsCrRJue}MX0l;2X%lN0N}ULmcp)ok z3bgIZp+PW1C$x<(^8K%H(m9SWYU6|qVwYXqUOo#Isd|hZO5zS7htn=@^$8_OpF}{{ z$6W)39Y6HQFu6D8*tTkg33WmjTZRUi3h(=#S`{mz(KMUYy3j0@nzGU`#fBsaRasIL zQ_-hfgSdkLhjhyIF1Y4gZf1udVv!9T`;V|^#v}mavQ>Y6F8W-(3D=vSi!qmrSTZQP z+$Q&OtYrlAxLiQ{)%cytKZ@oWfXB#>3W%USlPZ!^S=T|=L zo}8@bZ_4%SUsnr-rz;Ec(yJ%VHQ6$~@4dmTkF8TK$NjWce)|hQ#t+PDwv6|U-N%0c D`X4Gn literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/btn/btn_search.gif b/src/main/webapp/images/egovframework/com/cmm/btn/btn_search.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4ee76fb30d2c96355398c4633b37045748f3f0e GIT binary patch literal 1358 zcmZ?wbhEHb-n*TA>HIW;5GqpB!1xXLdixhgx^GDXSWPQj+a zsv@@_H?<^Dp&~aYuh^=>Rw*$hKPlA;$OZ}PD=C1Llw{i~If5hY3># z8w8|WGtTbUSGnHVWRffCTRqLehNAQv~NT|l0# zQbtKhft9{~d3m{Bxv^e;QM$gNrKP35fswwEkuFe$ZgFK^Nn(X=Ua>OF1ees}><76{9OHt!~%UoJp=vRT#&!Os*6j4 zQW4I;s=7F&vLIDID784hv?w_hs9YJQ85nl>EdnV7y2i@CC=(bdi8(I$$)&lec_p4M zwn{)5y_C!ptF+`~!&IYWBVD5;^HkjwQxhXyi&QfM-Be@a#3Zv6^JH_Q6qq^K^cy?6 z7&w|Z8ydM7n;ROsnmHO7yE$1ny12SHnYbF67{l~><`tJD<|U`X?9K$*4b^LaSFe?G zQEFmIeo;t%ehw@Z1Z3owP^8Cc2K>JIQ8lS z9itCQBuI${CIn20ASOHu06FkXl$r<3IYq!M!ubE+-#@>9{rvI$+t)9jKYjf0{@vR* zuV1}<@%-7-CyyUJd~pBX-8;8$-Mn%A+SMzUFI~KF{@mF!r%#aDv3%LmC5sm=Trhv$+&Qyn&73iP+SDnNCrzBt z-`CsI-PPIA-qzaE+|<}mUsqdGT~%38URGLCTvS+)pO>4Hot2r9o|c-DoRpXl9~T=F z9Tgc79u^uB926Mf@8|2|?d9p=?&j*^?BwWRZ)a;`ZDna;Zf0s?Y-DJlucxb{t);1< zuBNJ@tfZ(QFDEM_EhQ--E+#4>EF>tv&&SKd&Be*V&c@2Z%*4pRp!kyoNQyG(fJ!4! z*~Y+{oDga_QQ6b)NQce_pMpIMI-l)$SxnDwSu^#-lZgu?G&|#5p3E@mJAUkl;v^r1 z0Ob^=m2sP=TiCQn=V-Tp2rK+yU##PI%)1kxI%F@}# K$SkVJU=09zNb6Vt literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/btn/btn_search.png b/src/main/webapp/images/egovframework/com/cmm/btn/btn_search.png new file mode 100644 index 0000000000000000000000000000000000000000..7d1c8b80a84032aa45a42ba46c40921fe8f426f4 GIT binary patch literal 1277 zcmbVMTWl0n7@oFLnqD?5VxfZJFbfSBX6Le(Va6`)UfE69cC&2Knn3KCnX}z#JD1K( zyW2LYEj1M%j12^XN(|xAC=wG1>H`uRr6x@@5+T?aBSan~Di0bHm3nsDtv)n7ILXX8 zXXgLD|NC$Aa;E!mOXE|G1VOZ9zS;_sju+T=EVD)qek8-LJJXL#gGt4 zX>b5#5md%U7EuR5)QzdRKBq5zM3fE93(Gd%l4fEwL3DJMOehZ_2S{i@)kEYjA73Sb zs)WeiK$=OLQB+Wq6Bar;(VdeghGan@I}d@5l86a3mnF;cM7rbnM=l%Qvz%guqW_+}dp*WxDXGA{-)-Dozvy{A; zjV0E6;Zuk#IF2dObg@|U7JXjB8lYK05NL*@IgY{>ls&FHute#$r^*mRwrr`UqZ&FW zGeXH2bwVUox*CFJrqk=hy1kYtoHDuuO`7#Gw5FBgs#x1j7X2$@Lu)%XZX!C1Y-7}t zaXs>$Dj4VP(T>W7SdG|YskkU`IA+MB8q%FqEJWfjUPV>JyezYblR1i$ctj}yKSv!z zL54y;AC!U$FY}yI<=F@y_X%OY5D&9F8)eyeFcJ}XAs7oMB0+{1n1fYpO1B-T%c$yG z#lF|D!XvR_)I!iPtejyCSGyonFdV}!7$%5DD^&;kdR1L9iuV3;nO38YAxj-YO2RTU zP|35XZlEC$`MUirWIqp>Ku+${fTp6V;y zk>&0BDB#2TFd-dJkcCGjUU)J>5H(MyV&Porw)EG^N@raI)B4?Oo3hus?zAGL4K zd!D$_)Bom+AHL2mH*Bd}49`6Ke!}ef>H z@vS}Ie>wT*Z}eRI{Pv`)ag6--O6%4e=fTaNrWP*!{=>Gp-sc~lU{AJenN57&38oGY z*8Z{igS*?@n~4Ww3G(#vBzSAn!f59lSWOdw2ci+7Y*VN9{;c b*K`eWX|MUlfywK~%0Hx3ygPO=(tqL~5|5{q literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/btn/bu2_left.gif b/src/main/webapp/images/egovframework/com/cmm/btn/bu2_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..21fa7194016fa057c476bb524846243c76009a97 GIT binary patch literal 563 zcmdVX*Ght60D$4ooDDMnY&;Dz^8baHrfMga`)jslfRrBFPF=yR4Nz@mP#d$$K!A~ za=Bb0kqC#w&1N%`$q0o)xm+HNMvX?JNF=h^Z1H&9=ktX^p;#!)oQof-+#dW#A*|80H9#) zH~;qupL}eJY zj%>mHrT(7R8HmSI@jNQJGdM)2?=GNo>yQf%rsg4Mtov>3hBCYsr95@@B~#0AoH$D) njsx!D@iDnVgGdvZINE%E)x@#4ixmoB}3|Niys*I&PWJ%9fEjT<+9{P=P5_;JphIS(H` z{PykJnKNe`92{P~dZnwYd;IuuQ&UrWd;59w=B1^joj!f~<;$0k9zAk$a{Bl0pRuvA zi;K&fH*fy`|C^JO^Y7oEq@<)nhYtDr`rf{M`|8!Jj~_oicI?=L2M^x8dw1^KxzC?J zfB5j>*RNmSzkfe<>eSDlKmY&#&oGpM;!hSv1_lQP9grtLapJ%}sX>y5M_JFIoy)wd zQ%uO7-QM2T-cV4?lGSpS1uv7ewZwcABeSJuHkwKfi~=TWO*n*@<(PHUm|6L3S)_N{ zvhm6Yvl+80$~)-lb8@m6s5sbNvg1&-7G)G+U|?iW5H;o(e<*HeWcotNRNYdL$>P0* n1)Gu8H;He;eC#%VCK?+leSC4SnTbn*JFFyP!6ShQ4h+@+)v&WE literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/bul/bul_i.jpg b/src/main/webapp/images/egovframework/com/cmm/bul/bul_i.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0da3d2abc37118acd80d60432bc742d9d9587687 GIT binary patch literal 3557 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 XEUU3P`ECVl&RzlKMaqLCnZy48glkj( literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/bul/bullet_arrow.png b/src/main/webapp/images/egovframework/com/cmm/bul/bullet_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..d7308c3d550c09c79aded6941aec523dac2d1b44 GIT binary patch literal 953 zcmaJ=O^ee&7|ycYMHcrU9z;)L7Q_XcN&0C*<8GR1-GC{jTiITe&BwG2Z89;L+O#L} z=E;lrFZ2iK!GazX`~?c$JbM>JC*8K|!5Wy%2ha1oAM?z!X5;Se&b1wm<93ZB)M9gn zjjapY>~Fs^zq08nt##-z>C&+kVNP?2je+4?J>0^UJ9+d8S2%9-hS%=Uj(JaUh%Z!krV&1#Hrmc~;K(k2a0gTp zg$ekWS|IU09TyiyRALJllGo<)n?uF^vFMJ%>c`97tg0^xW(7RGsjL_H|UvJAx>%;mBS zk&Pz-wUTTQ?=2M&j-AL0sYe2kDq1!fQI%(zo|WK-E7>4kw23tgCRPX~K}<_p0!{P( zP~TsnW7@*!`TkQlZcjoCTR0}8$YB@P-AhA-iXLH$lBi9{aM{IXpHLF_NeFa(-ZgOZ z#0y+9j`!yr(^QNgrdHr!1F1Yy5j@XTbR;1S)%4qPy(USuk}Qf6LRzt2mo%-aYfCO7 z&dA3BU2@%XE?Ub??cj$jGQyGf7`yd|_+VbP;;qj`TdTL=y6bbPuH{0O3`{TgughK@ zF$bl~m37%>Wquqm$4AWC!|jLP*|XR;kk(GV*gv0h7s2Nbv)Sw;xA9xcTz;{6#jU>F gGQ{igVdn732KVOvrC;`g_utaTWYikyb@lY=A1%8kIRF3v literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/chart/chart1.JPG b/src/main/webapp/images/egovframework/com/cmm/chart/chart1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..d0a3c5e5828a688162440469d6b29e660cf69656 GIT binary patch literal 633 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3Hq-)3-T;9z58XJh4H zXJ_Z+|EI`$@KzRlhK~^C}Lq|5@z(jVX zLJ_0Ji3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$(Q_IBE%-q7#%Gt%$&E3P(D>x)H zEIcAIDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN?Q>RUzF>}_U#Y>hhTfSoDs!f}> zY~8kf$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq(`V0LynOZX)8{W=zkUDl^B2fp zj10^WZ^3Hq-)3-T;9z58XJh4H zXJ_Z+|EI`$@KzRlhK~^C}Lq|5@z(jVX zLJ_0Ji3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$(Q_IBE%-q7#%Gt%$&E3P(D>x)H zEIcAIDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN?Q>RUzF>}_U#Y>hhTfSoDs!f}> zY~8kf$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq(`V0LynOZX)8{W=zkUDl^B2fp zj10^WZ^3^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3Hq-)3-T;9z58XJh4H zXJ_Z+|EI`$@KzRlhK~^C}Lq|5@z(jVX zLJ_0Ji3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$(Q_IBE%-q7#%Gt%$&E3P(D>x)H zEIcAIDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN?Q>RUzF>}_U#Y>hhTfSoDs!f}> zY~8kf$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq(`V0LynOZX)8{W=zkUDl^B2fp zj10^WZ^3Hq-)3-T;9z58XJh4H zXJ_Z+|EI`$@KzRlhK~^C}Lq|5@z(jVX zLJ_0Ji3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$(Q_IBE%-q7#%Gt%$&E3P(D>x)H zEIcAIDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN?Q>RUzF>}_U#Y>hhTfSoDs!f}> zY~8kf$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq(`V0LynOZX)8{W=zkUDl^B2fp zj10^WZ^3v;J^gq6?;Ze6R#HY1009XAnEiVIf3E=O;%=t4UH}LHG~hozE;BP+w9Uj07;R6MM z4uC|5fI^4(I}8~3w?1e{Cks<^a;0ku#beVo;e0JYt_rO)YRx{NbVQ?;n zacv$PPXl45V{603FzV#bmcDcc6Wf(GTe$<{!j?3!$ zw(CzZAJMSFk%7X{PC2ZhF>A!kA7_pe;6({ihWP@>cKpvQ38LV3>lcNGzezjr!?pOU ztZj^)d6GK+!O-U6@74V&`2Caf!v7`z*~uT+ z6ZUT*;ZA=6*CKN5L$LQP{$r>%`43X(;lJ7coZS9;{(fJt=HK!cP#yitE&liYngZZRg|z;(U_j1P?sUlDiPNrnP4@g9Mpi~wQ34?&=M@(Obih6 ze;;^iTPo((<|{5QGK|mTDN0(oNgPB+RKU|P;HLM2(9ifS z(I&I(bENg86`xkQW=a$h5GW5VPdbm8?BdD_J#v1%R>pqbzH~ha*1uM1yhlT9@-oQ( z8Ud-OFy%>~9K?TPei*~(rg130I;$BZX6y^x`4hYn*CkURqBX(y)8gDP8*JKu zF8gp&{bZXseZ0rkC@C>a2%(ICU|76J@E4%#rcpaG(v!CE2DEikDC5a_@SCxZJ>rG@ zsKA00Aulr|d8-)k-SZQK3!`BJyVaEeiwvt-Tfu-N@5gr7ArZ0&-|;9gDS-L=uoy`XPL;IjSZ-)Q4M{T9{lXPlLdm)_*{5 zXOhMHTfW)_ILQT~W6pSD6?SX-Ox*RFhw*CF@0M2xYX=)Ra&c ze@0k({v-*>nIYd;qTE|YSHxHz!3rHSy#tz}@I~nO1_1HfVi2Nl8?J71CAsv9V&r82 zXvq6*uCk+jYXVb#Y7Q2)D{XVP<^~>C;;aKe3!iayD60m4+hLcD5wEmW%Y8*4?PXiE z`0e`Jt(){n*N$L6hU+WGpXI*P2PuDrts-us0RAPLz&O|~Q{bqBGwRB_jgVq~+bnF7 zld_EBEQ2cR&a`5Bj=J+yJmOQaZ5G#w?N=gdHH2<-gKl?bF6Lcn!pe6^miROLCHE~8 zFm;q9wF7j5AYyCwZ0E||&Kk@x7Oq+=65VhKTqRLb5zGx#37ovRF!zQ@%ET4a(vPg@ zA7J>e?POPQEj~cbrmY|lh+;+doX`2F-)w~reYYTyBhFmRepsxd2%x-Lyl-YqC?KQ7 zCe^v|%UW9F>Kg2Expv0FE~qQWo;KV@?-$fHAXTNr5O7oslo=;Y#vWMFrVN`(#a zA%e9To1X;|c?RDUB2)4}S%iZ9h8jo-9Pm@SwqAZs4$nc-j_k&YZaVOn)c$Is2pk*S zeY6HO)yFo9_|0@UkVX*zeBA#6O0S8mviXf89f(fvD5O&X6FDvIT#A%%q zj4~E7!VB62suwiWCGo-a_RcpFiyE@ZG|q%C-VE!)tkE3-{u#UHfHSBDI|84V*NdT0 zLxyIfUvN|ERSONiP)GQxvB7&Jq>CwbB!D;Al;VHTI7cZ_;T>v%wJaBEfN!v@%Kx;B zoBs!W+b^YE7lL>|p_3f=-%U3E!%meQv-*!qHT>EC0Sfon5*5Dx^I)oT{XaaJ{vV`T z0=Rx5k^lDhJ?DF#7TI4w8c?&qTv3^HZzd8f_*093<-9lh`gZN?%K|La)0C|PoXAbIO7X5x6R$BuU^Nr*BY zTSIkQI2(sdze#-fdcbcKZ)`P(DIU&(2ZLld`QwfvI#Xm!%1`_Zp4H0UWzVi1AM3db zR#=3gaz;c2)-do#V3d=NhFjqci*3)l|BRAkGn?U179@$4@N+J*JCi%>f8p4iL+CM+ zFjmyR|H-ghbM53LjlMI~ z);%E9QTX^m^RWptX|}490LWP2AX5GE8d+l^u$`l9(S)lK_5?>*rCR>|rA`3A`FmWS z2~X&Zg!jNgMPnyj#pktnxnV{nfkXY65(oM=d#^amk_z2`utxUq2zM;D{4f+mvT`@P zjhfAlhe4c^OREAU8%Gt#FN5`yd<3|tsE8ddgX9WQE}!ihE#>{-Q8Kp0zW}ci5C#43 zVSzQp5xQf7jK)UW@x02YYmOQNNSQC?i2@wd{3C8O&WYDrYUYR|NQBE-dtx30D>`Bb zA)`cAjy@}&e*qmbT@HK(ZpSSc0Eb$7Co2FD0@hlG&$f)KE@?|4Y@Tq+l>b;taE|YY zX<05uuBBMgCUb567OBH>+>Y$9je*G6V|jbOFn54+PvN@ zGdiHL);MvXqizV@uxbpOoqBQn_bnkF8XUnpQ%_qi|I-7nyH`QSg~Fy~<9@kXVPt3H z%)pFG18EMDGBRsDZf*4gNFtU#BO9O~vA%l1*6$S7|!(=b?7Whn`|Hg(dj$VhkFa#2D;iyou; z{VN!N?G~Yy^S*C4rmEe-wsm3(<7Q+yMmJ*OG35LbZ{P!aGMf(mt(B;wP~c15iB}L1 zyF?*Gff;Cm6I1O6o;i*!4*u;h#+#4GQTX^lJYVZ}lqQ|65;UkV>GERvySZ_`ex+xVq~WIt>iNgenS`UX{1EcD5`m9R~DpLMrlQ zAp*rL&a54D*o}HZ*I;HDfiB0kZafKN0sGcCm_-0g*?Yc^5El=h>Nfbj;A1&ZCD7_@ZUXfi6)FDpLQ%Z|R9 zbB@zecrL+V;W5g9IZPP}LMm^7%)it5zWb>?#X}oeGpPf9XM=ziG@`GPh|_`=fP;ZW z$Dn6vZx`WC>ZBnqWkmc_+HLn@%c1+y!oKT(aBw-c?vEu%@b3GDqWj$58v3?5@JBZU zpc@qwkRodYKt`Ze<^| z()W|7pxUqrdPw}(Q^l|(=9FtVcu1e?wv%1QWx*}iW!HIe*3ik++@@6g>LJ&0SAA1M z-Hn9n2CS}0pl*|{`vmnWHA_5k4yM)C&2~kSXmfDbFfA(RN{|oOiU++kbv(GnC)N+c zqiIbO2LF2_2akkJSsjXQT9Ir5t(2RR57KljTM z#G9?IUO4Z%S!yG82MXy4odkzF;KjGK=5%#SJB8PGAb{d^PN(T36awcj!2K9@r>nSa zg5r`^Nkg&lDcxz6P^KSKryl@Asv0TRe!a@3S$|bGqo=h5o1V%#D(PbxSGZm6e!ARA z8s5ekkZMa^>#aW7D@;)uwSM}+o!8=g{501XpvtY7HN(_%2is-ATevS8qB8A$iL8aD zsK0KwhLb|8fl6^v{?f2&!%_P0^re$bDV9|!rCm(1mgOil{qT3_QjPsN=6}5=t4#JD z;luS3|7tBO_!qFXTT1)q@b0oNrRMyf<^QDC&oa#6Ht9|N1uzCwp_^yZ1tqzPtCL4@ zYAAB-k0dD!Ab`z)#V#qwP%n{DMrdHp*SQ7jp87I9!zS&eM|efRUw}_OIY@A@hrO2U z>jgnLH~QT&>hCi0)j}BZ06zqh12uTZ>&qL6SKF28cphf#5#AX61TCE;C@gs+2;j{C zZFq}2iIqNE0_;MEc=7aQDq}TK-hW)VCPa7ir-y5jcv) z-Cq-;kjx2Ya8MH1(N&~_-p-B4Ep~^`R5!!~Jx@H+==quNn1iVs&v_49Htq9F{kF0w zUF&gqMAw4m`_Y5XqZ-Wmfy|p7V^wNkBqKj4Rd*2t{jKj>Uc)A2rmK+OqQADo&>IN%12s$K-yym}(3qc+W(JC3On;UBS4xJM4nTAvwF(J6=$7j{Z`m*e}9Ml4iQ^x?={FV zNnvZ;3J}mqC5WV{4JFlU{uR(OOlVQJSjKBVooQ#QBQT6-CBebr zZFFOI;OO7Za=lnaJp#ci@=*C+I8Oy>6HHWpz`FK>y_=18IL{HA%A3U)z+rD#`MQP8oEhYH z#W&6gwGC^ZR;EVD*hWaO8+q1zr`E`)qCV|S#tFNI>=MSv*?g&|f7rS3h!?zad9sGU zk3eA91Yp46a7oAn>9>y=ovSr5TDccKyZt&{jhzSTk!(CqqCbIm#qQF{Vzjji}#l}zZNGvlj+U7#j(2y_NmjWlRCd}jO0<?m|pZ#A>vPSdE#pKZS)7d*klD%#9A?Js%&4JEP z*mR<-OcbETrbhP9qiaq^T+De!jo}d&x0A==u7{@R$CmBt_6YG;(?gV@h5&fpa;U9T z8-BCR-zPc>7MHvw1My~|>n}la()z#R?LAgIFaL;7W_}><5fg4ZpNI`|XWFE&C1$E{ zVcQDmBmYV3=5+2_PQFCb*h&Qvu8cqM*&NFSAZm}2kMR8RgU3vQg$(LK9 zGm5Lvr(-6$pIo&6J9stTOGIOurru=nf|vO0`r7Pm6$9D$lklEuY+DqaC;1|o=lF;i zj&<4@HaVLX$kXh7sIFJ7D1l&0t8060i;g<=MZi)q-4v&pH{!LLTpd%Ki1K$e+Bo5X z5$%3rlg^uSOLPZ~@_b;p3L={Z;R;3@Y3~_=n*xrW_?lO!{6{n?+T)L6tMgJh>F#m{Q9z zHI2^bxkT#-*lD}_3BO+#VcbT*XPoo1nXZm z7I1(C6c4;sah=Pq^#2bR`eUa z_~I+^+riS3EqCccYE5xmSSsZY#CmtmY7%1omAZSmDEG_{JEGCEw(oNoEIBsA%Fqfc zW2BQ!VS$m2{L#{w>SrQk)CYWmQ^Uz14N6%vf}*CqLQdWuZGO;CTT>TZiU>SnXDd~y zayB@|Np<46A2WRevkAOAWD{79w7IkSpsgUf*UsaSTK0rfx8GK!%j#F0p$V zM>u%IHj2ih3H1sz zciqQLtczqWxzf?qmF9~Pj7GV*>T#&s3DyLMa~X&vTI!`0UV<7E>a1V2?mEmhBm1c} z_~T>)04Q#Zz7Y8(^dZjGN21#OW^~?DVbYdL%A!pvVhRonh^fF z^_MPyp|M!g#=wy-Cp8c^J2}69T_No6>JDm+KyBfHeo1kQ%h58 za~DPrvW4C*xu?Cw5Hq0A-B4G-?ai&@SNo#0^)^X(=nQmhC0@!g8jWX)}=_$*;;~4zs{! z^juVtDuy_bgP2&;wXs3S3f`2bYERscicqhZT3EOFFxY=kpsEE+GDNKFN5PB4`LbUV z_0WI2OPP3T$GzP!G=h=wtO-!$O z$g!A6>qJT>KEHr6`SR}NT{2101VwwubACwHQv=JiNjoCagxqSTt>8op6uaIX&r@e^ zwwG`ouhUhB1cHQ5cqs!XI5INw;B6B~eUJ>2I$7$`FJ>kWfTdl5HKs)<@fZR1X+z=P zHmAZw`|RGx_Q&WC+f=!J2$-o^@K7RKBAVs|4U)&EWs$>R65MfFwI+gD>UzDZ$MM({2FHS2ITUqTDUo^zI|Y_j?Lu0&M5^) zsze$X^StC_J2qq+eAVK+Su1;G$kt5uoN4o-U>g1skzWwRGBOcVaga*2Sx(8(Pgw|UAM!fe(?fDRWG|}smy7b#(mXk2yqFyy1vgq)m zbc*HxM+@Q1f^MKR$)bpWHLQA--pw)!y=mYTUP$;)H>GI&>F``zxJ`>)BA1-W2xU5K z>v+c*kTOZ1ZMOGfhd=Vwww=vV0z@1DSkzykKoK_rSkIcaI@~VxyU8WHh z4d^>h9pcGZhS=Pt@*Sm~5-Y3~*x(@7i>LXBS+cb*ZVq(SqU(Ijbz!#CSdUkfnrT_g z;`FA~M$O9T9V{P6+op7I_VaQCIYA*S7;t9vdrE8j`L6r6 zFq+YgS{k36wf)LEyci$_dKw(@`^NECd=LZik-mATr$6QR!X5JCs&a0Sd(=wRjK& zzZP=U%+8iWoTP|}+)dtJ0QyP=%>IOoP{?&{?ysn(Rf0F{2OouTV6iDXk^3`&^vK;( zeHPBtAI5TnCZZpjE4>9ZT3vyx-D{qp~ULE1Zh%tQpcuLUa22-k5W@}@E}8!6l+)Gp-wHGbiVHw7p%kAN_8@3bz=cnk7@CS7z$5Ry=#^PV>DQm*+qB;VqK=e@EDx|-67h$Beh{JS z+%y5;C-6hXqLg#vJKQn^4KYNcB`Vu=3>cv%=j#U&P?&{EhDoAsI*$)=eYre{Vq znoK$^UD%PPSqJn)YbrS}E}%2eMrx?U=y22GDr`G!cs*))_!R%Fj^nTrz{mOvNGfkx z*-Fiy+|;#?{cMuKo){T{dz0pe(fdxB%$`~VK=;U-J_gDulYPtWY|0Y*qB zI-_U}v)*)=CSzKkf>MX}UJ9{+y_}ASV;trE6(48w(x=pHh0ECZK{FW7IQz4ny&(PGr=^UxPS4OO&{#pfq}r6atFk6jNIo9LcQFAiAA?h0!`aFZ0#J0{b~5P|Gm^-a zr>Wa%uYXX7IpO6`wO!+!(qdw(+4bYwxO?T~j6tk$dBtE$Pyz@1H<_+@O^E}!M2X-9 zNN%u?n7a-Ep?u`xIPNyt4ypb;(E-GWXi;F0vFUfqvq?W51i>GJ?lH*6z^})ZQa@o8O z=TX2k`EdkFU)_3hIX3M1$ZhD@4HO6=c+oL;ZY4zUnBA`3K^1N%mvv&FVVgA5T78-g zPPj{ILo->Hw99WOEx7x2 ziQKN|@$DueYFJ0Ke1YRw$B)9E`IUyVCI_t_Vi~&tB2H@fBGNBKv8!cE_f!ZHX@WvV z3PX{Q#opoN%OFXdagu^^{ZZy13n(eBXy=$8-!3nq2$tQFUg8IvIGQ>it}-YpfOsgy z`-0wY?ME2Po0#qzGBEM&LYJuABu#XD!X-On*`HIb(h_$G^X+ngCujp(V~i)A_`Z(| zHC9=bo-3lF+4G^;#&y8TSxANFE<2%}FJAjV%mWhvmio^7HS1A9QlXa_ z&y~`QZe_g9rACI`0=T{{pnHYJ9{Ml07m-M(acp;LK;Vl-c8D+2U4=B@STFaI_%onoYnLl~DiE-4Jm3@dz0a@3i6W_| z=t1NAj6iVpLp#Qu9^CTRq|}7!CDu01j$^k=JKfP~oRQ>P?l-lhB8jXia#bPe$dc<# z2k3~RD0A%ev{gN|;x^x}9UU$jayj^&6k;w@%rdczH($9WC!8lT?Hvds@E4C}^bOLy z?iqBO3oNK3rM%jXg7wGDW)qk7xnV}VS1sBnSyQrqN?FE)>|zaT>(UXgG<}avi!JhQ z>|Y?~wkA}cq}WszDx->3+_gQ9m`E7cg#>7C%Uq9TRzw_$_`B7NCq@j#IiT`sEy5Cp z`U!cK6qAtrx;co^9Y=>_|J52M<+Mr7y2_=QkT@aDxOe(VmWJbA5=Hv$slOn@P8AC( zamW0zT_%SOb?Kvzq^oNt>nn|2XpbD{kJsqi3M_%hqc*Qc+5@oxlgr;4C?y%1;Dh{` z&YVe1l{*(ldyQ$^uiniov^ZO^Xr4U?b<>;D^yg7*Hq=SfI?X}F=rvVZA`dgH;Rgt( zL%mp`BXo0Gr(ejoML?q5@BCv^62)2Cn$>RA@=6bUmr?S)y=idu$KaIYO)+9lb1{*D z7B}*0tGSl+Obx>)L6BIFkM4FD6#Cqw21<_{+43HRvroZZ1?#fVfQ;9-af7PDc($P^ z%xRefmonZXYPAvcbwK3C5u4wBjD<*x7HbX>eWs@Sg@f)4m0>*t8R?NU3R=9y@j*Zo z9ii-3ks$howEhm8WeO%3Ph?g#g|ZzfXZ^)5y!53Oxi;}-Afc-Mp2#0N#x zW>e~x4!-Mc=aI#+=sZzHpalAPwv2u9;#!Ri}5S~rf z5yxbR8<1BlMAmDq1W=iBZEBzLYeGdRk{8Q|9?8+EmANEKvg9cKm_t34w+z$a^vSPd zs`0>TT3nB%Uuh!eEu;0Fu&UsE*tEA4q(S`TJ)%q$mlv0Iqcs#g4y@j?8-uO%?kqWC zkr)!1<{uGySL8MkuP?WOouS-Tsoom;4B~;e~w9cJTLQ_RU$k1ZMa_p zX0zYYDwMgLmXRhb)4SFovXqZ=!sX^`qcsJs(1+E*NUevwW_eOgXZt$h*nxxXG2A z9kK2xH{{K5e#LxsQ*SA=JoLzRQyuJQh;xf{_?1dVz75q;au4eOaoXcKLN>hjp!h?Af(MU~r zFn{dsO7g@WAKwvDEE;=qGzmRdLixsM4^+Q0Ze4BQrz=pa37wnG z1l(TXoEQs8;SArFyhmv>>r6+GXXmhJdd;Yske&}EmZyHaaJ~j4F@qs63Ec7qw0<{Z z6}TiI!+O>U4)8ivMwYWRbBv(W-oPPtBsEFj*%Ql18mG;iZ0iyqNwFWtO7;v)I-So= z2s6*`G`k-~P!5$q2WTEUgY2-ERn&r3^2CidMf5qQ)1&g{j;txrcI8Liu9_H zEE!?qi(QD+u+15DR65uu8E=_ymn*z~C^yW`!c>3p|0)R;=}KuJ)r}A`$+X!iF{Lgt zwx!|98c-;*D2ssrAEEB@QC>Tn-8Yew#BuLa+(}q;{J2f1)TJ<{&7zeKvN|Q9 zcIeQ8hw7owD_H}h@YjN`Yl6Fzf|Otg+a@01__CNu{{aF6=0GRB*15LqlFH`4t{j(N zsoFl<4FWL8VobE4E+AMc{{n{h_yBM>D1Piu_l4VJHl3*4AJz;fa~1KqxoU35rXimG zXJez)+gXTsHk%G9+Q2t%(x@5?H1)xxP_;$2Xgk5&GAP)7ShVxHNu=%yM>+hJVCk{; z=DRvR?JEcO`_uEc&?%17_@h+OM}HiaGH1I8Geq66Y_mK4VZBSo+%=~8cvWGD?p5|H zX`nhJf~=8(YE?!?0Y7Z_c5{VeEy3~NONN|l7q5UyT2g7@&!QeR{9|UuT#H-2kx_)H zAO#@mzbkg5VcGuZ(!HF8!5Ydr>|g%VaGbn52F95=)#>|WWK|Cv7o~1#V{6l)*bwVG zOsfh3<#f7rI(FY;g=4jn6*3KSAzw=1QzFswpjHgfxTY%Wy4;;?jb78a;2Qd-t}rucDAwqWw!Q2D`)r$!@vjd-a<}8w^BsRw1e}Vttdph1Kr*a z2B)I1I)OuCj+#T+%hTG@6TS8?kD9j7-I!4|X7=tra{n@nkB$|fW9t_OO<12uy?3+q z!b5`D?Vi!U0HLSOi2%^6@}96T8Zm7YyY7p9lR~p}*f?i(r1fixS(SP@%v7irv81Q{ z{q3aO?>fzK9;YW9(Z)WG+`6Hd8%=svCdU=FDqep<2;y_u$)qNv8gm07i7chz;u%b|?Y}cXr)-4sA3?3$C6vmf@q(|Q6WTpG?{%JSe(G~o7 z{A$)lo^*N*c0Z9rAEsjl{7lsZOPcD<8yur192e3w(m9+bQ<^XSXreWR5EazM)U}`1 zKA_jm#cs6>U0*VeoPPM&TX-Lv6ZCRa5&jhNfoFyUs#j;N>C(Br{c=^wQ`*Mu6 z`xwT$>ox%^v39fCyhAe|I}{fMC4=u090Ov3t+ymTpnayT zoLA%qVg7)jWvtbe63w(2#x^4}U!?;@p&q!hJ`3mi#G9|+-;wJNEB<50->57ul*n+6 zujHoih$WA3FRlh`RxNPjIz8kNafp0=TAAc8ZbP`CX3sVV#{`1JPMZ_{lRg*M;9Cr27^W7EZ9XBx~(5K1ZduS4a^< zbmUm5&2=ufx%aB!4xV|Br|l<0^i#f%oamXU2rr<(NT&A8^Pt9ru`s$yNPKHw8rggz z&)THxxtw>pfA>MK5Bp=}dw4y`_t-9NGm`?cWjE-cbJB@oCkeK)z_Tjtsg zq?`t+Xkn;`8DZ!>&sy0wBx>1@3f-isOv+TT@g#OaKq=#2zybHz9G!DXnB7!|pwtG? zOEY@Q>>_Hnf+Lzn+B+q3=)6F0t?Ld&kl1_R$-d7zQqB`1-t|p+8owH$an9y@yMXJ;b z1*ZgN*8Fs$UF^1sb3GZq!S@=#N_!3x(FlpIs9YnZs}4Kw48!rNLP|$l)X;)~k7An& z)&5g#i;DUXK%4Oekclm?0ra}BL?noJ^7SuL2kpQQ&a3EqmkOIjT@rd=|LD>--;p%; zxIL?cZ+zQyo&NyzzmX5U~}iE+~)RcS2FK1RKhv-pmg}^YHzD+ z{GHKS6<*bi4!>bMwC<}{+eNm*;?Ap8W0+snBAsw-Qo7)v`Xd4m#j_uU5>k>kC>3gd zl_x*e3CqrFEQf6j<1h=RY{SM;%*C~Pt5jd7P9;CMx!c96dqQR-OF+PSghRM|yCTB< z4=K!=qxqs!yG?If-t$t|C+()0sqSjn=sg2^EF}ppOn)~TEZ|TdW==noo1Z^hj!Sq7 zuLKl1>yl&mf_tRZ0SRv#0S`u)KGts>{c^C%HpmTRGyU;(rO@*}#e%wKgC9?~p8F~( zwa?vw85Ui}WTP%=2}fJ&YDoI?8h;n~8f)MCM)qkV=cC4G4i-khjA-s2+6}=xrQ#12SdF z&LH3OMm_4sCpvawR0IBCl&K?cmYb&6rH@0EuCqs%od19}(k5B)cMRu!AW;mn){B|xoF=~~JNZr}jvVPFv!>o2 zYx45yrM`(ahp6^ER8(uW1U93BQ60grZ_T>!IAMLR_V#UhWpx%6*^`|`mX%n89pr&r`Lt-2(6jadH#Mt1gB z+s@(~M1L3JLH9Kp#?~K#w*^Waj<}lAJXn+T2?xqVnvbr%efSQ3@7r@ zUjVKE;k0i=I}UiTtzZtX{Njn`Dq9)i)9Ng7Qg4jRO0HRJwGQ(hw`9S7b#k zYf|xC$a6T0W{IxdAv=4DM5b{v^m3>y3@rM`n;ML3O-%jhP71vM5e*9TqyXh2=i3VO z)1aTYYjUTvd_9(AiRn#dcn-|kfr|e7qYeC>fF-t3+hF%90 zRcK#7V%AfwU0pI^Yeu!Vps`LLx(HEgLBucNmYtHt_N2$n;9Qgl9{?$$blRPl#y$PY z#;2<&ZX!*uob$O^|G-qQwtf8Z7OM!w0s@2}!a}zBX;-dUr_w*;wBm#q$W|IeR<7+M zy5(}k)eT5;het)z$7?w6528@umqj3sDWB5)XvP&6H_3aIet1oFiKOW{Rjsi#wK9d| zEPz;t)sQb_0U8$dO=xsYQ$x2LSo_9Y9EVq>nQC9c3~Fp3TWc2amo5}mx4cQ)Oesw? zWF?U=l-W3{_Mhw?IL(rb z{#unJeBUE`{I^5s+IzUM9hdZ)#kJ4_=sj z*nnadA6~5jvg+3fibi5j=1D(<&5?1ldX(tJ+nQ%JoBI=+5xNkyGDb=dh@u`|F|SBm zMW%u#Am%x$a*{JST}~Zh8Am3oOKbN;NtIouj}t2ONI(a~jS0gBmGnBZ3!h3VXZdR=OkkCrn=TR}r0Xg}1QcGIe?7LeuOd_^mCr;CHs#*XH6d^26 zem7$M(kEN~##M7$rQNQ!s^OIL*q2K7@=*byEV!JJ+xesrdW8@1N+}sW2a;5=9~0ym z{dIqas=WOACMTH#0I(^5c+dONn#TV2H%RNZqbjiNcw;hF58!h__=?q(J`WQ{uNs7X8d({I*GTo_a-)cIOSfc`k`|-~?^v<%!< zc~f-UR#o9A>6@x>fDQs!=;_hTlRc zI14PU>5{{ zW?b~wZYs7uXCFDg$2&L)5|B13`o0}7Q1E*pB|p5NQssrr(o?fZ7JYt1LNJEwII;d} z%2jR95PyM8&|q=kv!)HsH8>qLTip*!87K6K!yZDr%Nyi{JY^k+=i4qP(s62$;GtFf zoqRM#kKx6Q>8iN?uk6&5!XA#@HsgnZ6?>=-y{ukPI0Ys+BZ%YmNPby(j3t$n2GMuv z?jXE#Y}EaltW{m?U&YtY<*QC|GMEV&iJC!*V-0e+LaV(>+ZgH)J!ObFaXyR;t35GY zl;qXJ;5`0@n@}|^4m77bE~0jG>SA6dEDdoH%)u6nR&$p+;L@3VdgCM7%EAkiY-T&a zp3cVU*osHDbZ232Orw^jec;C8^mvJq9xg&EfrI1`>!kur)!1joxR;Ht z+k~lV$T3eSGWCPs`V`g&ICI|=d zqlKabYpp_x&_g2XFIN7iHCeO$aRqO=O}}}vBy(2cF94R5pP>1d#<;}^#07v<6oH} z{fS6qTX!7{_0Z*;obAtAmpAA6GxUIe@0P=Culf>OXypNXs2c2rEwKc8$J9RFRtyC| zC=U|JLkjIWbfS!vaeY)0{_3|46JcQ(NA}eEZoZ-wL)Of%$Aj_HYOwSy`+yCpOoA`~ zG5Ax3<#Qeq{tD8*x3JFUvix`1FM?FpRX-8ziTMKvj$1oWbi28C@lcO zuRw5TDB=l#GCVZTy{u;EP?p(t$I^M3fcyE~os){{xCITb3}h=j;JK_@%uhA45VtLb zU3Es+sVEAsC_~YK>MgFZ9U%;eDx5y}of+-S^oSX~5rw0(=r;#jL!L zfPxr+ERB#Wt9#9rw(8j2{L4uo=zwKe1iBL}7eyveEuIJZMKw#9IwfB?zPU>Jo!Xe+ zTn^9lJ?4eOxwU9a$rwdX7RLScT~B?=GL*dS+zXC6$!_7w#y*X-qRB+eenNkc;}rUjT9@=L@yaF`J9c^i6qJ7*23zjzo$u|C4NA#m0#pvU z#P8mT( zQkoP$sYRWBm;2;Bk7Koj^z@g=gd+ch0?em+W`(es1U1{CnlQMe`~|2eCb13E27Ews zaw97NnPUKjg_!S5R?k)S_ToCzb7?DNwC0&J-zqE;8hK;!rFqdK`d6-^J(Gh7u3uS& zq4@*&qdT6_z5euHrKb6AUE9^Vq|7DKxP>{kL51Z9di$3p10-50t3DcDAyH36<*}=e%aJ7oW zIH>l^k7o*dFCPa$dzSWQCg%~%Nig3^S7TH6=n3sHZMd55jql*6Xz?X1O$CpGo5^8f zuy2M#R16lHSO>KD|I@m?hcmsvaUB26R+iJ;($k6DFPTZB+OVTpjM6YfsR_B{HY{2_ zgt?w9mz2fHDz^!x8!>a6+8IurlRC4pSvTbzv$;J)Tk7aJPtVhH{yzVI|NcDRKi)4; z&`J2E#i!4bnV#|2SIeur$0E-H*vn$wH!G1ltO>fSY7b}OB zkG70Rccs!A@mV>I<&O}+roIzdvBcw*PZ8gK*6!h1w9Y+;rbd zEnLSG9QHxxG|Fg-4ii{0UmL9F0){Txa;-7>)GdT%BsNsB+W&n4c4YM$w&Sr^P%4XJ zt<~n9rs^0+uc&sjk{wQL-;`DWXal+h{lhL?a#t>8CD!Y`Qf@#?Fj$gg1htSTcbzRr z;FU>&r)(U$9-Um(lt;)4U-S0+*Ncf)(WVuPbbp$etDiTmZ<0vZP@eH-xE8y^=2niV z+EqO%8JHD=hCQWyf9tdK4)4g#SXGf(f$`4%Y!FH!L&`BFt394equ@0vVx;(d5ypYe zDv-1CRRHW21d--}_DWPPJ?LqbGns|3KyK^lmmA%%tIFi~cP1Fa;KBbIl&?)2A@=H% z*sWVM88LzQ(1R)TeTg$X-TiAaDT78c?g~Iv-BPqj089Pe7rw7ZOCN-GiP!Aon$rQj zXP5aD-%Gkh!R~42p%%$HM%SemW|rf;V5eU9Rfk&$V#oQd)XZ! zmj{JS}EtsM9eOJ>gA6fvq6}YGrJ;F^)S?0(~f2nOGWUox{|lIG#uhm zN1txAb;s_AnJjQLXVwMu{G?7j7f+Q$bnBvG#mi2tqc2!>nxq5o&IR%1rtrX(q-HcS>ob+L@72{n&xlTSc^sa(gzABXlU_0J|CG7M)H!a5@ z+R!E8^ofh5+6d|KR-W@FwcZ?VV}i@C>*x(CYU%t2aU#pGha>t}IrIX0D=$jBtxS3d z%lM2=4z&$IklS#BfezL9f&MLKhy9j94&w0i{3uWYEiJ-*G{RudsR!O8a{RO_5pVfn zJhzFm5v?011V4oHw%6VfQMC8&pKs960E;VcQuj~{gdTgXP_Uw7i);TQpJ$J=^1-9z z=38s~YvJ-rK*wrOui9uB5b(|*+b%cJ>n9y2h|kA3FU1%S2VXmD@$=mC9yFwdoptY8 zIhB7QxGI@oz%lhq{Mn|k(m9>m&(>6y^e_o5oR9cQYY~40mh4gkk5u?Xl%^pn!C}_& zh|HHY>^O(^VG*v%QEQ={*mv&yqtgq?^eKJ1Tj_-mPppu7+k1-;Zy&FC27nYrT!(%jfl~L31#h z#`r4}bH){)IpOZNXO&t{ylVBIJzH~<{;jGnK-Zeh9?)uKg#}yCjbBd literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/icon/action_add.gif b/src/main/webapp/images/egovframework/com/cmm/icon/action_add.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d9e239b55c518573ee80e39cccf4ea33640d01f GIT binary patch literal 141 zcmZ?wbhEHb6krfw*v!K)XGhA8PeoV1EkE?D`sBMAC;m5XdYilUW%}ZWaVwrCAN^am z_gmTj|Nj|aK=CIFBLf2ugAPalWCjC^)r6CttM^tgP0-X}y>8gBs6*C(XT{ds)1S7b nB;2py=Gc=UVau3XW^u--!KJB;Q9-~*yiuSu)IGw7g~1vC+mANV literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/icon/action_delete.gif b/src/main/webapp/images/egovframework/com/cmm/icon/action_delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ca8b235239f18e02e2518d8258cf21ba3bc5e31 GIT binary patch literal 145 zcmZ?wbhEHb6krfw*v!kYBPHcWW#yl`x_2{Xyhuy?TwMIWvGH+2!rR>3&kGm+-MsnZ zoH@TYZ215GKLZ#j{$ycfVBlrY0r5a)FtFHdIO(~1uSGnA#{IU7rVbWWT?z%OimH4R u*v~{Wy2jlwf26#Jv%$ebrNi;S!wnB~rr8`wFqjl%zP>;0^xH5c25SJl%shVp literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/icon/bu_icon_carlendar.gif b/src/main/webapp/images/egovframework/com/cmm/icon/bu_icon_carlendar.gif new file mode 100644 index 0000000000000000000000000000000000000000..74f0b99a3eee83adc2113fbdc024a16922925ee3 GIT binary patch literal 976 zcmXYwU&t6z7{;Hq&z~(TR*EaRVcSvC)9OPljVxp>bIghh$(xkjNTk$ZR+fBRn0gla zNU`%Z+SYgFW^P=}>%yOt3q|iH*u!}v}%>fQ_1cx}1 z!!&5pL5og$>X>6Q5CH{p%8G(0j1o~4C8IbhqB3ekRn&~?Xo$vW5lzuDnxi8+qepZ_ z&*+YU7>p4y6eD9ej4;CyRye~G!6Z&01PM8bs6d4(p(2%3u_{!l8mdxFRjWabYM~~z zRI@tNsUGT5PjzcRgBqbBjnuFVnR3XIQ=asv*-S)2iJWF+K^A6-EXtBuoE2G_HL@ye zW_31XW46eqY?;m3k)7EiyRv6?=RgkTh#bn1Ih;nC=}0S`X|Dxgx-pSVU9&i&P~bwB zaFI*8*cGmH4Oh9QtKHy6w{VkNy4fA>bPspAr@KAiL67i|M|!L^n?ajyPvmp%f1CfG z`?+2H$HF?`FI=~Fwe}})@o}8r@WQWHI(=|q)5foUTi&_!?4~E~ef0hH@7%h0>1&7j zo)354u;=a9pL=Hc`m>*GJbK0Mg$s7={q*pb?LTe#ef`qWs~&6be!k(hyLT^MzU{}h z^_P!dIlSxT9Z%o#^YWMPU36sYH`lKAy7K3X+uuBMq<{UvJ;ye$+;rcSZ=8Dg)PcXx z)z5YueBkU`hxR^s;Qr%}e}D49m-e0e_T;`}&wuyPQ{{)1Ghb}G>%!F&r%$}Pdgty- N_V2&uk#*~E^FKhq(31cF literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/icon/icon_next.png b/src/main/webapp/images/egovframework/com/cmm/icon/icon_next.png new file mode 100644 index 0000000000000000000000000000000000000000..47f7240ce20a56a3db59082eb2cdcb7c8a859214 GIT binary patch literal 1282 zcmeAS@N?(olHy`uVBq!ia0vp^{2c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{Lk z(HW-KB|o_|H#M&WrZ)wl*9@m#P(sKp0NU)5T9jFqn&MWJpQ`}&uvI2*w;1Cz52`l> zw_8kb>eUB2MjsTdNYM-v0;U}h6P{>+9C)%%%>$@kD9k#{%&V9XV>pc+W=py3lpvvoOS5ca`^U8Lz}ZxLfVrpCgJ47 z=RBwT_Es>aNHOtN9Avq2g6GK^kJ2f}RtvH?d~(oXOz~s>IJ3dxj-&Sliwhw_$ zTyEFLc^SP58{WUN7T7xD;O5UV#sc%>%U?aMPdadE@%jJESJyME>Zv7o{p2=LE&29u zxxRxYhdjecW%xLQ_*e8=JpB8a<{~YGA$8u s_{iVo7Le1xB-$a)V7k^Zj9VaqLH^2~^)d$6Zh}fBPgg&ebxsLQ0JS2x=l}o! literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/icon/icon_prev.png b/src/main/webapp/images/egovframework/com/cmm/icon/icon_prev.png new file mode 100644 index 0000000000000000000000000000000000000000..70322d7ad91e63a2c2630aaea9b787d4c3879944 GIT binary patch literal 1293 zcmeAS@N?(olHy`uVBq!ia0vp^{2c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L$o& z6x?nx!l_pu=oo!av?4__ObD2EKuma|1#;lYJ~a=R){B6N`prSxcMJ@S&7LlfAr-fh z{`~)M&usMJmDPLRB@Q?3#ntjwRFSH1 zfX*F9?+X?eLU>lQ?Vrc3QM2H+#2XV9=Eilr?3sN<7eti2lzA*No39>kGMT;7yGU@Y zAWMjVza_oZT`Cz{h@+-%->>b*%yf!SCq|5W_$Gcwcp-9{yY&?Uw+mv_*J^# z$Way_&HBb=E$8n2|H7)l`jAJpJDsGtpq*NPKASk$I4I0q2+jrl>EJY0gr&Pve z{kCi&moZ}u6S+QNQ&e^)@=dD&F{r?r<0C@G#get& zuq2zFxe2n7OaxqrO%SqU@50R$~GmTk3KOiN@?P-A&X zl41=(NDxFKYiRN(im>s#vTejKVtd zL2fw(Rvgbpt+0dEb-Cb$*z_z|&=i{R8OO0@QB_r5)Kp0nMV`-RGEz>HGRf3D&&^4B zKGoxD$ZERK!#%Ej#+@6;jT^!BNn{NM&OK<)2gn7Tgk@*2m&`!DF4rFHMHpo)udf5f zI(KDiqrA15p@e97{L;kg?AFfa=*FFc=R$5jb$S26$M$aW%i-~1^J!AwO@98cy)>kL sJvumftSL+C6Jz7o@S};@Zw7UKlv;Q=K9#@vyBWX0LVi(uHn+O<2PytPfB*mh literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/icon/no_required.gif b/src/main/webapp/images/egovframework/com/cmm/icon/no_required.gif new file mode 100644 index 0000000000000000000000000000000000000000..a93d4b20131031d889af58f0555e4b31ecfb8021 GIT binary patch literal 54 zcmZ?wbhEHb*Jf5k@@}G_s^d`zj^)U)yr4cuU&ul?)}S`uP$G{a`ED& zcJ=Dj z%a<=-ym;}#1)$mI&z(DW`t<3!bLY;PGbbk}CpkGeCML$)+uOy(#o5`}-rnBW*jQg* zUq?p==mrM50L7myj0_C13_2j&KykvrzO^AXFsP-qEhsoP*iqd@Kt#lolgrm%BOsX3 z-icqt&~O5$kG{WwLWrHiy!rD*CQs!KRa?Dgf!89xP9Oq-Q(}`GN@MM9gq=`gF#)3q5P8RznnKw*Jf5k@@}G_s^d`zj^)U)yr4cuU&ul?)}S`uP$G{a`ED& zcJ=Dj z%a<=-ym;}#1)$mI&z(DW`t<3!bLY;PGbbk}CpkGeCML$)+uOy(#o5`}-rnBW*jQg* zUq?p==mrM50L7myj0_C13_2j&KykvrzO^AXFsP-qEhsoP*iqd@Kt#lolgrm%BOsX3 z-icqt&~O5$kG{WwLWrHiy!rD*CQs!KRa?Dgf!89xP9Oq-Q(}`GN@MM9gq=`gF#)3q5P8RznnKw?Af!IFJC@u)~w&Ze?NZw z_{EDCM~)mhbLPyqZ{MCiefsIsrC!oK z=KTBjZ^@D+^XAQ4ym;~4xpNmTT)1e_qWSaZFIceP|Ns9CL;%H~EMQeSAQI#!2ewlO z4)}-$q`0gIbqtU?m$o`$_1B`4Ny`_$xn)&3Y4z3MZ&gPVo*YiT(6Bdw$NVpHJ|;p^5k($r+|=VMSeG}O@0)n;c9 zW^vLIVA9nyWHTz&<`wf(R-eGh8FW}jpGiwxJw#ha&);BD*#bd*qdYcEeGM&RBRzu^ z3Yr&+InL_`YwC$|Y1A<@>wPlRn`^*tETCp!c<j-R literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/icon/tit_icon.png b/src/main/webapp/images/egovframework/com/cmm/icon/tit_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..97a15d54bfaf384900adc6e449961b6ffe74819d GIT binary patch literal 1155 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8rmHtGR`N zv56^6uSMv>2~2MaLa!-Ky`Y4UTL84#CABECEH%ZgC_h&L>|v`++-@<#X&zK> z3U0R;qWpsE%%!92rxtZ^mK6yskoJ7 z;um+MfprH{A%}o8^F~GiW9E;M8ga}=c3(8zu;628Lj|9}?PS9{5?z-YekcemXZR>P zLq&L!leB_e=V5`81pd(M<~)HDs?v=S9gP(VELRsdv;&n93;X9+C9&^vqSY52A z^TRS>VUw~COiDc5iA`>%VF{Bq&4@T0vLhxVTT-xhYZ;g3uk^~m>9_{&G7RC{mlgx N3!biiF6*2UngBV~b=d#_ literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/left_bg.gif b/src/main/webapp/images/egovframework/com/cmm/left_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c950617c8767905f3b0cf9bb2408761b50be27a GIT binary patch literal 90 zcmZ?wbhEHb+{(bru!sQ!{{R1f?#4r>+VwXdJp1|c=a(;EfFg=NSr{1@*co&{DnM!( pnB_A}?))=2<+*yV#p|>44O%btrew~`_}S|HYF~klbv6@&H2^7)C<_1p literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/main/bottom_logo.png b/src/main/webapp/images/egovframework/com/cmm/main/bottom_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3db52245d0f71f54db3c569dc00ae77e265afde9 GIT binary patch literal 2367 zcmV-F3BdM=P)FMdI zsi~BdlUrL_{QxHQ_4VvZYN`h)<>lqh+2Q~eNv*xhn;l1si;DgI{QxFbo12;|SA6%m z#rUeZyYBPb+uOpz!TZ(S-~bKvovmzaYvKSJfdemHz0B9d&e;JrVgN#J(hxZ~V1pDmWC9012UUGz04V?tLnRVJ-QC>N z)6)9-`geDB*x1-(V`8A7pJ!)gdU|@Tt*y_`&ZMNI;^N}p-`|RbhX5W>#>U36v9Qa_ z%GTD_@$vEQ?(V(4y>fDKL}-axdzf@|b83a406b`#tiI_xScaOgi=egg_W1q)1OD;! zkfyoj5<7U6t^fD=_m!vq?(iZ_b@u)K>mx|~;^^Z5B;yDuIx}GJV}Jhu8cB7O8bNF5 z@AGqxsGqgQ=`u{;dY9VJ z+P03Ru1<6WH)B>-RsaA0CPHyn000MiNkl%IqSI0^S$FDzN_se?-&91bc9cE@1(MSJx z>g(2UEwXoVaB#90dEZN%i^v~2^5=C;=4xnnckc8U>U{Yi#}3Y9y`dG0yAu<;ySv4> z9KXBQd$O+TMBaO?%SEF&F){i4=FlL#hHm~WH@=C$TrPpnM_%OLKI#nvfo~3F`fYtZ zbg%L1@n!J&$b)=G(~E|&J8|=C0R1Uz>L)lEn)>F;%R%(Yjr>k-jDw3Ohx+@KR4%0` z>^+-d)Zc2qToR;PF64K59EqQ2UZzqH_HT_14-Y?jvHu{ILg@aNgYhfD>>$VJHJKCl zA1V7c9@-7ZV?Qc62K~GC#bq#hBzQTb$>WAG@%-h{{;;Rl@IXpo%pd>gDV?tbl6EA-`K9PE};=gO)T-t3LD!v ze5@pNZi7MEP|*XiLZIo4QO*aFF60BCnq;(?EWkNTrb`#dJVUOqODzS- zq8s^kL&LcE_R%@W^hPe5RkGiUrdd_3ClZpBh^kdUo}+Ds+%DB>ZHc7&!nNfPbjvg3 zGH^9HtI7{$IK;xsweVV+%(ZK^<+2O8617$DK;FT)Fti~TPlpB|G*TVGUYe55SfW%wb|zYBSR&zCr?uvCS=8GV7XXh5e^@unVE&4jhvpdmGFA`y{26R8QrXS z!d)UH8o)OX@&+NZFq>)GOs6+03|X~2*(c1U#XHXjm>c;WEaa##ju$!7C?c}#i+t!5 z-QiSL$sCJ~FuFv|R8ooB%A3d%W`C^06Ahb_?46G{f>XiMYJLSRD|k^IZ&9cQ0`nI_ z-jfm8kneZ!MmA4hpPt=6=$wY%g$(5E7~oyCIHTU~b3ykq+6&FueuLujLAJ zHyG_{Lr{c*W>Hg}zzEo?dXW!IY22Ur}y$#ii$fXI03npx>+dua{EpAH0AOw%UR*Ghs<$3%`L ztgH-?%Cv*rP42)jw8k}|aZ5LBjqBIZH2U}r_} z@;F#95y~N9Iy9e7TdX0GF`CByeXFw`ttLg}h=~l$@weR3kuw*uVd&p+=9>^(AeC`Wg#!U@=n>EK;HRAw+ zdDcP>Op98!kP9yJblJHHc*9k3oGt!`_-BZVSpQ-Va{Io%fEt_VYr|e)Lolwv8aNW_ ztMV0)BfGW0%=wO>4PONLyU#_2d`ej;`~R9P&+xH=u4g$-v=DQj;fJh#9yv^0KTZVX zL+yMw7j-PyFLK>}X~h!AR`)#PTU|hC$%@oavgA^dcW-;mB_S}{(R#rjnVw9YM?5aG z#qU`cCo`UWYL9W{y3Lo*c?^oXn*JBCDZ{m&a%u`q{j#JOBz+-Xo ztGta5KK;XD3YQVOpBud-Oi}KKwX(mTi&LkMq4`m6%=aEWmOEi0nop@4k56qrruY=& z*Gob4%9G>2olSXbou)U~FT$~_;bWhFqz)!^S+f^!EiTI++24Mj9&|5ny;Wx=Jv=$n zWS##{smEV$u`U1Trx)ixN9v(`|6P5*x3l$X^VQbQ{X49vJsiDpRa{KZ`43yvvESzH l(sUu@t0jNrE3n3O*T4HYlQ5CSH2VMm002ovPDHLkV1mP{rGEeb literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/main/logo_01.gif b/src/main/webapp/images/egovframework/com/cmm/main/logo_01.gif new file mode 100644 index 0000000000000000000000000000000000000000..06519d692a72a9e68416c561dd690ab5be882fb5 GIT binary patch literal 8279 zcmWlYc|6mPf>G-4~Ge>j8<|s$UR76yxNTr&y zgKDI5bj*F^7|Aime&65gkJn$XKVFZ=^YL_bcd@hz9S7`zc>qYbUVOCrkD*)EqI^X( zvfzKJWMF!Eb#*oC?py16IfF0ZUk%q)*it_TVr*LKf*==;Y$ z9m&tk{_u5RdST`I+wqQ(W%=^z+`A8DUuMQ-@-;NBk&)3>i!B{_&5Cim)|S@HL+0pUix)pp0TfBap~X8 zyga}0^NX)Db4#nTzYA^$ZjH{aFf1&qJGurZ7rlKCQ_Z)|EzZx+FICol{rN|}I56mQ zB5rDCWl1(2ay~^mwABA+wdUpP47@3e+$jj)5E>_ zQ}6uzYPhg=K)%W#d6oa1?j4h_F07PGWP`K+e0J};E*V=`TJ9WQNbZ^R@D2RCxZFLy zTGcbJqrS#5xNyBw#<7Hy)s=F8CPGwxmDJB=vtwF3|~`6Q?abr!`xe3B#e9X{6cKfqt1C_iXKswys)w= zX>T|6DrkTA{TMepD(#l3`-Lq*(X)RQ^Gi#YFGp8Ors=G^H$`QY-&S6C&xJ*VS2TAP z2=67a((Dt&UgydZ)c>#lcLG2v00nCK zJSCuV#{nI)u#P*<6=9m@)EYm^?Q&?rHELIthqyfBi4ITO-FqN!Gr@DNp{VyZn6>dZ zw2P5d2Zvi~42TE7-*WVW^xX{WTz+5GGDz5%15mj>_l=i6rbk8^D-$u_H55KQFm*eEzo^2HT>a~L1QP+kE7wE;Q zEA_Q==4FE^OMeGj5?;kXd>*A~G~Q@TwwiMd&mxQ09zw1!kuqT9Y>5NTD!T=YVFD0 zb`a~%?5Wy)^IV|+`Jd-lqzdPY(sTcEv~a{W&boBU6Qq%V0s$$VISX2=w!dR5Vn4#R zU)_G`$bSrVBXhN3PA2R>DK~1!-9P@ed&4`WK|?M8c4q9>Oe#Imn13uSCAXalj%Iop zrVgeb!qCne`SQJO9(lkFpK2+{gt@!IUa8G$D!8d5EcM7`Wp z8eLcqhX(aGQsUW}F4V4szjbi$TyP8aV32(s-Q8cWqx?yCSVD_{Bhat-6?6aB`9tI- zuC)^b08vaCm#DedZ)kM|ULL&C(7u$2sjmS$d^3N!r~iobiwfZFyxuk{%(PGrKfT*U z^CDDPTpp({HW?7J(k(98SEs9If1``lE|*A48?k8$Wr$@f@(X4Iovqwr11*u^K*OA{ zx7f#SEZ7I5z|f|0zZ3Q_Rr9mKXD$j|9Xjy z6DxVowXE`+u;Kb008M?{AA9rEk;U+mZWBr*Qsj2%b0r2la)axf8(Py;|HFUJMTDl= ztHW2CULjQ=n_Fl561E;J5jSE?*D5V zZ=~i1AzN~h|J>{F>yh>tf2p0n$mh!o)ki({N#_^MBvUT$^4>^UQ9*y9#Bxxz^8bu676H>bI47T3M>`>rG#LQ#s@<`i`J-RL8%X5DmqoP|ga2^A))wDXe= zBs8FAU%G63#D*Cy=<2KyHSX;uB0gQ1wE1mM!QC;3k+m@%xRUk_c4k++IuC&#F!qHE zi0zfSCyxkFp*3!9Ztyx-;(kcI%D$S%B$Je+wEQMzI}r!s^{_NlFilbGcW;EIj*Iv1;W^mgIF!&KJr4#XyMxNZPW z#EPjGx0+b`1V-nzc9@*mVlS`YcZTyrl|i7sQnui&F{g7@l)Rs6pQJm(zjBcD-at$t z?&3Aan7gZcuCl>xhE3b)L`D38Tsr)fr3)ciR|Pz)r>3cr}t{r(Y=5b#)DoN(xwW?&e3EK=*s+lXjImXsYG5eCZ4OeAu5us1+uteDd4z57vMO ziQ?B>Qi?afk)dLSbluV_1}uaW_)HmKA!j9}JOW6XC*nm(2B^ZTYdmyG89AE7YoY|H z=!&y%&THnTdrAq#(2CJrPr4qe%$N(LSgoTUtoGd1+zYrS2D@b*&E&w2qd<2#<`iP_ zi8vO}TJEK{h87pAh+?H2RCUqpI2sR#9Mq-K#_h0S=sqF~k}Gi~gqiWKCa%*uJposF zMA5&`a(~g(oz@3KfI^1+t7`7knv$x#6GHaLVF2aSbQ>*5V+DZ&@*t&x6Y{Swc zK7l)~Rdkys=+gf=9f`R!ouOh0iUF=Bnsu@uS{!g8+Bw9uvJJ9X5)OaJGHHhQVl_C9 zmyc06Wi?`0&QA(>>$|Tl9Zys>?>Qq(+5H%0jB9mmN8UoO@Z$OL^>Y`$-0y{s9d&UC z>AC@ZQ*JcoM#<^km^=H1+SvjyKU^^d`qnP6!5buRQ5$YZ*9Oqyx2N;$X5UlP-iRED ztwihw%L9rA?aODV*>y>$*wbkFx(Wl%?)~MKM((fII3e&oAiZcVvW?|Y_30~YZwc4r zRe#03D%ACx2Mh1#oeMphJFhFxhkDcXH@W>7O;_Cm+Q|>-Uhnncif>3Bc^^K=wB9V) z%#cOc2Dmm$w(<^`bAiwmXLfIGuRlX?jr=8;8a<=px5d@an8#^3U1aqsQM%*Z4&O?# z`IVCdVXY-&>fZV2EjRaZq6~q`*PI81t{3OlIg@i|ZRs6xxU_YXL4d{s8SFVQRHc#| z51TIK#O6}IwOTgoX0zhFv~|_!e2~0djA9e@kgtnesJQ|s4J=nPp4Vj2Nki|%x?+AS z_}n!trHtFqM2vx`ad$~2czibJrS7id+GS3`&v=)9jBa`c`Sh{s?4gSxs7}dY$hAE~ zkprV%AzH7020+Pf>ojGH3E8oS?J-VwrAa)PYMxT6@Av^M>~(Iy0hT3}^A*1=IgK5< z)o9pCywPZ)Ho&T3(HIphbjI}V5Rx<_r|cL z&gKI&T*9yY&niY5;Pu@YcJ}GXh>6o%k^B^m#r-M`x}Pfh>k^&siRskNI)$3ZBjw`> z6a1?nC=N?}2)`#DE*Q48NIV&*9>hVoJagfjW}Y3Y$kKnpH`G)*>|UP$h}b8Of0A1nOS@;N z*sA=J5BT#E3m6vDO-cnaV1xyrrNDHB`tIg)Xqf?;17k~}H95F`8c<8aSFr8Qe22VX z5KPSApQO<*BJ8xzAfaNkbsg7agd0K8&SxTOWdwBv0IU*|Gdq!C6k?*tgT;=rQU{0W zs{LH=Gd)jmkRUTl62{v%+0lSDK1{#|F-u|-y_MobM{ayG^y4W7lq3edQ=)Nz&!QxV z6nH?v2Q$;~eB}Q5b2fZr4h?lynqBrObUvMzZ2Goo&Qyow=!>GU}F~DZCx*bIIPO5ShFx201Vx@C*EyHV%h_wPl#5h#eBcbk*BVj-Rzqy&xbR z5tt_6M_8EC9AptAsooHuwLA0aeE=;(?T~`hDa5}2!3RK=63D)5@WFnl4qLCEkNbSc z4pf90r~&xYM0E6{K68+dWQa?|%swgPhmkGA9Q5Kl zbelqq(qW<$V({}}2x1uemJgRwuo@C*EgOu4rJqs9d=;ZXVt8&S&`_6NJ4y&!L>K^= z-(r}FQZipgAQK77l&p?MFp#Vvu!O!DwV?o}d5jyu4cCfvJ(s;xMY}_sa|D{BH!e~z zli37YHh>l*R5&nt3an`a5-f$_X&`HB5RVe4kR(+|P&yPGnh8_mgSP;PE7GKGluJAb zN=k{u3_{n-2!|PP6Eo;NQt~iAH(Z8x?5gS_9gbEyr)1bk-MP49u28qdjCL;vq z=PI+(N$S9~$ZOXk0nUiuLgP;xUgOpkTxF2Lh{<6z==2ETzm&&UY2eJmg=o=3ndM`M z?&HN5_ZL5a;sqeEO)2bIX>5f}EC*{Sx;B*q4A36j%iq&_;f|?3rjnw}6hl4(w`}{- zPxqBI`QN2TVXYlyru*1BM0|n@{-J_`Z)1a8*+8uny~IZ6NuZ~hSMTn5*vkfQ`=cEA zB3oNjgnsEYQ}PJJhwR~Ka7Ew}ql_>yDB7BsK1N8;eSF6f${Zy)(xC1mC6Hv$5I-T} z7+#wRSx4hr8xpTrgHPLtBA2QX#*`uNpL*Jm3eIn#(h$*XOd%UGUl~ghR17fib863z z-9?b}EDC5C7!%UX#2i_GJ)DCXd6dz2lm)Xgqe4MEF#;{aZecv3^KlQwh%-#sCl=V1 z1GD2G)%Y+74c|<}_fr0=XCt=*NJ|-knG8Dj=UMzl;=)FuLWZ*vX^htt z#5qu~I3%?2FU$WIaoU5d>UAwJV^xf&Qx30gyp2;f`_VPlSq;2%YB z8K*e7E4zjY4L17Ur^k=@5I1(y;>P=7O9Uz*?66j;@Rmw7vLZ;ZbuyWng&FgPNT&Sqw@QF}Rb zxeDPL)3}U6n#_MZuuPc#1CQV%CZehj1y(0t03B28%z)f%Z7XkY(S9A@+X`uGY_TDt z#h?gGMh7-0;73!=#*e|vgbi2Qea{qxNI;1qyl*Vq&ASQ$ZE((xmR|K|_E_jq?V zwJ~xh$&uZDR{jxepVIN8d9dJPM08i~)uutLZA=^Nj0j@Qd0R7pxGceMBm(<4g@7rT zdDb@p1+QRYE{PCY)HD?-I#eN|rrvB|U?yVd zP8mFUtBRErv6YDoAmXmCfj^K+3SZ*imN?dG#(97GW9PFL{Sm>TjVtpm`Co%i|3qC8 zVhb6dQ+#}q1l=PV&*}vwtwdIc@g{{`K|vZvmqfdMAPHLeQfl%??J5Vd(A{5S*LVr} z(U zCL){(=@8*cXcKiJ0)mD*!a?7Zpv;6<(15V|ArM?Ds(N0;7uB+`8Gj}_sy9JFV}X4x@}C+ikb>k-GYq=*&(>%v5u0?6$NbuT_h>S_>~#|Km>_A0ZRag1LZ3CI8`q@MzzpF&>cgvg>mY_?BaB<&5|(YM2hc(ScI3z>1m7E!ycG;?HXKecb&r*7V@ z_Jgq{h?gVrkzF3-;+CGq%8W^Y>WT__9(5bMlKOU{7CXTnyQG-1n-F1bSytB%Kr;bk z8x5`+^e2ajy6cfNRk!oH#Na2*s-ZYt_8YVb!dx^kA1&wP2jNF2HWvl!+i$@ z%=!#9pWX8Hi_<(1{Oe+4NkMX<8qaT zT5+WUAGf4fs&($_^|)uJq@i0666ybj6DO^oI}%>LJpVUV{bERG=gk;T*v}__@QM}r z)I(O))V%ezrWQsfq;5BPIXmM)Ygm(IOnu2Ng6O~Vho))a?=jHkL44z!J-=v0 zWaZ4x)W`bN=b-`z6Kp8c!T7JN!6V3CvD;b6?MOe`rzWZiXXRPwn&g|bTa2)ThnA>l zSo(YC1xMd2E`XfOO5<66*X(;aP*H zJ5Aq*>!z)d>}e50uIq+sm=A1hFxe!L-StBC7jjaye0AfokP@LiLg_4fKw@gQsFxUM zO%w8wL5J_-Hu|51aAUJ&gV}3L*h%@iHibj#Ygeu8;YrNM;{4bk+c1|8+* z99E)5cPAHJ;*2beJ6w8FQRTR`kLQ|&bRyO%xdIxqiHCzOgmTt}^X#j2N_6$HkYqzAa-z0>uWda|KLbg(_cHsV^~f6*~>x*0#V zZ#I5oONgPH_QF{wWqDAed&F0<%1{}4y2gP#CVGMVK_LVR<3M3sUy|RMfTwHXkiit> z2g^GUvgp>jcXNtI#RbD*D1dWgWGQ>OobnJP5j}`iS;|hq02IM;H|C`VSXNYDk0|Dnj z)cdBom4VgRcU9I?hRh#S5L~fn)RB!)Wos#VuT&UaH@0_O+`>C| z#X+BfotfHCCENtirZ82OY=B^U1QRmeiZ)^fi~^Cx`U z8g9#3qI(irX)0LCGYRj5&d@-1I~lytr){Sbju+4E+e;4~{E$C_>9g1--%S@Z9VCmi z*XKoDS<43(RWF2Z=$Dq*I#IyNtcI~pA}FTg4D4W<*m#oW(uL}CsPkCg*Fj(XzOK0En#7+7|VpSCqqdaQMHC6?+oDV&5e#4Q*%GO@B zqN*{c-KkH`6#2c1jd9jtSNBAq9f)phh=~nH|MdwTp>gn3?0gHtE*cEBq0r){jQ5i( zg=OL$8i#ED>_^6`*Y+(yj(EI;WbX4Ms=%n0ZHfEHKSGtXu1&#r1xZs;&)$R}9TQbm zlB|Ry%GA{c10Ej??hz%~9OjyaBtoeF?mszjl`SBj_oY@av>zx&xQUxPpgLRaKWJ13 z;oQ4h@#dkyyWTOAf_hU{X3pc!u%=U0@1o7`YBV26(n?FF41!g1Tb?aI{1OeqD>MT> zXLguedp(?(@zBvMmSUb;AiiSg_&h1dCiuFI#hr>rP|&Hn+P?vi8x literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/main/logout_btn.gif b/src/main/webapp/images/egovframework/com/cmm/main/logout_btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..07ad8264e8ced44e875e54725f68a270c968511f GIT binary patch literal 169 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/main/top_logo.png b/src/main/webapp/images/egovframework/com/cmm/main/top_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..acaf36c927da142c9fcd0e94623aa26486cce899 GIT binary patch literal 3333 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 M<6vECb^82&08OIQ=l}o! literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/paging/btn_search.gif b/src/main/webapp/images/egovframework/com/cmm/paging/btn_search.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4ee76fb30d2c96355398c4633b37045748f3f0e GIT binary patch literal 1358 zcmZ?wbhEHb-n*TA>HIW;5GqpB!1xXLdixhgx^GDXSWPQj+a zsv@@_H?<^Dp&~aYuh^=>Rw*$hKPlA;$OZ}PD=C1Llw{i~If5hY3># z8w8|WGtTbUSGnHVWRffCTRqLehNAQv~NT|l0# zQbtKhft9{~d3m{Bxv^e;QM$gNrKP35fswwEkuFe$ZgFK^Nn(X=Ua>OF1ees}><76{9OHt!~%UoJp=vRT#&!Os*6j4 zQW4I;s=7F&vLIDID784hv?w_hs9YJQ85nl>EdnV7y2i@CC=(bdi8(I$$)&lec_p4M zwn{)5y_C!ptF+`~!&IYWBVD5;^HkjwQxhXyi&QfM-Be@a#3Zv6^JH_Q6qq^K^cy?6 z7&w|Z8ydM7n;ROsnmHO7yE$1ny12SHnYbF67{l~><`tJD<|U`X?9K$*4b^LaSFe?G zQEFmIeo;t%ehw@Z1Z3owP^8Cc2K>JIQ8lS z9itCQBuI${CIn20ASOHu06FkXl$r<3IYq!M!ubE+-#@>9{rvI$+t)9jKYjf0{@vR* zuV1}<@%-7-CyyUJd~pBX-8;8$-Mn%A+SMzUFI~KF{@mF!r%#aDv3%LmC5sm=Trhv$+&Qyn&73iP+SDnNCrzBt z-`CsI-PPIA-qzaE+|<}mUsqdGT~%38URGLCTvS+)pO>4Hot2r9o|c-DoRpXl9~T=F z9Tgc79u^uB926Mf@8|2|?d9p=?&j*^?BwWRZ)a;`ZDna;Zf0s?Y-DJlucxb{t);1< zuBNJ@tfZ(QFDEM_EhQ--E+#4>EF>tv&&SKd&Be*V&c@2Z%*4pRp!kyoNQyG(fJ!4! z*~Y+{oDga_QQ6b)NQce_pMpIMI-l)$SxnDwSu^#-lZgu?G&|#5p3E@mJAUkl;v^r1 z0Ob^=m2sP=TiCQn=V-Tp2rK+yU##PI%)1kxI%F@}# K$SkVJU=09zNb6Vt literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/paging/pagination_first.gif b/src/main/webapp/images/egovframework/com/cmm/paging/pagination_first.gif new file mode 100644 index 0000000000000000000000000000000000000000..b616bb2925cd6339d57bee49138a0191dc32830e GIT binary patch literal 1180 zcmaJ>cVN_17*7iVS_H+t(^L?&neQ%XLXX-@8mM?sO0_sZbIEHjw#kc0%3UieI8YGx zLY9Jnpw_)B;NH0R-dk}iuJh%%tNu}Weo_G7Z~pH$iRb+eDGJm7rSVDK6!yFk?^Z@!|BIDJ^DC zhbdcB-2}2Wr{o;ZfuTX>oK81TatX??P#P+D9&NJ}S%8Ec393FiAR|o``H+k=B5iV_ zL`pKl$0aEyRg(h8$5{@rfTIPV#5g4;ki|h^HQ#Denl-(sg;xnG6Na9`ve|5w$pQxX z?JO_LGRq09AkY{=2iRHp2jQ`6k5hsuCIJZu>$J5PPFc^=*79 zMyH0%E(f|{qn4oX31iuo(q@`G6ik5@(h{Vtcub&cpvch>03$70k|_yR$<9E00CXM5 zKoc||@qB|Q3nI_~NU9RACe@f;;x@WLXt*XUY1>%4$W^z?Ra74uA@W-g>MT`3QwD`7 z$RLkY)xxclV_R+4LfK$kbWPi$)}U|ChL-Llhb-h-u?O%WnQYKx5pcXH36cLvPDtwY zHBy`hGN&gws>rnl$X$`k|1X!t&ahFD{HJJ2TeuRVX@3jgMSl}P7k7@2Tcj-i_g{bh z@%z@_e*NX=pMLz|`|q}V`_0#1efh=bpMCnt#~*$8!TayM`_9{Mz4^xLuf6)p%P+n7 z!t>8PyZM=?pL+6%#~*w2k%u38@PSPmH{9QM-@W(Teb=3L+VF?~ONHzkc0y zYuBv4cGb#ju3oWx+0rFfExz)K%P+h1l8Z08@PhLfowsnox#!G3`>Zq1m^b(I(@vdp zN>6t#JG(0k{F6Q8I-MOS*_rk>Xqjo_#1m%CJpQ<2kD1YW^ieI-o2NBRosv3o@)3=b zCh85Enyf#(ZbG7Vydu{~Vmt-}o?{uh`mjUCjXh+{=!2`MO7frs57>XdefQaWuRZtJ zeYa7&?lN-3&ciEq+Hu&>Av+8nR9;39m0JhnZy8Zd;1Rt*M0v#`W8RX!;pQB$xttjP E4;P!8XaE2J literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/paging/pagination_first_on.gif b/src/main/webapp/images/egovframework/com/cmm/paging/pagination_first_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..b5f82ffa2a53d7d0fd6a533fd55c8525a2b07809 GIT binary patch literal 1205 zcmZ?wbhEHblwpuzXkcLY|Np;R$0f!8+!4M33NDEyi9p)MzM>#8IXksPAt^OIGtXA( z{qFrr3YjUkO5vuy2EGN(sTr9bRYj@6RemAKRoTgwDN6Qs3N{s16}bhusU?XD6}dTi z#a0!zN{K1?NvT#qHb_`sNdc^+B->WW5hS4iveP-gC{@8!&rCPjz|361+)~fb)ZE;} zTt~skz|d6Rz*yhdK-b9F%EZ9R#7F@Olz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiLs8jP#9+bb%^#i!1X=5-W7`ij`p|xTF>*7iAWdWaj57fJ{tG$}cUk zRRX#c;)UD-UthSvdBu8Q59uZ6=jvA^7U&!58R+Ncg8T(mU0f2Bif{&2)x{x|1*!T$ zsm1xFMaii^<;pP4z_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd9r6ngD zrWz$1=^7=Or|PDdni%O?q?#G%rWzY3CYhy}Cz~6kz|6s>-^j_()Y-_y(#XZw+|ba~ z%*n{Y%*oWm)YQn($VgsyL#pFrHdENpF4Zz^r@34jvqUEVojbN~+qz}* zri~lcuUorj^{SOCmM>enWbvYf3+B(8J7@N+nKPzOn>uCkq=^&y`+9r2yE;4C+ge+i zn;IMH>uPJNt12tX%Sua%iwXi?qaq{1!$L!Xg8~Em z{d|4Ay*xeK-CSLqog5wP?QCtVtt>6f%}h;lT#wKO%<)l^lKl@t}^cVN_17*7!a1;LHmGt)@A9`%~sLDhrOR$IiCOI~}iOdtd*a5uaiW3)QO}p-uJ}jg{gJ%!`+eW<``-7xNsZ}P+!#R&CuUU<{r&yL zVzIh7vOUv8>PBebe_egSGt4d+l3Cbky9sLTij@>;TM4R7%5WJ^gE@P0pATF5rnH)U zU1r>(>L-$Q1-0OK4h#*l;B>ozT1Zfag|bk^^Jtr;$Py&%N>It@fQ)=<$cLoF$h67H z3aP{yUQ!fMsU-o&ODrd_0!ITu6**M|WO-27n{Rcf&3d}*3$GGXE(|@DW%KzwlNT7| zcd~pu9%nhg0zhK~9rU`PQJ~$RreZ;df$7^`Xd{=5EE-wV6DBCEbW;e9m&ptmb_1pq z5Mv^TEf^llGaTzUQCuZ-5H`cjG6qElt-T&(n_+-@d=p}LO@)kew`E5W5UWwA`Zm54 zqgzL2j|1JXQBP3#gt2T(?J!Lq0u#_6t3cY4L_o)&%+XK~jI3-arUI;rox%7L5CPzm zX`l-V&!^;AI>k5WlAaP}PE(Rvh1=)`q2Zda;@if)%iPo!xvJ(vBSd~HLfw@rXv(1w z1v%uAnpV1Xa$KA3S|}fkkFIG`)H?L-nb1o6$RSI4R_#GFq%G-+r^^>#x52;`7fw{p911KK$VQ)$hIg&f9Oj`Npc( zUwieHmtT7Eh3B7p_L--jdh&_KA6xn8BM+}wzU-j~mo8cS!2S0vy7!*`yYIU5j@xg$ z^_GP<-*n>**I#$-HCJDCXgjkhaK8D zc~Uy1YYoXm>L(`ZCaCe4B1@tGc#dW0+Jg@oKkmQ-_TR6DswVf{XYalC+++9M#_qby z&O7b6!}eoFZ#Qb>w%d#tK5XluTMelqi0TbP@wbYoCGdz|AY#ZU-5tAZ^_unti&nJ| H#DsqVTZ^3} literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/paging/pagination_last_on.gif b/src/main/webapp/images/egovframework/com/cmm/paging/pagination_last_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..02266201a631fa0fed821ab98fda0a2cd537faf2 GIT binary patch literal 1205 zcmZ?wbhEHblwpuzXkcLY|Np;R$0f!8+!4M33NDEyi9p)MzM>#8IXksPAt^OIGtXA( z{qFrr3YjUkO5vuy2EGN(sTr9bRYj@6RemAKRoTgwDN6Qs3N{s16}bhusU?XD6}dTi z#a0!zN{K1?NvT#qHb_`sNdc^+B->WW5hS4iveP-gC{@8!&rCPjz|361+)~fb)ZE;} zTt~skz|d6Rz*yhdK-b9F%EZ9R#7F@Olz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiLs8jP#9+bb%^#i!1X=5-W7`ij`p|xTF>*7iAWdWaj57fJ{tG$}cUk zRRX#c;)UD-UthSvdBu8Q59uZ6=jvA^7U&!58R+Ncg8T(mU0f2Bif{&2)x{x|1*!T$ zsm1xFMaii^<;pP4z_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd9r6ngD zrWz$1=^7=Or|PDdni%O?q?#G%rWzY3CYhy}Cz~6kz|6s>-_+5~!ob0Hg|L^ag-@ktT`2Owdm(QO*et7@x?VH!HUcPw#?CF!oj~+g_ zfA8*{+qZ7sxPI;GmCKhdUO0d5?3vT2PM$b^?C6ohhYlXtzi;oJ-Me<~*uHJ+md%?s zZdku=?V8oAR<2mSZ0VB4ixw`JKX2}w*|TQOm_BXll*yAOPU!FJ?dk67>}YRmZE0?5 zY^blRt*Nf6tSB!lEh#Q4EXdEx&B@Nn%t%j5O-W8lOo)$*jfswmj0g`44G9hk4Dk2! z_3`%d^l*1`b#Zobbg;LxwXwFcv@ka_H8D0aG|<=6)zQ|{)KFJbRZ&(_RFIdGm64W` zln@sa6%iH^6yWFM<>BVyYD^z^Sh{g!|6oGrJy hH{ZL{^f@=tAT7Cb?yRh))whp+^11%4_ckkoH2^e9tTO-r literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/paging/pagination_next.gif b/src/main/webapp/images/egovframework/com/cmm/paging/pagination_next.gif new file mode 100644 index 0000000000000000000000000000000000000000..d51acc1eedd2c40f81b2b7fb70b5d8d11293b929 GIT binary patch literal 1176 zcmaJ>cYM@j7*4TT1qX;*fizVCZT7l^9_4yzpz1*_mEty+eC@?H`9hL%*K^?l91JId zTVz|@6BYN~drv^XffL1bemU-{e^kC-e#tkU=Y8Jy{oXg@oAj7sRAN=wj0&u`x3^Fz zR2K$KO*P}15gO=QSD*6?vlE1P8g$rhoY=BvErHusoM;nMOv+1wj6EUmgUR`ct!BQ{ zR4k%?EMAvWbB^bL(7|1r3mOPa-}XWqx_D&KNW<A=!`=-|aXt9Cy=XpLHuK@Tg*T;zYOL1DF6 zgP>>$Q4ko0C~>WRa#!NA|I4M3GjvoW|0$aC7OKQ(+SdYT(bq)4MV;fL7O5!w{nwv= z{J!nCU$_49^G`qi@cowWzWwIw&6_rUwPF3bFTeQwvrj+y_@fU$c>le3-+BA3H{W>u zwO3zx`K1?Mc>cL(pLzPJC!cuyv9*sr^6;969(>^b`|iEx?z`^1dGrFzij@zxpOYP8F&zgDR1?Qi4?u>KJKI_ag z@;$li^zJb5r+LtIx;js{Gac=~GSkLsr=D{1Nhh9g{M5E7$F)vwIktJy#MCiIAJsHr zypHnPkQi4#HeNSIRbsLv3OvU$G)2}PdBo^ZBM(39&>Er|A2EE`AqO9H-~s#Zx9>hf z_Z~8MuRZtJebB(&cCFfF=gOT1RA5;3wo3G_z-loxqCXHeph_D)GrxJxKy1uEuxpwX literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/paging/pagination_next_on.gif b/src/main/webapp/images/egovframework/com/cmm/paging/pagination_next_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..376393542a1ecbc665e653d52ce6141760458b19 GIT binary patch literal 1203 zcmZ?wbhEHblwpuzXkcLY|Np;R$0f!8+!4M33NDEyi9p)MzM>#8IXksPAt^OIGtXA( z{qFrr3YjUkO5vuy2EGN(sTr9bRYj@6RemAKRoTgwDN6Qs3N{s16}bhusU?XD6}dTi z#a0!zN{K1?NvT#qHb_`sNdc^+B->WW5hS4iveP-gC{@8!&rCPjz|361+)~fb)ZE;} zTt~skz|d6Rz*yhdK-b9F%EZ9R#7F@Olz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiLs8jP#9+bb%^#i!1X=5-W7`ij`p|xTF>*7iAWdWaj57fJ{tG$}cUk zRRX#c;)UD-UthSvdBu8Q59uZ6=jvA^7U&!58R+Ncg8T(mU0f2Bif{&2)x{x|1*!T$ zsm1xFMaii^<;pP4z_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd9r6ngD zrWz$1=^7=Or|PDdni%O?q?#G%rWzY3CYhy}Cz~6kz|6s>-^9el&D_}4)yT!z+|ba~ z%*oN*($d1n*~rPn(Ae4B38vRGuec;JFF6%vcP7wos9qPmdaay`QWHz^i$e1Ab6}|; zAS1sdzc?emK*8A=9P0`i;hA|U`Q^o$plE{l+9kCpvn(~mttdZN0UXX&nONLlWNK#W zXy#^SXl8B(a=)Xop_zq=o1v?#i?gexnYj{FZwi*MgX%TMsaGH97=2J8K}s|*Az(@b zG2vMN$bn~~)I4C$DFS8@#{d8R{`vju=a28-zJB@q>Enm@@7}(7{p#h5=g*!#dHm?% zgZuaH-no72=8fyuu3ou(>Eea+=gyuved^?i(;JWy=vu(<;#{XS-fcBg8B32&Y3-H=8WmnrcRkWY2t+bzTTehuFj73w$_&B zrpAW)y4srRs>+J;veJ^`qQZjwyxg4Ztjvt`wA7U3q{M{yxY(HJsK|)$u+Wg;puhls zKVKhjFHaA5H(>ZVIXc+e+1glJSz4HznVJ|I85-#8>FQ`}X=pG}qN6C^S7S%gWr=_m2DcC!gznj11NQ6waxB literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/paging/pagination_prev.gif b/src/main/webapp/images/egovframework/com/cmm/paging/pagination_prev.gif new file mode 100644 index 0000000000000000000000000000000000000000..de3979b657f67c43af00703e082a2b3eef0cee58 GIT binary patch literal 1177 zcmaJ>cVN_17|&q^6vaJok)|laX1(Mtm(ZiMmpdqUP)nsKu3Ylki*52kl5*Dy%5(uP zP*H|}Td3d`5paQfZ&BQP;8qYlU#`8%ABFcv^2YD?eZTK}-}gqQcfIZ%+c*GoX|e5 zUT<&KWrM05L006HoaI>1*T|gJVtYz1Mrj60Lj})+ZI&Vn5WhJ_RRsrR;4_X~NQRjR zt#c8Hlw^hvOOhy+lYryHEGMu6M*~3-IYk6y*PyUB*JxDg)MS@0yoym7-**(2&1SPq zR$!3Z#PYH%vm9UnpfQ5>+H7CT(Y9Asw4g#ycTLAPkxd2`wKQt=V-!}}8G_}cQr(7a zk0}Ji=*VJon#1x8$68hpR{`z$b?|=~J)*t(HV3kG&_k`R4l%r}NXEI_x1#`v)hOd# z6JLtfq9VQ3g0^3y#wdKk7^a~#>N*dB4rq{;AZ>(2Ku2MOqoE*Z>4+ie5-^H(dg6;J zrzWap0jPq+^NC0_sj7)&f{RAQ>O>?AirgC8^EF$CMc*d&-Ngm_SNP7Y}>Z3AV!p}{qEMy*2EoC=Mki!8E`XT|J6gUX3w5(r5?B7s1^ ztm1%Vj<4c5kq@g_e<#=IA$Ofzk=rYm#bVf?NcJe2;ufyNVA|aRc+uTN(8itP;uZuwO3zx`K1?Mc>cL(pV_+Q>8GB2;_=O!Ha@oD(e;l!{Lq6B+<)J_>(<`Wv1aw% zcinl%?YG@}%c_+tZeG4@>5`jnTztdz*DYFj?KM|lb>)Kj^RBr3vP&=vnQW*=A?#+XVg!qJH2-NxYTK5 z$JC4-l}xDd>Z*~IBVrZ96*($J!lD3pj%DcbQ-=*5GWe8}2bEE!dPx6+59)W|0e$=Q-oIqOULk@g-C2UaA)=hXBY1&`UVZ0J8IakwePoCj F{vTHGniBv3 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/paging/pagination_prev_on.gif b/src/main/webapp/images/egovframework/com/cmm/paging/pagination_prev_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..39cf4b195ccc10240118a2e46d4130c022008d63 GIT binary patch literal 1201 zcmZ?wbhEHblwpuzXkcLY|Np;R$0f!8+!4M33NDEyi9p)MzM>#8IXksPAt^OIGtXA( z{qFrr3YjUkO5vuy2EGN(sTr9bRYj@6RemAKRoTgwDN6Qs3N{s16}bhusU?XD6}dTi z#a0!zN{K1?NvT#qHb_`sNdc^+B->WW5hS4iveP-gC{@8!&rCPjz|361+)~fb)ZE;} zTt~skz|d6Rz*yhdK-b9F%EZ9R#7F@Olz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiLs8jP#9+bb%^#i!1X=5-W7`ij`p|xTF>*7iAWdWaj57fJ{tG$}cUk zRRX#c;)UD-UthSvdBu8Q59uZ6=jvA^7U&!58R+Ncg8T(mU0f2Bif{&2)x{x|1*!T$ zsm1xFMaii^<;pP4z_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd9r6ngD zrWz$1=^7=Or|PDdni%O?q?#G%rWzY3CYhy}Cz~6kz|6s>-^9Sc#K_Re+{ne)+|ba~ z%)-LW+|}95%)-pn+0x0x0;bn9uec;JFF6%vcP7wos9rO?daay`QWHz^i$e1Ab6}|; zAS1sdzc?emK*8A=9P0`i;hA|U`Q^o$plE{l+9kCpvn(~mttdZN0UXX&nONLlXy#<< z=4fDPXl8B(a=)XCsgt9rg@K8stBZk?xq%W?Zwi*MgX(p}saGH97=2J8K}s|*Az(@b zG2vMN$bn~~)I4C$DFS8@#{d8R{`vju=a28-zJB@q>Enm@@7}(7{p#h5=g*!#dHm?% zgZuaH-no72=8fyuu3ou(>Eea+=gyuved^?i(;JWy=vu(<;#{XS-fcBg8B32&Y3-H=8WmnrcRkWY2t+bzTTehuFj73w$_&B zrpAW)y4srRs>+J;veJ^`qQZjwyxg4Ztjvt`wA7U3q{M{yxY(HJsK|)$u+Wg;puhls zKVKhjFHaA5H&+*DCr1Z+J6juTD@zM=GgA{|BSQmyJzX7bElmw|HB}X5B}D~!IawKL zDM<-&F;Nj=AwdCtK3*PfE=~@1HdYp9CPoGZ#h)w;AfN*xKqU|ZlR{7b%F}Q87th&p et9$dknr6A0xhEznXUtGNwe21E@lP_M4AuYu1gJ6q literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_about.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_about.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0a338b5a6946e890c79033d07c67427c5244f72 GIT binary patch literal 87 zcmZ?wbhEHb6k-r!XkcUjg8%>jEB<5wG8q|kKzxu41Cw4)f9HX>{5~NiezVpjMZc@g lhjEB<5wG8q|kKzxu41CvZo|H{*E85hm@9O?18bZ7I~ TO8FBVB9UD$PHl5zWUvMRfXo(J literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_align_justify.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_align_justify.gif new file mode 100644 index 0000000000000000000000000000000000000000..29cf73185b2a3ff6d00cd81a8e4d500b24970b7a GIT binary patch literal 69 zcmZ?wbhEHb6k-r!XkcUjg8%>jEB<5wG8q|kKzxu41CvZo|H{*E85hm@Y}>W8)bjnc TM0w$$$3bDwPi=E&WUvMRcT*L> literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_align_left.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_align_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0356d4c17e1680542b6fff772e2124bc87b91d6 GIT binary patch literal 69 zcmZ?wbhEHb6k-r!XkcUjg8%>jEB<5wG8q|kKzxu41CvZo|H{*E85hm@Z0ohQZAbn! T&-jEB<5wG8q|kKzxu41Cw-5|H{*E85hm@eAD@5?#|}i SO2Hi+QYSlKoZ809U=09o))s#N literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_color_bg.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_color_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b464c92b6c7b9913d9966fa1d2ba86e79848f75 GIT binary patch literal 181 zcmZ?wbhEHb6k-r!*v!qq(89n_&Ct@)Qe9pBp8*K}|7QRa3?KqV0XcA>_>+Z^fq|Pr z2P6VAgMlTf;H2m3sa|*2e%?0kyKmGYj$0A4PES~Rb(cnS0KY|_u4fZx+k*uTG6_{G z2>}i|66Hd3a;t;`OtxN5)aGDd@}IPNt1ZvI1_Mp48N2M6TWTCutk!0-bP7e!7LyH4itZ~FfuT3 zG3bCqKxQzoLce7dZF=92o=@ir6k3Zs6Jw#pb>ts6k5M9COpHXu&yxOs0)zMVjBQ-4iFs$Y2cs D%keb> literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_copy.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..975740a76a5476dd415ed607c4cd9a088bd2052a GIT binary patch literal 110 zcmZ?wbhEHb6k-r!n8?h)z|a81|G_}3V=l}-RvFbCz#yF1z@EdRxR3SI5*g3VnXA5b JX)rKY0{~pVB~btX literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_cut.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_cut.gif new file mode 100644 index 0000000000000000000000000000000000000000..206603890d3a4195b6f9858db130ca04f9ffdcb4 GIT binary patch literal 91 zcmZ?wbhEHb6k-r!n8?Jyz|a81|Ns97l8QfB7#SFt7<7PapsWy(tuv*6jEB<5wG8q|kKzxu41CwG;|H{*E|2NDrx@Hi2Z2H@` Yfw3GC4?gvJMNLv-IsVDVn3cgA00R{mLI3~& literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_italic.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_italic.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bb67aa898383bafe932b25ce3910d4438ffe64b GIT binary patch literal 77 zcmZ?wbhEHb6k-r!n8?gfU0vPM(!#*N@c;jR#h)yU3=GT+IzTQ^R)~RtNp4R6%F}Q8 fduJH;N$RX9V>;_9rx7vzgQH05ws+j_tPIuwL=6`D literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_strike.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_strike.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e00304dc411615c13a17d4772fe262cea89db1b GIT binary patch literal 78 zcmZ?wbhEHb6k-r!XkcUjg8%>jEB<5wG8q|kKzxu41Cwe`|H{*Exs*6AA1%%`o$dK2 cAX0g1+7H`kFQvuX%T9;1ed~Sh!^mI_05%61NdN!< literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_sub.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_sub.gif new file mode 100644 index 0000000000000000000000000000000000000000..effcf575e9143649d11c157c585ed144838e99b0 GIT binary patch literal 78 zcmZ?wbhEHb6k-r!n8?Jyz|a81|Ns97l8QfB7#SFt7<7PapsWy(EkC7y<>|NYoeYGy dBHzxH`aC_9VS!>wW!6foY45m?`!X_E0|4E`78U>i literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_sup.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_sup.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b6f4019c449add7fc73430e821b729f8ac715e3 GIT binary patch literal 77 zcmZ?wbhEHb6k-r!n8?J?zyJdO|NjS)ia%Kx85o!tbU;ENc?KrADg7%?=Q7B23tjxR ap;d?FabnzxiH|Cp<{#Vkj(a;RgEaul{}&wq literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_underline.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_format_underline.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef8c19e4b63cacd586306169f09a375501dd3adb GIT binary patch literal 85 zcmZ?wbhEHb6k-r!n8?IXU0uz5`g%+3vVMr9SFjEB<5wG8q|kKzxu41Cwk||H{*E`I%=Z_!Y;W3%qvD Uap8~BXNFl%Pi}h`#K2$;0D?glvH$=8 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_hr.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_hr.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f6e5e8bf5defec67fd027ab356760a59877e321 GIT binary patch literal 70 zcmZ?wbhEHb6k-r!n8?InY-~Jp=FI>9|1&T!DE?$&WME)o&;hc6vO++%_>}&Yr{D4~ Yp0lN~d$Zlb-~3^ZJf=NcDZ*e40IQ%DZ2$lO literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_html.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_html.gif new file mode 100644 index 0000000000000000000000000000000000000000..807f084fd79f9557abac5ea1bfe94069d2acd2aa GIT binary patch literal 75 zcmZ?wbhEHb6k-r!XkcUjg8%>jEB<5wG8q|kKzxu41Cvru|H{*E`56s9T`dkj7M%N~ Z*7HWCYDJLdDXZxmM?d*ocV}d<1_1Xx7u5g& literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_image.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_image.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d2bff131cfa0741a7eff54a054c272bbdd834bb GIT binary patch literal 148 zcmZ?wbhEHb6k-r!Sj5i2&;W!C4M4J?;s1XI1`q}k{}q3-FfuT(Gw1-hK$Sua49t-g zyYBo8nCZBBXMu5Onm%C*sub7uF&%L9k=tI=u%$|uwf^2*{Vcow8}BEuFjxZsptv^# literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_indent_less.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_indent_less.gif new file mode 100644 index 0000000000000000000000000000000000000000..f320b3e9460fb8194a4a1b591057dc5583736900 GIT binary patch literal 87 zcmZ?wbhEHb6k-r!n8?Jyz|aE3|Ns97l8QfB7#SFt7<7PapsWy(tudv4rR3}NO*xyr mI#?aH$!(Cmo6?XL*5w5qrgEauqd>p(0 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_indent_more.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_indent_more.gif new file mode 100644 index 0000000000000000000000000000000000000000..a67139d60346699347f081d2bcc01c263c8253f8 GIT binary patch literal 87 zcmZ?wbhEHb6k-r!n8?Jyz|aE3|Ns97l8QfB7#SFt7<7PapsWy(tudv4rR3}NO*xyr mI#?aHDQ%Fvo6?Y0*5JOqWl?L|y^5o!@7&n6<9h%jgEauyZ5L1P x!jiKsL>huCADD5(w{c0Zt$3Cm@YHAdO{+Z^fq{)d2PgtmDa63Q9FVc= z&c6#&BNr_!=81`9WDLkj7G#^7v?ypsoPs;+o1~^6o%`qO{c&LQ7Z(udJ3e2X-9U-c jt+7|)uVbUuvd=R^0@pjP;NASxOa9=On}_nWg&3>>n07K4 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_redo.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_redo.gif new file mode 100644 index 0000000000000000000000000000000000000000..2bc002a0ff538656ddf6f8b0f29a0ba1390f0e09 GIT binary patch literal 80 zcmZ?wbhEHb6k-r!n8?J?(9poZ(D48Ne+C8y#h)yU3=B*RIzTp1RtU&eoYKGY^xO9i iGZ?*0{C#J4ztNp?DKWWdraHUBJMQD3eDxf-< z{u!L|oX#M@p?FZ?z5&BT_IctdZ7ptAuUF<8{64EMd_Ov`Qc3U~BTrwD%i;^yccd81 N=_>JxRbgPT1^`!QBsc&7 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_undo.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/ed_undo.gif new file mode 100644 index 0000000000000000000000000000000000000000..f90faada2b3ec918e9200a05b51e2a32fbce92a8 GIT binary patch literal 81 zcmZ?wbhEHb6k-r!n8?J?(9poZ(D48Ne+C8y#h)yU3=B*RIzTp1RtU&en$o}W^jrR9 iZj%O4KG(3fZz`qL`Z!O7uDIxVKjEB<5wG8q|kKzxu41CvEh|4O#E_eCPomvP2!C`dmO vGW}TR)y=J|+8bA{s$4(ySW)Gr?^*E$UplX}aKv^*ObH0vxu9?-&;)A$(@`Y1 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/toolbar/insert_table.gif b/src/main/webapp/images/egovframework/com/cmm/toolbar/insert_table.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ce3ff49c72e689943a7851b3ccd3c490276b869 GIT binary patch literal 121 zcmZ?wbhEHb6k-r!Sj52a|Ns9pXU;Gf&tw3zfg}Vd{$yblVPIj<0dYZU8JO)ncHQ|m zp~rKzY*xqF>f@8tiyknrICQOg89DDQ*Xq=S`xgIB)$BR$5T)k6=Wm2Zc-pZiSG$f} PO10{YSbrmjiNP8Go=7f( literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/uss/umt/bg_list_th.gif b/src/main/webapp/images/egovframework/com/cmm/uss/umt/bg_list_th.gif new file mode 100644 index 0000000000000000000000000000000000000000..87f4a1c3fca5bb4b5ac1f4c0be14e7cbc151b296 GIT binary patch literal 157 zcmZ?wbhEHb6lPFl*vtR||NsAg_2$FBfB*je{rl(7pWnZK|N8ao$B!RCaj-lJq4<-9 zk%57eK?fuXGJ}D|E8v8uHm}9&v%CK%X!NCI&dab`lk<9C!5*QK-1`;l-rL0fIk2F> tL+2mQi6uoRbF3z|uPE_a8@2w%nzGYxtM)(G5YeMC`}~W|g|dtc)&O7dM#caD literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/uss/umt/bg_list_thEnd.gif b/src/main/webapp/images/egovframework/com/cmm/uss/umt/bg_list_thEnd.gif new file mode 100644 index 0000000000000000000000000000000000000000..c8767873f48b82364308d5078e2e34392a7e0442 GIT binary patch literal 573 zcmc(cOKTHh6o$XSVj~vorQX0rYAXm86|JqsTNhR_HUlNvwfzVE38gl=F~No12r4c_ zDuP5%T*RGqXA0U}=AM~kk|y6wZFOcc-(|jW;-BcdIE$AT&U4Ot`_8S)6LY=bG-!aX z!bkxN2qg%IEEEKtQbtICF-3^@K6V_BvCy)&p|#b9zl(yQRGYHakW^Dt>VjOWNJd%I z5vI`EEQ?x6P>U6%ZU1Rm+lJZJ>#b^SLo=GH-cYKhtT#o?6x4b}sg-4;C|1`6ZC$FB zB&{f_Wl3$>TTQsxXxnDXs&7CR(S?iz6jS13)ImP9Ef#qp>2fm~MCcTgh#vb0bvhl_ z^BmXx8#2lm3xa@BN(jLiBZPe4j}o5exvuLt4umke{{I_xW(=Yp4uDy3rn|n|3Fv*k zz$Lh)rHARqi;vPzGU@*QeNXp~Esrl>9naj)UU=~;b1^%bz4Yd7Vr3=1_%8AOZZ0>- zeaxNw^!dwlK0m~L%@1?Q)zwqqz9$cIe4%jY#~MHIbM0`ca75sxU;I&7@41e@4hi|cI5oI17oRFU+Ui8>oYSiCxzD__JNz8KM{K{v;e01b`8Xz4Nu0wm4Cb# BFJu4! literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/uss/umt/btn_kne.gif b/src/main/webapp/images/egovframework/com/cmm/uss/umt/btn_kne.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4da397a60a21e2ed3b59a7d6b9271c00db5af85 GIT binary patch literal 329 zcmZ?wbhEHbG-KdnIKlt||AC;A;eVsR|1O39lMMdPcKE+I;Q#7`|62Ny(g-v1;0*SNjTd z&TkQ%&?3xoR)ME?ZnJ{N8wC!>WWy>2vE6eO)09~y9hc>C8s3oO_Gs9Uqcl(8coWC! zKBmsV$AJygg#_mF28vnCE;PzxW(;;^)_&3 zZkgy)=Q+hVk4b=^g*CHy_-;M^rd(JZLj{`t11&L*18elm!(TtN{iSZ)yMl literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/uss/umt/bu2.jpg b/src/main/webapp/images/egovframework/com/cmm/uss/umt/bu2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4097f6e7e4570339161c3d82a5cec5f0ea091763 GIT binary patch literal 2084 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%0AW8Y9*qv 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 Y{N9cfF=hMRCD2bySAE|Y=IhA+0K#8FKmY&$ literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/uss/umt/index_login.gif b/src/main/webapp/images/egovframework/com/cmm/uss/umt/index_login.gif new file mode 100644 index 0000000000000000000000000000000000000000..6f928e682a7e795c12652b3f9edbc34b978c3923 GIT binary patch literal 22914 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/uss/umt/left_menu_bg.gif b/src/main/webapp/images/egovframework/com/cmm/uss/umt/left_menu_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..919c083b2933f25197719b875d9505f5f80a7b2f GIT binary patch literal 639 zcmV-_0)YKTNk%w1VYL7g0M!5h00030|Ns2_{rmg;`uh9%`TF+u_w@Aj^Yiq+#n9m6 z=r&GpI#F{vQF2IKeM(<_PGf;tY>0-GsfClMm7%l6%hbos);m*lK2>!=Sa?NSdQfG8 zRcVECgPMhusGX^~$IaD;mZ{0m+1cIU&e-AE;O6}O{r~^|{QUd-`}+R<{Qmy_{r&y? z{QUd-`}+F&`T6K0ECL1i#dY|9ZIyQ(W6L{7X4F$hSR4|qe`9X6v2ZEDP+u~ z%C)Q4uVBN99ZMGM9~(8&s$I*rt=qITMreKdwyxc~c=PJr%eQadKR0X$9!$8f;lqd% zD_+dFvE#>(BTFXy2gi-em@{kM%(=7Y&!9t#9!C>72cgW6PdRySDAy ZxO3~?&D(Y5-oS$kA5Oe@a56yv06W=mZGQj& literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/uss/umt/left_menu_btm.gif b/src/main/webapp/images/egovframework/com/cmm/uss/umt/left_menu_btm.gif new file mode 100644 index 0000000000000000000000000000000000000000..f23d657c5748182e824462b42fa2d1b225c450d1 GIT binary patch literal 551 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/uss/umt/login_bg01.gif b/src/main/webapp/images/egovframework/com/cmm/uss/umt/login_bg01.gif new file mode 100644 index 0000000000000000000000000000000000000000..edaf03df70124ba6f8bfa13d6cc23860fe7f2173 GIT binary patch literal 2955 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/uss/umt/login_btn.gif b/src/main/webapp/images/egovframework/com/cmm/uss/umt/login_btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc9ea047520c7d3a7bd01a64baf6695fbff90152 GIT binary patch literal 1653 zcmds$`BPI@6vwj=3>Xar$pi-_VUb0!5IS{b3K2KJ7Fis%N*)PXt4X94EI+^uQL5lD zH3>m2tx7^wmJv{cw)K|?D5yA6WU($Iwpf)$jUjpKeed?sKcnY|J7>g&fpl0`X~a27|NhNdTPq;^+KNydc6#WK@??tKHBRAI1UN6Ck+8$D2gUYKoAte zz^9tkIc%?ta{QWxS*3k$N`Ri0G`v`UXU2v3HK!E{(NxO|*24**izudY-g89wUZE zwcd*8O~nSYt!upV*FT<4x}N{_ZU%)OA2apJ&F-T}Z&e!_i*#nS-hvn!)Or(QFx$Jw zY+a-F?uWLnks^adeV}2N{zQ?%bn*HV`{j{mQ(g}WpH05<;n0gQGbruxfn5h0iVP<% zJDimu=@lINznueaDv)dYQ{*25{wV0y%?B5DUXlDDd@rI4=5m577RowID-QZ zM&STr6oZnqj{shr@)CfcA<003W^h1b6hKMJ%Ql_G2w8L_LlZQ>0fkW{3P_q|%c7VOTiSqwwdGys5A$A2>Ue?AJrkIUg)<0Q_0Z}uiQLdekv zIK~8Xtw)3*2|EY7i&e3?XOk5pQ=1p3@%3TGkmiP)3Fe%S<)_Y@8hSH*k$Wc6)?Jd)(f06yf7X48)9!4~I~Q4zfE>Ts z5mGp}JFD>cxfzd zNb}d1z3B~&Tkd)KnZ{ym%iB};ef-sBDJtdq&5{ITX+gm7vF|L=-o-+5J>D!VUJ&e>;m|id0!F`;#a=Tz-TliKU2VVN|Wx#^Tz9aC{;+Xo- zR~h4##_~XJAg^-Yu0Q#iIcO*ygLiXIUXkPwn? zx#JgK5u6dW$!+9>X)C{}mZ;q}KS?~UcxkP2oc=wu%H90(0-u zAvN~?d8_+5cVc2Q-7OJWwJ+v~)AnwP6R&pdIU1pKOt*`gEHJV}qH$m5FZsbOKhKl6 zCU40!3nn*2t%*)K8nJL=Z(p2AG_qD~7AZG&v|VxV6_55TP5SDiMB{)=Yt8Tvs^Waz zFDq#c-WR0H<<|OT=h*JfUl5(l6{HPSUvi`l1@#&Bx^oAee%c##f&{spCunjfXNZ2< zSsf@AXDV;bH*ZVk`YT(FeW&*2rua*&wQ}B~gQMyEc`0kmTNW-ERm=>P4`*!fk1D-< zOIlWM$_OuCp;ARg)+2*ak+QsFikcxsUto~4{k=Gd7#eeMDNcJ#5)C+b1%n$KH4J-OEpu@-dln}a6-^d#2L>sPH9}e&a-n1< z5C#|(5Dyfc5wt)K5e_^k1Q?BM8VNO8jYYpMJ2<-*gmG-RHMoQq!E6Ozzc~p72i&GP z(1du_dW1C!XLMks$q!5JiX>x$aKe}=MU_p-H>?oQZ@>`9GNr_>8oPk}aFb)nt_iFf P_Csi}-^7L_LI40egSVse literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/uss/umt/logo.gif b/src/main/webapp/images/egovframework/com/cmm/uss/umt/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e3969d8c08e981604f6d59c4f98b3d5bc80f7b8 GIT binary patch literal 6280 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_base.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_base.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ac0b117b078b91521d56fce710e987ff5c5bdf5 GIT binary patch literal 1040 zcmeH`?^BBb9KfHpsoZf+xenJINgQ!5-bCk)!^n@*j^hX|?DTUt&d)e*iWIX(X^rZs zS;bjeo)(q0_Kdd7+U#kgX6sq2Hf7D0w8+S}j*B zU^e%)wwf7?GB&%avhwY^Mp)kjMnf;JAF@)orFUu$Jojj)0Y%%dS^#y!MFKJlKI*kZ zQHw1Qn411IZL`^N+*sj)55|5B>%no|#P>;SpY!_pVoqNB11FTLtXKV+ui5NYKEH(|9ra$Y*+!JF zyQN+*nM|Xjqshr-tb;iirhQs1e|YZ+izQJ_fd)5RQ%$fA-<8zcPIDxM`Pe}<@N&x~ z5+mk^`}}5)$J5(8$QO1yox`;{*Qv)tf>#FFlQxnZJFbNuV(0)4Rkg|-HqYzvWu;eG z`vyd!_7|N4DYdTBQZ1cc{YWS~byJfdhibz>p$(3d4D822rLx4!eyiKx69maeWp=Am z;Sbc;>-IJWPPdIK6ehjitj4WUsfx>OVkKWMsOtv+bS))rHHx;{? fny&E8D>{NTbE&~4u_ql#Er|S;e|Qd+f+YL_u9n3O literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_cd.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_cd.gif new file mode 100644 index 0000000000000000000000000000000000000000..7503819404024526e6181901806c55f0d80c5933 GIT binary patch literal 239 zcmVrJ``g+7o}HwDfriP+%H`z#&d&S!*Z=kE z|K{fCzP{+0nauzH|NsC0A^8LW000jFEC2ui022Ta000D>@X2QgDb|R|oC=38x?@%aA z3XHC|001ZuX$Aq%mYc?Kr_IsGe7zvW*%XUnbb L&G+VrGgt!vQpOa` literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_folder.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb129763dcea0dc1916b7e934fdce2fd8770c380 GIT binary patch literal 372 zcmZ?wbhEHb6k-r!xXQrr`}gnn@893v9&~1=$&)8f4jw$XxRCo$zt;Bc+vnx5?P^z= zlf`m!n&I9q)y<94Gt(JwZ!g^1B)cGw zMSgXq@QJAg2YNM*9XqzJMr>9F(~2^IHB}=2ujK##G5PiD*Z=>|`G33g|C9Rv?>o0` z+x8y>W-^ck6o0ZXGBD^d=zw&C{KUXE(P4UlhmKVLi6xgzC4402GB{W!L~2f9POOq~ zU`a4ovhaqB%+vz~Nx8dkFFrrvqSej!Kd!MF9@+A*p|PG#+gVIkwX>^RSE$vAT~}-J zl&QL${d#h`nsevP*X5qctE;hW`3hadnOwRm>o;uF<*#vKOczy ZVbwl)>NG2h3j?FtrOQ`>yuBP5tO0@?i&Ovr literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_folderopen.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_folderopen.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5c31102d525076f68a946b1c942687b3ce0da4c GIT binary patch literal 376 zcmZ?wbhEHb6k-r!xXQrr{{8!<#k{|N|2{L*q6oUN3z&7>3 ztO5@mss0m7f-EEygfto)EEhyd@^~j!tvR(XKI+JllL;CPicM^J(Q8*-F>q|Y`M%=j z62+dM{~PKQW!3d-jdOF2Weio>+e{5RD$0%I4VAejFig^&H-8?Vk|_5Crb$NHt5$3C zNei(}Fr8zpvu*n}0e-m}r{#G~uV;mw0cLrC^)_Z0DGV33b1Po(Sa(>zf!o}J1>$0ZL+5}+6JHr`< zs59<2ADD$k0dv7VSPBs!85|83W2YWrU{mu%Hi8cua%jT}X0VKs8iV_@s~cN|4IQK7 zlgwVZniU_ug+va|$vdW0wiwXo*|ykB@De?HwLlJxC0N(!S8i(2E~|v9(_+$dE1QD4 z(6NQB0}P|~wBw2sEI5NRJ4=uuOa5tsBHg+7q6Hu5dC6C#RV~P$5g9p@LhLx0zT1=#$;61Slp z{b$G3Cq5tj+aRnLm}j%g>meJip=3z4fBc6cC?X}jzdC>`>6~1Hyp7=2MId*?rsV_o z0IrGVmN!ePo4-uR0e|!Ywb#GtFWpGfTw^6849G2ChCzJ@XGmPPTIixuZ>)mYL-;TxSo$E#hk&Ui;z3lE682RvPTxRDt7BWAb0m{VSvJ=cgb~yz@9V5_O(cZFI)`$`ISCTU`DjBw zyS8egLnhurnWUI?_PR)I7%9~+D!e_EXKRJ1r3zig4{K%xOvx2|%18b>$me4+u^7Xq I@p#1QKgm$!SpWb4 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_imgfolder.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_imgfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6d880347f518bbd1239f2af3e3059ccb1e674e3 GIT binary patch literal 622 zcmZ?wbhEHb6k-r!c*el+{{8!<#k_3u{{L^wI(YEl_U+q$|Ni~|@MghDua+)ZG%JH? z-TL((7IrU~Kj+DlCo5O3lwA7%*s)`qHgDa!eb@j0OBdvEG*;)$$zqw8!`56^^k}p5 z_Ya-7_UFu)+TYb$+uz;v|9Z=kBA(5S(&rbc{eRsuGoA72{gy`u15VE{KDj_~ajDeg z37uzVnk*{dIyud7L!HE&S<`mx+V>;JX-$>L)2C0b?{GLaORBB0{O{F*<)!?K3%Nf$ zsam#d+5aDt|39h!f4lVm`_9*|U#E2~`~QE=wr$&f|N3)mmgIjBn8`2{fZ|UUMg|5? z1|5)NL2<&se!9W4skx=K)lgW7o1c@{KvtWf%~RNQ+VpAif|G?@nV2{@=DW(VPUdzM za9Zso;A-yDro->*#N*D+IV1gO z@j_>Lk*uD81ih2?D)vTMXLcNRa$tCI39M1!eiVTiL RukLUjIIv`XD-$DwH2~IF)06-J literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_join.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_join.gif new file mode 100644 index 0000000000000000000000000000000000000000..34dd47610a5d7c3580dedc342683559bf77abce2 GIT binary patch literal 69 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFv;}DH=KUEdfpt3ORshA Wx&LIzk};W<vKC_i literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_joinbottom.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_joinbottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..48b81c80a9e25f6f29e2614aaa33bdf4a4d2881b GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Tx&LIzy5lkJS?4l0Mh0sDgH;v` literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_line.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_line.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a259eea00c330eee85fb18aa64e2e232d5410b1 GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Txqp6J8?ND(@^elGBZD;ng_;%{ literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_minus.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d212a97ae0d8f83aa39836c5a85d442f8602553 GIT binary patch literal 86 zcmZ?wbhEHb6k-r!n8?h~)YR0_(7?dJ@c;jR#h)yU3=GT+IzTQ^R)~RtNqvreafzu-gC3m_gnAtsyGG)YXIxA8@>Pl literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_musicfolder.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_musicfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..f620789feb3c4b1222909d255f51aeaa81faefb6 GIT binary patch literal 633 zcmZ?wbhEHb6k-r!c;?CQ|HtI_d&1|;T=V|@`}l;_ON)8`KdAow`}didCU@_DGciej z^5n_Eg9rbA>8q=`<>xo+u1K?DiJW3#)C#D)aIvB91 zfNOew_W$>t|Ni|e&CM||NI81&?f=`QuV26Z|9{T0S(4kfZTk-bGZ}^gQ2fcl$iU#q zpaXI&C{7sIuQhl!HMg)hmVUg|Ta9<%L zB*!hNW#eGnvfRbP!^OqjoL^Um#e}(8(%psk*bWzm73wnj%>wQWm-x821i3D`7>P8w z-n-|h>B!0H=xU{*=yrFzi#XF`MLGYlFIxARNO@hDtWaBUIiPTOMfV7_}lvsu=hh(Z;&NfL@qDJM29Jw4q( Jn2m+O8UP#&8=e3F literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_nolines_plus.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_nolines_plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..f258ce211a0a19c2ecbcb11170b9a8b35ae2436c GIT binary patch literal 870 zcmZ?wbhEHb6k-r!_|DAG)YR0_(7-SXMnhmkhJfNv7DfgJW(FOQ??HKjfy0@BokPZB z!-9j&9Ku>LGYlFIxARNO@hAj7*xx83m?l#Y_`t1M|Ba{La?4kwX3c6}c&WZ`PygnpJ?rkDyZry# zum9<}^Zxw(U)#BD%KlHsjvf2=@89j`-!lsq`N~Rn2+cXw3F)`cNXo|{M zwn^yh*lA;L&u+56RaJ{?r=8t#bK_Gj;^%BG95Yu?zS_*U>z2K_g$4ipCbgRvpFHC> zdg-Vu`PTd?H;48ok#7ReIGiR-xW0J7!Dc}Y2`z_&_QUOboFWD+3JrbT68dFMM=k~^ HFjxZso}Jb2 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_plus.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..b2c997233b3f7b0fd56c4637c2c20aaf0d47bae7 GIT binary patch literal 89 zcmZ?wbhEHb6k-r!n8?J?(9poZ!0`Y7e;}#&lZBCifr&u}$Og&^0ohtp^czmUT|IBk qf~en0XVhiRX3S&EJ6Nfhb5kY1Re>f2&SBJ{1ibDv2XRV|Dor_^WyXB*=Ku>91RN!zTl3yBbIVx z(geQ%ggTf9umTL|phE>VfGW0dOs3%S#nN%*vE*Enb)jBp9@2x>3JQh1R%p`NKy3y_ zU3YW4U}Q`#nViy?7fYC*mTrH-X7dccKo2mX(s=~L^<(g+r59TS6iqRkj2so5zx+t0 zo0(kzz6vnCo~H$RBRBH)J1GX_SNvfE*Z~wa*h)-iiw*S>Xcn2f6(IYmN~W^Xa^K5L zAex2;PwPjN7>)J4^$VxEb>L;|NOI2mP7BNcjAM&;D`d1LQE7F1uO6=7d%+o2q9~a& z^=HF5f%;G1kxWBiba`M*MXx~Y7eUYLsomU#>SdCrPUj>1OFJ?by71aqM(w;SNCnf+=v){(2QoAPYLn^Co4umpI zZBr+TQf2|-$OSB}T&RT}4J2kXT)9=qY~~&gO+?Wfm<{S%x+=cSPXj28urVYrD5gv> z1x&7r!xs%3p=C(_v_;&ng?=lfkaLrYG$*dMwTX12GNmWsd~wr2�PO#XTOK|5d)& z!4vms05e%S6&9cUdCfvAM{4}`Ll&Au0|4ZI{x#q|zXU~)a%9_I{Pz zF8K#`U8CUK$V+kftzmD{56XRA*JOAEn0*=T9qYDGam8&jKK%R;2frNVs?fakAt(1x zVoBrOZf<9tZI{^DPQFJAYw$bp-YzSMPP;$X(ujj4M^>&|RhjNU%J*O1o>2EXGlIU? f&E;Ccsie~d>oCoZ literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/menu_trash.gif b/src/main/webapp/images/egovframework/com/cmm/utl/menu_trash.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfa0f000e1ed3b61c8737fcfbef4b78035a6abe7 GIT binary patch literal 1051 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/ui-icons_555555_256x240.png b/src/main/webapp/images/egovframework/com/cmm/utl/ui-icons_555555_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..7009bf752f54a13850f5cd3c2956b1c4469b5c65 GIT binary patch literal 6988 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 DJqb9i literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/cmm/utl/ui-icons_777777_256x240.png b/src/main/webapp/images/egovframework/com/cmm/utl/ui-icons_777777_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..8e26ee4fd8c3d9f55b7495bd708181b8558c861c GIT binary patch literal 6999 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/sym/cal/bu_icon_carlendar.gif b/src/main/webapp/images/egovframework/com/sym/cal/bu_icon_carlendar.gif new file mode 100644 index 0000000000000000000000000000000000000000..45e228ce01e18e02bad9cff9707d6efc446b02ac GIT binary patch literal 243 zcmZ?wbhEHb6l4%$I3mI@Z^z5+XFgtf{PXCIuk*IQy!ZCc{WpK-?Rd5Q%!h4fKCV3Y z=H8pXmqD`MRvvt7AH2>nZtVf1{_OLAAYdQ_6o0ZXGBAiR=ztW0>||gqP*Ckl z$qbq}V^R8(eIKmdf_?qJ+uCNm{ckVF#i7a6YBk?*g^>f!fB!w3Bx2{0 zpkyR`0fR35AViJ9U;_;n%~?_^C)_N|vXn8F%-uZ9vxLHeVz@3yPlMnPqV8172Lm z;=&a?`ZOY_CvMY>4A7ja)UWnRyQK(97t8_OD z!13B@V`8yue5oZjQj2WE9=f%ShCx9VXm#RQBZar{KgOlseLW&Wa=m8MHz5PBWPD(3 zarfQ9`oQqi>GqZW$<5yBM<3rT$Mnn5|p- zAFlTtZO^{_E)QPMjJ5{H*FFzEJ2|+y-aT6V)mr(sJ<&h@<<9w$qpjJ+4>xu$oV>p~ madB;{JDd9;7b}RZ~yhZ2iAVL>Qp#o`o=KUWUSbp#9{N|bGdFFj9=LSkWBQ3O#e&q>~ zq`xFR5@bn4ytCK4hgvUp@B7Gfnv>QNCU5fUXa5|4|@q(Z8sM(XGz zV=^IAG9v>rlMA_$qX1NZ0tIbIJtjm5voagA$3SEvEXram9`jLDVO3UR^`L{hCTz-P zYz}s4Wfyj3404PFUx0xw_<;~=7z}Jc0}IU_QX)sFh>3V8!&qdhq9*Dg6f96Q6*Do1 zZji!VaTPalXoC}=iEbDHJ#S(K3@Ox43e=)+iKW@-*c zAr~xAR5x`GgJU1yh3l|5Yz;HQEOf&TaDrec1Z#kSG&(^GJTMs8fc98U+(sEW!m%qD z34Iug%;JTJtp|mu#I{0rx&SyHTTM+2cBwD1qP1%EPY$Ih5kO3N<@GO;rx9~qk z@lQ5Gl&9k{BfbgBy`no%sjP C@1qm| literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/sym/cal/icon_pre_month.gif b/src/main/webapp/images/egovframework/com/sym/cal/icon_pre_month.gif new file mode 100644 index 0000000000000000000000000000000000000000..a6e96d079492ef0fa85c5b51cd586d4ac1f1dab5 GIT binary patch literal 289 zcmZ?wbhEHb6lD-)I3maJ|IC>)|3Q$!cxGDK%$Y#$nKNl1?inD5!5Ap^-x$RHZ#)x7 z0@a*h0J76&8qfTnHuH?J@l4~i{|sp$Q)U8nr2$O>f-}ZIBmVzqU|>-E$->CMAjhBs zWCLv!Wnf^Pw?Mt`$%&~NQWeV&EPKJ(t^FqH-nVlaYN1mn>7+Jj7)|NwQ`hpan&FTZ zz|>P>;nce6WQvs#Gk>sRg?P80`edtIAug|H7dGkp&N1C5mOlp~+tg*8MtE~7kaanI4C6T34;y%uLykZ<; VTa=tP8<_T3$|W5-xJ8k{8UQ}|aZLaK literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/sym/cal/icon_pre_year.gif b/src/main/webapp/images/egovframework/com/sym/cal/icon_pre_year.gif new file mode 100644 index 0000000000000000000000000000000000000000..555296f3b0deea15203c5768141f263ec02b0393 GIT binary patch literal 1005 zcmcIj%}bPV5T0ylH=(vR1P_|ZdWa~ACc;qsNT{Tf;3X)uh&f1snSt~ni+K^vwG|G_d^M+4;>g&-2Xt9`8QZeB^8uRngBZ zAqvT_kQ@bMg@{tAK+EiKEMmtVR6_RW`tSjh8^Gp!B7a+00U`sf);pSFt7pbv7ES#GIE4t zS1=O#Fcz7`3lUon3Q>t|h3;ela6Gn}m>BF5Ut-CL)F7L%2i@34!XO|6G&aF;;zA{}i zzxVIgJv%0*`#QECefVtBIt~tuzUVF=NT1BN4{aSkwL0;7Y;Lso{^R_I+4MkRBlY0r zO1Ak@+n2ZH(#~RYXX~LWSD!DYYa5?zDNlW`Z>sHRqfc{}FBI$V_OAUJY|IodR@@$` z{?qWZGj*-~`p4hv`}@Z4wAS>r%nTNDb-A{RbNBk2mL{{i&ul*bW^uN%>(=3s;r`X- T${X9>|Cq`*y?fM^PEpH0Nb#vD literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/uat/uia/google-login.png b/src/main/webapp/images/egovframework/com/uat/uia/google-login.png new file mode 100644 index 0000000000000000000000000000000000000000..efe535d34ffa1571f73d2d4a5ea4f81555efc152 GIT binary patch literal 20530 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/uat/uia/kakao-login.png b/src/main/webapp/images/egovframework/com/uat/uia/kakao-login.png new file mode 100644 index 0000000000000000000000000000000000000000..31d6daadecd735d5334d82054ae0f47aff0f2d0d GIT binary patch literal 3582 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/uat/uia/login_tit.png b/src/main/webapp/images/egovframework/com/uat/uia/login_tit.png new file mode 100644 index 0000000000000000000000000000000000000000..f3f80557a1379997408495c720727aea1cb5cd92 GIT binary patch literal 4386 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/egovframework/com/uat/uia/naver-login.png b/src/main/webapp/images/egovframework/com/uat/uia/naver-login.png new file mode 100644 index 0000000000000000000000000000000000000000..1e7bfe69da5271bb8b17112e81626f8ff3f0c71a GIT binary patch literal 11892 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp new file mode 100644 index 00000000..a8c362b1 --- /dev/null +++ b/src/main/webapp/index.jsp @@ -0,0 +1,2 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> + \ No newline at end of file diff --git a/src/main/webapp/js/egovframework/com/cmm/fms/EgovMultiFile.js b/src/main/webapp/js/egovframework/com/cmm/fms/EgovMultiFile.js new file mode 100644 index 00000000..0aec6ece --- /dev/null +++ b/src/main/webapp/js/egovframework/com/cmm/fms/EgovMultiFile.js @@ -0,0 +1,220 @@ +/** + * Convert a single file-input element into a 'multiple' input list + * Usage: + * + * 1. Create a file input element (no name) + * eg. + * + * 2. Create a DIV for the output to be written to + * eg.
    + * + * 3. Instantiate a MultiSelector object, passing in the DIV and an (optional) maximum number of files + * eg. var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 3 ); + * + * 4. Add the first element + * eg. multi_selector.addElement( document.getElementById( 'first_file_element' ) ); + */ + +function MultiSelector( list_target, max , file_label ){ + + // Where to write the list + this.list_target = list_target; + // How many elements? + this.count = 0; + // How many elements? + this.id = 0; + + this.update_count = 0; + // Is there a maximum? + if( max ){ + this.max = max; + } else { + this.max = -1; + }; + this.file_label = file_label + + this.current_count = 0; + //console.log('update!!!!!!'); + /** + * Add a new file input element + */ + _base = this; + this.addElement = function( element ){ + + //console.log('update_count>'+this.update_count); + //console.log('max>'+this.max); + //console.log('count>'+this.count); + + // Make sure it's a file input element + if( element.tagName == 'INPUT' && element.type == 'file' ){ + + //console.log('check step addElement start'); + + // Element name -- what number am I? + element.name = 'file_' + this.id; + element.id = 'egovfile_' + this.id; + element.class = ""; + + //document.getElementById(this.file_label).setAttribute("for","egovfile_"+this.id); + //console.log('file_label>'+element.name); + + this.id++; + + // Add reference to this object + element.multi_selector = this; + + // What to do when a file is selected + element.onchange = function(){ + + var sErrMsg = "첨부파일 갯수는 ["+_base.max+"]이상 첨부할 수 없습니다!"; + if( _base.update_count > 0 ){ + if( _base.count > (_base.max-_base.update_count) ){ + element.value = ""; + alert(sErrMsg); return; + } + } + + if( _base.max > 0 && _base.count > _base.max ){ + element.value = ""; + alert(sErrMsg); return; + } + + // New file input + var new_element = document.createElement( 'input' ); + new_element.type = 'file'; + + // Add new element + this.parentNode.insertBefore( new_element, this ); + + // Apply 'update' to element + this.multi_selector.addElement( new_element ); + + // Update list + this.multi_selector.addListRowNew( this ); + + // Hide this: we can't use display:none because Safari doesn't like it + this.style.position = 'absolute'; + this.style.left = '-1000px'; + this.style.top = '-1000px'; + this.style.display = 'none'; + this.style.visibility = 'hidden'; + this.style.width = '0'; + this.style.height = '0'; + this.style.overflow = 'hidden'; + + new_element.onkeypress = function(){ + return false; + }; + + }; + // If we've reached maximum number, disable input element + if( this.max != -1 && this.count >= this.max ){ + //element.disabled = true; + }; + + // File element counter + this.count++; + // Most recent element + this.current_element = element; + + } else { + // This can only be applied to file input elements! + alert( 'Error: not a file input element' ); + }; + + }; + + /** + * Add a new row to the list of files + */ + this.addListRowNew = function( element ){ + + // Row div + var new_row = document.createElement( 'div' ); + new_row.className = "file_add"; + + // Delete button + var new_row_button = document.createElement( 'input' ); + new_row_button.type = 'button'; + new_row_button.value = 'Delete'; + new_row_button.setAttribute("style", "margin: 1px; padding: 3px;"); + //new_row_button.style.top = '3px'; + + // References + new_row.element = element; + + // Delete function + new_row_button.onclick= function(){ + + // Remove element from form + this.parentNode.element.parentNode.removeChild( this.parentNode.element ); + + // Remove this row from the list + this.parentNode.parentNode.removeChild( this.parentNode ); + + // Decrement counter + this.parentNode.element.multi_selector.count--; + + // Re-enable input element (if it's disabled) + this.parentNode.element.multi_selector.current_element.disabled = false; + + // which nixes your already queued uploads + return false; + }; + // Set row value + //new_row.innerHTML = element.value; + new_row.innerHTML = ""+element.value+"  "; + + // Add button + new_row.appendChild( new_row_button ); + + // Add it to the list + this.list_target.appendChild( new_row ); + }; + + /** + * Add a new row to the list of files + */ + this.addListRow = function( element ){ + + // Row div + var new_row = document.createElement( 'div' ); + + // Delete button + var new_row_button = document.createElement( 'input' ); + new_row_button.type = 'button'; + new_row_button.value = 'Delete'; + + // References + new_row.element = element; + + // Delete function + new_row_button.onclick= function(){ + + // Remove element from form + this.parentNode.element.parentNode.removeChild( this.parentNode.element ); + + // Remove this row from the list + this.parentNode.parentNode.removeChild( this.parentNode ); + + // Decrement counter + this.parentNode.element.multi_selector.count--; + + // Re-enable input element (if it's disabled) + this.parentNode.element.multi_selector.current_element.disabled = false; + + // which nixes your already queued uploads + return false; + }; + + // Set row value + new_row.innerHTML = element.value; + + // Add button + new_row.appendChild( new_row_button ); + + // Add it to the list + this.list_target.appendChild( new_row ); + }; + +}; \ No newline at end of file diff --git a/src/main/webapp/js/egovframework/com/cmm/jquery-1.12.4.min.js b/src/main/webapp/js/egovframework/com/cmm/jquery-1.12.4.min.js new file mode 100644 index 00000000..e8364758 --- /dev/null +++ b/src/main/webapp/js/egovframework/com/cmm/jquery-1.12.4.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="
    ",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; +}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="
    a",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:l.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?""!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("