두번째 커밋

master
mjkhan21 2 years ago
parent e017e6696a
commit ebf856d7ae

@ -1,234 +1,234 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>cokr.xit</groupId> <groupId>cokr.xit</groupId>
<artifactId>xit-file</artifactId> <artifactId>xit-file</artifactId>
<version>23.04.01</version> <version>23.04.01</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>xit-file</name> <name>xit-file</name>
<url>http://maven.apache.org</url> <url>http://maven.apache.org</url>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target> <maven.compiler.target>${java.version}</maven.compiler.target>
<spring.maven.artifact.version>5.3.20</spring.maven.artifact.version> <spring.maven.artifact.version>5.3.20</spring.maven.artifact.version>
<org.egovframe.rte.version>4.1.0</org.egovframe.rte.version> <org.egovframe.rte.version>4.1.0</org.egovframe.rte.version>
</properties> </properties>
<repositories> <repositories>
<repository> <repository>
<id>mvn2s</id> <id>mvn2s</id>
<url>https://repo1.maven.org/maven2/</url> <url>https://repo1.maven.org/maven2/</url>
<releases> <releases>
<enabled>true</enabled> <enabled>true</enabled>
</releases> </releases>
<snapshots> <snapshots>
<enabled>true</enabled> <enabled>true</enabled>
</snapshots> </snapshots>
</repository> </repository>
<repository> <repository>
<id>egovframe</id> <id>egovframe</id>
<url>http://maven.egovframe.kr:8080/maven/</url> <url>http://maven.egovframe.kr:8080/maven/</url>
<releases> <releases>
<enabled>true</enabled> <enabled>true</enabled>
</releases> </releases>
<snapshots> <snapshots>
<enabled>false</enabled> <enabled>false</enabled>
</snapshots> </snapshots>
</repository> </repository>
<repository> <repository>
<id>egovframe2</id> <id>egovframe2</id>
<url>https://www.egovframe.go.kr/maven/</url> <url>https://www.egovframe.go.kr/maven/</url>
<releases> <releases>
<enabled>true</enabled> <enabled>true</enabled>
</releases> </releases>
<snapshots> <snapshots>
<enabled>false</enabled> <enabled>false</enabled>
</snapshots> </snapshots>
</repository> </repository>
<!-- <!--
<repository> <repository>
<id>maven-releases</id> <id>maven-releases</id>
<url>http://xit.xit-nexus.com:8081/repository/maven-releases/</url> <url>http://xit.xit-nexus.com:8081/repository/maven-releases/</url>
<snapshots> <snapshots>
<enabled>false</enabled> <enabled>false</enabled>
</snapshots> </snapshots>
<releases> <releases>
<enabled>true</enabled> <enabled>true</enabled>
</releases> </releases>
</repository> </repository>
<repository> <repository>
<id>maven-snapshots</id> <id>maven-snapshots</id>
<url>http://xit.xit-nexus.com:8081/repository/maven-snapshots/</url> <url>http://xit.xit-nexus.com:8081/repository/maven-snapshots/</url>
<snapshots> <snapshots>
<enabled>true</enabled> <enabled>true</enabled>
</snapshots> </snapshots>
<releases> <releases>
<enabled>false</enabled> <enabled>false</enabled>
</releases> </releases>
</repository> </repository>
--> -->
</repositories> </repositories>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>cokr.xit</groupId> <groupId>cokr.xit</groupId>
<artifactId>xit-foundation</artifactId> <artifactId>xit-foundation</artifactId>
<version>23.04.01</version> <version>23.04.01</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mariadb.jdbc</groupId> <groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId> <artifactId>mariadb-java-client</artifactId>
<version>2.7.2</version> <version>2.7.2</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
<defaultGoal>install</defaultGoal> <defaultGoal>install</defaultGoal>
<directory>${basedir}/target</directory> <directory>${basedir}/target</directory>
<finalName>${project.artifactId}-${project.version}</finalName> <finalName>${project.artifactId}-${project.version}</finalName>
<resources> <resources>
<resource><directory>${basedir}/src/main/resources</directory></resource> <resource><directory>${basedir}/src/main/resources</directory></resource>
</resources> </resources>
<testResources> <testResources>
<testResource><directory>${basedir}/src/test/resources</directory></testResource> <testResource><directory>${basedir}/src/test/resources</directory></testResource>
<testResource><directory>${basedir}/src/main/resources</directory></testResource> <testResource><directory>${basedir}/src/main/resources</directory></testResource>
</testResources> </testResources>
<pluginManagement> <pluginManagement>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.apache.tomcat.maven</groupId> <groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId> <artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version> <version>2.2</version>
<configuration> <configuration>
<port>80</port> <port>80</port>
<path>/</path> <path>/</path>
<systemProperties> <systemProperties>
<JAVA_OPTS>-Xms256m -Xmx768m -XX:MaxPermSize=256m</JAVA_OPTS> <JAVA_OPTS>-Xms256m -Xmx768m -XX:MaxPermSize=256m</JAVA_OPTS>
</systemProperties> </systemProperties>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<configuration> <configuration>
<source>1.8</source> <source>1.8</source>
<target>1.8</target> <target>1.8</target>
<encoding>UTF-8</encoding> <encoding>UTF-8</encoding>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.codehaus.mojo</groupId> <groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId> <artifactId>hibernate3-maven-plugin</artifactId>
<version>2.1</version> <version>2.1</version>
<configuration> <configuration>
<components> <components>
<component> <component>
<name>hbm2ddl</name> <name>hbm2ddl</name>
<implementation>annotationconfiguration</implementation> <implementation>annotationconfiguration</implementation>
</component> </component>
</components> </components>
</configuration> </configuration>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.hsqldb</groupId> <groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId> <artifactId>hsqldb</artifactId>
<version>2.3.2</version> <version>2.3.2</version>
</dependency> </dependency>
</dependencies> </dependencies>
</plugin> </plugin>
<!-- EMMA --> <!-- EMMA -->
<plugin> <plugin>
<groupId>org.codehaus.mojo</groupId> <groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId> <artifactId>emma-maven-plugin</artifactId>
<version>1.0-alpha-3</version> <version>1.0-alpha-3</version>
</plugin> </plugin>
<!-- PMD manven plugin --> <!-- PMD manven plugin -->
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId> <artifactId>maven-pmd-plugin</artifactId>
<version>3.1</version> <version>3.1</version>
</plugin> </plugin>
</plugins> </plugins>
</pluginManagement> </pluginManagement>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version> <version>3.3.0</version>
<configuration> <configuration>
<includes> <includes>
<include>**/*.class</include> <include>**/*.class</include>
</includes> </includes>
</configuration> </configuration>
</plugin> </plugin>
<!-- EMMA --> <!-- EMMA -->
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0</version> <version>3.0.0</version>
<configuration> <configuration>
<skipTests>true</skipTests> <skipTests>true</skipTests>
<reportFormat>xml</reportFormat> <reportFormat>xml</reportFormat>
<excludes> <excludes>
<exclude>**/Abstract*.java</exclude> <exclude>**/Abstract*.java</exclude>
<exclude>**/*Suite.java</exclude> <exclude>**/*Suite.java</exclude>
</excludes> </excludes>
<includes> <includes>
<include>**/*Test.java</include> <include>**/*Test.java</include>
</includes> </includes>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.codehaus.mojo</groupId> <groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId> <artifactId>emma-maven-plugin</artifactId>
<inherited>true</inherited> <inherited>true</inherited>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId> <artifactId>maven-source-plugin</artifactId>
<version>2.2</version> <version>2.2</version>
<executions> <executions>
<execution> <execution>
<id>attach-sources</id> <id>attach-sources</id>
<goals> <goals>
<goal>jar</goal> <goal>jar</goal>
</goals> </goals>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<!-- Javadoc --> <!-- Javadoc -->
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId> <artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version> <version>2.9.1</version>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
<!-- Nexus deploy --> <!-- Nexus deploy -->
<distributionManagement> <distributionManagement>
<snapshotRepository> <snapshotRepository>
<id>maven-snapshot</id> <id>maven-snapshot</id>
<url>http://xit.xit-nexus.com:8081/repository/maven-snapshots/</url> <url>http://xit.xit-nexus.com:8081/repository/maven-snapshots/</url>
</snapshotRepository> </snapshotRepository>
<repository> <repository>
<id>maven-release</id> <id>maven-release</id>
<url>http://xit.xit-nexus.com:8081/repository/maven-releases/</url> <url>http://xit.xit-nexus.com:8081/repository/maven-releases/</url>
</repository> </repository>
</distributionManagement> </distributionManagement>
<!-- Nexus deploy --> <!-- Nexus deploy -->
</project> </project>

File diff suppressed because it is too large Load Diff

@ -1,229 +1,229 @@
package cokr.xit.base.file; package cokr.xit.base.file;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.util.Date; import java.util.Date;
import java.util.function.Consumer; import java.util.function.Consumer;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.util.ResourceUtils; import org.springframework.util.ResourceUtils;
import cokr.xit.foundation.AbstractComponent; import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.StringMap; import cokr.xit.foundation.data.StringMap;
/** /**
* @author mjkhan * @author mjkhan
*/ */
public class XLS extends AbstractComponent { public class XLS extends AbstractComponent {
/**엑셀 파일(*.xlsx)의 mime type */ /**엑셀 파일(*.xlsx)의 mime type */
public static final String MIME_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; public static final String MIME_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
/** (row) Functional interface /** (row) Functional interface
* @author mjkhan * @author mjkhan
* @param <E> (row) * @param <E> (row)
*/ */
@FunctionalInterface @FunctionalInterface
public static interface Writer<E> { public static interface Writer<E> {
/** (row) . /** (row) .
* @param sheet * @param sheet
* @param element (row) * @param element (row)
* @param index . 0 * @param index . 0
*/ */
void write(XSSFSheet sheet, E element, int index); void write(XSSFSheet sheet, E element, int index);
} }
/** . /** .
* @param cell * @param cell
* @return * @return
*/ */
public static Object getValue(Cell cell) { public static Object getValue(Cell cell) {
switch (cell.getCellType()) { switch (cell.getCellType()) {
case STRING: return cell.getStringCellValue(); case STRING: return cell.getStringCellValue();
case NUMERIC: return cell.getNumericCellValue(); case NUMERIC: return cell.getNumericCellValue();
case BOOLEAN: return cell.getBooleanCellValue(); case BOOLEAN: return cell.getBooleanCellValue();
case BLANK: return ""; case BLANK: return "";
default: return null; default: return null;
} }
} }
/** . /** .
* @param cell Cell * @param cell Cell
* @param value * @param value
*/ */
public static void setValue(Cell cell, Object value) { public static void setValue(Cell cell, Object value) {
if (isEmpty(value)) { if (isEmpty(value)) {
cell.setCellValue(""); cell.setCellValue("");
return; return;
} }
if (value instanceof String) { if (value instanceof String) {
cell.setCellValue((String)value); cell.setCellValue((String)value);
} else if (value instanceof Number) { } else if (value instanceof Number) {
Number number = (Number)value; Number number = (Number)value;
cell.setCellValue(number.doubleValue()); cell.setCellValue(number.doubleValue());
} else if (value instanceof Date) { } else if (value instanceof Date) {
cell.setCellValue((Date)value); cell.setCellValue((Date)value);
} else if (value instanceof Boolean) { } else if (value instanceof Boolean) {
Boolean b = (Boolean)value; Boolean b = (Boolean)value;
cell.setCellValue(b.booleanValue()); cell.setCellValue(b.booleanValue());
} else } else
throw new IllegalArgumentException(value.getClass().getName() + ": " + value); throw new IllegalArgumentException(value.getClass().getName() + ": " + value);
} }
private StringMap<CellStyle> styles; private StringMap<CellStyle> styles;
public void setValue(String key, Cell cell, Object value) { public void setValue(String key, Cell cell, Object value) {
setValue(cell, value); setValue(cell, value);
if (styles == null) if (styles == null)
styles = new StringMap<>(); styles = new StringMap<>();
CellStyle style = styles.get(key); CellStyle style = styles.get(key);
if (style == null) if (style == null)
styles.put(key, style = cell.getCellStyle()); styles.put(key, style = cell.getCellStyle());
cell.setCellStyle(style); cell.setCellStyle(style);
} }
/** String . /** String .
* @param cell * @param cell
* @return * @return
*/ */
public static String getString(Cell cell) { public static String getString(Cell cell) {
Object value = getValue(cell); Object value = getValue(cell);
return isEmpty(value) ? "" return isEmpty(value) ? ""
: value instanceof String ? (String)value : value instanceof String ? (String)value
: value.toString(); : value.toString();
} }
/** Number . /** Number .
* @param cell * @param cell
* @return * @return
* <ul><li> </li> * <ul><li> </li>
* <li> 0</li> * <li> 0</li>
* </ul> * </ul>
*/ */
public static Number getNumber(Cell cell) { public static Number getNumber(Cell cell) {
Object value = getValue(cell); Object value = getValue(cell);
return isEmpty(value) ? 0 return isEmpty(value) ? 0
: value instanceof Number ? (Number)value : value instanceof Number ? (Number)value
: value instanceof String ? Double.parseDouble((String)value) : value instanceof String ? Double.parseDouble((String)value)
: 0; : 0;
} }
/** Boolean . /** Boolean .
* @param cell * @param cell
* @return * @return
* <ul><li> Boolean</li> * <ul><li> Boolean</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
public static Boolean getBoolean(Cell cell) { public static Boolean getBoolean(Cell cell) {
Object value = getValue(cell); Object value = getValue(cell);
return isEmpty(value) ? false return isEmpty(value) ? false
: value instanceof Boolean ? (Boolean)value : value instanceof Boolean ? (Boolean)value
: Boolean.valueOf(value.toString()); : Boolean.valueOf(value.toString());
} }
private XSSFWorkbook workbook; private XSSFWorkbook workbook;
/**FileInputStream . /**FileInputStream .
* @param input FileInputStream * @param input FileInputStream
* @return XLS * @return XLS
*/ */
public XLS load(FileInputStream input) { public XLS load(FileInputStream input) {
try { try {
workbook = new XSSFWorkbook(input); workbook = new XSSFWorkbook(input);
return this; return this;
} catch (Exception e) { } catch (Exception e) {
throw applicationException(e); throw applicationException(e);
} }
} }
/** . /** .
* @param path . classpath:..., file:... * @param path . classpath:..., file:...
* @return XLS * @return XLS
*/ */
public XLS load(String path) { public XLS load(String path) {
try (FileInputStream input = new FileInputStream(ResourceUtils.getFile(path))) { try (FileInputStream input = new FileInputStream(ResourceUtils.getFile(path))) {
return load(input); return load(input);
} catch (Exception e) { } catch (Exception e) {
throw applicationException(e); throw applicationException(e);
} }
} }
/** . /** .
* @return * @return
*/ */
public XSSFWorkbook getWorkbook() { public XSSFWorkbook getWorkbook() {
return ifEmpty(workbook, () -> workbook = new XSSFWorkbook()); return ifEmpty(workbook, () -> workbook = new XSSFWorkbook());
} }
/** . /** .
* @param index . 0 * @param index . 0
* @return * @return
*/ */
public XSSFSheet getWorksheet(int index) { public XSSFSheet getWorksheet(int index) {
int count = getWorkbook().getNumberOfSheets(); int count = getWorkbook().getNumberOfSheets();
return index < count ? workbook.getSheetAt(index) : workbook.createSheet(); return index < count ? workbook.getSheetAt(index) : workbook.createSheet();
} }
/** . /** .
* @param sheetIndex . 0 * @param sheetIndex . 0
* @param reader row Function * @param reader row Function
* @return XLS * @return XLS
*/ */
public XLS read(int sheetIndex, Consumer<Row> reader) { public XLS read(int sheetIndex, Consumer<Row> reader) {
if (reader == null) return this; if (reader == null) return this;
XSSFSheet worksheet = getWorksheet(sheetIndex); XSSFSheet worksheet = getWorksheet(sheetIndex);
for (Row row: worksheet) { for (Row row: worksheet) {
reader.accept(row); reader.accept(row);
} }
return this; return this;
} }
/** dataset row . /** dataset row .
* @param sheetIndex . 0 * @param sheetIndex . 0
* @param dataset * @param dataset
* @param writer dataset row Function * @param writer dataset row Function
* @return XLS * @return XLS
*/ */
public <E, T extends Iterable<E>> XLS write(int sheetIndex, T dataset, Writer<E> writer) { public <E, T extends Iterable<E>> XLS write(int sheetIndex, T dataset, Writer<E> writer) {
XSSFSheet worksheet = getWorksheet(sheetIndex); XSSFSheet worksheet = getWorksheet(sheetIndex);
if (!isEmpty(dataset)) { if (!isEmpty(dataset)) {
int index = -1; int index = -1;
for (E e: dataset) { for (E e: dataset) {
++index; ++index;
writer.write(worksheet, e, index); writer.write(worksheet, e, index);
} }
} }
if (styles != null) { if (styles != null) {
styles.clear(); styles.clear();
styles = null; styles = null;
} }
return this; return this;
} }
/** . /** .
* @param path * @param path
* @return * @return
*/ */
public File write(String path) { public File write(String path) {
if (workbook == null) if (workbook == null)
throw new NullPointerException("No workbook to write"); throw new NullPointerException("No workbook to write");
try (FileOutputStream out = new FileOutputStream(path);) { try (FileOutputStream out = new FileOutputStream(path);) {
workbook.write(out); workbook.write(out);
return new File(path); return new File(path);
} catch (Exception e) { } catch (Exception e) {
throw applicationException(e); throw applicationException(e);
} }
} }
} }

@ -1,211 +1,211 @@
package cokr.xit.base.file.dao; package cokr.xit.base.file.dao;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper; import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.base.file.FileInfo; import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.FileQuery; import cokr.xit.base.file.service.FileQuery;
import cokr.xit.foundation.component.AbstractMapper; import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
/** DAO /** DAO
* <ul><li>FileMapper file-mapper.xml .</li> * <ul><li>FileMapper file-mapper.xml .</li>
* <li> SQL .</li> * <li> SQL .</li>
* </ul> * </ul>
* <p><b> </b> * <p><b> </b>
* <p> SQL . * <p> SQL .
* <pre>{@code <sql id="fileDirs"> * <pre>{@code <sql id="fileDirs">
* SELECT INF_TYPE * SELECT INF_TYPE
* , CONCAT('D://workspace/xit/base/files/', DIR, TO_CHAR(CURRENT_DATE, 'YYYY/MM/DD/')) DIR * , CONCAT('D://workspace/xit/base/files/', DIR, TO_CHAR(CURRENT_DATE, 'YYYY/MM/DD/')) DIR
* FROM ( * FROM (
* SELECT '00' INF_TYPE, 'attachment/' DIR UNION * SELECT '00' INF_TYPE, 'attachment/' DIR UNION
* SELECT '10' INF_TYPE, 'document/' DIR UNION * SELECT '10' INF_TYPE, 'document/' DIR UNION
* SELECT '20' INF_TYPE, 'article/' DIR * SELECT '20' INF_TYPE, 'article/' DIR
* ) FILE_DIRS * ) FILE_DIRS
* </sql>}</pre> * </sql>}</pre>
* *
* <ul><li> 'D://workspace/xit/base/files/'로 지정한다. * <ul><li> 'D://workspace/xit/base/files/'로 지정한다.
* <li> '00' ' /attachment/YYYY/MM/DD' * <li> '00' ' /attachment/YYYY/MM/DD'
* <li> '01' ' /document/YYYY/MM/DD' * <li> '01' ' /document/YYYY/MM/DD'
* <li> '02' ' /article/YYYY/MM/DD' * <li> '02' ' /article/YYYY/MM/DD'
* </ul> * </ul>
* <p> .<br /> * <p> .<br />
* . * .
* <p><b> URL </b> * <p><b> URL </b>
* <p> URL SQL . * <p> URL SQL .
* <pre>{@code <sql id="selectFiles"> * <pre>{@code <sql id="selectFiles">
* SELECT A.*, REPLACE(FILE_PATH, 'D://workspace/xit/base', '') URL * SELECT A.*, REPLACE(FILE_PATH, 'D://workspace/xit/base', '') URL
* FROM TBL_FILE A * FROM TBL_FILE A
* ... * ...
* </sql>}</pre> * </sql>}</pre>
* *
* <ul><li> FILE_PATH 'D://workspace/xit/base' 부분을 제거하여 파일의 URL로 추출하도록 하고 있다.</li> * <ul><li> FILE_PATH 'D://workspace/xit/base' 부분을 제거하여 파일의 URL로 추출하도록 하고 있다.</li>
* <li> URL .</li> * <li> URL .</li>
* </ul> * </ul>
* @author mjkhan * @author mjkhan
*/ */
@Mapper("fileMapper") @Mapper("fileMapper")
public interface FileMapper extends AbstractMapper { public interface FileMapper extends AbstractMapper {
/** .<br /> /** .<br />
* . * .
* @param req * @param req
* <pre><code> { * <pre><code> {
* "infoType": * "infoType":
* "infoKeys": * "infoKeys":
* }</code></pre> * }</code></pre>
* @return * @return
*/ */
List<DataObject> getFileList(FileQuery req); List<DataObject> getFileList(FileQuery req);
/** .<br /> /** .<br />
* . * .
* @param req * @param req
* <pre><code> { * <pre><code> {
* "infoType": * "infoType":
* "infoKeys": * "infoKeys":
* }</code></pre> * }</code></pre>
* @return * @return
*/ */
List<FileInfo> getFilesOf(FileQuery req); List<FileInfo> getFilesOf(FileQuery req);
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
default List<FileInfo> getFiles(String... fileIDs) { default List<FileInfo> getFiles(String... fileIDs) {
return getFilesOf( return getFilesOf(
new FileQuery() new FileQuery()
.setFileIDs(fileIDs) .setFileIDs(fileIDs)
.setOrderBy("FILE_ID") .setOrderBy("FILE_ID")
); );
} }
/** . /** .
* @param fileID * @param fileID
* @return * @return
*/ */
default FileInfo getFile(String fileID) { default FileInfo getFile(String fileID) {
List<FileInfo> files = getFiles(fileID); List<FileInfo> files = getFiles(fileID);
return !files.isEmpty() ? files.get(0) : null; return !files.isEmpty() ? files.get(0) : null;
} }
/** . /** .
* @param params * @param params
* <pre><code> { * <pre><code> {
* "file": * "file":
* }</code></pre> * }</code></pre>
* @return * @return
*/ */
int insertFile(Map<String, ?> params); int insertFile(Map<String, ?> params);
/** . /** .
* @param files * @param files
* @return * @return
*/ */
default int create(List<FileInfo> files) { default int create(List<FileInfo> files) {
if (isEmpty(files)) return 0; if (isEmpty(files)) return 0;
DataObject params = params().set("currentUser", currentUser()); DataObject params = params().set("currentUser", currentUser());
int affected = 0; int affected = 0;
for (FileInfo file:files) for (FileInfo file:files)
affected += insertFile(params.set("file", file)); affected += insertFile(params.set("file", file));
return affected; return affected;
} }
/** . /** .
* @param params * @param params
* <pre><code> { * <pre><code> {
* "fileIDs": * "fileIDs":
* }</code></pre> * }</code></pre>
* @return * @return
*/ */
int reorder(Map<String, ?> params); int reorder(Map<String, ?> params);
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
default int reorder(String... fileIDs) { default int reorder(String... fileIDs) {
if (isEmpty(fileIDs)) return 0; if (isEmpty(fileIDs)) return 0;
return reorder(params().set("fileIDs", fileIDs)); return reorder(params().set("fileIDs", fileIDs));
} }
/** . /** .
* @param params * @param params
* <pre><code> { * <pre><code> {
* "fileIDs": * "fileIDs":
* }</code></pre> * }</code></pre>
* @return * @return
*/ */
int updateDownloadCount(Map<String, ?> params); int updateDownloadCount(Map<String, ?> params);
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
default int updateDownloadCount(String... fileIDs) { default int updateDownloadCount(String... fileIDs) {
if (isEmpty(fileIDs)) return 0; if (isEmpty(fileIDs)) return 0;
return updateDownloadCount(params().set("fileIDs", fileIDs)); return updateDownloadCount(params().set("fileIDs", fileIDs));
} }
/** .<br /> /** .<br />
* . * .
* @param params * @param params
* <pre><code> { * <pre><code> {
* "infoType": * "infoType":
* "infoKeys": * "infoKeys":
* }</code></pre> * }</code></pre>
* @return * @return
*/ */
int removeFiles(Map<String, ?> params); int removeFiles(Map<String, ?> params);
/** .<br /> /** .<br />
* . * .
* @param infoType * @param infoType
* @param infoKeys * @param infoKeys
* @return * @return
*/ */
default int remove(String infoType, String... infoKeys) { default int remove(String infoType, String... infoKeys) {
return removeFiles( return removeFiles(
params() params()
.set("infoType", infoType) .set("infoType", infoType)
.set("infoKeys", ifEmpty(infoKeys, () -> null)) .set("infoKeys", ifEmpty(infoKeys, () -> null))
); );
} }
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
default int remove(String... fileIDs) { default int remove(String... fileIDs) {
return removeFiles( return removeFiles(
params().set("fileIDs", ifEmpty(fileIDs, () -> null)) params().set("fileIDs", ifEmpty(fileIDs, () -> null))
); );
} }
/** . /** .
* @param params * @param params
* <pre><code> { * <pre><code> {
* "fileIDs": * "fileIDs":
* }</code></pre> * }</code></pre>
* @return * @return
*/ */
int deleteFiles(Map<String, ?> params); int deleteFiles(Map<String, ?> params);
/** . /** .
* @param files * @param files
* @return * @return
*/ */
default int delete(List<FileInfo> files) { default int delete(List<FileInfo> files) {
if (isEmpty(files)) return 0; if (isEmpty(files)) return 0;
String[] fileIDs = files.stream().map(FileInfo::getId).collect(Collectors.toList()).toArray(new String[files.size()]); String[] fileIDs = files.stream().map(FileInfo::getId).collect(Collectors.toList()).toArray(new String[files.size()]);
return deleteFiles(params().set("fileIDs", ifEmpty(fileIDs, () -> null))); return deleteFiles(params().set("fileIDs", ifEmpty(fileIDs, () -> null)));
} }
} }

@ -1,3 +1,3 @@
/** /**
*/ */
package cokr.xit.base.file.dao; package cokr.xit.base.file.dao;

@ -1,17 +1,17 @@
/** . /** .
* <ul><li> .</li> * <ul><li> .</li>
* <li> . .</li> * <li> . .</li>
* <li> , .</li> * <li> , .</li>
* <li> <b> infoType</b> , .<br /> * <li> <b> infoType</b> , .<br />
* ) infoType "00", infoType "10"</li> * ) infoType "00", infoType "10"</li>
* <li><b> infoKey</b> .<br /> * <li><b> infoKey</b> .<br />
* , (-) infoKey .</li> * , (-) infoKey .</li>
* </ul> * </ul>
* <p> <b> infoType, infoKey + </b> <br /> * <p> <b> infoType, infoKey + </b> <br />
* <a href="{@docRoot}/doc-files/xit-base-mysql.sql" target="_blank">TBL_FILE </a> . * <a href="{@docRoot}/doc-files/xit-base-mysql.sql" target="_blank">TBL_FILE </a> .
* <p> {@link cokr.xit.base.file.dao.FileMapper FileMapper} . * <p> {@link cokr.xit.base.file.dao.FileMapper FileMapper} .
* <ul><li> : xit-file-yy.mm.dd.jar</li> * <ul><li> : xit-file-yy.mm.dd.jar</li>
* <li> : {@link cokr.xit.foundation xit-foundation-yy.mm.dd.jar}</li> * <li> : {@link cokr.xit.foundation xit-foundation-yy.mm.dd.jar}</li>
* </ul> * </ul>
*/ */
package cokr.xit.base.file; package cokr.xit.base.file;

@ -1,60 +1,60 @@
package cokr.xit.base.file.service; package cokr.xit.base.file.service;
import cokr.xit.foundation.component.QueryRequest; import cokr.xit.foundation.component.QueryRequest;
public class FileQuery extends QueryRequest { public class FileQuery extends QueryRequest {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String infoType; private String infoType;
private String[] infoKeys; private String[] infoKeys;
private String[] fileIDs; private String[] fileIDs;
/** . /** .
* @return * @return
*/ */
public String getInfoType() { public String getInfoType() {
return infoType; return infoType;
} }
/** . /** .
* @param <T> FileQuery * @param <T> FileQuery
* @param infoType * @param infoType
* @return FileQuery * @return FileQuery
*/ */
public <T extends FileQuery> T setInfoType(String infoType) { public <T extends FileQuery> T setInfoType(String infoType) {
this.infoType = infoType; this.infoType = infoType;
return self(); return self();
} }
/** . /** .
* @return * @return
*/ */
public String[] getInfoKeys() { public String[] getInfoKeys() {
return ifEmpty(infoKeys, () -> null); return ifEmpty(infoKeys, () -> null);
} }
/** . /** .
* @param <T> FileQuery * @param <T> FileQuery
* @param infoKeys * @param infoKeys
* @return FileQuery * @return FileQuery
*/ */
public <T extends FileQuery> T setInfoKeys(String... infoKeys) { public <T extends FileQuery> T setInfoKeys(String... infoKeys) {
this.infoKeys = infoKeys; this.infoKeys = infoKeys;
return self(); return self();
} }
/** . /** .
* @return * @return
*/ */
public String[] getFileIDs() { public String[] getFileIDs() {
return ifEmpty(fileIDs, () -> null); return ifEmpty(fileIDs, () -> null);
} }
/** . /** .
* @param <T> FileQuery * @param <T> FileQuery
* @param fileIDs * @param fileIDs
* @return FileQuery * @return FileQuery
*/ */
public <T extends FileQuery> T setFileIDs(String... fileIDs) { public <T extends FileQuery> T setFileIDs(String... fileIDs) {
this.fileIDs = fileIDs; this.fileIDs = fileIDs;
return self(); return self();
} }
} }

@ -1,112 +1,112 @@
package cokr.xit.base.file.service; package cokr.xit.base.file.service;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import cokr.xit.base.file.FileInfo; import cokr.xit.base.file.FileInfo;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
/** . /** .
* <ul><li>{@link #getFileList(String, String...) }</li> * <ul><li>{@link #getFileList(String, String...) }</li>
* <li>{@link #getFilesOf(String, String...) }</li> * <li>{@link #getFilesOf(String, String...) }</li>
* <li>{@link #create(List) }</li> * <li>{@link #create(List) }</li>
* <li>{@link #reorder(String...) }</li> * <li>{@link #reorder(String...) }</li>
* <li>{@link #updateDownloadCount(String...) }</li> * <li>{@link #updateDownloadCount(String...) }</li>
* <li>{@link #remove(String, String...) }</li> * <li>{@link #remove(String, String...) }</li>
* <li>{@link #deleteOf(String, String...) }</li> * <li>{@link #deleteOf(String, String...) }</li>
* </ul> * </ul>
* @author mjkhan * @author mjkhan
*/ */
public interface FileService { public interface FileService {
/** .<br /> /** .<br />
* . * .
* @param req * @param req
* <pre><code> { * <pre><code> {
* "infoType": * "infoType":
* "infoKeys": * "infoKeys":
* }</code></pre> * }</code></pre>
* @return * @return
*/ */
List<DataObject> getFileList(FileQuery req); List<DataObject> getFileList(FileQuery req);
/** .<br /> /** .<br />
* . * .
* @param infoType * @param infoType
* @param infoKeys * @param infoKeys
* @return * @return
*/ */
List<FileInfo> getFilesOf(String infoType, String... infoKeys); List<FileInfo> getFilesOf(String infoType, String... infoKeys);
/** . /** .
* @param infoType * @param infoType
* @param infoKey * @param infoKey
* @return * @return
*/ */
FileInfo getFileOf(String infoType, String infoKey); FileInfo getFileOf(String infoType, String infoKey);
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
List<FileInfo> getFiles(String... fileIDs); List<FileInfo> getFiles(String... fileIDs);
/** . /** .
* @param fileID * @param fileID
* @return * @return
*/ */
FileInfo getFile(String fileID); FileInfo getFile(String fileID);
/** . /** .
* @param files * @param files
* @return * @return
*/ */
int create(List<FileInfo> files); int create(List<FileInfo> files);
/** . /** .
* @param files * @param files
* @return * @return
*/ */
default int create(FileInfo... files) { default int create(FileInfo... files) {
return create(Arrays.asList(files)); return create(Arrays.asList(files));
} }
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
public int reorder(String... fileIDs); public int reorder(String... fileIDs);
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
int updateDownloadCount(String... fileIDs); int updateDownloadCount(String... fileIDs);
/** .<br /> /** .<br />
* . * .
* @param infoType * @param infoType
* @param infoKeys * @param infoKeys
* @return * @return
*/ */
int remove(String infoType, String... infoKeys); int remove(String infoType, String... infoKeys);
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
int remove(String... fileIDs); int remove(String... fileIDs);
/** .<br /> /** .<br />
* . * .
* @param infoType * @param infoType
* @param infoKeys * @param infoKeys
* @return * @return
*/ */
int deleteOf(String infoType, String... infoKeys); int deleteOf(String infoType, String... infoKeys);
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
int delete(String... fileIDs); int delete(String... fileIDs);
} }

@ -1,220 +1,220 @@
package cokr.xit.base.file.service.bean; package cokr.xit.base.file.service.bean;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import cokr.xit.base.file.FileInfo; import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.dao.FileMapper; import cokr.xit.base.file.dao.FileMapper;
import cokr.xit.base.file.service.FileQuery; import cokr.xit.base.file.service.FileQuery;
import cokr.xit.foundation.AbstractComponent; import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
/** Bean /** Bean
* <p><b> </b> * <p><b> </b>
* <p> SQL . * <p> SQL .
* <pre>{@code <sql id="fileDirs"> * <pre>{@code <sql id="fileDirs">
* SELECT INF_TYPE * SELECT INF_TYPE
* , CONCAT('D://workspace/xit/base/files/', DIR, TO_CHAR(CURRENT_DATE, 'YYYY/MM/DD/')) DIR * , CONCAT('D://workspace/xit/base/files/', DIR, TO_CHAR(CURRENT_DATE, 'YYYY/MM/DD/')) DIR
* FROM ( * FROM (
* SELECT '00' INF_TYPE, 'attachment/' DIR UNION * SELECT '00' INF_TYPE, 'attachment/' DIR UNION
* SELECT '10' INF_TYPE, 'document/' DIR UNION * SELECT '10' INF_TYPE, 'document/' DIR UNION
* SELECT '20' INF_TYPE, 'article/' DIR * SELECT '20' INF_TYPE, 'article/' DIR
* ) FILE_DIRS * ) FILE_DIRS
* </sql>}</pre> * </sql>}</pre>
* *
* <ul><li> 'D://workspace/xit/base/files/'로 지정한다. * <ul><li> 'D://workspace/xit/base/files/'로 지정한다.
* <li> '00' ' /attachment/YYYY/MM/DD' * <li> '00' ' /attachment/YYYY/MM/DD'
* <li> '01' ' /document/YYYY/MM/DD' * <li> '01' ' /document/YYYY/MM/DD'
* <li> '02' ' /article/YYYY/MM/DD' * <li> '02' ' /article/YYYY/MM/DD'
* </ul> * </ul>
* <p> .<br /> * <p> .<br />
* . * .
* <p><b> URL </b> * <p><b> URL </b>
* <p> URL SQL . * <p> URL SQL .
* <pre>{@code <sql id="selectFiles"> * <pre>{@code <sql id="selectFiles">
* SELECT A.*, REPLACE(FILE_PATH, 'D://workspace/xit/base', '') URL * SELECT A.*, REPLACE(FILE_PATH, 'D://workspace/xit/base', '') URL
* FROM TBL_FILE A * FROM TBL_FILE A
* ... * ...
* </sql>}</pre> * </sql>}</pre>
* *
* <ul><li> FILE_PATH 'D://workspace/xit/base' 부분을 제거하여 파일의 URL로 추출하도록 하고 있다.</li> * <ul><li> FILE_PATH 'D://workspace/xit/base' 부분을 제거하여 파일의 URL로 추출하도록 하고 있다.</li>
* <li> URL .</li> * <li> URL .</li>
* </ul> * </ul>
* @author mjkhan * @author mjkhan
*/ */
@Component("fileBean") @Component("fileBean")
public class FileBean extends AbstractComponent { public class FileBean extends AbstractComponent {
@Resource(name = "fileMapper") @Resource(name = "fileMapper")
private FileMapper fileMapper; private FileMapper fileMapper;
/** .<br /> /** .<br />
* . * .
* @param req * @param req
* <pre><code> { * <pre><code> {
* "infoType": * "infoType":
* "infoKeys": * "infoKeys":
* }</code></pre> * }</code></pre>
* @return * @return
*/ */
public List<DataObject> getFileList(FileQuery req) { public List<DataObject> getFileList(FileQuery req) {
return fileMapper.getFileList(req.setOrderBy("INF_TYPE, INF_KEY, SRT_ORD")); return fileMapper.getFileList(req.setOrderBy("INF_TYPE, INF_KEY, SRT_ORD"));
} }
/** .<br /> /** .<br />
* . * .
* @param infoType * @param infoType
* @param infoKeys * @param infoKeys
* @return * @return
*/ */
public List<FileInfo> getFilesOf(String infoType, String... infoKeys) { public List<FileInfo> getFilesOf(String infoType, String... infoKeys) {
return fileMapper.getFilesOf( return fileMapper.getFilesOf(
new FileQuery() new FileQuery()
.setInfoType(infoType) .setInfoType(infoType)
.setInfoKeys(infoKeys) .setInfoKeys(infoKeys)
.setOrderBy("INF_TYPE, INF_KEY, SRT_ORD") .setOrderBy("INF_TYPE, INF_KEY, SRT_ORD")
); );
} }
/** . /** .
* @param infoType * @param infoType
* @param infoKey * @param infoKey
* @return * @return
*/ */
public FileInfo getFileOf(String infoType, String infoKey) { public FileInfo getFileOf(String infoType, String infoKey) {
List<FileInfo> list = getFilesOf(infoType, infoKey); List<FileInfo> list = getFilesOf(infoType, infoKey);
return !list.isEmpty() ? list.get(0) : null; return !list.isEmpty() ? list.get(0) : null;
} }
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
public List<FileInfo> getFiles(String... fileIDs) { public List<FileInfo> getFiles(String... fileIDs) {
return fileMapper.getFiles(fileIDs); return fileMapper.getFiles(fileIDs);
} }
/** . /** .
* @param fileID * @param fileID
* @return * @return
*/ */
public FileInfo getFile(String fileID) { public FileInfo getFile(String fileID) {
return fileMapper.getFile(fileID); return fileMapper.getFile(fileID);
} }
/** . /** .
* @param files * @param files
* @return * @return
*/ */
public int create(List<FileInfo> files) { public int create(List<FileInfo> files) {
int affected = fileMapper.create(files); int affected = fileMapper.create(files);
write(files); write(files);
return affected; return affected;
} }
/** . /** .
* @param files * @param files
*/ */
public void write(List<FileInfo> files) { public void write(List<FileInfo> files) {
try { try {
mkdirs(files); mkdirs(files);
files.forEach(FileInfo::write); files.forEach(FileInfo::write);
} catch (Exception e) { } catch (Exception e) {
delete(files); delete(files);
throw applicationException(e); throw applicationException(e);
} }
} }
/** . /** .
* @param files * @param files
* @throws Exception * @throws Exception
*/ */
protected void mkdirs(List<FileInfo> files) throws Exception { protected void mkdirs(List<FileInfo> files) throws Exception {
Set<String> dirs = files.stream() Set<String> dirs = files.stream()
.map(file -> FileInfo.dir(file.getPath())) .map(file -> FileInfo.dir(file.getPath()))
.collect(Collectors.toSet()); .collect(Collectors.toSet());
for (String path: dirs) { for (String path: dirs) {
File dir = new File(path); File dir = new File(path);
if (!dir.exists()) if (!dir.exists())
dir.mkdirs(); dir.mkdirs();
} }
} }
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
public int reorder(String... fileIDs) { public int reorder(String... fileIDs) {
return fileMapper.reorder(fileIDs); return fileMapper.reorder(fileIDs);
} }
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
public int updateDownloadCount(String... fileIDs) { public int updateDownloadCount(String... fileIDs) {
return fileMapper.updateDownloadCount(fileIDs); return fileMapper.updateDownloadCount(fileIDs);
} }
/** .<br /> /** .<br />
* . * .
* @param infoType * @param infoType
* @param infoKeys * @param infoKeys
* @return * @return
*/ */
public int remove(String infoType, String... infoKeys) { public int remove(String infoType, String... infoKeys) {
return fileMapper.remove(infoType, infoKeys); return fileMapper.remove(infoType, infoKeys);
} }
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
public int remove(String... fileIDs) { public int remove(String... fileIDs) {
return fileMapper.remove(fileIDs); return fileMapper.remove(fileIDs);
} }
/** .<br /> /** .<br />
* . * .
* @param infoType * @param infoType
* @param infoKeys * @param infoKeys
* @return * @return
*/ */
public int deleteOf(String infoType, String... infoKeys) { public int deleteOf(String infoType, String... infoKeys) {
List<FileInfo> files = getFilesOf(infoType, infoKeys); List<FileInfo> files = getFilesOf(infoType, infoKeys);
if (delete(files) < 1) return 0; if (delete(files) < 1) return 0;
return fileMapper.delete(files); return fileMapper.delete(files);
} }
/** . /** .
* @param fileIDs * @param fileIDs
* @return * @return
*/ */
public int deleteByIDs(String... fileIDs) { public int deleteByIDs(String... fileIDs) {
List<FileInfo> files = getFiles(fileIDs); List<FileInfo> files = getFiles(fileIDs);
if (delete(files) < 1) return 0; if (delete(files) < 1) return 0;
return fileMapper.delete(files); return fileMapper.delete(files);
} }
/** . /** .
* @param files * @param files
* @return * @return
*/ */
protected int delete(List<FileInfo> files) { protected int delete(List<FileInfo> files) {
if (isEmpty(files)) return 0; if (isEmpty(files)) return 0;
int affected = 0; int affected = 0;
for (FileInfo file: files) for (FileInfo file: files)
affected += file.delete() ? 1 : 0; affected += file.delete() ? 1 : 0;
return affected; return affected;
} }
} }

@ -1,84 +1,84 @@
package cokr.xit.base.file.service.bean; package cokr.xit.base.file.service.bean;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import cokr.xit.base.file.FileInfo; import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.FileQuery; import cokr.xit.base.file.service.FileQuery;
import cokr.xit.base.file.service.FileService; import cokr.xit.base.file.service.FileService;
import cokr.xit.foundation.component.AbstractServiceBean; import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
/** /**
* @author mjkhan * @author mjkhan
*/ */
@Service("fileService") @Service("fileService")
public class FileServiceBean extends AbstractServiceBean implements FileService { public class FileServiceBean extends AbstractServiceBean implements FileService {
@Resource(name="fileBean") @Resource(name="fileBean")
private FileBean fileBean; private FileBean fileBean;
@Override @Override
public List<DataObject> getFileList(FileQuery req) { public List<DataObject> getFileList(FileQuery req) {
return fileBean.getFileList(req); return fileBean.getFileList(req);
} }
@Override @Override
public List<FileInfo> getFilesOf(String infoType, String... infoKeys) { public List<FileInfo> getFilesOf(String infoType, String... infoKeys) {
return fileBean.getFilesOf(infoType, infoKeys); return fileBean.getFilesOf(infoType, infoKeys);
} }
@Override @Override
public FileInfo getFileOf(String infoType, String infoKey) { public FileInfo getFileOf(String infoType, String infoKey) {
return fileBean.getFileOf(infoType, infoKey); return fileBean.getFileOf(infoType, infoKey);
} }
@Override @Override
public List<FileInfo> getFiles(String... fileIDs) { public List<FileInfo> getFiles(String... fileIDs) {
return fileBean.getFiles(fileIDs); return fileBean.getFiles(fileIDs);
} }
@Override @Override
public FileInfo getFile(String fileID) { public FileInfo getFile(String fileID) {
return fileBean.getFile(fileID); return fileBean.getFile(fileID);
} }
@Override @Override
public int create(List<FileInfo> files) { public int create(List<FileInfo> files) {
if (isEmpty(files)) return 0; if (isEmpty(files)) return 0;
return fileBean.create(files); return fileBean.create(files);
} }
@Override @Override
public int reorder(String... fileIDs) { public int reorder(String... fileIDs) {
return fileBean.reorder(fileIDs); return fileBean.reorder(fileIDs);
} }
@Override @Override
public int updateDownloadCount(String... fileIDs) { public int updateDownloadCount(String... fileIDs) {
return fileBean.updateDownloadCount(fileIDs); return fileBean.updateDownloadCount(fileIDs);
} }
@Override @Override
public int remove(String infoType, String... infoKeys) { public int remove(String infoType, String... infoKeys) {
return fileBean.remove(infoType, infoKeys); return fileBean.remove(infoType, infoKeys);
} }
@Override @Override
public int remove(String... fileIDs) { public int remove(String... fileIDs) {
return fileBean.remove(fileIDs); return fileBean.remove(fileIDs);
} }
@Override @Override
public int deleteOf(String infoType, String... infoKeys) { public int deleteOf(String infoType, String... infoKeys) {
return fileBean.deleteOf(infoType, infoKeys); return fileBean.deleteOf(infoType, infoKeys);
} }
@Override @Override
public int delete(String... fileIDs) { public int delete(String... fileIDs) {
return fileBean.deleteByIDs(fileIDs); return fileBean.deleteByIDs(fileIDs);
} }
} }

@ -1,3 +1,3 @@
/** /**
*/ */
package cokr.xit.base.file.service.bean; package cokr.xit.base.file.service.bean;

@ -1,3 +1,3 @@
/** /**
*/ */
package cokr.xit.base.file.service; package cokr.xit.base.file.service;

@ -1,147 +1,147 @@
package cokr.xit.base.file.web; package cokr.xit.base.file.web;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.net.URLConnection; import java.net.URLConnection;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.Map; import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.springframework.util.FileCopyUtils; import org.springframework.util.FileCopyUtils;
import org.springframework.web.servlet.view.AbstractView; import org.springframework.web.servlet.view.AbstractView;
import cokr.xit.base.file.FileInfo; import cokr.xit.base.file.FileInfo;
import cokr.xit.foundation.Assert; import cokr.xit.foundation.Assert;
/** {@link org.springframework.web.servlet.View} /** {@link org.springframework.web.servlet.View}
* <p>DownloadView {@link org.springframework.web.servlet.ModelAndView} . * <p>DownloadView {@link org.springframework.web.servlet.ModelAndView} .
* <ul><li>"file" - {@link File}, {@link InputStream}, {@link FileInfo}</li> * <ul><li>"file" - {@link File}, {@link InputStream}, {@link FileInfo}</li>
* <li>"filename" - . "file" InputStream </li> * <li>"filename" - . "file" InputStream </li>
* <li>"contentType" - . "file" , 'application/octet-stream' * <li>"contentType" - . "file" , 'application/octet-stream'
* <li>"disposition" - Content-Disposition . 'attachment' </li> * <li>"disposition" - Content-Disposition . 'attachment' </li>
* <li>"length" - . "file" . "file" InputStream </li> * <li>"length" - . "file" . "file" InputStream </li>
* <li>"delete" - "file" {@link File} (true false). .</li> * <li>"delete" - "file" {@link File} (true false). .</li>
* </ul> * </ul>
* @author mjkhan * @author mjkhan
*/ */
public class DownloadView extends AbstractView { public class DownloadView extends AbstractView {
@Override @Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest hreq, HttpServletResponse hresp) throws Exception { protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest hreq, HttpServletResponse hresp) throws Exception {
InputStream input = getInputStream(model); InputStream input = getInputStream(model);
if (input == null) { if (input == null) {
hresp.setStatus(HttpServletResponse.SC_NOT_FOUND); hresp.setStatus(HttpServletResponse.SC_NOT_FOUND);
hresp.sendError(HttpServletResponse.SC_NOT_FOUND); hresp.sendError(HttpServletResponse.SC_NOT_FOUND);
return; return;
} }
try (InputStream stream = input) { try (InputStream stream = input) {
String filename = getFilename(model); String filename = getFilename(model);
if (Assert.isEmpty(filename)) if (Assert.isEmpty(filename))
throw new IllegalArgumentException("Unable to determine the filename"); throw new IllegalArgumentException("Unable to determine the filename");
String contentType = getContentType(model); String contentType = getContentType(model);
if (Assert.isEmpty(contentType)) { if (Assert.isEmpty(contentType)) {
contentType = Assert.ifEmpty(URLConnection.guessContentTypeFromName(filename), "application/octet-stream"); contentType = Assert.ifEmpty(URLConnection.guessContentTypeFromName(filename), "application/octet-stream");
} }
String disposition = Assert.ifEmpty((String)model.get("disposition"), "attachment"); String disposition = Assert.ifEmpty((String)model.get("disposition"), "attachment");
Number length = getLength(model); Number length = getLength(model);
if (length == null) if (length == null)
throw new IllegalArgumentException("Unable to determine the length"); throw new IllegalArgumentException("Unable to determine the length");
hresp.setCharacterEncoding("UTF-8"); hresp.setCharacterEncoding("UTF-8");
hresp.setContentType(contentType); hresp.setContentType(contentType);
hresp.setHeader("Content-Disposition", disposition + "; filename=\"" + URLEncoder.encode(filename, "UTF-8") +"\""); hresp.setHeader("Content-Disposition", disposition + "; filename=\"" + URLEncoder.encode(filename, "UTF-8") +"\"");
hresp.setContentLengthLong(length.longValue()); hresp.setContentLengthLong(length.longValue());
FileCopyUtils.copy(stream, hresp.getOutputStream()); FileCopyUtils.copy(stream, hresp.getOutputStream());
} catch (Exception e) { } catch (Exception e) {
throw Assert.runtimeException(e); throw Assert.runtimeException(e);
} finally { } finally {
clear(model); clear(model);
} }
} }
private InputStream getInputStream(Map<String, Object> model) throws Exception { private InputStream getInputStream(Map<String, Object> model) throws Exception {
Object obj = model.get("file"); Object obj = model.get("file");
if (obj == null) return null; if (obj == null) return null;
if (obj instanceof InputStream) if (obj instanceof InputStream)
return (InputStream)obj; return (InputStream)obj;
if (obj instanceof File) { if (obj instanceof File) {
File file = (File)obj; File file = (File)obj;
return new FileInputStream(file); return new FileInputStream(file);
} }
if (obj instanceof FileInfo) { if (obj instanceof FileInfo) {
FileInfo fileInfo = (FileInfo)obj; FileInfo fileInfo = (FileInfo)obj;
return fileInfo.getInputStream(); return fileInfo.getInputStream();
} }
throw new IllegalArgumentException("'file' must be either a " + File.class.getName() + ", a " + InputStream.class.getName() + ", or a " + FileInfo.class.getName()); throw new IllegalArgumentException("'file' must be either a " + File.class.getName() + ", a " + InputStream.class.getName() + ", or a " + FileInfo.class.getName());
} }
private String getFilename(Map<String, Object> model) { private String getFilename(Map<String, Object> model) {
String filename = (String)model.get("filename"); String filename = (String)model.get("filename");
if (!Assert.isEmpty(filename)) return filename; if (!Assert.isEmpty(filename)) return filename;
Object obj = model.get("file"); Object obj = model.get("file");
if (obj instanceof File) { if (obj instanceof File) {
File file = (File)obj; File file = (File)obj;
return file.getName(); return file.getName();
} }
if (obj instanceof FileInfo) { if (obj instanceof FileInfo) {
FileInfo fileInfo = (FileInfo)obj; FileInfo fileInfo = (FileInfo)obj;
return fileInfo.getName(); return fileInfo.getName();
} }
return null; return null;
} }
private String getContentType(Map<String, Object> model) throws Exception { private String getContentType(Map<String, Object> model) throws Exception {
String contentType = (String)model.get("contentType"); String contentType = (String)model.get("contentType");
if (!Assert.isEmpty(contentType)) return contentType; if (!Assert.isEmpty(contentType)) return contentType;
Object obj = model.get("file"); Object obj = model.get("file");
if (obj instanceof InputStream) { if (obj instanceof InputStream) {
InputStream input = (InputStream)obj; InputStream input = (InputStream)obj;
return URLConnection.guessContentTypeFromStream(input); return URLConnection.guessContentTypeFromStream(input);
} }
if (obj instanceof File) { if (obj instanceof File) {
File file = (File)obj; File file = (File)obj;
return URLConnection.guessContentTypeFromName(file.getName()); return URLConnection.guessContentTypeFromName(file.getName());
} }
if (obj instanceof FileInfo) { if (obj instanceof FileInfo) {
FileInfo fileInfo = (FileInfo)obj; FileInfo fileInfo = (FileInfo)obj;
return fileInfo.getMimeType(); return fileInfo.getMimeType();
} }
return null; return null;
} }
private Number getLength(Map<String, Object> model) { private Number getLength(Map<String, Object> model) {
Number length = (Number)model.get("length"); Number length = (Number)model.get("length");
if (!Assert.isEmpty(length)) return length; if (!Assert.isEmpty(length)) return length;
Object obj = model.get("file"); Object obj = model.get("file");
if (obj instanceof File) { if (obj instanceof File) {
File file = (File)obj; File file = (File)obj;
return file.length(); return file.length();
} }
if (obj instanceof FileInfo) { if (obj instanceof FileInfo) {
FileInfo fileInfo = (FileInfo)obj; FileInfo fileInfo = (FileInfo)obj;
return fileInfo.getSize(); return fileInfo.getSize();
} }
return null; return null;
} }
private void clear(Map<String, Object> model) { private void clear(Map<String, Object> model) {
Object obj = model.get("file"); Object obj = model.get("file");
if (!(obj instanceof File)) return; if (!(obj instanceof File)) return;
Boolean delete = (Boolean)model.get("delete"); Boolean delete = (Boolean)model.get("delete");
if (Boolean.FALSE.equals(delete)) return; if (Boolean.FALSE.equals(delete)) return;
File file = (File)obj; File file = (File)obj;
if (file.exists()) if (file.exists())
file.delete(); file.delete();
} }
} }

@ -1,169 +1,169 @@
package cokr.xit.base.file.web; package cokr.xit.base.file.web;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.file.FileInfo; import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.FileQuery; import cokr.xit.base.file.service.FileQuery;
import cokr.xit.base.file.service.FileService; import cokr.xit.base.file.service.FileService;
import cokr.xit.foundation.web.AbstractController; import cokr.xit.foundation.web.AbstractController;
/** .<br /> /** .<br />
* { }/file/* . * { }/file/* .
* @author mjkhan * @author mjkhan
*/ */
@RequestMapping(name="파일관리", value="/file") @RequestMapping(name="파일관리", value="/file")
public class FileController extends AbstractController { public class FileController extends AbstractController {
@Resource(name="fileService") @Resource(name="fileService")
private FileService fileService; private FileService fileService;
/** . /** .
* @return * @return
*/ */
protected FileService fileService() { protected FileService fileService() {
return fileService; return fileService;
} }
/** .<br /> /** .<br />
* . * .
* @param infoType * @param infoType
* @param infoKeys * @param infoKeys
* @return ModelAndView * @return ModelAndView
* <pre><code>{ * <pre><code>{
* "fileList": [...] * "fileList": [...]
* }</code></pre> * }</code></pre>
*/ */
@RequestMapping(name="파일목록 조회", value="/list.do") @RequestMapping(name="파일목록 조회", value="/list.do")
public ModelAndView getFileList(FileQuery req) { public ModelAndView getFileList(FileQuery req) {
return setCollectionInfo( return setCollectionInfo(
new ModelAndView("jsonView"), new ModelAndView("jsonView"),
fileService.getFileList(setFetchSize(req)), fileService.getFileList(setFetchSize(req)),
"file" "file"
); );
} }
/** . /** .
* @param infoType * @param infoType
* @param infoKey * @param infoKey
* @param uploads * @param uploads
* @return ModelAndView * @return ModelAndView
* <pre><code>{ * <pre><code>{
* "affected": , * "affected": ,
* "saved": true || false * "saved": true || false
* }</code></pre> * }</code></pre>
*/ */
@PostMapping(name="파일 등록", value="/create.do") @PostMapping(name="파일 등록", value="/create.do")
public ModelAndView create( public ModelAndView create(
String infoType, String infoType,
String infoKey, String infoKey,
MultipartFile[] uploads MultipartFile[] uploads
) { ) {
List<FileInfo> files = new FileInfoFactory().makeFileInfos(infoType, infoKey, uploads); List<FileInfo> files = new FileInfoFactory().makeFileInfos(infoType, infoKey, uploads);
int affected = fileService.create(files); int affected = fileService.create(files);
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("affected", affected) .addObject("affected", affected)
.addObject("saved", affected > 0); .addObject("saved", affected > 0);
} }
/** . /** .
* @param fileID * @param fileID
* @return downloadView * @return downloadView
*/ */
@RequestMapping(name="다운로드", value="/download.do") @RequestMapping(name="다운로드", value="/download.do")
public ModelAndView download(String fileID) { public ModelAndView download(String fileID) {
FileInfo fileInfo = fileService.getFile(fileID); FileInfo fileInfo = fileService.getFile(fileID);
fileService.updateDownloadCount(fileID); fileService.updateDownloadCount(fileID);
return new ModelAndView("downloadView") return new ModelAndView("downloadView")
.addObject("file", fileInfo); .addObject("file", fileInfo);
} }
/** . /** .
* @param fileIDs * @param fileIDs
* @return jsonView * @return jsonView
* <pre><code>{ * <pre><code>{
* "affected": , * "affected": ,
* "saved": true || false * "saved": true || false
* }</code></pre> * }</code></pre>
*/ */
@PostMapping(name="순서 변경", value="/reorder.do") @PostMapping(name="순서 변경", value="/reorder.do")
public ModelAndView reorder(String... fileIDs) { public ModelAndView reorder(String... fileIDs) {
int affected = fileService.reorder(fileIDs); int affected = fileService.reorder(fileIDs);
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("affected", affected) .addObject("affected", affected)
.addObject("saved", affected > 0); .addObject("saved", affected > 0);
} }
/** . /** .
* @param fileIDs * @param fileIDs
* @return jsonView * @return jsonView
* <pre><code>{ * <pre><code>{
* "affected": , * "affected": ,
* "saved": true || false * "saved": true || false
* }</code></pre> * }</code></pre>
*/ */
@PostMapping(name="파일 제거", value="/remove.do") @PostMapping(name="파일 제거", value="/remove.do")
public ModelAndView remove(String... fileIDs) { public ModelAndView remove(String... fileIDs) {
int affected = fileService.remove(fileIDs); int affected = fileService.remove(fileIDs);
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("affected", affected) .addObject("affected", affected)
.addObject("saved", affected > 0); .addObject("saved", affected > 0);
} }
/** .<br /> /** .<br />
* . * .
* @param infoType * @param infoType
* @param infoKeys * @param infoKeys
* @return jsonView * @return jsonView
* <pre><code>{ * <pre><code>{
* "affected": , * "affected": ,
* "saved": true || false * "saved": true || false
* }</code></pre> * }</code></pre>
*/ */
@PostMapping(name="관련파일 제거", value="/removeLinked.do") @PostMapping(name="관련파일 제거", value="/removeLinked.do")
public ModelAndView remove(String infoType, String... infoKeys) { public ModelAndView remove(String infoType, String... infoKeys) {
int affected = fileService.remove(infoType, infoKeys); int affected = fileService.remove(infoType, infoKeys);
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("affected", affected) .addObject("affected", affected)
.addObject("saved", affected > 0); .addObject("saved", affected > 0);
} }
/** . /** .
* @param fileIDs * @param fileIDs
* @return jsonView * @return jsonView
* <pre><code>{ * <pre><code>{
* "affected": , * "affected": ,
* "saved": true || false * "saved": true || false
* }</code></pre> * }</code></pre>
*/ */
@PostMapping(name="파일 삭제", value="/delete.do") @PostMapping(name="파일 삭제", value="/delete.do")
public ModelAndView delete(String... fileIDs) { public ModelAndView delete(String... fileIDs) {
int affected = fileService.delete(fileIDs); int affected = fileService.delete(fileIDs);
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("affected", affected) .addObject("affected", affected)
.addObject("saved", affected > 0); .addObject("saved", affected > 0);
} }
/** .<br /> /** .<br />
* . * .
* @param infoType * @param infoType
* @param infoKeys * @param infoKeys
* @return jsonView * @return jsonView
* <pre><code>{ * <pre><code>{
* "affected": , * "affected": ,
* "saved": true || false * "saved": true || false
* }</code></pre> * }</code></pre>
*/ */
@PostMapping(name="관련파일 삭제", value="/deleteOf.do") @PostMapping(name="관련파일 삭제", value="/deleteOf.do")
public ModelAndView delete(String infoType, String... infoKeys) { public ModelAndView delete(String infoType, String... infoKeys) {
int affected = fileService.deleteOf(infoType, infoKeys); int affected = fileService.deleteOf(infoType, infoKeys);
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("affected", affected) .addObject("affected", affected)
.addObject("saved", affected > 0); .addObject("saved", affected > 0);
} }
} }

@ -1,67 +1,67 @@
package cokr.xit.base.file.web; package cokr.xit.base.file.web;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import cokr.xit.base.file.FileInfo; import cokr.xit.base.file.FileInfo;
/** /**
* @author mjkhan * @author mjkhan
*/ */
public class FileInfoFactory extends FileInfo.Factory { public class FileInfoFactory extends FileInfo.Factory {
/** , FileInfo . /** , FileInfo .
* @param infoType * @param infoType
* @param infoKey * @param infoKey
* @param multipartFiles * @param multipartFiles
* @return FileInfo * @return FileInfo
*/ */
public List<FileInfo> makeFileInfos(String infoType, String infoKey, Iterable<MultipartFile> multipartFiles) { public List<FileInfo> makeFileInfos(String infoType, String infoKey, Iterable<MultipartFile> multipartFiles) {
if (isEmpty(multipartFiles)) if (isEmpty(multipartFiles))
return Collections.emptyList(); return Collections.emptyList();
ArrayList<FileInfo> result = new ArrayList<>(); ArrayList<FileInfo> result = new ArrayList<>();
for (MultipartFile file: multipartFiles) for (MultipartFile file: multipartFiles)
try { try {
if (file == null) continue; if (file == null) continue;
FileInfo info = new FileInfo(); FileInfo info = new FileInfo();
String filename = FileInfo.name(file.getOriginalFilename()); String filename = FileInfo.name(file.getOriginalFilename());
info.setName(filename); info.setName(filename);
info.setMimeType(file.getContentType()); info.setMimeType(file.getContentType());
info.setSize(file.getSize()); info.setSize(file.getSize());
info.setInputStream(file.getInputStream()); info.setInputStream(file.getInputStream());
info.setSortOrder(result.size()); info.setSortOrder(result.size());
info.setInfoType(infoType); info.setInfoType(infoType);
info.setInfoKey(infoKey); info.setInfoKey(infoKey);
result.add(info); result.add(info);
} catch (Exception e) { } catch (Exception e) {
throw runtimeException(e); throw runtimeException(e);
} }
return result; return result;
} }
/** , FileInfo . /** , FileInfo .
* @param infoType * @param infoType
* @param infoKey * @param infoKey
* @param multipartFiles * @param multipartFiles
* @return FileInfo * @return FileInfo
*/ */
public List<FileInfo> makeFileInfos(String infoType, String infoKey, MultipartFile... multipartFiles) { public List<FileInfo> makeFileInfos(String infoType, String infoKey, MultipartFile... multipartFiles) {
return makeFileInfos(infoType, infoKey, Arrays.asList(multipartFiles)); return makeFileInfos(infoType, infoKey, Arrays.asList(multipartFiles));
} }
/** , FileInfo . /** , FileInfo .
* @param infoType * @param infoType
* @param infoKey * @param infoKey
* @param multipartFile * @param multipartFile
* @return FileInfo * @return FileInfo
*/ */
public FileInfo make(String infoType, String infoKey, MultipartFile multipartFile) { public FileInfo make(String infoType, String infoKey, MultipartFile multipartFile) {
List<FileInfo> files = makeFileInfos(infoType, infoKey, multipartFile); List<FileInfo> files = makeFileInfos(infoType, infoKey, multipartFile);
return !files.isEmpty() ? files.get(0) : null; return !files.isEmpty() ? files.get(0) : null;
} }
} }

@ -1,14 +1,14 @@
package cokr.xit.base.file.web; package cokr.xit.base.file.web;
import java.util.Map; import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.view.AbstractView; import org.springframework.web.servlet.view.AbstractView;
public class XLSView extends AbstractView { public class XLSView extends AbstractView {
@Override @Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest hreq, HttpServletResponse hresp) throws Exception { protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest hreq, HttpServletResponse hresp) throws Exception {
} }
} }

@ -1,3 +1,3 @@
/** /**
*/ */
package cokr.xit.base.file.web; package cokr.xit.base.file.web;

@ -1,64 +1,64 @@
package cokr.xit.base.file.service; package cokr.xit.base.file.service;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import cokr.xit.base.file.FileInfo; import cokr.xit.base.file.FileInfo;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
import cokr.xit.foundation.test.TestSupport; import cokr.xit.foundation.test.TestSupport;
public class FileServiceTest extends TestSupport { public class FileServiceTest extends TestSupport {
@Resource(name="fileService") @Resource(name="fileService")
private FileService service; private FileService service;
@Test @Test
public void files() { public void files() {
File[] files = { File[] files = {
new File(".\\src\\test\\resources\\files\\a-jpg-file.jpg"), new File(".\\src\\test\\resources\\files\\a-jpg-file.jpg"),
new File(".\\src\\test\\resources\\files\\an-excel-file.xlsx"), new File(".\\src\\test\\resources\\files\\an-excel-file.xlsx"),
new File(".\\src\\test\\resources\\files\\a-pdf-file.pdf") new File(".\\src\\test\\resources\\files\\a-pdf-file.pdf")
}; };
String infoType = "00"; String infoType = "00";
String infoKey = "info-key-00"; String infoKey = "info-key-00";
FileQuery req = new FileQuery().setInfoType(infoType); FileQuery req = new FileQuery().setInfoType(infoType);
List<FileInfo> fileInfos = new FileInfo.Factory().createFileInfos(infoType, infoKey, files); List<FileInfo> fileInfos = new FileInfo.Factory().createFileInfos(infoType, infoKey, files);
Assertions.assertTrue(service.create(fileInfos) > 0); Assertions.assertTrue(service.create(fileInfos) > 0);
fileInfos.forEach(System.out::println); fileInfos.forEach(System.out::println);
List<DataObject> fileList = service.getFileList(req); List<DataObject> fileList = service.getFileList(req);
Assertions.assertFalse(fileList.isEmpty()); Assertions.assertFalse(fileList.isEmpty());
fileList = service.getFileList(req.setInfoKeys(infoKey)); fileList = service.getFileList(req.setInfoKeys(infoKey));
Assertions.assertFalse(fileList.isEmpty()); Assertions.assertFalse(fileList.isEmpty());
List<FileInfo> fileInfoList = service.getFilesOf(infoType, infoKey); List<FileInfo> fileInfoList = service.getFilesOf(infoType, infoKey);
Assertions.assertFalse(fileInfoList.isEmpty()); Assertions.assertFalse(fileInfoList.isEmpty());
fileInfoList.forEach(fileInfo -> Assertions.assertTrue(new File(fileInfo.getPath()).exists())); fileInfoList.forEach(fileInfo -> Assertions.assertTrue(new File(fileInfo.getPath()).exists()));
String[] fileIDs = fileInfos.stream() String[] fileIDs = fileInfos.stream()
.map(FileInfo::getId) .map(FileInfo::getId)
.collect(Collectors.toList()) .collect(Collectors.toList())
.toArray(new String[fileInfos.size()]); .toArray(new String[fileInfos.size()]);
Assertions.assertTrue(service.updateDownloadCount(fileIDs) > 0); Assertions.assertTrue(service.updateDownloadCount(fileIDs) > 0);
fileInfoList = service.getFiles(fileIDs); fileInfoList = service.getFiles(fileIDs);
fileInfoList.forEach(info -> Assertions.assertTrue(info.getDownloadCount() > 0)); fileInfoList.forEach(info -> Assertions.assertTrue(info.getDownloadCount() > 0));
service.reorder( service.reorder(
fileInfoList.get(2).getId(), fileInfoList.get(2).getId(),
fileInfoList.get(1).getId(), fileInfoList.get(1).getId(),
fileInfoList.get(0).getId() fileInfoList.get(0).getId()
); );
fileInfoList = service.getFiles(fileIDs); fileInfoList = service.getFiles(fileIDs);
service.deleteOf(infoType, infoKey); service.deleteOf(infoType, infoKey);
fileInfoList.forEach(fileInfo -> Assertions.assertFalse(new File(fileInfo.getPath()).exists())); fileInfoList.forEach(fileInfo -> Assertions.assertFalse(new File(fileInfo.getPath()).exists()));
} }
} }

@ -1,2 +1,2 @@
# see https://projectlombok.org/features/constructor lombok.copyableAnnotations # see https://projectlombok.org/features/constructor lombok.copyableAnnotations
lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier

@ -1,382 +1,382 @@
valueRequired={0}\uac00 \uc124\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. valueRequired={0}\uac00 \uc124\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
pageNotFound=\uc694\uccad\ud558\uc2e0 \ud398\uc774\uc9c0\ub97c \ucc3e\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. pageNotFound=\uc694\uccad\ud558\uc2e0 \ud398\uc774\uc9c0\ub97c \ucc3e\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.
sessionExpired=\uc138\uc158\uc774 \ub9cc\ub8cc\ub410\uc2b5\ub2c8\ub2e4. sessionExpired=\uc138\uc158\uc774 \ub9cc\ub8cc\ub410\uc2b5\ub2c8\ub2e4.
duplicate.object=\uc774\ubbf8 \ub4f1\ub85d\ub41c {0}\uc785\ub2c8\ub2e4. duplicate.object=\uc774\ubbf8 \ub4f1\ub85d\ub41c {0}\uc785\ub2c8\ub2e4.
fail.common.msg=\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! 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} 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. info.nodata.msg=\ud574\ub2f9 \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
#UI Common resource# #UI Common resource#
table.num=\ubc88\ud638 table.num=\ubc88\ud638
table.regdate=\ub4f1\ub85d\uc77c table.regdate=\ub4f1\ub85d\uc77c
table.reger=\ub4f1\ub85d\uc790 table.reger=\ub4f1\ub85d\uc790
table.select=\uc120\ud0dd table.select=\uc120\ud0dd
title.html=egovframe common component title.html=egovframe common component
title.detail=\uc0c1\uc138\uc870\ud68c title.detail=\uc0c1\uc138\uc870\ud68c
title.inquire=\uc870\ud68c title.inquire=\uc870\ud68c
title.update=\uc218\uc815 title.update=\uc218\uc815
title.create=\ub4f1\ub85d title.create=\ub4f1\ub85d
title.delete=\uc0ad\uc81c title.delete=\uc0ad\uc81c
title.save=\uc800\uc7a5 title.save=\uc800\uc7a5
title.list=\ubaa9\ub85d title.list=\ubaa9\ub85d
title.searchCondition=\uac80\uc0c9\uc870\uac74 title.searchCondition=\uac80\uc0c9\uc870\uac74
title.search=\uac80\uc0c9\uc5b4 title.search=\uac80\uc0c9\uc5b4
title.reply=\ub2f5\uae00 title.reply=\ub2f5\uae00
title.scrap=\uc2a4\ud06c\ub7a9 title.scrap=\uc2a4\ud06c\ub7a9
title.comment=\ub313\uae00 title.comment=\ub313\uae00
title.attachedFileSelect=\ud30c\uc77c\uc120\ud0dd title.attachedFileSelect=\ud30c\uc77c\uc120\ud0dd
title.attachedFileDelete=\ud30c\uc77c\uc0ad\uc81c title.attachedFileDelete=\ud30c\uc77c\uc0ad\uc81c
title.link=\ub9c1\ud06c title.link=\ub9c1\ud06c
title.management=\uad00\ub9ac title.management=\uad00\ub9ac
title.all=\uc804\uccb4 title.all=\uc804\uccb4
input.select=\uc120\ud0dd\ud558\uc138\uc694 input.select=\uc120\ud0dd\ud558\uc138\uc694
input.cSelect=\uc120\ud0dd input.cSelect=\uc120\ud0dd
input.input=\uc785\ub825 input.input=\uc785\ub825
input.button=\ubc84\ud2bc input.button=\ubc84\ud2bc
input.selectAll.title=\uc804\uccb4\uc120\ud0dd\uccb4\ud06c\ubc15\uc2a4 input.selectAll.title=\uc804\uccb4\uc120\ud0dd\uccb4\ud06c\ubc15\uc2a4
input.yes=\uc608 input.yes=\uc608
input.no=\uc544\ub2c8\uc624 input.no=\uc544\ub2c8\uc624
select.searchCondition=\uc870\ud68c\uc870\uac74 \uc120\ud0dd select.searchCondition=\uc870\ud68c\uc870\uac74 \uc120\ud0dd
button.select=\uc120\ud0dd button.select=\uc120\ud0dd
button.search=\uac80\uc0c9 button.search=\uac80\uc0c9
button.use=\uc0ac\uc6a9 button.use=\uc0ac\uc6a9
button.notUsed=\uc0ac\uc6a9\uc911\uc9c0 button.notUsed=\uc0ac\uc6a9\uc911\uc9c0
button.inquire=\uc870\ud68c button.inquire=\uc870\ud68c
button.update=\uc218\uc815 button.update=\uc218\uc815
button.create=\ub4f1\ub85d button.create=\ub4f1\ub85d
button.delete=\uc0ad\uc81c button.delete=\uc0ad\uc81c
button.deleteDatabase=\uc644\uc804\uc0ad\uc81c button.deleteDatabase=\uc644\uc804\uc0ad\uc81c
button.close=\ub2eb\uae30 button.close=\ub2eb\uae30
button.save=\uc800\uc7a5 button.save=\uc800\uc7a5
button.list=\ubaa9\ub85d button.list=\ubaa9\ub85d
button.reset=\ucde8\uc18c button.reset=\ucde8\uc18c
button.passwordUpdate=\uc554\ud638\ubcc0\uacbd button.passwordUpdate=\uc554\ud638\ubcc0\uacbd
button.subscribe=\uac00\uc785\uc2e0\uccad button.subscribe=\uac00\uc785\uc2e0\uccad
button.realname=\uc2e4\uba85\ud655\uc778 button.realname=\uc2e4\uba85\ud655\uc778
button.moveToGpin=GPIN\uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 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.moveToIhidnum=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638 \uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9
button.agree=\ub3d9\uc758 button.agree=\ub3d9\uc758
button.disagree=\ube44\ub3d9\uc758 button.disagree=\ube44\ub3d9\uc758
button.possible=\uac00\ub2a5 button.possible=\uac00\ub2a5
button.impossible=\ubd88\uac00\ub2a5 button.impossible=\ubd88\uac00\ub2a5
button.qnaregist=Q&A\ub4f1\ub85d button.qnaregist=Q&A\ub4f1\ub85d
button.cnsltregist=\uc0c1\ub2f4\ub4f1\ub85d button.cnsltregist=\uc0c1\ub2f4\ub4f1\ub85d
button.preview=\ubbf8\ub9ac\ubcf4\uae30 button.preview=\ubbf8\ub9ac\ubcf4\uae30
button.next=\ub2e4\uc74c button.next=\ub2e4\uc74c
button.add=\ubc14\ub85c\ucd94\uac00 button.add=\ubc14\ub85c\ucd94\uac00
button.confirm=\ud655\uc778 button.confirm=\ud655\uc778
button.back = \ub4a4\ub85c button.back = \ub4a4\ub85c
button.yes = \uc608 button.yes = \uc608
button.no = \uc544\ub2c8\uc624 button.no = \uc544\ub2c8\uc624
button.home = \ud648 button.home = \ud648
button.user = \uc0ac\uc6a9\uc790\uc9c0\uc6d0 button.user = \uc0ac\uc6a9\uc790\uc9c0\uc6d0
button.cop = \ud611\uc5c5 button.cop = \ud611\uc5c5
button.wrkstart = \ucd9c\uadfc button.wrkstart = \ucd9c\uadfc
button.wrkend = \ud1f4\uadfc button.wrkend = \ud1f4\uadfc
button.reply = \ub2f5\uae00 button.reply = \ub2f5\uae00
button.scrap = \uc2a4\ud06c\ub7a9 button.scrap = \uc2a4\ud06c\ub7a9
button.comment = \ub313\uae00 button.comment = \ub313\uae00
button.excel = \uc5d1\uc140 button.excel = \uc5d1\uc140
button.init=\ucd08\uae30\ud654 button.init=\ucd08\uae30\ud654
button.acknowledgment=\uc2b9\uc778 button.acknowledgment=\uc2b9\uc778
button.cancelAcknowledgment=\uc2b9\uc778\ucde8\uc18c button.cancelAcknowledgment=\uc2b9\uc778\ucde8\uc18c
button.bulkUpload=\uc77c\uad04\ub4f1\ub85d button.bulkUpload=\uc77c\uad04\ub4f1\ub85d
button.log = \ub85c\uadf8 button.log = \ub85c\uadf8
button.set = \uc124\uc815 button.set = \uc124\uc815
button.move = \uc774\ub3d9 button.move = \uc774\ub3d9
#UI Common Message# #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.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.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.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.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.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.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.save.msg=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
common.regist.msg=\ub4f1\ub85d\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.delete.msg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
common.update.msg=\uc218\uc815\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.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.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.acknowledgement.msg=\uc2b9\uc778\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
common.acknowledgementcancel.msg=\uc2b9\uc778\ucde8\uc18c\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.nocomment.msg=\ub313\uae00\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
common.noguest.msg=\uc791\uc131\ub41c \ubc29\uba85\ub85d\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.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.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.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.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. 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.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.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. 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.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.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 = \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.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.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.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.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.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.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.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.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. 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# #UI User Message#
fail.user.passwordUpdate1=\ud604\uc7ac \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. 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. 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. 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. 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.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) 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. 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. 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. fail.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
#UI Cop Message# #UI Cop Message#
cop.extrlUser = \uc678\ubd80\uc0ac\uc6a9\uc790 cop.extrlUser = \uc678\ubd80\uc0ac\uc6a9\uc790
cop.intrlUser = \ub0b4\ubd80\uc0ac\uc6a9\uc790 cop.intrlUser = \ub0b4\ubd80\uc0ac\uc6a9\uc790
cop.private = \ube44\uacf5\uac1c cop.private = \ube44\uacf5\uac1c
cop.public = \uacf5\uac1c cop.public = \uacf5\uac1c
cop.adbkNm = \uc8fc\uc18c\ub85d\uba85 cop.adbkNm = \uc8fc\uc18c\ub85d\uba85
cop.othbcScope = \uacf5\uac1c\ubc94\uc704 cop.othbcScope = \uacf5\uac1c\ubc94\uc704
cop.company = \ud68c\uc0ac cop.company = \ud68c\uc0ac
cop.part = \ubd80\uc11c cop.part = \ubd80\uc11c
cop.man = \uac1c\uc778 cop.man = \uac1c\uc778
cop.adbkUser = \uad6c\uc131\uc6d0 cop.adbkUser = \uad6c\uc131\uc6d0
cop.bbsNm = \uac8c\uc2dc\ud310\uba85 cop.bbsNm = \uac8c\uc2dc\ud310\uba85
cop.bbsIntrcn = \uac8c\uc2dc\ud310\uc18c\uac1c cop.bbsIntrcn = \uac8c\uc2dc\ud310\uc18c\uac1c
cop.bbsTyCode = \uac8c\uc2dc\ud310 \uc720\ud615 cop.bbsTyCode = \uac8c\uc2dc\ud310 \uc720\ud615
cop.bbsAttrbCode = \uac8c\uc2dc\ud310 \uc18d\uc131 cop.bbsAttrbCode = \uac8c\uc2dc\ud310 \uc18d\uc131
cop.replyPosblAt = \ub2f5\uc7a5\uac00\ub2a5\uc5ec\ubd80 cop.replyPosblAt = \ub2f5\uc7a5\uac00\ub2a5\uc5ec\ubd80
cop.fileAtchPosblAt = \ud30c\uc77c\ucca8\ubd80\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.posblAtchFileNumber = \ucca8\ubd80\uac00\ub2a5\ud30c\uc77c \uc22b\uc790
cop.tmplatId = \ud15c\ud50c\ub9bf \uc815\ubcf4 cop.tmplatId = \ud15c\ud50c\ub9bf \uc815\ubcf4
cop.guestList.subject = \ubc29\uba85\ub85d \uac8c\uc2dc\uae00\uc785\ub2c8\ub2e4. cop.guestList.subject = \ubc29\uba85\ub85d \uac8c\uc2dc\uae00\uc785\ub2c8\ub2e4.
cop.nttSj = \uc81c\ubaa9 cop.nttSj = \uc81c\ubaa9
cop.nttCn = \uae00\ub0b4\uc6a9 cop.nttCn = \uae00\ub0b4\uc6a9
cop.ntceBgnde = \uac8c\uc2dc\uc2dc\uc791\uc77c cop.ntceBgnde = \uac8c\uc2dc\uc2dc\uc791\uc77c
cop.ntceEndde = \uac8c\uc2dc\uc885\ub8cc\uc77c cop.ntceEndde = \uac8c\uc2dc\uc885\ub8cc\uc77c
cop.ntcrNm = \uc791\uc131\uc790 cop.ntcrNm = \uc791\uc131\uc790
cop.password = \ud328\uc2a4\uc6cc\ub4dc cop.password = \ud328\uc2a4\uc6cc\ub4dc
cop.atchFile = \ud30c\uc77c\ucca8\ubd80 cop.atchFile = \ud30c\uc77c\ucca8\ubd80
cop.guestList = \ubc29\uba85\ub85d cop.guestList = \ubc29\uba85\ub85d
cop.guestListCn = \ubc29\uba85\ub85d \ub0b4\uc6a9 cop.guestListCn = \ubc29\uba85\ub85d \ub0b4\uc6a9
cop.noticeTerm = \uac8c\uc2dc\uae30\uac04 cop.noticeTerm = \uac8c\uc2dc\uae30\uac04
cop.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d cop.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d
cop.cmmntyNm = \ucee4\ubba4\ub2c8\ud2f0\uba85 cop.cmmntyNm = \ucee4\ubba4\ub2c8\ud2f0\uba85
cop.cmmntyIntrcn = \ucee4\ubba4\ub2c8\ud2f0 \uc18c\uac1c cop.cmmntyIntrcn = \ucee4\ubba4\ub2c8\ud2f0 \uc18c\uac1c
cop.cmmntyMngr = \ucee4\ubba4\ub2c8\ud2f0 \uad00\ub9ac\uc790 cop.cmmntyMngr = \ucee4\ubba4\ub2c8\ud2f0 \uad00\ub9ac\uc790
cop.clbOprtr = \ub3d9\ud638\ud68c \uc6b4\uc601\uc790 cop.clbOprtr = \ub3d9\ud638\ud68c \uc6b4\uc601\uc790
cop.clbIntrcn = \ub3d9\ud638\ud68c \uc18c\uac1c cop.clbIntrcn = \ub3d9\ud638\ud68c \uc18c\uac1c
cop.clbNm = \ub3d9\ud638\ud68c \uba85 cop.clbNm = \ub3d9\ud638\ud68c \uba85
cop.tmplatNm = \ud15c\ud50c\ub9bf\uba85 cop.tmplatNm = \ud15c\ud50c\ub9bf\uba85
cop.tmplatSeCode = \ud15c\ud50c\ub9bf \uad6c\ubd84 cop.tmplatSeCode = \ud15c\ud50c\ub9bf \uad6c\ubd84
cop.tmplatCours = \ud15c\ud50c\ub9bf\uacbd\ub85c cop.tmplatCours = \ud15c\ud50c\ub9bf\uacbd\ub85c
cop.useAt = \uc0ac\uc6a9\uc5ec\ubd80 cop.useAt = \uc0ac\uc6a9\uc5ec\ubd80
cop.ncrdNm = \uc774\ub984 cop.ncrdNm = \uc774\ub984
cop.cmpnyNm = \ud68c\uc0ac\uba85 cop.cmpnyNm = \ud68c\uc0ac\uba85
cop.deptNm = \ubd80\uc11c\uba85 cop.deptNm = \ubd80\uc11c\uba85
cop.ofcpsNm = \uc9c1\uc704 cop.ofcpsNm = \uc9c1\uc704
cop.clsfNm = \uc9c1\uae09 cop.clsfNm = \uc9c1\uae09
cop.emailAdres = \uc774\uba54\uc77c\uc8fc\uc18c cop.emailAdres = \uc774\uba54\uc77c\uc8fc\uc18c
cop.telNo = \uc804\ud654\ubc88\ud638 cop.telNo = \uc804\ud654\ubc88\ud638
cop.mbtlNum = \ud734\ub300\ud3f0\ubc88\ud638 cop.mbtlNum = \ud734\ub300\ud3f0\ubc88\ud638
cop.adres = \uc8fc\uc18c cop.adres = \uc8fc\uc18c
cop.extrlUserAt = \uc678\ubd80\uc0ac\uc6a9\uc790\uc5ec\ubd80 cop.extrlUserAt = \uc678\ubd80\uc0ac\uc6a9\uc790\uc5ec\ubd80
cop.publicAt = \uacf5\uac1c\uc5ec\ubd80 cop.publicAt = \uacf5\uac1c\uc5ec\ubd80
cop.remark = \ube44\uace0 cop.remark = \ube44\uace0
cop.trgetNm = \ucee4\ubba4\ub2c8\ud2f0/\ub3d9\ud638\ud68c \uc815\ubcf4 cop.trgetNm = \ucee4\ubba4\ub2c8\ud2f0/\ub3d9\ud638\ud68c \uc815\ubcf4
cop.preview = \ubbf8\ub9ac\ubcf4\uae30 cop.preview = \ubbf8\ub9ac\ubcf4\uae30
cop.withdraw.msg=\ud0c8\ud1f4\ucc98\ub9ac \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? 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.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.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.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.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.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.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.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.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.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.wrterNm = \uc791\uc131\uc790
cop.comment.commentCn = \ub0b4\uc6a9 cop.comment.commentCn = \ub0b4\uc6a9
cop.comment.commentPassword = \ud328\uc2a4\uc6cc\ub4dc cop.comment.commentPassword = \ud328\uc2a4\uc6cc\ub4dc
cop.satisfaction.wrterNm = \uc791\uc131\uc790 cop.satisfaction.wrterNm = \uc791\uc131\uc790
cop.satisfaction.stsfdgCn = \ub0b4\uc6a9 cop.satisfaction.stsfdgCn = \ub0b4\uc6a9
cop.satisfaction.stsfdg = \ub9cc\uc871\ub3c4 cop.satisfaction.stsfdg = \ub9cc\uc871\ub3c4
cop.satisfaction.stsfdgPassword = \ud328\uc2a4\uc6cc\ub4dc cop.satisfaction.stsfdgPassword = \ud328\uc2a4\uc6cc\ub4dc
cop.scrap.scrapNm = \uc2a4\ud06c\ub7a9\uba85 cop.scrap.scrapNm = \uc2a4\ud06c\ub7a9\uba85
#UI USS Message# #UI USS Message#
uss.ion.noi.ntfcSj=\uc81c\ubaa9 uss.ion.noi.ntfcSj=\uc81c\ubaa9
uss.ion.noi.ntfcCn=\ub0b4\uc6a9 uss.ion.noi.ntfcCn=\ub0b4\uc6a9
uss.ion.noi.ntfcDate=\uc54c\ub9bc\uc77c\uc790 uss.ion.noi.ntfcDate=\uc54c\ub9bc\uc77c\uc790
uss.ion.noi.ntfcTime=\uc54c\ub9bc\uc2dc\uac04 uss.ion.noi.ntfcTime=\uc54c\ub9bc\uc2dc\uac04
uss.ion.noi.ntfcHH=\uc54c\ub9bc\uc2dc\uac04 uss.ion.noi.ntfcHH=\uc54c\ub9bc\uc2dc\uac04
uss.ion.noi.ntfcMM=\uc54c\ub9bc\ubd84 uss.ion.noi.ntfcMM=\uc54c\ub9bc\ubd84
uss.ion.noi.bhNtfcIntrvl=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 uss.ion.noi.bhNtfcIntrvl=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9
uss.ion.noi.bhNtfcIntrvl.msg=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. uss.ion.noi.bhNtfcIntrvl.msg=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
uss.ion.noi.alertNtfcTime=\uc54c\ub9bc\uc77c\uc790 \ubc0f \uc2dc\uac04\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. uss.ion.noi.alertNtfcTime=\uc54c\ub9bc\uc77c\uc790 \ubc0f \uc2dc\uac04\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
#UI COP Message# #UI COP Message#
cop.sms.trnsmitTelno=\ubc1c\uc2e0\uc804\ud654\ubc88\ud638 cop.sms.trnsmitTelno=\ubc1c\uc2e0\uc804\ud654\ubc88\ud638
cop.sms.trnsmitCn=\uc804\uc1a1\ub0b4\uc6a9 cop.sms.trnsmitCn=\uc804\uc1a1\ub0b4\uc6a9
cop.sms.recptnTelno=\uc218\uc2e0\uc804\ud654\ubc88\ud638 cop.sms.recptnTelno=\uc218\uc2e0\uc804\ud654\ubc88\ud638
cop.sms.send=\uc804\uc1a1 cop.sms.send=\uc804\uc1a1
cop.sms.addRecptn=\ucd94\uac00 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.recptnTelno.msg=\uc218\uc2e0\uc804\ud654\ubc88\ud638 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
#UI sym.log Message# #UI sym.log Message#
sym.log.histSeCode = \uc774\ub825\uad6c\ubd84 sym.log.histSeCode = \uc774\ub825\uad6c\ubd84
sym.log.sysNm = \uc2dc\uc2a4\ud15c\uba85 sym.log.sysNm = \uc2dc\uc2a4\ud15c\uba85
sym.log.histCn = \uc774\ub825\ub0b4\uc6a9 sym.log.histCn = \uc774\ub825\ub0b4\uc6a9
sym.log.atchFile = \ucca8\ubd80\ud30c\uc77c sym.log.atchFile = \ucca8\ubd80\ud30c\uc77c
sym.log.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d sym.log.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d
sym.ems.receiver = \ubc1b\ub294\uc0ac\ub78c sym.ems.receiver = \ubc1b\ub294\uc0ac\ub78c
sym.ems.title = \uc81c\ubaa9 sym.ems.title = \uc81c\ubaa9
sym.ems.content = \ubc1c\uc2e0\ub0b4\uc6a9 sym.ems.content = \ubc1c\uc2e0\ub0b4\uc6a9
#Vlidator Errors# #Vlidator Errors#
errors.prefix=<div class="error"> errors.prefix=<div class="error">
errors.suffix=</div><br/> errors.suffix=</div><br/>
errors.required={0}\uc740(\ub294) \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. 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.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.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.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.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.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.short={0}\uc740(\ub294) short\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
errors.integer={0}\uc740(\ub294) \uc815\uc218 \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. errors.integer={0}\uc740(\ub294) \uc815\uc218 \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
errors.long={0}\uc740(\ub294) long \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) \uc2e4\uc218 \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. errors.float={0}\uc740(\ub294) \uc2e4\uc218 \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
errors.double={0}\uc740(\ub294) double \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.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.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.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.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.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.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.ip=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 IP\uc8fc\uc18c\uc785\ub2c8\ub2e4.
errors.password1={0}\uc740(\ub294) 8~20\uc790 \ub0b4\uc5d0\uc11c \uc785\ub825\ud574\uc57c \ud569\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.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.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. 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.
errors.notKorean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. errors.notKorean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
error.security.runtime.error = error error.security.runtime.error = error
#Xss Errors# #Xss Errors#
errors.xss.checkerUser=\ud574\ub2f9 \uae30\ub2a5\uc5d0 \ub300\ud55c \uc0ac\uc6a9 \ubc0f \ucc98\ub9ac \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. 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 #File Upload / Download
errors.file.extension=\uc9c0\uc6d0\ub418\ub294 \ud30c\uc77c\uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. 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. 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. success.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
#Vlidator Errors- wordDicaryVO# #Vlidator Errors- wordDicaryVO#
wordDicaryVO.wordNm=\uc6a9\uc5b4\uba85 wordDicaryVO.wordNm=\uc6a9\uc5b4\uba85
wordDicaryVO.engNm=\uc601\ubb38\uba85 wordDicaryVO.engNm=\uc601\ubb38\uba85
wordDicaryVO.wordDc=\uc6a9\uc5b4\uc124\uba85 wordDicaryVO.wordDc=\uc6a9\uc5b4\uc124\uba85
wordDicaryVO.synonm=\ub3d9\uc758\uc5b4 wordDicaryVO.synonm=\ub3d9\uc758\uc5b4
#Vlidator Errors- cnsltManageVO# #Vlidator Errors- cnsltManageVO#
cnsltManageVO.cnsltSj=\uc0c1\ub2f4\uc81c\ubaa9 cnsltManageVO.cnsltSj=\uc0c1\ub2f4\uc81c\ubaa9
cnsltManageVO.cnsltCn=\uc0c1\ub2f4\ub0b4\uc6a9 cnsltManageVO.cnsltCn=\uc0c1\ub2f4\ub0b4\uc6a9
cnsltManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638 cnsltManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638
cnsltManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638 cnsltManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638
cnsltManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638 cnsltManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638
cnsltManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638 cnsltManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638
cnsltManageVO.wrterNm=\uc791\uc131\uc790\uba85 cnsltManageVO.wrterNm=\uc791\uc131\uc790\uba85
cnsltManageVO.managtCn=\ub2f5\ubcc0\ub0b4\uc6a9 cnsltManageVO.managtCn=\ub2f5\ubcc0\ub0b4\uc6a9
#Vlidator Errors- siteManageVO# #Vlidator Errors- siteManageVO#
siteManageVO.siteNm=\uc0ac\uc774\ud2b8\uba85 siteManageVO.siteNm=\uc0ac\uc774\ud2b8\uba85
siteManageVO.siteUrl=\uc0ac\uc774\ud2b8 URL siteManageVO.siteUrl=\uc0ac\uc774\ud2b8 URL
siteManageVO.siteDc=\uc0ac\uc774\ud2b8\uc124\uba85 siteManageVO.siteDc=\uc0ac\uc774\ud2b8\uc124\uba85
siteManageVO.siteThemaClCode=\uc0ac\uc774\ud2b8\uc8fc\uc81c\ubd84\ub958 siteManageVO.siteThemaClCode=\uc0ac\uc774\ud2b8\uc8fc\uc81c\ubd84\ub958
siteManageVO.actvtyAt=\ud65c\uc131\uc5ec\ubd80 siteManageVO.actvtyAt=\ud65c\uc131\uc5ec\ubd80
siteManageVO.useAt=\uc0ac\uc6a9\uc5ec\ubd80 siteManageVO.useAt=\uc0ac\uc6a9\uc5ec\ubd80
#Vlidator Errors- recomendSiteManageVO# #Vlidator Errors- recomendSiteManageVO#
recomendSiteManageVO.recomendSiteNm=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uba85 recomendSiteManageVO.recomendSiteNm=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uba85
recomendSiteManageVO.recomendSiteUrl=\ucd94\ucc9c\uc0ac\uc774\ud2b8 URL recomendSiteManageVO.recomendSiteUrl=\ucd94\ucc9c\uc0ac\uc774\ud2b8 URL
recomendSiteManageVO.recomendSiteDc=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc124\uba85 recomendSiteManageVO.recomendSiteDc=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc124\uba85
recomendSiteManageVO.recomendResnCn=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc2b9\uc778\uc0ac\uc720 recomendSiteManageVO.recomendResnCn=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc2b9\uc778\uc0ac\uc720
recomendSiteManageVO.confmDe=\uc2b9\uc778\uc77c\uc790 recomendSiteManageVO.confmDe=\uc2b9\uc778\uc77c\uc790
#Vlidator Errors- hpcmManageVO# #Vlidator Errors- hpcmManageVO#
hpcmManageVO.hpcmSeCode=\ub3c4\uc6c0\ub9d0\uad6c\ubd84 hpcmManageVO.hpcmSeCode=\ub3c4\uc6c0\ub9d0\uad6c\ubd84
hpcmManageVO.hpcmDf=\ub3c4\uc6c0\ub9d0\uc815\uc758 hpcmManageVO.hpcmDf=\ub3c4\uc6c0\ub9d0\uc815\uc758
hpcmManageVO.hpcmDc=\ub3c4\uc6c0\ub9d0\uc124\uba85 hpcmManageVO.hpcmDc=\ub3c4\uc6c0\ub9d0\uc124\uba85
#Vlidator Errors- newsManageVO# #Vlidator Errors- newsManageVO#
newsManageVO.newsSj=\ub274\uc2a4\uc81c\ubaa9 newsManageVO.newsSj=\ub274\uc2a4\uc81c\ubaa9
newsManageVO.newsCn=\ub274\uc2a4\ub0b4\uc6a9 newsManageVO.newsCn=\ub274\uc2a4\ub0b4\uc6a9
newsManageVO.ntceDe=\uac8c\uc2dc\uc77c\uc790 newsManageVO.ntceDe=\uac8c\uc2dc\uc77c\uc790
#Vlidator Errors- faqManageVO# #Vlidator Errors- faqManageVO#
faqManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9 faqManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9
faqManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9 faqManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9
faqManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9 faqManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9
#Vlidator Errors- stplatManageVO# #Vlidator Errors- stplatManageVO#
stplatManageVO.useStplatNm=\uc774\uc6a9\uc57d\uad00\uba85 stplatManageVO.useStplatNm=\uc774\uc6a9\uc57d\uad00\uba85
stplatManageVO.useStplatCn=\uc774\uc6a9\uc57d\uad00\ub0b4\uc6a9 stplatManageVO.useStplatCn=\uc774\uc6a9\uc57d\uad00\ub0b4\uc6a9
stplatManageVO.infoProvdAgreCn=\uc815\ubcf4\uc81c\uacf5\ub3d9\uc758\ub0b4\uc6a9 stplatManageVO.infoProvdAgreCn=\uc815\ubcf4\uc81c\uacf5\ub3d9\uc758\ub0b4\uc6a9
#Vlidator Errors- cpyrhtPrtcPolicyVO# #Vlidator Errors- cpyrhtPrtcPolicyVO#
cpyrhtPrtcPolicyVO.cpyrhtPrtcPolicyCn=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 cpyrhtPrtcPolicyVO.cpyrhtPrtcPolicyCn=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9
#Vlidator Errors- qnaManageVO# #Vlidator Errors- qnaManageVO#
qnaManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9 qnaManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9
qnaManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9 qnaManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9
qnaManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638 qnaManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638
qnaManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638 qnaManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638
qnaManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638 qnaManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638
qnaManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638 qnaManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638
qnaManageVO.wrterNm=\uc791\uc131\uc790\uba85 qnaManageVO.wrterNm=\uc791\uc131\uc790\uba85
qnaManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9 qnaManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9
#Vlidator Errors- ReprtStatsVO# #Vlidator Errors- ReprtStatsVO#
sts.reprtId = \ubcf4\uace0\uc11cID sts.reprtId = \ubcf4\uace0\uc11cID
sts.title = \ubcf4\uace0\uc11c\uba85 sts.title = \ubcf4\uace0\uc11c\uba85
sts.category = \ubcf4\uace0\uc11c\uc720\ud615 sts.category = \ubcf4\uace0\uc11c\uc720\ud615
sts.status = \uc9c4\ud589\uc0c1\ud0dc sts.status = \uc9c4\ud589\uc0c1\ud0dc
sts.regDate = \ub4f1\ub85d\uc77c\uc2dc sts.regDate = \ub4f1\ub85d\uc77c\uc2dc
#Rest day messages# #Rest day messages#
sym.cal.restDay = \ud734\uc77c\uc77c\uc790 sym.cal.restDay = \ud734\uc77c\uc77c\uc790
sym.cal.restName = \ud734\uc77c\uba85 sym.cal.restName = \ud734\uc77c\uba85
sym.cal.restDetail = \ud734\uc77c\uc124\uba85 sym.cal.restDetail = \ud734\uc77c\uc124\uba85
sym.cal.restCategory = \ud734\uc77c\uad6c\ubd84 sym.cal.restCategory = \ud734\uc77c\uad6c\ubd84
image.errorBg = \uc624\ub958\uc774\ubbf8\uc9c0 image.errorBg = \uc624\ub958\uc774\ubbf8\uc9c0
#Custom message# #Custom message#
custom.fail.access=\uc815\uc0c1\uc801\uc778 \uc811\uadfc\uc774 \uc544\ub2d9\ub2c8\ub2e4. \ub85c\uadf8\uc778 \ud6c4 \uc774\uc6a9\ud558\uc138\uc694. custom.fail.access=\uc815\uc0c1\uc801\uc778 \uc811\uadfc\uc774 \uc544\ub2d9\ub2c8\ub2e4. \ub85c\uadf8\uc778 \ud6c4 \uc774\uc6a9\ud558\uc138\uc694.
custom.fail.accessDenied=\uc694\uccad\uc5d0 \ub300\ud55c \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. custom.fail.accessDenied=\uc694\uccad\uc5d0 \ub300\ud55c \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
custom.isNotExist.msg=\ucc98\ub9ac\uc5d0 \ud544\uc694\ud55c \uc790\ub8cc\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. custom.isNotExist.msg=\ucc98\ub9ac\uc5d0 \ud544\uc694\ud55c \uc790\ub8cc\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.

@ -1,277 +1,277 @@
fail.common.msg=error ocurred! fail.common.msg=error ocurred!
fail.common.sql=sql error ocurred! error code: {0}, error msg: {1} fail.common.sql=sql error ocurred! error code: {0}, error msg: {1}
info.nodata.msg=no data found. info.nodata.msg=no data found.
#UI Common resource# #UI Common resource#
table.num=num. table.num=num.
table.regdate=reg.date table.regdate=reg.date
table.reger=registrant table.reger=registrant
table.select=select table.select=select
title.html=egovframe common component title.html=egovframe common component
title.detail=Detail Inquiry title.detail=Detail Inquiry
title.inquire=Inquire title.inquire=Inquire
title.update=Modify title.update=Modify
title.create=Create title.create=Create
title.delete=Delete title.delete=Delete
title.save=Save title.save=Save
title.list=List title.list=List
title.searchCondition=search condition title.searchCondition=search condition
title.search=keyword title.search=keyword
title.reply=reply title.reply=reply
title.scrap=scrap title.scrap=scrap
title.comment=comment title.comment=comment
title.attachedFileSelect=attached file title.attachedFileSelect=attached file
title.attachedFileDelete=attached file delete title.attachedFileDelete=attached file delete
title.link=link title.link=link
title.management=Management title.management=Management
title.all=All title.all=All
input.select=Select input.select=Select
input.cSelect=Select input.cSelect=Select
input.input=input input.input=input
input.button=button input.button=button
input.selectAll.title=Checkbox select all input.selectAll.title=Checkbox select all
input.yes=Yes input.yes=Yes
input.no=No input.no=No
select.searchCondition=select condition select select.searchCondition=select condition select
button.select=select button.select=select
button.search=Search button.search=Search
button.use=use button.use=use
button.notUsed=Not used button.notUsed=Not used
button.inquire=inquire button.inquire=inquire
button.update=update button.update=update
button.create=create button.create=create
button.delete=delete button.delete=delete
button.deleteDatabase=Wiping button.deleteDatabase=Wiping
button.close=close button.close=close
button.save=save button.save=save
button.list=list button.list=list
button.reset=reset button.reset=reset
button.passwordUpdate=password update button.passwordUpdate=password update
button.subscribe=subscribe button.subscribe=subscribe
button.realname=realname confirm button.realname=realname confirm
button.moveToGpin=move to gpin confirm button.moveToGpin=move to gpin confirm
button.moveToIhidnum=move to ihidnum confirm button.moveToIhidnum=move to ihidnum confirm
button.agree=agree button.agree=agree
button.disagree=disagree button.disagree=disagree
button.possible=possible button.possible=possible
button.impossible=impossible button.impossible=impossible
button.qnaregist=Q&A create button.qnaregist=Q&A create
button.cnsltregist=Counsel create button.cnsltregist=Counsel create
button.preview=preview button.preview=preview
button.next=nexut button.next=nexut
button.add=add it now button.add=add it now
button.confirm=confirm button.confirm=confirm
button.back =back button.back =back
button.yes =yes button.yes =yes
button.no =no button.no =no
button.home =home button.home =home
button.user =user support button.user =user support
button.cop =cooperation button.cop =cooperation
button.wrkstart = work start button.wrkstart = work start
button.wrkend = work end button.wrkend = work end
button.reply = reply button.reply = reply
button.scrap = scrap button.scrap = scrap
button.comment = comment button.comment = comment
button.excel = excel button.excel = excel
button.init=init button.init=init
button.acknowledgment=acknowledgment button.acknowledgment=acknowledgment
button.cancelAcknowledgment=cancel acknowledgment button.cancelAcknowledgment=cancel acknowledgment
button.bulkUpload=bulk upload button.bulkUpload=bulk upload
button.log = log button.log = log
button.set = set button.set = set
button.move = move button.move = move
#UI Common Message# #UI Common Message#
common.noScriptTitle.msg=I can't use all functions in browser JavaScript is not supported. 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.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.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.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.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.summary.inqire={0} Full inquiry details about the details of the output.
common.save.msg=confirm save? common.save.msg=confirm save?
common.regist.msg=confirm regist? common.regist.msg=confirm regist?
common.delete.msg=confirm delete? common.delete.msg=confirm delete?
common.update.msg=confirm update? common.update.msg=confirm update?
common.nodata.msg=There is no data. please choose another seach keyword common.nodata.msg=There is no data. please choose another seach keyword
common.required.msg=is required field common.required.msg=is required field
common.acknowledgement.msg=confirm acknowledgement? common.acknowledgement.msg=confirm acknowledgement?
common.acknowledgementcancel.msg=confirm acknowledgement cancel? common.acknowledgementcancel.msg=confirm acknowledgement cancel?
common.nocomment.msg=There is no comment. common.nocomment.msg=There is no comment.
common.noguest.msg=There is no guest notice. common.noguest.msg=There is no guest notice.
success.request.msg=you're request successfully done success.request.msg=you're request successfully done
success.common.select=successfully selected success.common.select=successfully selected
success.common.insert=successfully inserted success.common.insert=successfully inserted
success.common.update=successfully updated success.common.update=successfully updated
success.common.delete=successfully deleted success.common.delete=successfully deleted
common.imposbl.fileupload = cannot upload files common.imposbl.fileupload = cannot upload files
common.isConfmDe.msg=Please check the approval date box common.isConfmDe.msg=Please check the approval date box
common.isExist.msg = already exist common.isExist.msg = already exist
fail.common.insert = fail to insert. fail.common.insert = fail to insert.
fail.common.update = fail to update fail.common.update = fail to update
fail.common.delete = fail to delete fail.common.delete = fail to delete
fail.common.delete.upperMenuExist = fail to delete[upperMenuId foreign key error] fail.common.delete.upperMenuExist = fail to delete[upperMenuId foreign key error]
fail.common.select = fail to select fail.common.select = fail to select
fail.common.login = login information is not correct fail.common.login = login information is not correct
fail.common.loginIncorrect = login in more than {0} account will be locked! 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.login.password = password information is not correct(password digit should be 8 to 20)
fail.common.idsearch = can not find id fail.common.idsearch = can not find id
fail.common.pwsearch = can not find password fail.common.pwsearch = can not find password
fail.request.msg = Failed to handle the request fail.request.msg = Failed to handle the request
fail.common.login.ip = Login is refused because it is not a registered IP. fail.common.login.ip = Login is refused because it is not a registered IP.
#UI User Message# #UI User Message#
fail.user.passwordUpdate1=current password is not correct fail.user.passwordUpdate1=current password is not correct
fail.user.passwordUpdate2=password confirm is not correct fail.user.passwordUpdate2=password confirm is not correct
info.user.rlnmCnfirm=realname confirm ready info.user.rlnmCnfirm=realname confirm ready
success.user.rlnmCnfirm=it is realname success.user.rlnmCnfirm=it is realname
fail.user.rlnmCnfirm=it is not realname fail.user.rlnmCnfirm=it is not realname
fail.user.connectFail=connection fail fail.user.connectFail=connection fail
#UI Cop Message# #UI Cop Message#
cop.extrlUser = External User cop.extrlUser = External User
cop.intrlUser = Internal User cop.intrlUser = Internal User
cop.private = private cop.private = private
cop.public = public cop.public = public
cop.bbsNm = BBS Name cop.bbsNm = BBS Name
cop.bbsIntrcn = BBS Introduction cop.bbsIntrcn = BBS Introduction
cop.bbsTyCode = BBS Type cop.bbsTyCode = BBS Type
cop.bbsAttrbCode = BBS Attribute cop.bbsAttrbCode = BBS Attribute
cop.replyPosblAt = Reply Possible Alternative cop.replyPosblAt = Reply Possible Alternative
cop.fileAtchPosblAt = File Attach Possible Alternative cop.fileAtchPosblAt = File Attach Possible Alternative
cop.posblAtchFileNumber = Possible Attach File Number cop.posblAtchFileNumber = Possible Attach File Number
cop.tmplatId = Template Information cop.tmplatId = Template Information
cop.guestList.subject = This article registered by Guest List cop.guestList.subject = This article registered by Guest List
cop.nttSj = Notice Subject cop.nttSj = Notice Subject
cop.nttCn = Notice Contents cop.nttCn = Notice Contents
cop.ntceBgnde = Notice Start Date cop.ntceBgnde = Notice Start Date
cop.ntceEndde = Notice End Date cop.ntceEndde = Notice End Date
cop.ntcrNm = Noticer Name cop.ntcrNm = Noticer Name
cop.password = PassWord cop.password = PassWord
cop.atchFile = Attach Files cop.atchFile = Attach Files
cop.guestList = Guest List cop.guestList = Guest List
cop.guestListCn = Guest List Contents cop.guestListCn = Guest List Contents
cop.noticeTerm = Notice term cop.noticeTerm = Notice term
cop.atchFileList = Attached File List cop.atchFileList = Attached File List
cop.cmmntyNm = Community Name cop.cmmntyNm = Community Name
cop.cmmntyIntrcn = Community Introduction cop.cmmntyIntrcn = Community Introduction
cop.cmmntyMngr = Community Manager cop.cmmntyMngr = Community Manager
cop.clbOprtr = Club Operator cop.clbOprtr = Club Operator
cop.clbIntrcn = Club Introduction cop.clbIntrcn = Club Introduction
cop.clbNm = Club Name cop.clbNm = Club Name
cop.tmplatNm = Template Name cop.tmplatNm = Template Name
cop.tmplatSeCode = Template Se Code cop.tmplatSeCode = Template Se Code
cop.tmplatCours = Template Cours cop.tmplatCours = Template Cours
cop.useAt = Use Alternative cop.useAt = Use Alternative
cop.ncrdNm = NameCard user name cop.ncrdNm = NameCard user name
cop.cmpnyNm = Company name cop.cmpnyNm = Company name
cop.deptNm = Department name cop.deptNm = Department name
cop.ofcpsNm = OFCPS name cop.ofcpsNm = OFCPS name
cop.clsfNm = Class Name cop.clsfNm = Class Name
cop.emailAdres = E-mail cop.emailAdres = E-mail
cop.telNo = Tel No. cop.telNo = Tel No.
cop.mbtlNum = Mobile cop.mbtlNum = Mobile
cop.adres = Address cop.adres = Address
cop.extrlUserAt = External User alternative cop.extrlUserAt = External User alternative
cop.publicAt = Public open alternative cop.publicAt = Public open alternative
cop.remark = Remark cop.remark = Remark
cop.trgetNm = Company/Club Information cop.trgetNm = Company/Club Information
cop.preview = preview cop.preview = preview
cop.withdraw.msg=confirm withdrawal memebership? cop.withdraw.msg=confirm withdrawal memebership?
cop.reregist.msg=confirm re-registration? cop.reregist.msg=confirm re-registration?
cop.registmanager.msg=confirm registration of manager? cop.registmanager.msg=confirm registration of manager?
cop.use.msg=confirm use? cop.use.msg=confirm use?
cop.unuse.msg=confirm stop using? cop.unuse.msg=confirm stop using?
cop.delete.confirm.msg=If you choose to disable the re-use change is impossible. cop.delete.confirm.msg=If you choose to disable the re-use change is impossible.
cop.ing.msg=Approval is being requested. cop.ing.msg=Approval is being requested.
cop.request.msg=Signup is normally requested. cop.request.msg=Signup is normally requested.
cop.password.msg=Please enter your password. cop.password.msg=Please enter your password.
cop.password.not.same.msg=Password do not match. cop.password.not.same.msg=Password do not match.
cop.comment.wrterNm = Writer Name cop.comment.wrterNm = Writer Name
cop.comment.commentCn = Comment cop.comment.commentCn = Comment
cop.comment.commentPassword = Password cop.comment.commentPassword = Password
cop.satisfaction.wrterNm = Writer Name cop.satisfaction.wrterNm = Writer Name
cop.satisfaction.stsfdgCn = Satisfaction cop.satisfaction.stsfdgCn = Satisfaction
cop.satisfaction.stsfdg = Satisfaction Degree cop.satisfaction.stsfdg = Satisfaction Degree
cop.satisfaction.stsfdgPassword = Password cop.satisfaction.stsfdgPassword = Password
cop.scrap.scrapNm = Scrap Name cop.scrap.scrapNm = Scrap Name
#UI USS Message# #UI USS Message#
uss.ion.noi.ntfcSj=Subject uss.ion.noi.ntfcSj=Subject
uss.ion.noi.ntfcCn=Contents uss.ion.noi.ntfcCn=Contents
uss.ion.noi.ntfcDate=Notification Date uss.ion.noi.ntfcDate=Notification Date
uss.ion.noi.ntfcTime=Notification Time uss.ion.noi.ntfcTime=Notification Time
uss.ion.noi.ntfcHH=Notification Hour uss.ion.noi.ntfcHH=Notification Hour
uss.ion.noi.ntfcMM=Notification Minute uss.ion.noi.ntfcMM=Notification Minute
uss.ion.noi.bhNtfcIntrvl=Beforehand Interval uss.ion.noi.bhNtfcIntrvl=Beforehand Interval
uss.ion.noi.bhNtfcIntrvl.msg=Beforehand Interval is required. uss.ion.noi.bhNtfcIntrvl.msg=Beforehand Interval is required.
uss.ion.noi.alertNtfcTime=Date and time of notification is not valid. uss.ion.noi.alertNtfcTime=Date and time of notification is not valid.
#UI COP Message# #UI COP Message#
cop.sms.trnsmitTelno=Sender cop.sms.trnsmitTelno=Sender
cop.sms.trnsmitCn=Contents cop.sms.trnsmitCn=Contents
cop.sms.recptnTelno=Receiver(s) cop.sms.recptnTelno=Receiver(s)
cop.sms.send=Send cop.sms.send=Send
cop.sms.addRecptn=Add cop.sms.addRecptn=Add
cop.sms.recptnTelno.msg=The phone number of receiver is required. cop.sms.recptnTelno.msg=The phone number of receiver is required.
#UI sym.log Message# #UI sym.log Message#
sym.log.histSeCode = History Code sym.log.histSeCode = History Code
sym.log.sysNm = System Name sym.log.sysNm = System Name
sym.log.histCn = History Contents sym.log.histCn = History Contents
sym.log.atchFile = Attached File sym.log.atchFile = Attached File
sym.log.atchFileList = Attached File List sym.log.atchFileList = Attached File List
sym.ems.receiver = Receiver sym.ems.receiver = Receiver
sym.ems.title = Title sym.ems.title = Title
sym.ems.content = Content sym.ems.content = Content
#Vlidator Errors# #Vlidator Errors#
errors.required={0} is required. errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters. errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters. errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} is invalid. errors.invalid={0} is invalid.
errors.byte={0} must be a byte. errors.byte={0} must be a byte.
errors.short={0} must be a short. errors.short={0} must be a short.
errors.integer={0} must be an integer. errors.integer={0} must be an integer.
errors.long={0} must be a long. errors.long={0} must be a long.
errors.float={0} must be a float. errors.float={0} must be a float.
errors.double={0} must be a double. errors.double={0} must be a double.
errors.date={0} is not a date. errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}. errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is an invalid credit card number. errors.creditcard={0} is an invalid credit card number.
errors.email={0} is an invalid e-mail address. errors.email={0} is an invalid e-mail address.
#Vlidator Errors- ReprtStatsVO# #Vlidator Errors- ReprtStatsVO#
sts.reprtId = Report ID sts.reprtId = Report ID
sts.title = Report Title sts.title = Report Title
sts.category = Report Category sts.category = Report Category
sts.status = Report Status sts.status = Report Status
sts.regDate = Registration Date sts.regDate = Registration Date
#Rest day messages# #Rest day messages#
sym.cal.restDay = Holiday Date sym.cal.restDay = Holiday Date
sym.cal.restName = Holiday Name sym.cal.restName = Holiday Name
sym.cal.restDetail = Holiday Detail sym.cal.restDetail = Holiday Detail
sym.cal.restCategory = Holiday Category sym.cal.restCategory = Holiday Category
#Custom message# #Custom message#
custom.fail.access=It's not a normal approach. Log in and use it. custom.fail.access=It's not a normal approach. Log in and use it.
custom.fail.accessDenied=You do not have permission to request. custom.fail.accessDenied=You do not have permission to request.
custom.isNotExist.msg=Data required for processing does not exist. custom.isNotExist.msg=Data required for processing does not exist.

@ -1,375 +1,375 @@
fail.common.msg=\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! 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} 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. info.nodata.msg=\ud574\ub2f9 \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
#UI Common resource# #UI Common resource#
table.num=\ubc88\ud638 table.num=\ubc88\ud638
table.regdate=\ub4f1\ub85d\uc77c table.regdate=\ub4f1\ub85d\uc77c
table.reger=\ub4f1\ub85d\uc790 table.reger=\ub4f1\ub85d\uc790
table.select=\uc120\ud0dd table.select=\uc120\ud0dd
title.html=egovframe common component title.html=egovframe common component
title.detail=\uc0c1\uc138\uc870\ud68c title.detail=\uc0c1\uc138\uc870\ud68c
title.inquire=\uc870\ud68c title.inquire=\uc870\ud68c
title.update=\uc218\uc815 title.update=\uc218\uc815
title.create=\ub4f1\ub85d title.create=\ub4f1\ub85d
title.delete=\uc0ad\uc81c title.delete=\uc0ad\uc81c
title.save=\uc800\uc7a5 title.save=\uc800\uc7a5
title.list=\ubaa9\ub85d title.list=\ubaa9\ub85d
title.searchCondition=\uac80\uc0c9\uc870\uac74 title.searchCondition=\uac80\uc0c9\uc870\uac74
title.search=\uac80\uc0c9\uc5b4 title.search=\uac80\uc0c9\uc5b4
title.reply=\ub2f5\uae00 title.reply=\ub2f5\uae00
title.scrap=\uc2a4\ud06c\ub7a9 title.scrap=\uc2a4\ud06c\ub7a9
title.comment=\ub313\uae00 title.comment=\ub313\uae00
title.attachedFileSelect=\ud30c\uc77c\uc120\ud0dd title.attachedFileSelect=\ud30c\uc77c\uc120\ud0dd
title.attachedFileDelete=\ud30c\uc77c\uc0ad\uc81c title.attachedFileDelete=\ud30c\uc77c\uc0ad\uc81c
title.link=\ub9c1\ud06c title.link=\ub9c1\ud06c
title.management=\uad00\ub9ac title.management=\uad00\ub9ac
title.all=\uc804\uccb4 title.all=\uc804\uccb4
input.select=\uc120\ud0dd\ud558\uc138\uc694 input.select=\uc120\ud0dd\ud558\uc138\uc694
input.cSelect=\uc120\ud0dd input.cSelect=\uc120\ud0dd
input.input=\uc785\ub825 input.input=\uc785\ub825
input.button=\ubc84\ud2bc input.button=\ubc84\ud2bc
input.selectAll.title=\uc804\uccb4\uc120\ud0dd\uccb4\ud06c\ubc15\uc2a4 input.selectAll.title=\uc804\uccb4\uc120\ud0dd\uccb4\ud06c\ubc15\uc2a4
input.yes=\uc608 input.yes=\uc608
input.no=\uc544\ub2c8\uc624 input.no=\uc544\ub2c8\uc624
select.searchCondition=\uc870\ud68c\uc870\uac74 \uc120\ud0dd select.searchCondition=\uc870\ud68c\uc870\uac74 \uc120\ud0dd
button.select=\uc120\ud0dd button.select=\uc120\ud0dd
button.search=\uac80\uc0c9 button.search=\uac80\uc0c9
button.use=\uc0ac\uc6a9 button.use=\uc0ac\uc6a9
button.notUsed=\uc0ac\uc6a9\uc911\uc9c0 button.notUsed=\uc0ac\uc6a9\uc911\uc9c0
button.inquire=\uc870\ud68c button.inquire=\uc870\ud68c
button.update=\uc218\uc815 button.update=\uc218\uc815
button.create=\ub4f1\ub85d button.create=\ub4f1\ub85d
button.delete=\uc0ad\uc81c button.delete=\uc0ad\uc81c
button.deleteDatabase=\uc644\uc804\uc0ad\uc81c button.deleteDatabase=\uc644\uc804\uc0ad\uc81c
button.close=\ub2eb\uae30 button.close=\ub2eb\uae30
button.save=\uc800\uc7a5 button.save=\uc800\uc7a5
button.list=\ubaa9\ub85d button.list=\ubaa9\ub85d
button.reset=\ucde8\uc18c button.reset=\ucde8\uc18c
button.passwordUpdate=\uc554\ud638\ubcc0\uacbd button.passwordUpdate=\uc554\ud638\ubcc0\uacbd
button.subscribe=\uac00\uc785\uc2e0\uccad button.subscribe=\uac00\uc785\uc2e0\uccad
button.realname=\uc2e4\uba85\ud655\uc778 button.realname=\uc2e4\uba85\ud655\uc778
button.moveToGpin=GPIN\uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9 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.moveToIhidnum=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638 \uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9
button.agree=\ub3d9\uc758 button.agree=\ub3d9\uc758
button.disagree=\ube44\ub3d9\uc758 button.disagree=\ube44\ub3d9\uc758
button.possible=\uac00\ub2a5 button.possible=\uac00\ub2a5
button.impossible=\ubd88\uac00\ub2a5 button.impossible=\ubd88\uac00\ub2a5
button.qnaregist=Q&A\ub4f1\ub85d button.qnaregist=Q&A\ub4f1\ub85d
button.cnsltregist=\uc0c1\ub2f4\ub4f1\ub85d button.cnsltregist=\uc0c1\ub2f4\ub4f1\ub85d
button.preview=\ubbf8\ub9ac\ubcf4\uae30 button.preview=\ubbf8\ub9ac\ubcf4\uae30
button.next=\ub2e4\uc74c button.next=\ub2e4\uc74c
button.add=\ubc14\ub85c\ucd94\uac00 button.add=\ubc14\ub85c\ucd94\uac00
button.confirm=\ud655\uc778 button.confirm=\ud655\uc778
button.back = \ub4a4\ub85c button.back = \ub4a4\ub85c
button.yes = \uc608 button.yes = \uc608
button.no = \uc544\ub2c8\uc624 button.no = \uc544\ub2c8\uc624
button.home = \ud648 button.home = \ud648
button.user = \uc0ac\uc6a9\uc790\uc9c0\uc6d0 button.user = \uc0ac\uc6a9\uc790\uc9c0\uc6d0
button.cop = \ud611\uc5c5 button.cop = \ud611\uc5c5
button.wrkstart = \ucd9c\uadfc button.wrkstart = \ucd9c\uadfc
button.wrkend = \ud1f4\uadfc button.wrkend = \ud1f4\uadfc
button.reply = \ub2f5\uae00 button.reply = \ub2f5\uae00
button.scrap = \uc2a4\ud06c\ub7a9 button.scrap = \uc2a4\ud06c\ub7a9
button.comment = \ub313\uae00 button.comment = \ub313\uae00
button.excel = \uc5d1\uc140 button.excel = \uc5d1\uc140
button.init=\ucd08\uae30\ud654 button.init=\ucd08\uae30\ud654
button.acknowledgment=\uc2b9\uc778 button.acknowledgment=\uc2b9\uc778
button.cancelAcknowledgment=\uc2b9\uc778\ucde8\uc18c button.cancelAcknowledgment=\uc2b9\uc778\ucde8\uc18c
button.bulkUpload=\uc77c\uad04\ub4f1\ub85d button.bulkUpload=\uc77c\uad04\ub4f1\ub85d
button.log = \ub85c\uadf8 button.log = \ub85c\uadf8
button.set = \uc124\uc815 button.set = \uc124\uc815
button.move = \uc774\ub3d9 button.move = \uc774\ub3d9
#UI Common Message# #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.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.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.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.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.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.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.save.msg=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
common.regist.msg=\ub4f1\ub85d\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.delete.msg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
common.update.msg=\uc218\uc815\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.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.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.acknowledgement.msg=\uc2b9\uc778\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
common.acknowledgementcancel.msg=\uc2b9\uc778\ucde8\uc18c\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.nocomment.msg=\ub313\uae00\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
common.noguest.msg=\uc791\uc131\ub41c \ubc29\uba85\ub85d\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.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.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.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.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. 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.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.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. 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.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.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 = \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.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.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.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.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.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.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.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.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. 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# #UI User Message#
fail.user.passwordUpdate1=\ud604\uc7ac \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. 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. 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. 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. 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.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) 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. 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. 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. fail.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
#UI Cop Message# #UI Cop Message#
cop.extrlUser = \uc678\ubd80\uc0ac\uc6a9\uc790 cop.extrlUser = \uc678\ubd80\uc0ac\uc6a9\uc790
cop.intrlUser = \ub0b4\ubd80\uc0ac\uc6a9\uc790 cop.intrlUser = \ub0b4\ubd80\uc0ac\uc6a9\uc790
cop.private = \ube44\uacf5\uac1c cop.private = \ube44\uacf5\uac1c
cop.public = \uacf5\uac1c cop.public = \uacf5\uac1c
cop.adbkNm = \uc8fc\uc18c\ub85d\uba85 cop.adbkNm = \uc8fc\uc18c\ub85d\uba85
cop.othbcScope = \uacf5\uac1c\ubc94\uc704 cop.othbcScope = \uacf5\uac1c\ubc94\uc704
cop.company = \ud68c\uc0ac cop.company = \ud68c\uc0ac
cop.part = \ubd80\uc11c cop.part = \ubd80\uc11c
cop.man = \uac1c\uc778 cop.man = \uac1c\uc778
cop.adbkUser = \uad6c\uc131\uc6d0 cop.adbkUser = \uad6c\uc131\uc6d0
cop.bbsNm = \uac8c\uc2dc\ud310\uba85 cop.bbsNm = \uac8c\uc2dc\ud310\uba85
cop.bbsIntrcn = \uac8c\uc2dc\ud310\uc18c\uac1c cop.bbsIntrcn = \uac8c\uc2dc\ud310\uc18c\uac1c
cop.bbsTyCode = \uac8c\uc2dc\ud310 \uc720\ud615 cop.bbsTyCode = \uac8c\uc2dc\ud310 \uc720\ud615
cop.bbsAttrbCode = \uac8c\uc2dc\ud310 \uc18d\uc131 cop.bbsAttrbCode = \uac8c\uc2dc\ud310 \uc18d\uc131
cop.replyPosblAt = \ub2f5\uc7a5\uac00\ub2a5\uc5ec\ubd80 cop.replyPosblAt = \ub2f5\uc7a5\uac00\ub2a5\uc5ec\ubd80
cop.fileAtchPosblAt = \ud30c\uc77c\ucca8\ubd80\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.posblAtchFileNumber = \ucca8\ubd80\uac00\ub2a5\ud30c\uc77c \uc22b\uc790
cop.tmplatId = \ud15c\ud50c\ub9bf \uc815\ubcf4 cop.tmplatId = \ud15c\ud50c\ub9bf \uc815\ubcf4
cop.guestList.subject = \ubc29\uba85\ub85d \uac8c\uc2dc\uae00\uc785\ub2c8\ub2e4. cop.guestList.subject = \ubc29\uba85\ub85d \uac8c\uc2dc\uae00\uc785\ub2c8\ub2e4.
cop.nttSj = \uc81c\ubaa9 cop.nttSj = \uc81c\ubaa9
cop.nttCn = \uae00\ub0b4\uc6a9 cop.nttCn = \uae00\ub0b4\uc6a9
cop.ntceBgnde = \uac8c\uc2dc\uc2dc\uc791\uc77c cop.ntceBgnde = \uac8c\uc2dc\uc2dc\uc791\uc77c
cop.ntceEndde = \uac8c\uc2dc\uc885\ub8cc\uc77c cop.ntceEndde = \uac8c\uc2dc\uc885\ub8cc\uc77c
cop.ntcrNm = \uc791\uc131\uc790 cop.ntcrNm = \uc791\uc131\uc790
cop.password = \ud328\uc2a4\uc6cc\ub4dc cop.password = \ud328\uc2a4\uc6cc\ub4dc
cop.atchFile = \ud30c\uc77c\ucca8\ubd80 cop.atchFile = \ud30c\uc77c\ucca8\ubd80
cop.guestList = \ubc29\uba85\ub85d cop.guestList = \ubc29\uba85\ub85d
cop.guestListCn = \ubc29\uba85\ub85d \ub0b4\uc6a9 cop.guestListCn = \ubc29\uba85\ub85d \ub0b4\uc6a9
cop.noticeTerm = \uac8c\uc2dc\uae30\uac04 cop.noticeTerm = \uac8c\uc2dc\uae30\uac04
cop.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d cop.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d
cop.cmmntyNm = \ucee4\ubba4\ub2c8\ud2f0\uba85 cop.cmmntyNm = \ucee4\ubba4\ub2c8\ud2f0\uba85
cop.cmmntyIntrcn = \ucee4\ubba4\ub2c8\ud2f0 \uc18c\uac1c cop.cmmntyIntrcn = \ucee4\ubba4\ub2c8\ud2f0 \uc18c\uac1c
cop.cmmntyMngr = \ucee4\ubba4\ub2c8\ud2f0 \uad00\ub9ac\uc790 cop.cmmntyMngr = \ucee4\ubba4\ub2c8\ud2f0 \uad00\ub9ac\uc790
cop.clbOprtr = \ub3d9\ud638\ud68c \uc6b4\uc601\uc790 cop.clbOprtr = \ub3d9\ud638\ud68c \uc6b4\uc601\uc790
cop.clbIntrcn = \ub3d9\ud638\ud68c \uc18c\uac1c cop.clbIntrcn = \ub3d9\ud638\ud68c \uc18c\uac1c
cop.clbNm = \ub3d9\ud638\ud68c \uba85 cop.clbNm = \ub3d9\ud638\ud68c \uba85
cop.tmplatNm = \ud15c\ud50c\ub9bf\uba85 cop.tmplatNm = \ud15c\ud50c\ub9bf\uba85
cop.tmplatSeCode = \ud15c\ud50c\ub9bf \uad6c\ubd84 cop.tmplatSeCode = \ud15c\ud50c\ub9bf \uad6c\ubd84
cop.tmplatCours = \ud15c\ud50c\ub9bf\uacbd\ub85c cop.tmplatCours = \ud15c\ud50c\ub9bf\uacbd\ub85c
cop.useAt = \uc0ac\uc6a9\uc5ec\ubd80 cop.useAt = \uc0ac\uc6a9\uc5ec\ubd80
cop.ncrdNm = \uc774\ub984 cop.ncrdNm = \uc774\ub984
cop.cmpnyNm = \ud68c\uc0ac\uba85 cop.cmpnyNm = \ud68c\uc0ac\uba85
cop.deptNm = \ubd80\uc11c\uba85 cop.deptNm = \ubd80\uc11c\uba85
cop.ofcpsNm = \uc9c1\uc704 cop.ofcpsNm = \uc9c1\uc704
cop.clsfNm = \uc9c1\uae09 cop.clsfNm = \uc9c1\uae09
cop.emailAdres = \uc774\uba54\uc77c\uc8fc\uc18c cop.emailAdres = \uc774\uba54\uc77c\uc8fc\uc18c
cop.telNo = \uc804\ud654\ubc88\ud638 cop.telNo = \uc804\ud654\ubc88\ud638
cop.mbtlNum = \ud734\ub300\ud3f0\ubc88\ud638 cop.mbtlNum = \ud734\ub300\ud3f0\ubc88\ud638
cop.adres = \uc8fc\uc18c cop.adres = \uc8fc\uc18c
cop.extrlUserAt = \uc678\ubd80\uc0ac\uc6a9\uc790\uc5ec\ubd80 cop.extrlUserAt = \uc678\ubd80\uc0ac\uc6a9\uc790\uc5ec\ubd80
cop.publicAt = \uacf5\uac1c\uc5ec\ubd80 cop.publicAt = \uacf5\uac1c\uc5ec\ubd80
cop.remark = \ube44\uace0 cop.remark = \ube44\uace0
cop.trgetNm = \ucee4\ubba4\ub2c8\ud2f0/\ub3d9\ud638\ud68c \uc815\ubcf4 cop.trgetNm = \ucee4\ubba4\ub2c8\ud2f0/\ub3d9\ud638\ud68c \uc815\ubcf4
cop.preview = \ubbf8\ub9ac\ubcf4\uae30 cop.preview = \ubbf8\ub9ac\ubcf4\uae30
cop.withdraw.msg=\ud0c8\ud1f4\ucc98\ub9ac \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? 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.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.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.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.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.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.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.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.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.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.wrterNm = \uc791\uc131\uc790
cop.comment.commentCn = \ub0b4\uc6a9 cop.comment.commentCn = \ub0b4\uc6a9
cop.comment.commentPassword = \ud328\uc2a4\uc6cc\ub4dc cop.comment.commentPassword = \ud328\uc2a4\uc6cc\ub4dc
cop.satisfaction.wrterNm = \uc791\uc131\uc790 cop.satisfaction.wrterNm = \uc791\uc131\uc790
cop.satisfaction.stsfdgCn = \ub0b4\uc6a9 cop.satisfaction.stsfdgCn = \ub0b4\uc6a9
cop.satisfaction.stsfdg = \ub9cc\uc871\ub3c4 cop.satisfaction.stsfdg = \ub9cc\uc871\ub3c4
cop.satisfaction.stsfdgPassword = \ud328\uc2a4\uc6cc\ub4dc cop.satisfaction.stsfdgPassword = \ud328\uc2a4\uc6cc\ub4dc
cop.scrap.scrapNm = \uc2a4\ud06c\ub7a9\uba85 cop.scrap.scrapNm = \uc2a4\ud06c\ub7a9\uba85
#UI USS Message# #UI USS Message#
uss.ion.noi.ntfcSj=\uc81c\ubaa9 uss.ion.noi.ntfcSj=\uc81c\ubaa9
uss.ion.noi.ntfcCn=\ub0b4\uc6a9 uss.ion.noi.ntfcCn=\ub0b4\uc6a9
uss.ion.noi.ntfcDate=\uc54c\ub9bc\uc77c\uc790 uss.ion.noi.ntfcDate=\uc54c\ub9bc\uc77c\uc790
uss.ion.noi.ntfcTime=\uc54c\ub9bc\uc2dc\uac04 uss.ion.noi.ntfcTime=\uc54c\ub9bc\uc2dc\uac04
uss.ion.noi.ntfcHH=\uc54c\ub9bc\uc2dc\uac04 uss.ion.noi.ntfcHH=\uc54c\ub9bc\uc2dc\uac04
uss.ion.noi.ntfcMM=\uc54c\ub9bc\ubd84 uss.ion.noi.ntfcMM=\uc54c\ub9bc\ubd84
uss.ion.noi.bhNtfcIntrvl=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 uss.ion.noi.bhNtfcIntrvl=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9
uss.ion.noi.bhNtfcIntrvl.msg=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. uss.ion.noi.bhNtfcIntrvl.msg=\uc0ac\uc804\uc54c\ub9bc\uac04\uaca9 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
uss.ion.noi.alertNtfcTime=\uc54c\ub9bc\uc77c\uc790 \ubc0f \uc2dc\uac04\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. uss.ion.noi.alertNtfcTime=\uc54c\ub9bc\uc77c\uc790 \ubc0f \uc2dc\uac04\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
#UI COP Message# #UI COP Message#
cop.sms.trnsmitTelno=\ubc1c\uc2e0\uc804\ud654\ubc88\ud638 cop.sms.trnsmitTelno=\ubc1c\uc2e0\uc804\ud654\ubc88\ud638
cop.sms.trnsmitCn=\uc804\uc1a1\ub0b4\uc6a9 cop.sms.trnsmitCn=\uc804\uc1a1\ub0b4\uc6a9
cop.sms.recptnTelno=\uc218\uc2e0\uc804\ud654\ubc88\ud638 cop.sms.recptnTelno=\uc218\uc2e0\uc804\ud654\ubc88\ud638
cop.sms.send=\uc804\uc1a1 cop.sms.send=\uc804\uc1a1
cop.sms.addRecptn=\ucd94\uac00 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.recptnTelno.msg=\uc218\uc2e0\uc804\ud654\ubc88\ud638 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
#UI sym.log Message# #UI sym.log Message#
sym.log.histSeCode = \uc774\ub825\uad6c\ubd84 sym.log.histSeCode = \uc774\ub825\uad6c\ubd84
sym.log.sysNm = \uc2dc\uc2a4\ud15c\uba85 sym.log.sysNm = \uc2dc\uc2a4\ud15c\uba85
sym.log.histCn = \uc774\ub825\ub0b4\uc6a9 sym.log.histCn = \uc774\ub825\ub0b4\uc6a9
sym.log.atchFile = \ucca8\ubd80\ud30c\uc77c sym.log.atchFile = \ucca8\ubd80\ud30c\uc77c
sym.log.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d sym.log.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d
sym.ems.receiver = \ubc1b\ub294\uc0ac\ub78c sym.ems.receiver = \ubc1b\ub294\uc0ac\ub78c
sym.ems.title = \uc81c\ubaa9 sym.ems.title = \uc81c\ubaa9
sym.ems.content = \ubc1c\uc2e0\ub0b4\uc6a9 sym.ems.content = \ubc1c\uc2e0\ub0b4\uc6a9
#Vlidator Errors# #Vlidator Errors#
errors.prefix=<div class="error"> errors.prefix=<div class="error">
errors.suffix=</div><br/> errors.suffix=</div><br/>
errors.required={0}\uc740(\ub294) \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4. 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.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.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.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.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.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.short={0}\uc740(\ub294) short\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
errors.integer={0}\uc740(\ub294) \uc815\uc218 \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. errors.integer={0}\uc740(\ub294) \uc815\uc218 \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
errors.long={0}\uc740(\ub294) long \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) \uc2e4\uc218 \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. errors.float={0}\uc740(\ub294) \uc2e4\uc218 \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
errors.double={0}\uc740(\ub294) double \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.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.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.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.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.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.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.ip=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 IP\uc8fc\uc18c\uc785\ub2c8\ub2e4.
errors.password1={0}\uc740(\ub294) 8~20\uc790 \ub0b4\uc5d0\uc11c \uc785\ub825\ud574\uc57c \ud569\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.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.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. 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.
errors.notKorean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4. errors.notKorean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
error.security.runtime.error = error error.security.runtime.error = error
#Xss Errors# #Xss Errors#
errors.xss.checkerUser=\ud574\ub2f9 \uae30\ub2a5\uc5d0 \ub300\ud55c \uc0ac\uc6a9 \ubc0f \ucc98\ub9ac \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. 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 #File Upload / Download
errors.file.extension=\uc9c0\uc6d0\ub418\ub294 \ud30c\uc77c\uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4. 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. 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. success.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
#Vlidator Errors- wordDicaryVO# #Vlidator Errors- wordDicaryVO#
wordDicaryVO.wordNm=\uc6a9\uc5b4\uba85 wordDicaryVO.wordNm=\uc6a9\uc5b4\uba85
wordDicaryVO.engNm=\uc601\ubb38\uba85 wordDicaryVO.engNm=\uc601\ubb38\uba85
wordDicaryVO.wordDc=\uc6a9\uc5b4\uc124\uba85 wordDicaryVO.wordDc=\uc6a9\uc5b4\uc124\uba85
wordDicaryVO.synonm=\ub3d9\uc758\uc5b4 wordDicaryVO.synonm=\ub3d9\uc758\uc5b4
#Vlidator Errors- cnsltManageVO# #Vlidator Errors- cnsltManageVO#
cnsltManageVO.cnsltSj=\uc0c1\ub2f4\uc81c\ubaa9 cnsltManageVO.cnsltSj=\uc0c1\ub2f4\uc81c\ubaa9
cnsltManageVO.cnsltCn=\uc0c1\ub2f4\ub0b4\uc6a9 cnsltManageVO.cnsltCn=\uc0c1\ub2f4\ub0b4\uc6a9
cnsltManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638 cnsltManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638
cnsltManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638 cnsltManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638
cnsltManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638 cnsltManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638
cnsltManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638 cnsltManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638
cnsltManageVO.wrterNm=\uc791\uc131\uc790\uba85 cnsltManageVO.wrterNm=\uc791\uc131\uc790\uba85
cnsltManageVO.managtCn=\ub2f5\ubcc0\ub0b4\uc6a9 cnsltManageVO.managtCn=\ub2f5\ubcc0\ub0b4\uc6a9
#Vlidator Errors- siteManageVO# #Vlidator Errors- siteManageVO#
siteManageVO.siteNm=\uc0ac\uc774\ud2b8\uba85 siteManageVO.siteNm=\uc0ac\uc774\ud2b8\uba85
siteManageVO.siteUrl=\uc0ac\uc774\ud2b8 URL siteManageVO.siteUrl=\uc0ac\uc774\ud2b8 URL
siteManageVO.siteDc=\uc0ac\uc774\ud2b8\uc124\uba85 siteManageVO.siteDc=\uc0ac\uc774\ud2b8\uc124\uba85
siteManageVO.siteThemaClCode=\uc0ac\uc774\ud2b8\uc8fc\uc81c\ubd84\ub958 siteManageVO.siteThemaClCode=\uc0ac\uc774\ud2b8\uc8fc\uc81c\ubd84\ub958
siteManageVO.actvtyAt=\ud65c\uc131\uc5ec\ubd80 siteManageVO.actvtyAt=\ud65c\uc131\uc5ec\ubd80
siteManageVO.useAt=\uc0ac\uc6a9\uc5ec\ubd80 siteManageVO.useAt=\uc0ac\uc6a9\uc5ec\ubd80
#Vlidator Errors- recomendSiteManageVO# #Vlidator Errors- recomendSiteManageVO#
recomendSiteManageVO.recomendSiteNm=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uba85 recomendSiteManageVO.recomendSiteNm=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uba85
recomendSiteManageVO.recomendSiteUrl=\ucd94\ucc9c\uc0ac\uc774\ud2b8 URL recomendSiteManageVO.recomendSiteUrl=\ucd94\ucc9c\uc0ac\uc774\ud2b8 URL
recomendSiteManageVO.recomendSiteDc=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc124\uba85 recomendSiteManageVO.recomendSiteDc=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc124\uba85
recomendSiteManageVO.recomendResnCn=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc2b9\uc778\uc0ac\uc720 recomendSiteManageVO.recomendResnCn=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc2b9\uc778\uc0ac\uc720
recomendSiteManageVO.confmDe=\uc2b9\uc778\uc77c\uc790 recomendSiteManageVO.confmDe=\uc2b9\uc778\uc77c\uc790
#Vlidator Errors- hpcmManageVO# #Vlidator Errors- hpcmManageVO#
hpcmManageVO.hpcmSeCode=\ub3c4\uc6c0\ub9d0\uad6c\ubd84 hpcmManageVO.hpcmSeCode=\ub3c4\uc6c0\ub9d0\uad6c\ubd84
hpcmManageVO.hpcmDf=\ub3c4\uc6c0\ub9d0\uc815\uc758 hpcmManageVO.hpcmDf=\ub3c4\uc6c0\ub9d0\uc815\uc758
hpcmManageVO.hpcmDc=\ub3c4\uc6c0\ub9d0\uc124\uba85 hpcmManageVO.hpcmDc=\ub3c4\uc6c0\ub9d0\uc124\uba85
#Vlidator Errors- newsManageVO# #Vlidator Errors- newsManageVO#
newsManageVO.newsSj=\ub274\uc2a4\uc81c\ubaa9 newsManageVO.newsSj=\ub274\uc2a4\uc81c\ubaa9
newsManageVO.newsCn=\ub274\uc2a4\ub0b4\uc6a9 newsManageVO.newsCn=\ub274\uc2a4\ub0b4\uc6a9
newsManageVO.ntceDe=\uac8c\uc2dc\uc77c\uc790 newsManageVO.ntceDe=\uac8c\uc2dc\uc77c\uc790
#Vlidator Errors- faqManageVO# #Vlidator Errors- faqManageVO#
faqManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9 faqManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9
faqManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9 faqManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9
faqManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9 faqManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9
#Vlidator Errors- stplatManageVO# #Vlidator Errors- stplatManageVO#
stplatManageVO.useStplatNm=\uc774\uc6a9\uc57d\uad00\uba85 stplatManageVO.useStplatNm=\uc774\uc6a9\uc57d\uad00\uba85
stplatManageVO.useStplatCn=\uc774\uc6a9\uc57d\uad00\ub0b4\uc6a9 stplatManageVO.useStplatCn=\uc774\uc6a9\uc57d\uad00\ub0b4\uc6a9
stplatManageVO.infoProvdAgreCn=\uc815\ubcf4\uc81c\uacf5\ub3d9\uc758\ub0b4\uc6a9 stplatManageVO.infoProvdAgreCn=\uc815\ubcf4\uc81c\uacf5\ub3d9\uc758\ub0b4\uc6a9
#Vlidator Errors- cpyrhtPrtcPolicyVO# #Vlidator Errors- cpyrhtPrtcPolicyVO#
cpyrhtPrtcPolicyVO.cpyrhtPrtcPolicyCn=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9 cpyrhtPrtcPolicyVO.cpyrhtPrtcPolicyCn=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9
#Vlidator Errors- qnaManageVO# #Vlidator Errors- qnaManageVO#
qnaManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9 qnaManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9
qnaManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9 qnaManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9
qnaManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638 qnaManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638
qnaManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638 qnaManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638
qnaManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638 qnaManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638
qnaManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638 qnaManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638
qnaManageVO.wrterNm=\uc791\uc131\uc790\uba85 qnaManageVO.wrterNm=\uc791\uc131\uc790\uba85
qnaManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9 qnaManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9
#Vlidator Errors- ReprtStatsVO# #Vlidator Errors- ReprtStatsVO#
sts.reprtId = \ubcf4\uace0\uc11cID sts.reprtId = \ubcf4\uace0\uc11cID
sts.title = \ubcf4\uace0\uc11c\uba85 sts.title = \ubcf4\uace0\uc11c\uba85
sts.category = \ubcf4\uace0\uc11c\uc720\ud615 sts.category = \ubcf4\uace0\uc11c\uc720\ud615
sts.status = \uc9c4\ud589\uc0c1\ud0dc sts.status = \uc9c4\ud589\uc0c1\ud0dc
sts.regDate = \ub4f1\ub85d\uc77c\uc2dc sts.regDate = \ub4f1\ub85d\uc77c\uc2dc
#Rest day messages# #Rest day messages#
sym.cal.restDay = \ud734\uc77c\uc77c\uc790 sym.cal.restDay = \ud734\uc77c\uc77c\uc790
sym.cal.restName = \ud734\uc77c\uba85 sym.cal.restName = \ud734\uc77c\uba85
sym.cal.restDetail = \ud734\uc77c\uc124\uba85 sym.cal.restDetail = \ud734\uc77c\uc124\uba85
sym.cal.restCategory = \ud734\uc77c\uad6c\ubd84 sym.cal.restCategory = \ud734\uc77c\uad6c\ubd84
image.errorBg = \uc624\ub958\uc774\ubbf8\uc9c0 image.errorBg = \uc624\ub958\uc774\ubbf8\uc9c0
#Custom message# #Custom message#
custom.fail.access=\uc815\uc0c1\uc801\uc778 \uc811\uadfc\uc774 \uc544\ub2d9\ub2c8\ub2e4. \ub85c\uadf8\uc778 \ud6c4 \uc774\uc6a9\ud558\uc138\uc694. custom.fail.access=\uc815\uc0c1\uc801\uc778 \uc811\uadfc\uc774 \uc544\ub2d9\ub2c8\ub2e4. \ub85c\uadf8\uc778 \ud6c4 \uc774\uc6a9\ud558\uc138\uc694.
custom.fail.accessDenied=\uc694\uccad\uc5d0 \ub300\ud55c \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. custom.fail.accessDenied=\uc694\uccad\uc5d0 \ub300\ud55c \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
custom.isNotExist.msg=\ucc98\ub9ac\uc5d0 \ud544\uc694\ud55c \uc790\ub8cc\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. custom.isNotExist.msg=\ucc98\ub9ac\uc5d0 \ud544\uc694\ud55c \uc790\ub8cc\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:context="http://www.springframework.org/schema/context"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- <!--
<beans:bean id="programDao" class="cokr.xit.base.menu.dao.ProgramDao" /> <beans:bean id="programDao" class="cokr.xit.base.menu.dao.ProgramDao" />
<beans:bean id="programService" class="cokr.xit.base.menu.service.bean.ProgramServiceBean" /> <beans:bean id="programService" class="cokr.xit.base.menu.service.bean.ProgramServiceBean" />
--> -->
</beans> </beans>

@ -1,68 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:context="http://www.springframework.org/schema/context"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:util="http://www.springframework.org/schema/util" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<context:component-scan base-package="cokr.xit"> <context:component-scan base-package="cokr.xit">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/> <context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/> <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/> <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan> </context:component-scan>
<bean id="antPathMatcher" class="org.springframework.util.AntPathMatcher" /> <bean id="antPathMatcher" class="org.springframework.util.AntPathMatcher" />
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames"> <property name="basenames">
<list> <list>
<value>classpath:message/message-common</value> <value>classpath:message/message-common</value>
<value>classpath:message/authentication-message</value> <value>classpath:message/authentication-message</value>
<value>classpath:org/egovframe/rte/fdl/property/messages/properties</value> <value>classpath:org/egovframe/rte/fdl/property/messages/properties</value>
</list> </list>
</property> </property>
<property name="defaultEncoding" value="UTF-8"/> <property name="defaultEncoding" value="UTF-8"/>
<property name="cacheSeconds"> <property name="cacheSeconds">
<value>60</value> <value>60</value>
</property> </property>
</bean> </bean>
<bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper"> <bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="dateFormat" ref="dateFormat"/> <property name="dateFormat" ref="dateFormat"/>
</bean> </bean>
<bean id="dateFormat" class="java.text.SimpleDateFormat"> <bean id="dateFormat" class="java.text.SimpleDateFormat">
<constructor-arg index="0" value="yyyy-MM-dd HH:mm"/> <constructor-arg index="0" value="yyyy-MM-dd HH:mm"/>
</bean> </bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="ko_KR"/> <property name="defaultLocale" value="ko_KR"/>
</bean> </bean>
<bean name="propertyService" class="org.egovframe.rte.fdl.property.impl.EgovPropertyServiceImpl" destroy-method="destroy"> <bean name="propertyService" class="org.egovframe.rte.fdl.property.impl.EgovPropertyServiceImpl" destroy-method="destroy">
<property name="properties"> <property name="properties">
<map> <map>
<entry key="tempDir" value="D:/temp"/> <entry key="tempDir" value="D:/temp"/>
<entry key="pageUnit" value="10"/> <entry key="pageUnit" value="10"/>
<entry key="pageSize" value="10"/> <entry key="pageSize" value="10"/>
</map> </map>
</property> </property>
<!-- <!--
<property name="extFileName"> <property name="extFileName">
<set> <set>
<map> <map>
<entry key="encoding" value="UTF-8"/> <entry key="encoding" value="UTF-8"/>
<entry key="filename" value="classpath*:properties/your-file.properties"/> <entry key="filename" value="classpath*:properties/your-file.properties"/>
</map> </map>
</set> </set>
</property> </property>
--> -->
</bean> </bean>
<bean id="leaveaTrace" class="org.egovframe.rte.fdl.cmmn.trace.LeaveaTrace" /> <bean id="leaveaTrace" class="org.egovframe.rte.fdl.cmmn.trace.LeaveaTrace" />
</beans> </beans>

@ -1,49 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
"> ">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- <!--
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/> <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
<property name="url" value="jdbc:oracle:thin:@115.21.123.118:1521:bustms" /> <property name="url" value="jdbc:oracle:thin:@115.21.123.118:1521:bustms" />
--> -->
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/> <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
<property name="url" value="jdbc:log4jdbc:mariadb://localhost:3306/xit-base?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=Asia/Seoul&amp;useSSL=false" /> <property name="url" value="jdbc:log4jdbc:mariadb://localhost:3306/xit-base?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=Asia/Seoul&amp;useSSL=false" />
<property name="username" value="root"/> <property name="username" value="root"/>
<property name="password" value="mjkhan"/> <property name="password" value="mjkhan"/>
</bean> </bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean" <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref="dataSource" p:dataSource-ref="dataSource"
p:configLocation="classpath:sql/mybatis-config.xml" p:configLocation="classpath:sql/mybatis-config.xml"
p:mapperLocations="classpath:sql/mapper/**/*.xml" p:mapperLocations="classpath:sql/mapper/**/*.xml"
/> />
<bean id="mapperConfigurer" class="org.egovframe.rte.psl.dataaccess.mapper.MapperConfigurer"> <bean id="mapperConfigurer" class="org.egovframe.rte.psl.dataaccess.mapper.MapperConfigurer">
<property name="basePackage" value="cokr.xit" /> <property name="basePackage" value="cokr.xit" />
<property name="sqlSessionFactoryBeanName" value="sqlSession"/> <property name="sqlSessionFactoryBeanName" value="sqlSession"/>
</bean> </bean>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/> <property name="dataSource" ref="dataSource"/>
</bean> </bean>
<tx:advice id="txAdvice" transaction-manager="txManager"> <tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes> <tx:attributes>
<tx:method name="*" rollback-for="Exception"/> <tx:method name="*" rollback-for="Exception"/>
</tx:attributes> </tx:attributes>
</tx:advice> </tx:advice>
<aop:config> <aop:config>
<aop:pointcut id="serviceMethod" expression="execution(* cokr.xit..service.bean..*ServiceBean.*(..))" /> <aop:pointcut id="serviceMethod" expression="execution(* cokr.xit..service.bean..*ServiceBean.*(..))" />
<aop:pointcut id="requiredTx" expression="execution(* cokr.xit..service.bean..*ServiceBean.*(..))"/> <aop:pointcut id="requiredTx" expression="execution(* cokr.xit..service.bean..*ServiceBean.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="requiredTx" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="requiredTx" />
</aop:config> </aop:config>
</beans> </beans>

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.base.file.dao.FileMapper"> <mapper namespace="cokr.xit.base.file.dao.FileMapper">
<resultMap id="fileRow" type="cokr.xit.base.file.FileInfo"> <resultMap id="fileRow" type="cokr.xit.base.file.FileInfo">
<result property="id" column="FILE_ID"/> <result property="id" column="FILE_ID"/>

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test"> <mapper namespace="test">
<insert id="insert" parameterType="map">${sql}</insert> <insert id="insert" parameterType="map">${sql}</insert>

@ -1,25 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <configuration>
<settings> <settings>
<setting name="mapUnderscoreToCamelCase" value="false"/> <setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="cacheEnabled" value="false" /> <setting name="cacheEnabled" value="false" />
<setting name="jdbcTypeForNull" value="NULL" /> <setting name="jdbcTypeForNull" value="NULL" />
<setting name="callSettersOnNulls" value="true"/> <setting name="callSettersOnNulls" value="true"/>
</settings> </settings>
<typeAliases> <typeAliases>
<typeAlias alias="egovMap" type="org.egovframe.rte.psl.dataaccess.util.EgovMap"/> <typeAlias alias="egovMap" type="org.egovframe.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="dataobject" type="cokr.xit.foundation.data.DataObject"/> <typeAlias alias="dataobject" type="cokr.xit.foundation.data.DataObject"/>
</typeAliases> </typeAliases>
<typeHandlers> <typeHandlers>
<typeHandler handler="cokr.xit.foundation.data.RowValueHandler" javaType="java.lang.Object"/> <typeHandler handler="cokr.xit.foundation.data.RowValueHandler" javaType="java.lang.Object"/>
</typeHandlers> </typeHandlers>
<plugins> <plugins>
<plugin interceptor="cokr.xit.foundation.data.paging.PagingSupport" /> <plugin interceptor="cokr.xit.foundation.data.paging.PagingSupport" />
</plugins> </plugins>
</configuration> </configuration>
Loading…
Cancel
Save