최초 커밋
commit
a6ace9a047
@ -0,0 +1,275 @@
|
|||||||
|
<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>
|
||||||
|
|
||||||
|
<groupId>cokr.xit.tool</groupId>
|
||||||
|
<artifactId>xit-crudgen</artifactId>
|
||||||
|
<version>23.04.01-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>xit-crudgen</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
|
||||||
|
<java.version>17</java.version>
|
||||||
|
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||||
|
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||||
|
|
||||||
|
<spring.maven.artifact.version>5.3.20</spring.maven.artifact.version>
|
||||||
|
<org.egovframe.rte.version>4.1.0</org.egovframe.rte.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>mvn2s</id>
|
||||||
|
<url>https://repo1.maven.org/maven2/</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</releases>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>egovframe</id>
|
||||||
|
<url>http://maven.egovframe.kr:8080/maven/</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</releases>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>egovframe2</id>
|
||||||
|
<url>https://www.egovframe.go.kr/maven/</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</releases>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
<!--
|
||||||
|
<repository>
|
||||||
|
<id>maven-releases</id>
|
||||||
|
<url>http://xit.xit-nexus.com:8081/repository/maven-releases/</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</snapshots>
|
||||||
|
<releases>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</releases>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>maven-snapshots</id>
|
||||||
|
<url>http://xit.xit-nexus.com:8081/repository/maven-snapshots/</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
<releases>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</releases>
|
||||||
|
</repository>
|
||||||
|
-->
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cokr.xit.tool</groupId>
|
||||||
|
<artifactId>xit-codegen</artifactId>
|
||||||
|
<version>23.04.01-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mariadb.jdbc</groupId>
|
||||||
|
<artifactId>mariadb-java-client</artifactId>
|
||||||
|
<version>2.7.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<defaultGoal>install</defaultGoal>
|
||||||
|
<directory>${basedir}/target</directory>
|
||||||
|
<finalName>${project.artifactId}-${project.version}</finalName>
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<resource><directory>${basedir}/src/main/resources</directory></resource>
|
||||||
|
</resources>
|
||||||
|
|
||||||
|
<testResources>
|
||||||
|
<testResource><directory>${basedir}/src/test/resources</directory></testResource>
|
||||||
|
<testResource><directory>${basedir}/src/main/resources</directory></testResource>
|
||||||
|
</testResources>
|
||||||
|
|
||||||
|
<pluginManagement>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.tomcat.maven</groupId>
|
||||||
|
<artifactId>tomcat7-maven-plugin</artifactId>
|
||||||
|
<version>2.2</version>
|
||||||
|
<configuration>
|
||||||
|
<port>80</port>
|
||||||
|
<path>/</path>
|
||||||
|
<systemProperties>
|
||||||
|
<JAVA_OPTS>-Xms256m -Xmx768m -XX:MaxPermSize=256m</JAVA_OPTS>
|
||||||
|
</systemProperties>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>${java.version}</source>
|
||||||
|
<target>${java.version}</target>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
|
||||||
|
<compilerArgs>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg>
|
||||||
|
</compilerArgs>
|
||||||
|
<annotationProcessorPaths>
|
||||||
|
<path>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.18.28</version>
|
||||||
|
</path>
|
||||||
|
</annotationProcessorPaths>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>hibernate3-maven-plugin</artifactId>
|
||||||
|
<version>2.1</version>
|
||||||
|
<configuration>
|
||||||
|
<components>
|
||||||
|
<component>
|
||||||
|
<name>hbm2ddl</name>
|
||||||
|
<implementation>annotationconfiguration</implementation>
|
||||||
|
</component>
|
||||||
|
</components>
|
||||||
|
</configuration>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hsqldb</groupId>
|
||||||
|
<artifactId>hsqldb</artifactId>
|
||||||
|
<version>2.3.2</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
||||||
|
<!-- EMMA -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>emma-maven-plugin</artifactId>
|
||||||
|
<version>1.0-alpha-3</version>
|
||||||
|
</plugin>
|
||||||
|
<!-- PMD manven plugin -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-pmd-plugin</artifactId>
|
||||||
|
<version>3.1</version>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</pluginManagement>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>3.3.0</version>
|
||||||
|
<configuration>
|
||||||
|
<includes>
|
||||||
|
<include>**/*.class</include>
|
||||||
|
<include>**/*.tmpl</include>
|
||||||
|
</includes>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<!-- EMMA -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
|
<configuration>
|
||||||
|
<skipTests>true</skipTests>
|
||||||
|
<reportFormat>xml</reportFormat>
|
||||||
|
<excludes>
|
||||||
|
<exclude>**/Abstract*.java</exclude>
|
||||||
|
<exclude>**/*Suite.java</exclude>
|
||||||
|
</excludes>
|
||||||
|
<includes>
|
||||||
|
<include>**/*Test.java</include>
|
||||||
|
</includes>
|
||||||
|
<compilerArgs>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
|
||||||
|
<arg>--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED</arg>
|
||||||
|
</compilerArgs>
|
||||||
|
<annotationProcessorPaths>
|
||||||
|
<path>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.18.28</version>
|
||||||
|
</path>
|
||||||
|
</annotationProcessorPaths>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>emma-maven-plugin</artifactId>
|
||||||
|
<inherited>true</inherited>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-source-plugin</artifactId>
|
||||||
|
<version>2.2</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>attach-sources</id>
|
||||||
|
<goals>
|
||||||
|
<goal>jar</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- Javadoc -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-javadoc-plugin</artifactId>
|
||||||
|
<version>2.9.1</version>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<!-- Nexus deploy -->
|
||||||
|
<distributionManagement>
|
||||||
|
<snapshotRepository>
|
||||||
|
<id>maven-snapshot</id>
|
||||||
|
<url>http://xit.xit-nexus.com:8081/repository/maven-snapshots/</url>
|
||||||
|
</snapshotRepository>
|
||||||
|
|
||||||
|
<repository>
|
||||||
|
<id>maven-release</id>
|
||||||
|
<url>http://xit.xit-nexus.com:8081/repository/maven-releases/</url>
|
||||||
|
</repository>
|
||||||
|
</distributionManagement>
|
||||||
|
<!-- Nexus deploy -->
|
||||||
|
|
||||||
|
</project>
|
@ -0,0 +1,164 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||||
|
import cokr.xit.foundation.data.StringMap;
|
||||||
|
import cokr.xit.tool.codegen.SourceWriter;
|
||||||
|
import cokr.xit.tool.codegen.table.TableInfo;
|
||||||
|
import cokr.xit.tool.codegen.table.TableInfoFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.BeanFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.CodeFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.ControllerFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.EntityFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.EntityInfo;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.MapperFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.MapperXmlFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.QueryFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.ServiceBeanFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.ServiceFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.TestFactory;
|
||||||
|
|
||||||
|
@Service("crudgenService")
|
||||||
|
public class CrudgenService extends AbstractServiceBean {
|
||||||
|
public static final String ENTITY = "entity";
|
||||||
|
public static final String QUERY = "query";
|
||||||
|
public static final String MAPPER = "mapper";
|
||||||
|
public static final String MAPPER_XML = "mapperXml";
|
||||||
|
public static final String BEAN = "bean";
|
||||||
|
public static final String SERVICE = "serviceInterface";
|
||||||
|
public static final String SERVICE_BEAN = "serviceBean";
|
||||||
|
public static final String CONTROLLER = "controller";
|
||||||
|
public static final String TEST = "test";
|
||||||
|
|
||||||
|
private DataSource dataSource;
|
||||||
|
|
||||||
|
private SourceWriter
|
||||||
|
javaWriter = new SourceWriter(),
|
||||||
|
xmlWriter = new SourceWriter(),
|
||||||
|
testWriter = new SourceWriter();
|
||||||
|
|
||||||
|
private TableInfoFactory tableInfoFactory = new TableInfoFactory();
|
||||||
|
private EntityFactory entityFactory = new EntityFactory();
|
||||||
|
private QueryFactory queryFactory = new QueryFactory();
|
||||||
|
private MapperFactory mapperFactory = new MapperFactory();
|
||||||
|
private MapperXmlFactory mapperXmlFactory = new MapperXmlFactory();
|
||||||
|
private BeanFactory beanFactory = new BeanFactory();
|
||||||
|
private ServiceFactory serviceFactory = new ServiceFactory();
|
||||||
|
private ServiceBeanFactory serviceBeanFactory = new ServiceBeanFactory();
|
||||||
|
private ControllerFactory controllerFactory = new ControllerFactory();
|
||||||
|
private TestFactory testFactory = new TestFactory();
|
||||||
|
|
||||||
|
private LinkedHashMap<String, CodeFactory> factories = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
public CrudgenService() {
|
||||||
|
factories.put(ENTITY, entityFactory);
|
||||||
|
factories.put(QUERY, queryFactory);
|
||||||
|
factories.put(MAPPER, mapperFactory);
|
||||||
|
factories.put(MAPPER_XML, mapperXmlFactory);
|
||||||
|
factories.put(BEAN, beanFactory);
|
||||||
|
factories.put(SERVICE, serviceFactory);
|
||||||
|
factories.put(SERVICE_BEAN, serviceBeanFactory);
|
||||||
|
factories.put(CONTROLLER, controllerFactory);
|
||||||
|
factories.put(TEST, testFactory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Resource(name = "dataSource")
|
||||||
|
public void setDataSource(DataSource dataSource) {
|
||||||
|
this.dataSource = dataSource;
|
||||||
|
|
||||||
|
String prj = property("project.target");
|
||||||
|
javaWriter
|
||||||
|
.targetProject(prj)
|
||||||
|
.srcDir(property("dir.source"));
|
||||||
|
xmlWriter
|
||||||
|
.targetProject(prj)
|
||||||
|
.srcDir(property("dir.mapperXml"));
|
||||||
|
testWriter
|
||||||
|
.targetProject(prj)
|
||||||
|
.srcDir(property("dir.testSource"));
|
||||||
|
}
|
||||||
|
|
||||||
|
String property(String key) {
|
||||||
|
return properties.getString("crudgen." + key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityInfo getEntityInfo(String tableName) {
|
||||||
|
tableInfoFactory.setDatasource(dataSource);
|
||||||
|
TableInfo tableInfo = tableInfoFactory.create(tableName);
|
||||||
|
if (tableInfo != null) {
|
||||||
|
EntityInfo entityInfo = new EntityInfo();
|
||||||
|
entityInfo.setTableInfo(tableInfo);
|
||||||
|
entityInfo.setAuthor(property("source.author"));
|
||||||
|
return entityInfo;
|
||||||
|
} else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private EntityInfo setEntityInfo(EntityInfo entityInfo) {
|
||||||
|
factories.values().forEach(factory -> factory.setEntityInfo(entityInfo));
|
||||||
|
return entityInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Object> generateCodes(EntityInfo entityInfo, String... keys) {
|
||||||
|
return createCodes(entityInfo, false, keys);
|
||||||
|
}
|
||||||
|
|
||||||
|
private StringMap<Object> createCodes(EntityInfo entityInfo, boolean build, String... keys) {
|
||||||
|
StringMap<Object> result = new StringMap<>();
|
||||||
|
try {
|
||||||
|
setEntityInfo(entityInfo);
|
||||||
|
if (entityFactory.getEntityInfo() == null)
|
||||||
|
throw new RuntimeException("No EntityInfo found to create codes");
|
||||||
|
|
||||||
|
entityFactory.getEntityInfo().setAuthor(property("source.author"));
|
||||||
|
Set<String> targetKeys = isEmpty(keys) ?
|
||||||
|
factories.keySet() :
|
||||||
|
Stream.of(keys).collect(Collectors.toSet());
|
||||||
|
|
||||||
|
Map<String, String> sourceCodes = factories.entrySet().stream()
|
||||||
|
.filter(entry -> targetKeys.contains(entry.getKey()))
|
||||||
|
.collect(Collectors.toMap(
|
||||||
|
entry -> entry.getKey(),
|
||||||
|
entry -> {
|
||||||
|
CodeFactory factory = entry.getValue();
|
||||||
|
Object code = factory.create();
|
||||||
|
if (build) {
|
||||||
|
if (factory == mapperXmlFactory)
|
||||||
|
xmlWriter.write(code);
|
||||||
|
else if (factory == testFactory)
|
||||||
|
testWriter.write(code);
|
||||||
|
else
|
||||||
|
javaWriter.write(code);
|
||||||
|
}
|
||||||
|
return factory.generate();
|
||||||
|
},
|
||||||
|
(o1, o2) -> o1,
|
||||||
|
LinkedHashMap::new
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return result
|
||||||
|
.set("success", true)
|
||||||
|
.set("sourceCodes", sourceCodes);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return result
|
||||||
|
.set("success", false)
|
||||||
|
.set("cause", rootCause(e).getMessage());
|
||||||
|
} finally {
|
||||||
|
setEntityInfo(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Object> createCodes(EntityInfo entityInfo, String... keys) {
|
||||||
|
return createCodes(entityInfo, true, keys);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.NameSupport;
|
||||||
|
import cokr.xit.tool.codegen.SourceWriter;
|
||||||
|
import cokr.xit.tool.codegen.template.JavaTemplate;
|
||||||
|
|
||||||
|
public class BeanFactory extends TemplateBasedCodeFactory {
|
||||||
|
public BeanFactory() {
|
||||||
|
javaTemplate = new JavaTemplate("classpath:template/bean.tmpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean targetExists() {
|
||||||
|
return targetExists(beanClassFullname(entityInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generate() {
|
||||||
|
return javaTemplate
|
||||||
|
.configure(this::configure)
|
||||||
|
.generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void configure(JavaTemplate.Config conf) {
|
||||||
|
javaTemplate
|
||||||
|
.setPackageName(beanPackage(entityInfo))
|
||||||
|
.setClassName(beanClassName(entityInfo));
|
||||||
|
|
||||||
|
configure(conf, List.of(
|
||||||
|
getNames(entityInfo),
|
||||||
|
QueryFactory.getNames(entityInfo),
|
||||||
|
MapperFactory.getNames(entityInfo)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SourceWriter.Info create() {
|
||||||
|
javaTemplate.configure(this::configure);
|
||||||
|
return javaTemplate.toSourceInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, String> getNames(EntityInfo entityInfo) {
|
||||||
|
return Map.of(
|
||||||
|
"beanPackage", beanPackage(entityInfo),
|
||||||
|
"beanClass", beanClassName(entityInfo),
|
||||||
|
"beanFullname", beanClassFullname(entityInfo),
|
||||||
|
"beanName", beanName(entityInfo)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String beanPackage(EntityInfo entityInfo) {
|
||||||
|
return entityInfo.getPackageName() + ".service.bean";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String beanClassName(EntityInfo entityInfo) {
|
||||||
|
return entityInfo.getEntityName() + "Bean";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String beanClassFullname(EntityInfo entityInfo) {
|
||||||
|
return String.join(".", beanPackage(entityInfo), beanClassName(entityInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String beanName(EntityInfo entityInfo) {
|
||||||
|
return NameSupport.lowerCaseFirst(beanClassName(entityInfo));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import cokr.xit.foundation.Assert;
|
||||||
|
import cokr.xit.tool.codegen.Klass;
|
||||||
|
import cokr.xit.tool.codegen.NameSupport;
|
||||||
|
import cokr.xit.tool.codegen.poet.Parameter;
|
||||||
|
import cokr.xit.tool.codegen.template.FileTemplate;
|
||||||
|
|
||||||
|
public abstract class CodeFactory {
|
||||||
|
protected EntityInfo entityInfo;
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public <T extends CodeFactory> T setEntityInfo(EntityInfo entityInfo) {
|
||||||
|
this.entityInfo = entityInfo;
|
||||||
|
return (T)this;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean targetExists(String classFullname) {
|
||||||
|
return Klass.exists(classFullname);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean targetExists() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String entityClassName() {
|
||||||
|
return entityInfo.getEntityName();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String entityName() {
|
||||||
|
return NameSupport.lowerCaseFirst(entityClassName());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String entityClassFullname() {
|
||||||
|
return String.join(".", entityInfo.getPackageName(), entityInfo.getEntityName());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Map<String, String> getNames() {
|
||||||
|
return Map.of(
|
||||||
|
"entityPackage", entityInfo.getPackageName(),
|
||||||
|
"entityClass", entityClassName(),
|
||||||
|
"entityName", entityName(),
|
||||||
|
"entityFullname", entityClassFullname(),
|
||||||
|
"entityComment", entityComment()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Parameter entityParameter() {
|
||||||
|
return new Parameter(
|
||||||
|
Klass.forName(entityClassFullname()),
|
||||||
|
entityName()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String entityComment() {
|
||||||
|
return entityInfo.getComment();
|
||||||
|
// return entityInfo.getTableInfo().getComment();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String author() {
|
||||||
|
return entityInfo.getAuthor();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String today() {
|
||||||
|
return new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void configure(FileTemplate.Config conf, Iterable<Map<String, String>> maps) {
|
||||||
|
conf.set("author", author())
|
||||||
|
.set("today", today());
|
||||||
|
|
||||||
|
getNames().forEach(conf::put);
|
||||||
|
|
||||||
|
if (Assert.isEmpty(maps)) return;
|
||||||
|
|
||||||
|
for (Map<String, String> map: maps)
|
||||||
|
map.forEach(conf::put);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract String generate();
|
||||||
|
|
||||||
|
public abstract Object create();
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.SourceWriter;
|
||||||
|
import cokr.xit.tool.codegen.template.JavaTemplate;
|
||||||
|
|
||||||
|
public class ControllerFactory extends TemplateBasedCodeFactory {
|
||||||
|
public ControllerFactory() {
|
||||||
|
javaTemplate = new JavaTemplate("classpath:template/controller.tmpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean targetExists() {
|
||||||
|
return targetExists(String.join(".", controllerPackage(entityInfo), controllerClassName(entityInfo)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generate() {
|
||||||
|
return javaTemplate
|
||||||
|
.configure(this::configure)
|
||||||
|
.generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void configure(JavaTemplate.Config conf) {
|
||||||
|
javaTemplate
|
||||||
|
.setPackageName(controllerPackage(entityInfo))
|
||||||
|
.setClassName(controllerClassName(entityInfo));
|
||||||
|
|
||||||
|
configure(conf, List.of(
|
||||||
|
getNames(entityInfo),
|
||||||
|
ServiceFactory.getNames(entityInfo),
|
||||||
|
QueryFactory.getNames(entityInfo)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public SourceWriter.Info create() {
|
||||||
|
javaTemplate.configure(this::configure);
|
||||||
|
return javaTemplate.toSourceInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, String> getNames(EntityInfo entityInfo) {
|
||||||
|
return Map.of(
|
||||||
|
"controllerPackage", controllerPackage(entityInfo),
|
||||||
|
"controllerClass", controllerClassName(entityInfo)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String controllerPackage(EntityInfo entityInfo) {
|
||||||
|
return entityInfo.getPackageName() + ".web";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String controllerClassName(EntityInfo entityInfo) {
|
||||||
|
return entityInfo.getEntityName() + "Controller";
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import cokr.xit.foundation.AbstractEntity;
|
||||||
|
import cokr.xit.tool.codegen.Klass;
|
||||||
|
import cokr.xit.tool.codegen.poet.Annotation;
|
||||||
|
import cokr.xit.tool.codegen.poet.Field;
|
||||||
|
import cokr.xit.tool.codegen.poet.JavaType;
|
||||||
|
import cokr.xit.tool.codegen.poet.Javadoc;
|
||||||
|
import cokr.xit.tool.codegen.poet.Property;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
public class EntityFactory extends CodeFactory {
|
||||||
|
@Override
|
||||||
|
public boolean targetExists() {
|
||||||
|
return targetExists(entityClassFullname());
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityInfo getEntityInfo() {
|
||||||
|
return entityInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityFactory setEntityName(String name) {
|
||||||
|
entityInfo.setEntityName(name);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityFactory setPackageName(String packageName) {
|
||||||
|
entityInfo.setPackageName(packageName);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityFactory setAuthor(String author) {
|
||||||
|
entityInfo.setAuthor(author);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityFactory setAnnotateGetterSetter(boolean annotateGetterSetter) {
|
||||||
|
entityInfo.setAnnotateGetterSetter(annotateGetterSetter);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FieldInfo> getFields() {
|
||||||
|
return entityInfo.getFields();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generate() {
|
||||||
|
return create().spec().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JavaType create() {
|
||||||
|
JavaType entity = new JavaType("class", entityClassName())
|
||||||
|
.packageName(entityInfo.getPackageName())
|
||||||
|
.modifiers("public")
|
||||||
|
.superclass(AbstractEntity.class)
|
||||||
|
.javodoc(new Javadoc()
|
||||||
|
.add(entityComment())
|
||||||
|
.add("@author $L", author())
|
||||||
|
);
|
||||||
|
|
||||||
|
if (entityInfo.isAnnotateGetterSetter()) {
|
||||||
|
entity.annotations(new Annotation(Getter.class), new Annotation(Setter.class));
|
||||||
|
List<Field> fields = getFields().stream()
|
||||||
|
.filter(field -> !field.isExclude())
|
||||||
|
.map(field -> field.createField())
|
||||||
|
.toList();
|
||||||
|
entity.fields(fields.toArray(new Field[fields.size()]));
|
||||||
|
} else {
|
||||||
|
List<Property> properties = getFields().stream()
|
||||||
|
.filter(field -> !field.isExclude())
|
||||||
|
.map(field -> field.createProperty())
|
||||||
|
.toList();
|
||||||
|
entity.properties(properties.toArray(new Property[properties.size()]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Class<?> klass = Klass.forName("String");
|
||||||
|
System.out.println(klass.getName());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,108 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.NameSupport;
|
||||||
|
import cokr.xit.tool.codegen.table.TableInfo;
|
||||||
|
|
||||||
|
public class EntityInfo {
|
||||||
|
private String
|
||||||
|
entityName,
|
||||||
|
packageName,
|
||||||
|
tableName,
|
||||||
|
comment,
|
||||||
|
author;
|
||||||
|
private boolean annotateGetterSetter;
|
||||||
|
private List<FieldInfo> fields;
|
||||||
|
|
||||||
|
public EntityInfo setTableInfo(TableInfo tableInfo) {
|
||||||
|
tableName = tableInfo.getName();
|
||||||
|
comment = tableInfo.getComment();
|
||||||
|
fields = tableInfo.getColumns().values().stream()
|
||||||
|
.map(column -> new FieldInfo().setColumn(column))
|
||||||
|
.toList();
|
||||||
|
fields.forEach(field -> field.setIndex(fields.indexOf(field)));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEntityName() {
|
||||||
|
if (entityName != null)
|
||||||
|
return entityName;
|
||||||
|
|
||||||
|
String str = tableName
|
||||||
|
.replace("TB_", "")
|
||||||
|
.replace("tb_", "");
|
||||||
|
str = NameSupport.camelCase(str);
|
||||||
|
|
||||||
|
return entityName = NameSupport.upperCaseFirst(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityInfo setEntityName(String name) {
|
||||||
|
this.entityName = name;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPackageName() {
|
||||||
|
return packageName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityInfo setPackageName(String packageName) {
|
||||||
|
this.packageName = packageName;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTableName() {
|
||||||
|
return tableName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityInfo setTableName(String tableName) {
|
||||||
|
this.tableName = tableName;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getComment() {
|
||||||
|
return comment;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityInfo setComment(String comment) {
|
||||||
|
this.comment = comment;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAuthor() {
|
||||||
|
return author;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityInfo setAuthor(String author) {
|
||||||
|
this.author = author;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isAnnotateGetterSetter() {
|
||||||
|
return annotateGetterSetter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityInfo setAnnotateGetterSetter(boolean annotateGetterSetter) {
|
||||||
|
this.annotateGetterSetter = annotateGetterSetter;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FieldInfo> getFields() {
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityInfo setFields(List<FieldInfo> fields) {
|
||||||
|
this.fields = fields;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityInfo clear() {
|
||||||
|
entityName = packageName = author = null;
|
||||||
|
annotateGetterSetter = false;
|
||||||
|
if (fields != null)
|
||||||
|
fields.clear();
|
||||||
|
fields = null;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,106 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.Klass;
|
||||||
|
import cokr.xit.tool.codegen.NameSupport;
|
||||||
|
import cokr.xit.tool.codegen.poet.Field;
|
||||||
|
import cokr.xit.tool.codegen.poet.Method;
|
||||||
|
import cokr.xit.tool.codegen.poet.Property;
|
||||||
|
import cokr.xit.tool.codegen.table.ColumnInfo;
|
||||||
|
|
||||||
|
public class FieldInfo {
|
||||||
|
private int index;
|
||||||
|
private String name;
|
||||||
|
private ColumnInfo columnInfo;
|
||||||
|
private boolean exclude;
|
||||||
|
|
||||||
|
private static final Map<String, String> inherited = Map.of(
|
||||||
|
"REG_DT", "createdAt",
|
||||||
|
"RGTR", "createdBy",
|
||||||
|
"MDFCN_DT", "lastModified",
|
||||||
|
"MDFR", "modifiedBy",
|
||||||
|
"USE_YN", "useYN"
|
||||||
|
);
|
||||||
|
|
||||||
|
public static boolean isColumnInherited(String name) {
|
||||||
|
return inherited.keySet().contains(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isFieldInherited(String name) {
|
||||||
|
return inherited.values().contains(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getIndex() {
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIndex(int index) {
|
||||||
|
this.index = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
if (name != null)
|
||||||
|
return name;
|
||||||
|
|
||||||
|
name = inherited.get(columnInfo.getName());
|
||||||
|
if (name == null)
|
||||||
|
name = NameSupport.camelCase(columnInfo.getName());
|
||||||
|
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ColumnInfo getColumn() {
|
||||||
|
return columnInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FieldInfo setColumn(ColumnInfo columnInfo) {
|
||||||
|
this.columnInfo = columnInfo;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isExclude() {
|
||||||
|
return exclude || inherited.keySet().contains(columnInfo.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExclude(boolean exclude) {
|
||||||
|
this.exclude = exclude;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Class<?> fieldClass() {
|
||||||
|
return Klass.forName(getColumn().getClassName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Field createField() {
|
||||||
|
Field field = new Field(fieldClass(), getName())
|
||||||
|
.modifiers("private");
|
||||||
|
/*
|
||||||
|
String defaultValue = getColumn().getDefaultValue();
|
||||||
|
|
||||||
|
if (!Assert.isEmpty(defaultValue) && !"null".equalsIgnoreCase(defaultValue)) {
|
||||||
|
if (defaultValue.startsWith("'") && defaultValue.endsWith("'"))
|
||||||
|
field.initialize("\"$L\"", defaultValue.replace("'", ""));
|
||||||
|
else
|
||||||
|
field.initialize(defaultValue);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
return field.javadoc(getColumn().getComment());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Method createGetter() {
|
||||||
|
return Method.getter(fieldClass(), getName(), getColumn().getComment());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Method createSetter() {
|
||||||
|
return Method.setter(fieldClass(), getName(), getColumn().getComment());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Property createProperty() {
|
||||||
|
return new Property(fieldClass(), getName())
|
||||||
|
.description(getColumn().getComment());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,104 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.poet.Javadoc;
|
||||||
|
|
||||||
|
public class JavadocSupport {
|
||||||
|
public static Javadoc forClass(String classComment, String description, String author) {
|
||||||
|
boolean hasDescription = description != null && !description.isEmpty();
|
||||||
|
return new Javadoc().add(
|
||||||
|
"$L\n" +
|
||||||
|
(hasDescription ? "$L\n" : "") +
|
||||||
|
"\n<pre>\n" +
|
||||||
|
"============ 변경 이력 ============\n" +
|
||||||
|
"$L\t$L 최초 작성\n" +
|
||||||
|
"================================\n" +
|
||||||
|
"</pre>",
|
||||||
|
hasDescription ?
|
||||||
|
new String[] {classComment, description, new SimpleDateFormat("yyyy-MM-dd").format(new Date()), author} :
|
||||||
|
new String[] {classComment, new SimpleDateFormat("yyyy-MM-dd").format(new Date()), author}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Javadoc forSelect(String entityComment) {
|
||||||
|
return new Javadoc().add(
|
||||||
|
"주어진 조건으로 $L 정보를 조회하여 목록으로 반환한다.\n" +
|
||||||
|
"@param req $L 조회 조건\n" +
|
||||||
|
"@return $L 목록",
|
||||||
|
entityComment, entityComment, entityComment
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Javadoc forInsert(String entityComment, String paramName) {
|
||||||
|
return new Javadoc().add(
|
||||||
|
"$L 정보를 등록한다.<br />\n" +
|
||||||
|
"@param params 파라미터\n" +
|
||||||
|
"<ul><li>\"$L\" - $L</li>\n" +
|
||||||
|
" <li>\"currentUser\" - 현재 접근한 사용자</li>\n" +
|
||||||
|
"</ul>\n" +
|
||||||
|
"@return 저장된 정보수",
|
||||||
|
entityComment, paramName, entityComment
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Javadoc forDefaultInsert(String entityComment, String paramName) {
|
||||||
|
return new Javadoc().add(
|
||||||
|
"$L 정보를 등록한다.\n" +
|
||||||
|
"@param $L $L\n" +
|
||||||
|
"@return 저장 여부\n" +
|
||||||
|
"<ul><li>저장됐으면 true</li>\n" +
|
||||||
|
" <li>그렇지 않으면 false</li>\n" +
|
||||||
|
"</ul>",
|
||||||
|
entityComment, paramName, entityComment
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Javadoc forUpdate(String entityComment, String paramName) {
|
||||||
|
return new Javadoc().add(
|
||||||
|
"$L 정보를 수정한다.<br />\n" +
|
||||||
|
"@param params 파라미터\n" +
|
||||||
|
"<ul><li>\"$L\" - $L</li>\n" +
|
||||||
|
" <li>\"currentUser\" - 현재 접근한 사용자</li>\n" +
|
||||||
|
"</ul>\n" +
|
||||||
|
"@return 저장된 정보수",
|
||||||
|
entityComment, paramName, entityComment
|
||||||
|
);
|
||||||
|
}
|
||||||
|
public static Javadoc forDefaultUpdate(String entityComment, String paramName) {
|
||||||
|
return new Javadoc().add(
|
||||||
|
"$L 정보를 수정한다.\n" +
|
||||||
|
"@param $L $L\n" +
|
||||||
|
"@return 저장 여부\n" +
|
||||||
|
"<ul><li>저장됐으면 true</li>\n" +
|
||||||
|
" <li>그렇지 않으면 false</li>\n" +
|
||||||
|
"</ul>",
|
||||||
|
entityComment, paramName, entityComment
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Javadoc forDelete(String entityComment, String paramName) {
|
||||||
|
return new Javadoc().add(
|
||||||
|
"$L 정보를 삭제한다.<br />\n" +
|
||||||
|
"@param params 파라미터\n" +
|
||||||
|
"<ul><li>\"$L\" - $L</li>\n" +
|
||||||
|
" <li>\"currentUser\" - 현재 접근한 사용자</li>\n" +
|
||||||
|
"</ul>\n" +
|
||||||
|
"@return 저장된 정보수",
|
||||||
|
entityComment, paramName, entityComment
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Javadoc forDefaultDelete(String entityComment, String paramName) {
|
||||||
|
return new Javadoc().add(
|
||||||
|
"$L 정보를 삭제한다.\n" +
|
||||||
|
"@param $L $L\n" +
|
||||||
|
"@return 저장 여부\n" +
|
||||||
|
"<ul><li>저장됐으면 true</li>\n" +
|
||||||
|
" <li>그렇지 않으면 false</li>\n" +
|
||||||
|
"</ul>",
|
||||||
|
entityComment, paramName, entityComment
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.NameSupport;
|
||||||
|
import cokr.xit.tool.codegen.SourceWriter;
|
||||||
|
import cokr.xit.tool.codegen.template.JavaTemplate;
|
||||||
|
|
||||||
|
public class MapperFactory extends TemplateBasedCodeFactory {
|
||||||
|
public MapperFactory() {
|
||||||
|
javaTemplate = new JavaTemplate("classpath:template/mapper.tmpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean targetExists() {
|
||||||
|
return targetExists(mapperClassFullname(entityInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void configure(JavaTemplate.Config conf) {
|
||||||
|
javaTemplate
|
||||||
|
.setPackageName(mapperPackage(entityInfo))
|
||||||
|
.setClassName(mapperClassName(entityInfo));
|
||||||
|
|
||||||
|
configure(conf, List.of(
|
||||||
|
getNames(entityInfo),
|
||||||
|
QueryFactory.getNames(entityInfo)
|
||||||
|
));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generate() {
|
||||||
|
return javaTemplate
|
||||||
|
.configure(this::configure)
|
||||||
|
.generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SourceWriter.Info create() {
|
||||||
|
javaTemplate.configure(this::configure);
|
||||||
|
return javaTemplate.toSourceInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, String> getNames(EntityInfo entityInfo) {
|
||||||
|
return Map.of(
|
||||||
|
"mapperPackage", mapperPackage(entityInfo),
|
||||||
|
"mapperClass", mapperClassName(entityInfo),
|
||||||
|
"mapperName", mapperName(entityInfo),
|
||||||
|
"mapperFullname", mapperClassFullname(entityInfo)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String mapperPackage(EntityInfo entityInfo) {
|
||||||
|
return entityInfo.getPackageName() + ".dao";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String mapperClassName(EntityInfo entityInfo) {
|
||||||
|
return entityInfo.getEntityName() + "Mapper";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String mapperName(EntityInfo entityInfo) {
|
||||||
|
return NameSupport.lowerCaseFirst(mapperClassName(entityInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String mapperClassFullname(EntityInfo entityInfo) {
|
||||||
|
return String.join(".", mapperPackage(entityInfo), mapperClassName(entityInfo));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,154 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.SourceWriter;
|
||||||
|
import cokr.xit.tool.codegen.template.FileTemplate;
|
||||||
|
|
||||||
|
public class MapperXmlFactory extends CodeFactory {
|
||||||
|
private FileTemplate template = new FileTemplate("classpath:template/mapper-xml.tmpl");
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generate() {
|
||||||
|
return template
|
||||||
|
.configure(this::configure)
|
||||||
|
.generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SourceWriter.Info create() {
|
||||||
|
String filename = entityName() + "-mapper.xml";
|
||||||
|
String sourceCode = generate();
|
||||||
|
return new SourceWriter.Info(filename, sourceCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void configure(FileTemplate.Config conf) {
|
||||||
|
configure(conf, List.of(
|
||||||
|
MapperFactory.getNames(entityInfo),
|
||||||
|
Map.of(
|
||||||
|
"tableName", entityInfo.getTableName(),
|
||||||
|
"property-column-mapping", propertyColumnMappings(),
|
||||||
|
"columns", allColumns(),
|
||||||
|
"insertParams", insertParams(),
|
||||||
|
"updateParams", updateParams(),
|
||||||
|
"keys", where()
|
||||||
|
)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String propertyColumnMappings() {
|
||||||
|
List<FieldInfo> fields = entityInfo.getFields();
|
||||||
|
|
||||||
|
return join(
|
||||||
|
"\n ",
|
||||||
|
format(fields, field -> String.format("<result property=\"%s\" ", field.getName())),
|
||||||
|
format(fields, field -> String.format("column=\"%s\" />", field.getColumn().getName())),
|
||||||
|
comments(fields)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> comments(List<FieldInfo> fields) {
|
||||||
|
return fields.stream()
|
||||||
|
.map(field -> {
|
||||||
|
String comment = field.getColumn().getComment();
|
||||||
|
return comment != null && !comment.isEmpty() ? String.format("<!-- %s -->", comment) : "";
|
||||||
|
})
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> format(List<FieldInfo> fields, Function<FieldInfo, String> format) {
|
||||||
|
List<String> formatted = fields.stream()
|
||||||
|
.map(format)
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
int maxLength = formatted.stream().max(Comparator.comparingInt(String::length)).get().length();
|
||||||
|
|
||||||
|
return formatted.stream()
|
||||||
|
.map(str -> StringUtils.rightPad(str, maxLength + 1))
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
|
private String join(String separator, List<String>... stringLists) {
|
||||||
|
int rows = stringLists[0].size();
|
||||||
|
ArrayList<String> joined = new ArrayList<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < rows; ++i) {
|
||||||
|
String row = "";
|
||||||
|
for (List<String> strs: stringLists) {
|
||||||
|
row += strs.get(i);
|
||||||
|
}
|
||||||
|
joined.add(row);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return String.join(separator, joined);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String allColumns() {
|
||||||
|
return join(
|
||||||
|
"\n , ",
|
||||||
|
format(entityInfo.getFields(), field -> field.getColumn().getName()),
|
||||||
|
comments(entityInfo.getFields())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String insertParams() {
|
||||||
|
String entityName = entityName();
|
||||||
|
return join(
|
||||||
|
"\n , ",
|
||||||
|
format(entityInfo.getFields(), field -> {
|
||||||
|
String name = field.getName();
|
||||||
|
switch (name) {
|
||||||
|
case "createdBy":
|
||||||
|
case "modifiedBy": return "#{currentUser.id}";
|
||||||
|
case "createdAt":
|
||||||
|
case "lastModified": return "<include refid=\"utility.now\" />";
|
||||||
|
default: return String.format("#{%s.%s}", entityName, name);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
comments(entityInfo.getFields())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String updateParams() {
|
||||||
|
String entityName = entityName();
|
||||||
|
List<String> exclude = List.of("createdAt", "createdBy");
|
||||||
|
List<FieldInfo> fields = entityInfo.getFields().stream()
|
||||||
|
.filter(field -> !field.getColumn().isKey() && !exclude.contains(field.getName()))
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
return join(
|
||||||
|
"\n , ",
|
||||||
|
format(
|
||||||
|
fields,
|
||||||
|
field -> {
|
||||||
|
String name = field.getName();
|
||||||
|
String param = "";
|
||||||
|
switch (name) {
|
||||||
|
case "modifiedBy": param = "#{currentUser.id}"; break;
|
||||||
|
case "lastModified": param = "<include refid=\"utility.now\" />"; break;
|
||||||
|
default: param = String.format("#{%s.%s}", entityName, name); break;
|
||||||
|
}
|
||||||
|
return String.format("%s = %s", field.getColumn().getName(), param);
|
||||||
|
}
|
||||||
|
),
|
||||||
|
comments(fields)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String where() {
|
||||||
|
String entityName = entityName();
|
||||||
|
return entityInfo.getFields().stream()
|
||||||
|
.filter(field -> field.getColumn().isKey())
|
||||||
|
.map(field -> String.format("%s = #{%s.%s}", field.getColumn().getName(), entityName, field.getName()))
|
||||||
|
.collect(Collectors.joining("\n AND "));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.SourceWriter;
|
||||||
|
import cokr.xit.tool.codegen.template.JavaTemplate;
|
||||||
|
|
||||||
|
public class QueryFactory extends TemplateBasedCodeFactory {
|
||||||
|
public QueryFactory() {
|
||||||
|
javaTemplate = new JavaTemplate("classpath:template/query-request.tmpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean targetExists() {
|
||||||
|
return targetExists(queryClassFullName(entityInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generate() {
|
||||||
|
return javaTemplate
|
||||||
|
.configure(this::configure)
|
||||||
|
.generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void configure(JavaTemplate.Config conf) {
|
||||||
|
String
|
||||||
|
packageName = queryPackage(entityInfo),
|
||||||
|
className = queryClassName(entityInfo);
|
||||||
|
javaTemplate
|
||||||
|
.setPackageName(packageName)
|
||||||
|
.setClassName(className);
|
||||||
|
|
||||||
|
configure(
|
||||||
|
conf.set("queryPackage", packageName),
|
||||||
|
List.of(
|
||||||
|
getNames(entityInfo)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SourceWriter.Info create() {
|
||||||
|
javaTemplate.configure(this::configure);
|
||||||
|
return javaTemplate.toSourceInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, String> getNames(EntityInfo entityInfo) {
|
||||||
|
return Map.of(
|
||||||
|
"queryFullname", queryClassFullName(entityInfo),
|
||||||
|
"queryClass", queryClassName(entityInfo)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String queryPackage(EntityInfo entityInfo) {
|
||||||
|
return entityInfo.getPackageName();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String queryClassName(EntityInfo entityInfo) {
|
||||||
|
return entityInfo.getEntityName() + "Query";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String queryClassFullName(EntityInfo entityInfo) {
|
||||||
|
return queryPackage(entityInfo) + "." + queryClassName(entityInfo);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,65 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.SourceWriter;
|
||||||
|
import cokr.xit.tool.codegen.template.JavaTemplate;
|
||||||
|
|
||||||
|
public class ServiceBeanFactory extends TemplateBasedCodeFactory {
|
||||||
|
public ServiceBeanFactory() {
|
||||||
|
javaTemplate = new JavaTemplate("classpath:template/service-bean.tmpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean targetExists() {
|
||||||
|
return targetExists(String.join(".", serviceBeanPackage(entityInfo), serviceBeanClass(entityInfo)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generate() {
|
||||||
|
return javaTemplate
|
||||||
|
.configure(this::configure)
|
||||||
|
.generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void configure(JavaTemplate.Config conf) {
|
||||||
|
String
|
||||||
|
packageName = serviceBeanPackage(entityInfo),
|
||||||
|
className = serviceBeanClass(entityInfo);
|
||||||
|
|
||||||
|
javaTemplate
|
||||||
|
.setPackageName(packageName)
|
||||||
|
.setClassName(className);
|
||||||
|
|
||||||
|
conf.set("serviceBeanPackage", packageName)
|
||||||
|
.set("serviceBeanClass", className);
|
||||||
|
|
||||||
|
configure(conf, List.of(
|
||||||
|
getNames(entityInfo),
|
||||||
|
ServiceFactory.getNames(entityInfo),
|
||||||
|
QueryFactory.getNames(entityInfo),
|
||||||
|
BeanFactory.getNames(entityInfo)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public SourceWriter.Info create() {
|
||||||
|
javaTemplate.configure(this::configure);
|
||||||
|
return javaTemplate.toSourceInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, String> getNames(EntityInfo entityInfo) {
|
||||||
|
return Map.of(
|
||||||
|
"serviceBeanPackage", serviceBeanPackage(entityInfo),
|
||||||
|
"serviceBeanClass", serviceBeanClass(entityInfo)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String serviceBeanPackage(EntityInfo entityInfo) {
|
||||||
|
return ServiceFactory.servicePackage(entityInfo) + ".bean";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String serviceBeanClass(EntityInfo entityInfo) {
|
||||||
|
return ServiceFactory.serviceClassName(entityInfo) + "Bean";
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.NameSupport;
|
||||||
|
import cokr.xit.tool.codegen.SourceWriter;
|
||||||
|
import cokr.xit.tool.codegen.template.JavaTemplate;
|
||||||
|
|
||||||
|
public class ServiceFactory extends TemplateBasedCodeFactory {
|
||||||
|
public ServiceFactory() {
|
||||||
|
javaTemplate = new JavaTemplate("classpath:template/service-interface.tmpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean targetExists() {
|
||||||
|
return targetExists(serviceClassFullname(entityInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generate() {
|
||||||
|
return javaTemplate
|
||||||
|
.configure(this::configure)
|
||||||
|
.generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void configure(JavaTemplate.Config conf) {
|
||||||
|
javaTemplate
|
||||||
|
.setPackageName(servicePackage(entityInfo))
|
||||||
|
.setClassName(serviceClassName(entityInfo));
|
||||||
|
|
||||||
|
configure(conf, List.of(
|
||||||
|
QueryFactory.getNames(entityInfo),
|
||||||
|
getNames(entityInfo)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public SourceWriter.Info create() {
|
||||||
|
javaTemplate.configure(this::configure);
|
||||||
|
return javaTemplate.toSourceInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, String> getNames(EntityInfo entityInfo) {
|
||||||
|
return Map.of(
|
||||||
|
"servicePackage", servicePackage(entityInfo),
|
||||||
|
"serviceClass", serviceClassName(entityInfo),
|
||||||
|
"serviceName", serviceName(entityInfo),
|
||||||
|
"serviceFullname", serviceClassFullname(entityInfo)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String servicePackage(EntityInfo entityInfo) {
|
||||||
|
return entityInfo.getPackageName() + ".service";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String serviceClassName(EntityInfo entityInfo) {
|
||||||
|
return entityInfo.getEntityName() + "Service";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String serviceClassFullname(EntityInfo entityInfo) {
|
||||||
|
return String.join(".", servicePackage(entityInfo), serviceClassName(entityInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String serviceName(EntityInfo entityInfo) {
|
||||||
|
return NameSupport.lowerCaseFirst(serviceClassName(entityInfo));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.template.JavaTemplate;
|
||||||
|
|
||||||
|
public abstract class TemplateBasedCodeFactory extends CodeFactory {
|
||||||
|
protected JavaTemplate javaTemplate;
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package cokr.xit.tool.crudgen.service.bean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import cokr.xit.tool.codegen.SourceWriter;
|
||||||
|
import cokr.xit.tool.codegen.template.JavaTemplate;
|
||||||
|
|
||||||
|
public class TestFactory extends TemplateBasedCodeFactory {
|
||||||
|
public static String testPackage(EntityInfo entityInfo) {
|
||||||
|
return ServiceFactory.servicePackage(entityInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String testClassName(EntityInfo entityInfo) {
|
||||||
|
return ServiceFactory.serviceClassName(entityInfo) + "Test";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String serviceClassFullname(EntityInfo entityInfo) {
|
||||||
|
return String.join(".", testPackage(entityInfo), testClassName(entityInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
public TestFactory() {
|
||||||
|
javaTemplate = new JavaTemplate("classpath:template/service-test.tmpl");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String generate() {
|
||||||
|
return javaTemplate
|
||||||
|
.configure(this::configure)
|
||||||
|
.generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void configure(JavaTemplate.Config conf) {
|
||||||
|
String
|
||||||
|
packageName = ServiceFactory.servicePackage(entityInfo),
|
||||||
|
className = testClassName(entityInfo);
|
||||||
|
|
||||||
|
javaTemplate
|
||||||
|
.setPackageName(packageName)
|
||||||
|
.setClassName(className);
|
||||||
|
|
||||||
|
conf.set("package", packageName)
|
||||||
|
.set("testClass", className);
|
||||||
|
|
||||||
|
configure(conf, List.of(
|
||||||
|
ServiceFactory.getNames(entityInfo),
|
||||||
|
QueryFactory.getNames(entityInfo)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public SourceWriter.Info create() {
|
||||||
|
javaTemplate.configure(this::configure);
|
||||||
|
return javaTemplate.toSourceInfo();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
package cokr.xit.tool.crudgen.web;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import cokr.xit.foundation.web.AbstractController;
|
||||||
|
import cokr.xit.tool.crudgen.service.CrudgenService;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.EntityInfo;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class CrudgenController extends AbstractController {
|
||||||
|
@Resource(name = "crudgenService")
|
||||||
|
private CrudgenService service;
|
||||||
|
|
||||||
|
@GetMapping({"/", "/index.do"})
|
||||||
|
public ModelAndView mainPage() {
|
||||||
|
return new ModelAndView("index");
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/preview.do")
|
||||||
|
public ModelAndView preview() {
|
||||||
|
return new ModelAndView("preview");
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/entityInfo.do")
|
||||||
|
public ModelAndView entityInfo(String tableName) {
|
||||||
|
return new ModelAndView("jsonView")
|
||||||
|
.addObject("entityInfo", service.getEntityInfo(tableName));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/generate.do")
|
||||||
|
public ModelAndView generate(@RequestBody EntityInfo entityInfo) {
|
||||||
|
return new ModelAndView("jsonView")
|
||||||
|
.addAllObjects(service.generateCodes(entityInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/create.do")
|
||||||
|
public ModelAndView create(@RequestBody EntityInfo entityInfo) {
|
||||||
|
return new ModelAndView("jsonView")
|
||||||
|
.addAllObjects(service.createCodes(entityInfo));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
package {beanPackage};
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import cokr.xit.foundation.AbstractComponent;
|
||||||
|
import cokr.xit.foundation.data.DataObject;
|
||||||
|
|
||||||
|
import {entityFullname};
|
||||||
|
import {queryFullname};
|
||||||
|
import {mapperFullname};
|
||||||
|
|
||||||
|
/**{entityComment} 정보 관리 Bean
|
||||||
|
*
|
||||||
|
* <p>상세 설명:
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* ============ 변경 이력 ============
|
||||||
|
* {today} {author} 최초 작성
|
||||||
|
* ================================
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@Component("{beanName}")
|
||||||
|
public class {beanClass} extends AbstractComponent {
|
||||||
|
/** {entityComment} 정보 DAO */
|
||||||
|
@Resource(name = "{mapperName}")
|
||||||
|
private {mapperClass} {mapperName};
|
||||||
|
|
||||||
|
/**지정한 조건에 따라 {entityComment} 목록을 조회하여 반환한다.
|
||||||
|
* @param req {entityComment} 조회 조건
|
||||||
|
* @return {entityComment} 목록
|
||||||
|
*/
|
||||||
|
public List<DataObject> get{entityClass}List({queryClass} req) {
|
||||||
|
return {mapperName}.select{entityClass}List(req);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**지정한 조건에 따라 {entityComment} 객체들을 반환한다.
|
||||||
|
* @param req {entityComment} 조회 조건
|
||||||
|
* @return {entityComment} 객체 목록
|
||||||
|
*/
|
||||||
|
public List<{entityClass}> get{entityClass}s({queryClass} req) {
|
||||||
|
return {mapperName}.select{entityClass}s(req);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 등록한다.
|
||||||
|
* @param {entityName} {entityComment}
|
||||||
|
* @return 저장 여부
|
||||||
|
* <ul><li>저장됐으면 true</li>
|
||||||
|
* <li>그렇지 않으면 false</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
public boolean create({entityClass} {entityName}) {
|
||||||
|
return {mapperName}.insert({entityName});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 수정한다.
|
||||||
|
* @param {entityName} {entityComment}
|
||||||
|
* @return 저장 여부
|
||||||
|
* <ul><li>저장됐으면 true</li>
|
||||||
|
* <li>그렇지 않으면 false</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
public boolean update({entityClass} {entityName}) {
|
||||||
|
return {mapperName}.update({entityName});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 삭제한다.
|
||||||
|
* @param {entityName} {entityComment}
|
||||||
|
* @return 저장 여부
|
||||||
|
* <ul><li>저장됐으면 true</li>
|
||||||
|
* <li>그렇지 않으면 false</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
public boolean remove({entityClass} {entityName}) {
|
||||||
|
return {mapperName}.delete({entityName});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,103 @@
|
|||||||
|
package {controllerPackage};
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import cokr.xit.foundation.web.AbstractController;
|
||||||
|
|
||||||
|
import {entityFullname};
|
||||||
|
import {queryFullname};
|
||||||
|
import {serviceFullname};
|
||||||
|
|
||||||
|
/**{entityComment} 서비스의 웹 컨트롤러
|
||||||
|
*
|
||||||
|
* <p>상세 설명:
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* ============ 변경 이력 ============
|
||||||
|
* {today} {author} 최초 작성
|
||||||
|
* ================================
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@RequestMapping(name = "{entityComment}", value = "/{entityName}")
|
||||||
|
public class {controllerClass} extends AbstractController {
|
||||||
|
/**{entityComment} 서비스*/
|
||||||
|
@Resource(name = "{serviceName}")
|
||||||
|
private {serviceClass} {serviceName};
|
||||||
|
|
||||||
|
/**{entityComment} 관리 메인화면({entityName}/{entityName}-main)을 연다.
|
||||||
|
* 조건없는 {@link #get{entityClass}List({queryClass}) {entityComment} 조회 결과}를 포함시킨다.
|
||||||
|
* @return /{entityName}/{entityName}-main
|
||||||
|
*/
|
||||||
|
@RequestMapping(name = "{entityComment} 메인", value = "/main.do")
|
||||||
|
public ModelAndView main() {
|
||||||
|
ModelAndView mav = get{entityClass}List(new {queryClass}().setPageNum(1));
|
||||||
|
mav.setViewName("/{entityName}/{entityName}-main");
|
||||||
|
return mav.addObject("{entityName}List", toJson(mav.getModel().get("{entityName}List")));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**{entityComment} 목록을 조회하여 반환한다.<br />
|
||||||
|
* {@link {serviceClass}#get{entityClass}List({queryClass})} 참고
|
||||||
|
* @param req {entityComment} 조회 조건
|
||||||
|
* @return jsonView
|
||||||
|
* <pre><code> {
|
||||||
|
* "{entityName}List": [{entityComment} 목록]
|
||||||
|
* "{entityName}Start": {entityComment} 목록 시작 인덱스
|
||||||
|
* "{entityName}Fetch": 한 번에 가져오는 {entityComment} 목록 수
|
||||||
|
* "{entityName}Total": 조회 결과 찾은 전체 {entityComment} 수
|
||||||
|
* }</code></pre>
|
||||||
|
*/
|
||||||
|
@RequestMapping(name = "{entityComment} 조회", value = "/list.do")
|
||||||
|
public ModelAndView get{entityClass}List({queryClass} req) {
|
||||||
|
List<?> result = {serviceName}.get{entityClass}List(setFetchSize(req));
|
||||||
|
return setCollectionInfo(new ModelAndView("jsonView"), result, "{entityName}");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**{entityComment}를 등록한다.
|
||||||
|
* @param {entityName} {entityComment} 정보
|
||||||
|
* @return jsonView
|
||||||
|
* <pre><code> {
|
||||||
|
* "saved": 등록되었으면 true, 그렇지 않으면 false
|
||||||
|
* }</code></pre>
|
||||||
|
*/
|
||||||
|
@PostMapping(name = "{entityComment} 등록", value = "/create.do")
|
||||||
|
public ModelAndView create({entityClass} {entityName}) {
|
||||||
|
boolean saved = {serviceName}.create({entityName});
|
||||||
|
return new ModelAndView("jsonView")
|
||||||
|
.addObject("saved", saved);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 수정한다.
|
||||||
|
* @param {entityName} {entityComment} 정보
|
||||||
|
* @return jsonView
|
||||||
|
* <pre><code> {
|
||||||
|
* "saved": 수정되었으면 true, 그렇지 않으면 false
|
||||||
|
* }</code></pre>
|
||||||
|
*/
|
||||||
|
@PostMapping(name = "{entityComment} 수정", value = "/update.do")
|
||||||
|
public ModelAndView update({entityClass} {entityName}) {
|
||||||
|
boolean saved = {serviceName}.update({entityName});
|
||||||
|
return new ModelAndView("jsonView")
|
||||||
|
.addObject("saved", saved);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**지정한 {entityComment}를 제거한다.
|
||||||
|
* @param {entityName}IDs {entityComment} 아이디
|
||||||
|
* @return jsonView
|
||||||
|
* <pre><code> {
|
||||||
|
* "affected": 저장된 정보수
|
||||||
|
* "saved": 저장되었으면 true, 그렇지 않으면 false
|
||||||
|
* }</code></pre>
|
||||||
|
*/
|
||||||
|
@PostMapping(name = "{entityComment} 제거", value = "/remove.do")
|
||||||
|
public ModelAndView remove({entityClass} {entityName}) {
|
||||||
|
boolean saved = {serviceName}.remove({entityName});
|
||||||
|
return new ModelAndView("jsonView")
|
||||||
|
.addObject("saved", saved);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
<?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">
|
||||||
|
<mapper namespace="{mapperFullname}">
|
||||||
|
|
||||||
|
<!-- {entityComment} 정보 매퍼
|
||||||
|
========== 변경 이력 ==========
|
||||||
|
{today} {author} 최초 작성
|
||||||
|
============================ -->
|
||||||
|
|
||||||
|
<resultMap id="{entityName}Row" type="{entityFullname}">
|
||||||
|
{property-column-mapping}
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="select">SELECT {columns}
|
||||||
|
FROM {tableName}</sql>
|
||||||
|
|
||||||
|
<select id="select{entityClass}List" parameterType="map" resultType="dataobject">/* {entityComment} 목록 조회({mapperName}.select{entityClass}List) */
|
||||||
|
<include refid="utility.paging-prefix" />
|
||||||
|
<include refid="select" />
|
||||||
|
<where></where>
|
||||||
|
<include refid="utility.orderBy" />
|
||||||
|
<include refid="utility.paging-suffix" /></select>
|
||||||
|
|
||||||
|
<select id="select{entityClass}s" parameterType="map" resultMap="{entityName}Row">/* {entityComment} 객체 가져오기({mapperName}.select{entityClass}s) */
|
||||||
|
<include refid="select" />
|
||||||
|
<where></where>
|
||||||
|
<include refid="utility.orderBy" /></select>
|
||||||
|
|
||||||
|
<insert id="insert{entityClass}" parameterType="map">/* {entityComment} 등록({mapperName}.insert{entityClass}) */
|
||||||
|
INSERT INTO {tableName} (
|
||||||
|
{columns}
|
||||||
|
) VALUES (
|
||||||
|
{insertParams}
|
||||||
|
)</insert>
|
||||||
|
|
||||||
|
<update id="update{entityClass}" parameterType="map">/* {entityComment} 수정({mapperName}.update{entityClass}) */
|
||||||
|
UPDATE {tableName} SET
|
||||||
|
{updateParams}
|
||||||
|
WHERE {keys}</update>
|
||||||
|
|
||||||
|
<update id="delete{entityClass}" parameterType="map">/* {entityComment} 삭제({mapperName}.delete{entityClass}) */
|
||||||
|
UPDATE {tableName} SET
|
||||||
|
USE_YN = 'N'
|
||||||
|
, MDFCN_DT =<include refid="utility.now" />
|
||||||
|
, MDFR = #{currentUser.id}
|
||||||
|
WHERE {keys}</update>
|
||||||
|
|
||||||
|
</mapper>
|
@ -0,0 +1,97 @@
|
|||||||
|
package {mapperPackage};
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||||
|
|
||||||
|
import cokr.xit.foundation.component.AbstractMapper;
|
||||||
|
import cokr.xit.foundation.data.DataObject;
|
||||||
|
|
||||||
|
import {entityFullname};
|
||||||
|
import {queryFullname};
|
||||||
|
|
||||||
|
/** {entityComment} 정보 DAO
|
||||||
|
*
|
||||||
|
* <p>상세 설명:
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* ============ 변경 이력 ============
|
||||||
|
* {today} {author} 최초 작성
|
||||||
|
* ================================
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@Mapper("{mapperName}")
|
||||||
|
public interface {mapperClass} extends AbstractMapper {
|
||||||
|
/**지정한 조건에 따라 {entityComment} 목록을 조회하여 반환한다.<br />
|
||||||
|
* @param req {entityComment} 조회 조건
|
||||||
|
* @return {entityComment} 목록
|
||||||
|
*/
|
||||||
|
List<DataObject> select{entityClass}List({queryClass} req);
|
||||||
|
|
||||||
|
/**지정한 조건에 따라 {entityComment} 객체들을 반환한다.
|
||||||
|
* @param req {entityComment} 조회 조건
|
||||||
|
* @return {entityComment} 객체 목록
|
||||||
|
*/
|
||||||
|
List<{entityClass}> select{entityClass}s({queryClass} req);
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 등록한다.
|
||||||
|
* @param params 파라미터
|
||||||
|
* <ul><li>"{entityName}" - {entityComment}</li>
|
||||||
|
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||||
|
* </ul>
|
||||||
|
* @return 저장된 정보수
|
||||||
|
*/
|
||||||
|
int insert{entityClass}(Map<String, Object> params);
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 등록한다.
|
||||||
|
* @param {entityName} {entityComment}
|
||||||
|
* @return 저장 여부
|
||||||
|
* <ul><li>저장됐으면 true</li>
|
||||||
|
* <li>그렇지 않으면 false</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
default boolean insert({entityClass} {entityName}) {
|
||||||
|
return {entityName} != null && insert{entityClass}(params().set("{entityName}", {entityName})) == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 수정한다.
|
||||||
|
* @param params 파라미터
|
||||||
|
* <ul><li>"{entityName}" - {entityComment}</li>
|
||||||
|
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||||
|
* </ul>
|
||||||
|
* @return 저장된 정보수
|
||||||
|
*/
|
||||||
|
int update{entityClass}(Map<String, Object> params);
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 수정한다.
|
||||||
|
* @param {entityName} {entityComment}
|
||||||
|
* @return 저장 여부
|
||||||
|
* <ul><li>저장됐으면 true</li>
|
||||||
|
* <li>그렇지 않으면 false</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
default boolean update({entityClass} {entityName}) {
|
||||||
|
return {entityName} != null && update{entityClass}(params().set("{entityName}", {entityName})) == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**지정한 {entityComment}을 삭제한다.
|
||||||
|
* @param params 파라미터
|
||||||
|
* <ul><li>"{entityName}" - {entityComment}</li>
|
||||||
|
* <li>"currentUser" - 현재 접속한 사용자</li>
|
||||||
|
* </ul>
|
||||||
|
* @return 저장된 정보수
|
||||||
|
*/
|
||||||
|
int delete{entityClass}(Map<String, ?> params);
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 삭제한다.
|
||||||
|
* @param {entityName} {entityComment}
|
||||||
|
* @return 저장 여부
|
||||||
|
* <ul><li>저장됐으면 true</li>
|
||||||
|
* <li>그렇지 않으면 false</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
default boolean delete({entityClass} {entityName}) {
|
||||||
|
return {entityName} != null && delete{entityClass}(params().set("{entityName}", {entityName})) == 1;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package {queryPackage};
|
||||||
|
|
||||||
|
import cokr.xit.foundation.component.QueryRequest;
|
||||||
|
|
||||||
|
/**{entityComment} 정보 조회 요청
|
||||||
|
*
|
||||||
|
* <p>상세 설명:
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* ============ 변경 이력 ============
|
||||||
|
* {today} {author} 최초 작성
|
||||||
|
* ================================
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
public class {queryClass} extends QueryRequest {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
package {serviceBeanPackage};
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||||
|
import cokr.xit.foundation.data.DataObject;
|
||||||
|
|
||||||
|
import {entityFullname};
|
||||||
|
import {queryFullname};
|
||||||
|
import {serviceFullname};
|
||||||
|
|
||||||
|
/**{entityComment} 서비스 구현체.
|
||||||
|
*
|
||||||
|
* <p>상세 설명:
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* ============ 변경 이력 ============
|
||||||
|
* {today} {author} 최초 작성
|
||||||
|
* ================================
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@Service("{serviceName}")
|
||||||
|
public class {serviceBeanClass} extends AbstractServiceBean implements {serviceClass} {
|
||||||
|
/** {entityComment} 정보 Bean */
|
||||||
|
@Resource(name = "{beanName}")
|
||||||
|
private {beanClass} {beanName};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DataObject> get{entityClass}List({queryClass} req) {
|
||||||
|
return {beanName}.get{entityClass}List(req);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<{entityClass}> get{entityClass}s({queryClass} req) {
|
||||||
|
return {beanName}.get{entityClass}s(req);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean create({entityClass} {entityName}) {
|
||||||
|
return {beanName}.create({entityName});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean update({entityClass} {entityName}) {
|
||||||
|
return {beanName}.update({entityName});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean remove({entityClass} {entityName}) {
|
||||||
|
return {beanName}.remove({entityName});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package {servicePackage};
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import cokr.xit.foundation.data.DataObject;
|
||||||
|
|
||||||
|
import {entityFullname};
|
||||||
|
import {queryFullname};
|
||||||
|
|
||||||
|
/**{entityComment} 관리 서비스 인터페이스.
|
||||||
|
*
|
||||||
|
* <p>상세 설명:
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* ============ 변경 이력 ============
|
||||||
|
* {today} {author} 최초 작성
|
||||||
|
* ================================
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
public interface {serviceClass} {
|
||||||
|
/**지정한 조건에 따라 {entityComment} 목록을 조회하여 반환한다.
|
||||||
|
* @param req {entityComment} 조회 조건
|
||||||
|
* @return {entityComment} 목록
|
||||||
|
*/
|
||||||
|
List<DataObject> get{entityClass}List({queryClass} req);
|
||||||
|
|
||||||
|
/**지정한 조건에 따라 {entityComment} 객체들을 반환한다.
|
||||||
|
* @param req {entityComment} 조회 조건
|
||||||
|
* @return {entityComment} 객체 목록
|
||||||
|
*/
|
||||||
|
List<{entityClass}> get{entityClass}s({queryClass} req);
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 등록한다.
|
||||||
|
* @param {entityName} {entityComment}
|
||||||
|
* @return 저장 여부
|
||||||
|
* <ul><li>저장됐으면 true</li>
|
||||||
|
* <li>그렇지 않으면 false</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
boolean create({entityClass} {entityName});
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 수정한다.
|
||||||
|
* @param {entityName} {entityComment}
|
||||||
|
* @return 저장 여부
|
||||||
|
* <ul><li>저장됐으면 true</li>
|
||||||
|
* <li>그렇지 않으면 false</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
boolean update({entityClass} {entityName});
|
||||||
|
|
||||||
|
/**{entityComment} 정보를 삭제한다.
|
||||||
|
* @param {entityName} {entityComment}
|
||||||
|
* @return 저장 여부
|
||||||
|
* <ul><li>저장됐으면 true</li>
|
||||||
|
* <li>그렇지 않으면 false</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
boolean remove({entityClass} {entityName});
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package {package};
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import cokr.xit.foundation.data.DataObject;
|
||||||
|
import cokr.xit.foundation.test.TestSupport;
|
||||||
|
|
||||||
|
import {entityFullname};
|
||||||
|
import {queryFullname};
|
||||||
|
|
||||||
|
/**{serviceClass} 테스트.
|
||||||
|
*
|
||||||
|
* <p>상세 설명:
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* ============ 변경 이력 ============
|
||||||
|
* {today} {author} 최초 작성
|
||||||
|
* ================================
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
public class {testClass} extends TestSupport {
|
||||||
|
@Resource(name = "{serviceName}")
|
||||||
|
private {serviceClass} {serviceName};
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void get{entityClass}List() {
|
||||||
|
List<DataObject> {entityName}List = {serviceName}.get{entityClass}List(new {queryClass}());
|
||||||
|
{entityName}List.forEach(System.out::println);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void get{entityClass}s() {
|
||||||
|
List<{entityClass}> {entityName}s = {serviceName}.get{entityClass}s(new {queryClass}());
|
||||||
|
{entityName}s.forEach(System.out::println);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void create() {}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void update() {}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void remove() {}
|
||||||
|
}
|
@ -0,0 +1,121 @@
|
|||||||
|
package cokr.xit.tool.crudgen.test;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import cokr.xit.foundation.test.TestSupport;
|
||||||
|
import cokr.xit.tool.codegen.SourceWriter;
|
||||||
|
import cokr.xit.tool.codegen.poet.JavaType;
|
||||||
|
import cokr.xit.tool.codegen.table.TableInfo;
|
||||||
|
import cokr.xit.tool.codegen.table.TableInfoFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.BeanFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.ControllerFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.EntityFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.EntityInfo;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.MapperFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.MapperXmlFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.QueryFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.ServiceBeanFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.ServiceFactory;
|
||||||
|
import cokr.xit.tool.crudgen.service.bean.TestFactory;
|
||||||
|
|
||||||
|
public class CRUDGenTest extends TestSupport {
|
||||||
|
String author = "mjkhan";
|
||||||
|
|
||||||
|
String project = "../xit-testbed";
|
||||||
|
String srcMain = project + "/src/main/java";
|
||||||
|
String outputMain = project + "/target/classes";
|
||||||
|
|
||||||
|
String srcTest = project + "/src/test/java";
|
||||||
|
String outputTest = project + "/target/test-classes";
|
||||||
|
|
||||||
|
String tableName = "TB_USER";
|
||||||
|
String entityPackage = "cokr.xit.tool.testbed.user";
|
||||||
|
String entityName = "User";
|
||||||
|
String mapperXmlOutput = project + "/src/main/resources/sql/mapper/test";
|
||||||
|
|
||||||
|
SourceWriter
|
||||||
|
javaWriter = new SourceWriter().srcDir(srcMain),
|
||||||
|
mapperWriter = new SourceWriter().srcDir(mapperXmlOutput);
|
||||||
|
|
||||||
|
@Resource(name = "dataSource")
|
||||||
|
private DataSource datasource;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void entities() {
|
||||||
|
TableInfo table = new TableInfoFactory()
|
||||||
|
.setDatasource(datasource)
|
||||||
|
.create(tableName);
|
||||||
|
|
||||||
|
EntityInfo entityInfo = new EntityInfo();
|
||||||
|
entityInfo.setTableInfo(table);
|
||||||
|
entityInfo.setEntityName(entityName);
|
||||||
|
|
||||||
|
EntityFactory entityFactory = new EntityFactory()
|
||||||
|
.setAuthor(author)
|
||||||
|
.setPackageName(entityPackage)
|
||||||
|
.setAnnotateGetterSetter(false);
|
||||||
|
entityFactory.setEntityInfo(entityInfo);
|
||||||
|
|
||||||
|
JavaType entity = entityFactory.create();
|
||||||
|
System.out.println(entity.spec());
|
||||||
|
javaWriter.write(entity);
|
||||||
|
|
||||||
|
QueryFactory queryFactory = new QueryFactory().setEntityInfo(entityInfo);
|
||||||
|
System.out.println(queryFactory.generate());
|
||||||
|
javaWriter.write(queryFactory.create());
|
||||||
|
|
||||||
|
MapperFactory mapperFactory = new MapperFactory().setEntityInfo(entityInfo);
|
||||||
|
System.out.println(mapperFactory.generate());
|
||||||
|
javaWriter.write(mapperFactory.create());
|
||||||
|
|
||||||
|
MapperXmlFactory mapperXmlFactory = new MapperXmlFactory().setEntityInfo(entityInfo);
|
||||||
|
String mapperXml = mapperXmlFactory.generate();
|
||||||
|
System.out.println(mapperXml);
|
||||||
|
mapperWriter.write(mapperXmlFactory.create());
|
||||||
|
|
||||||
|
BeanFactory beanFactory = new BeanFactory().setEntityInfo(entityInfo);
|
||||||
|
System.out.println(beanFactory.generate());
|
||||||
|
javaWriter.write(beanFactory.create());
|
||||||
|
|
||||||
|
ServiceFactory serviceFactory = new ServiceFactory().setEntityInfo(entityInfo);
|
||||||
|
System.out.println(serviceFactory.generate());
|
||||||
|
javaWriter.write(serviceFactory.create());
|
||||||
|
|
||||||
|
ServiceBeanFactory serviceBeanFactory = new ServiceBeanFactory().setEntityInfo(entityInfo);
|
||||||
|
System.out.println(serviceBeanFactory.generate());
|
||||||
|
javaWriter.write(serviceBeanFactory.create());
|
||||||
|
|
||||||
|
ControllerFactory controllerFactory = new ControllerFactory().setEntityInfo(entityInfo);
|
||||||
|
System.out.println(controllerFactory.generate());
|
||||||
|
javaWriter.write(controllerFactory.create());
|
||||||
|
|
||||||
|
javaWriter.srcDir(srcTest);
|
||||||
|
|
||||||
|
TestFactory testFactory = new TestFactory().setEntityInfo(entityInfo);
|
||||||
|
System.out.println(testFactory.generate());
|
||||||
|
javaWriter.write(testFactory.create());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void mapperXml() {
|
||||||
|
TableInfo table = new TableInfoFactory()
|
||||||
|
.setDatasource(datasource)
|
||||||
|
.create("TB_USER");
|
||||||
|
EntityInfo entityInfo = new EntityInfo();
|
||||||
|
entityInfo.setTableInfo(table);
|
||||||
|
|
||||||
|
EntityFactory entityFactory = new EntityFactory()
|
||||||
|
.setPackageName("cokr.xit.tool.testbed.user")
|
||||||
|
.setAuthor("mjkhan");
|
||||||
|
entityFactory.setEntityInfo(entityInfo);
|
||||||
|
|
||||||
|
MapperXmlFactory mapperXmlFactory = new MapperXmlFactory().setEntityInfo(entityInfo);
|
||||||
|
String mapperXml = mapperXmlFactory.generate();
|
||||||
|
System.out.println(mapperXml);
|
||||||
|
mapperWriter.write(mapperXmlFactory.create());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
|
||||||
|
|
||||||
|
log4jdbc.dump.sql.maxlinelength=0
|
||||||
|
log4jdbc.drivers=org.mariadb.jdbc.Driver
|
@ -0,0 +1,94 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- 60초마다 설정 파일의 변경을 확인 하여 변경시 갱신 -->
|
||||||
|
<configuration scan="true" scanPeriod="60 seconds">
|
||||||
|
<property name="applicationName" value="crudgen"/>
|
||||||
|
<property name="LOG_PATH" value="logs"/>
|
||||||
|
<property name="LOG_FILE_NAME" value="${applicationName}"/>
|
||||||
|
<property name="ERR_LOG_FILE_NAME" value="${LOG_FILE_NAME}-error"/>
|
||||||
|
<property name="LOG_PATTERN" value="%d{HH:mm:ss.SSS} %-5level [%logger{0}:%line] - %msg%n"/>
|
||||||
|
|
||||||
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||||
|
<pattern>${LOG_PATTERN}</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
|
||||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||||
|
<pattern>${LOG_PATTERN}</pattern>
|
||||||
|
</encoder>
|
||||||
|
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- .gz,.zip 등을 넣으면 자동 일자별 로그파일 압축 -->
|
||||||
|
<fileNamePattern>${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log</fileNamePattern>
|
||||||
|
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>10MB</maxFileSize>
|
||||||
|
</timeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
|
||||||
|
<maxHistory>30</maxHistory><!-- 로그파일 보관주기(일)-->
|
||||||
|
<!--<MinIndex>1</MinIndex>
|
||||||
|
<MaxIndex>10</MaxIndex>-->
|
||||||
|
</rollingPolicy>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="Error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<level>error</level>
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<file>${LOG_PATH}/${ERR_LOG_FILE_NAME}.log</file>
|
||||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||||
|
<pattern>${LOG_PATTERN}</pattern>
|
||||||
|
</encoder>
|
||||||
|
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<!-- .gz,.zip 등을 넣으면 자동 일자별 로그파일 압축 -->
|
||||||
|
<fileNamePattern>${LOG_PATH}/${ERR_LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log</fileNamePattern>
|
||||||
|
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<!-- 파일당 최고 용량 kb, mb, gb -->
|
||||||
|
<maxFileSize>10MB</maxFileSize>
|
||||||
|
</timeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
<!-- 일자별 로그파일 최대 보관주기(~일), 해당 설정일 이상된 파일은 자동으로 제거-->
|
||||||
|
<maxHistory>60</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<root level="DEBUG">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
<appender-ref ref="FILE"/>
|
||||||
|
<appender-ref ref="Error"/>
|
||||||
|
</root>
|
||||||
|
|
||||||
|
<logger name="jdbc" level="OFF" additivity="false"/>
|
||||||
|
<logger name="jdbc.sqltiming" level="OFF" additivity="false"/>
|
||||||
|
<logger name="jdbc.resultsettable" level="OFF" additivity="false"/>
|
||||||
|
<logger name="jdbc.sqlonly" level="OFF"/>
|
||||||
|
<logger name="jdbc.resultset" level="OFF" additivity="false"/>
|
||||||
|
<logger name="jdbc.connection" level="OFF" additivity="false"/>
|
||||||
|
<logger name="jdbc.audit" level="OFF" additivity="false"/>
|
||||||
|
<logger name="org.apache" level="OFF" additivity="false"/>
|
||||||
|
<logger name="com.zaxxer" level="OFF" additivity="false"/>
|
||||||
|
|
||||||
|
<logger name="org.apache.commons" level="OFF" additivity="false"/>
|
||||||
|
<logger name="org.mariadb" level="OFF" additivity="false"/>
|
||||||
|
<logger name="jdbc.connection" level="OFF" additivity="false"/>
|
||||||
|
<logger name="jdbc.sqlonly" level="OFF" additivity="false"/>
|
||||||
|
<logger name="jdbc.resultset" level="OFF" additivity="false"/>
|
||||||
|
<logger name="jdbc.resultsettable" level="OFF" additivity="false"/>
|
||||||
|
<!--
|
||||||
|
<logger name="jdbc" level="OFF" additivity="false"/>
|
||||||
|
<logger name="jdbc.sqltiming" level="DEBUG" />
|
||||||
|
<logger name="jdbc.audit" level="OFF" additivity="false"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- 특정패키지 로깅레벨 설정 -->
|
||||||
|
<logger name="cokr.xit" level="DEBUG" additivity="false">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
<appender-ref ref="FILE"/>
|
||||||
|
<appender-ref ref="Error"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
</configuration>
|
@ -0,0 +1,2 @@
|
|||||||
|
# see https://projectlombok.org/features/constructor lombok.copyableAnnotations
|
||||||
|
lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier
|
@ -0,0 +1,385 @@
|
|||||||
|
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.
|
||||||
|
sessionExpired=\ub300\uae30 \uc2dc\uac04\uc774 \uc624\ub798\ub418\uc5b4 \uc138\uc158\uc774 \ub9cc\ub8cc\ub410\uc2b5\ub2c8\ub2e4.
|
||||||
|
invalidSession=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc138\uc158\uc73c\ub85c \uc811\uadfc\ud588\uc2b5\ub2c8\ub2e4.
|
||||||
|
accessDenied=\uc694\uccad\ud558\uc2e0 \uc791\uc5c5\uc5d0 \ub300\ud55c \uad8c\ud55c\uc774 \uc5c6\uc5b4\uc11c \uc811\uadfc\uc774 \uac70\ubd80\ub410\uc2b5\ub2c8\ub2e4.<br />\uad00\ub9ac\uc790\uc5d0\uac8c \ubb38\uc758 \ubc14\ub78d\ub2c8\ub2e4.
|
||||||
|
serverError=\uc694\uccad\ud558\uc2e0 \uc791\uc5c5\uc744 \uc218\ud589 \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.<br />\uad00\ub9ac\uc790\uc5d0\uac8c \ubb38\uc758 \ubc14\ub78d\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.sql=sql \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! error code: {0}, error msg: {1}
|
||||||
|
info.nodata.msg=\ud574\ub2f9 \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#UI Common resource#
|
||||||
|
table.num=\ubc88\ud638
|
||||||
|
table.regdate=\ub4f1\ub85d\uc77c
|
||||||
|
table.reger=\ub4f1\ub85d\uc790
|
||||||
|
table.select=\uc120\ud0dd
|
||||||
|
title.html=egovframe common component
|
||||||
|
title.detail=\uc0c1\uc138\uc870\ud68c
|
||||||
|
title.inquire=\uc870\ud68c
|
||||||
|
title.update=\uc218\uc815
|
||||||
|
title.create=\ub4f1\ub85d
|
||||||
|
title.delete=\uc0ad\uc81c
|
||||||
|
title.save=\uc800\uc7a5
|
||||||
|
title.list=\ubaa9\ub85d
|
||||||
|
title.searchCondition=\uac80\uc0c9\uc870\uac74
|
||||||
|
title.search=\uac80\uc0c9\uc5b4
|
||||||
|
title.reply=\ub2f5\uae00
|
||||||
|
title.scrap=\uc2a4\ud06c\ub7a9
|
||||||
|
title.comment=\ub313\uae00
|
||||||
|
title.attachedFileSelect=\ud30c\uc77c\uc120\ud0dd
|
||||||
|
title.attachedFileDelete=\ud30c\uc77c\uc0ad\uc81c
|
||||||
|
title.link=\ub9c1\ud06c
|
||||||
|
title.management=\uad00\ub9ac
|
||||||
|
title.all=\uc804\uccb4
|
||||||
|
|
||||||
|
input.select=\uc120\ud0dd\ud558\uc138\uc694
|
||||||
|
input.cSelect=\uc120\ud0dd
|
||||||
|
input.input=\uc785\ub825
|
||||||
|
input.button=\ubc84\ud2bc
|
||||||
|
input.selectAll.title=\uc804\uccb4\uc120\ud0dd\uccb4\ud06c\ubc15\uc2a4
|
||||||
|
input.yes=\uc608
|
||||||
|
input.no=\uc544\ub2c8\uc624
|
||||||
|
|
||||||
|
select.searchCondition=\uc870\ud68c\uc870\uac74 \uc120\ud0dd
|
||||||
|
|
||||||
|
button.select=\uc120\ud0dd
|
||||||
|
button.search=\uac80\uc0c9
|
||||||
|
button.use=\uc0ac\uc6a9
|
||||||
|
button.notUsed=\uc0ac\uc6a9\uc911\uc9c0
|
||||||
|
button.inquire=\uc870\ud68c
|
||||||
|
button.update=\uc218\uc815
|
||||||
|
button.create=\ub4f1\ub85d
|
||||||
|
button.delete=\uc0ad\uc81c
|
||||||
|
button.deleteDatabase=\uc644\uc804\uc0ad\uc81c
|
||||||
|
button.close=\ub2eb\uae30
|
||||||
|
button.save=\uc800\uc7a5
|
||||||
|
button.list=\ubaa9\ub85d
|
||||||
|
button.reset=\ucde8\uc18c
|
||||||
|
button.passwordUpdate=\uc554\ud638\ubcc0\uacbd
|
||||||
|
button.subscribe=\uac00\uc785\uc2e0\uccad
|
||||||
|
button.realname=\uc2e4\uba85\ud655\uc778
|
||||||
|
button.moveToGpin=GPIN\uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9
|
||||||
|
button.moveToIhidnum=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638 \uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9
|
||||||
|
button.agree=\ub3d9\uc758
|
||||||
|
button.disagree=\ube44\ub3d9\uc758
|
||||||
|
button.possible=\uac00\ub2a5
|
||||||
|
button.impossible=\ubd88\uac00\ub2a5
|
||||||
|
button.qnaregist=Q&A\ub4f1\ub85d
|
||||||
|
button.cnsltregist=\uc0c1\ub2f4\ub4f1\ub85d
|
||||||
|
button.preview=\ubbf8\ub9ac\ubcf4\uae30
|
||||||
|
button.next=\ub2e4\uc74c
|
||||||
|
button.add=\ubc14\ub85c\ucd94\uac00
|
||||||
|
button.confirm=\ud655\uc778
|
||||||
|
button.back = \ub4a4\ub85c
|
||||||
|
button.yes = \uc608
|
||||||
|
button.no = \uc544\ub2c8\uc624
|
||||||
|
button.home = \ud648
|
||||||
|
button.user = \uc0ac\uc6a9\uc790\uc9c0\uc6d0
|
||||||
|
button.cop = \ud611\uc5c5
|
||||||
|
button.wrkstart = \ucd9c\uadfc
|
||||||
|
button.wrkend = \ud1f4\uadfc
|
||||||
|
button.reply = \ub2f5\uae00
|
||||||
|
button.scrap = \uc2a4\ud06c\ub7a9
|
||||||
|
button.comment = \ub313\uae00
|
||||||
|
button.excel = \uc5d1\uc140
|
||||||
|
button.init=\ucd08\uae30\ud654
|
||||||
|
button.acknowledgment=\uc2b9\uc778
|
||||||
|
button.cancelAcknowledgment=\uc2b9\uc778\ucde8\uc18c
|
||||||
|
button.bulkUpload=\uc77c\uad04\ub4f1\ub85d
|
||||||
|
button.log = \ub85c\uadf8
|
||||||
|
button.set = \uc124\uc815
|
||||||
|
button.move = \uc774\ub3d9
|
||||||
|
|
||||||
|
|
||||||
|
#UI Common Message#
|
||||||
|
common.noScriptTitle.msg=\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c\ub294 \uc77c\ubd80 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uc2e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
common.searchCondition.msg=\uc774 \ub808\uc774\uc544\uc6c3\uc740 \ud558\ub2e8 \uc815\ubcf4\ub97c \ub300\ud55c \uac80\uc0c9 \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
common.summary.list={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \ubaa9\ub85d\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4.
|
||||||
|
common.summary.regist={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub4f1\ub85d\ud55c\ub2e4.
|
||||||
|
common.summary.update={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \uc218\uc815\ud55c\ub2e4.
|
||||||
|
common.summary.inqire={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \uc0c1\uc138\uc870\ud68c \ub0b4\uc5ed\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
common.save.msg=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.regist.msg=\ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.delete.msg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.update.msg=\uc218\uc815\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.nodata.msg=\uc790\ub8cc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694
|
||||||
|
common.required.msg=(\uc740)\ub294 \ud544\uc218\uc785\ub825\ud56d\ubaa9\uc785\ub2c8\ub2e4.
|
||||||
|
common.acknowledgement.msg=\uc2b9\uc778\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.acknowledgementcancel.msg=\uc2b9\uc778\ucde8\uc18c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.nocomment.msg=\ub313\uae00\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
common.noguest.msg=\uc791\uc131\ub41c \ubc29\uba85\ub85d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
success.request.msg = \uc694\uccad\ucc98\ub9ac\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc218\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
success.common.select=\uc815\uc0c1\uc801\uc73c\ub85c \uc870\ud68c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
success.common.insert=\uc815\uc0c1\uc801\uc73c\ub85c \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
success.common.update=\uc815\uc0c1\uc801\uc73c\ub85c \uc218\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
success.common.delete=\uc815\uc0c1\uc801\uc73c\ub85c \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
common.imposbl.fileupload = \ub354 \uc774\uc0c1 \ud30c\uc77c\uc744 \ucca8\ubd80\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
common.isConfmDe.msg=\uc2b9\uc778\uc77c\uc790\ub97c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4.
|
||||||
|
common.isExist.msg = \uc774\ubbf8 \uc874\uc7ac\ud558\uac70\ub098 \uacfc\uac70\uc5d0 \ub4f1\ub85d\uc774 \ub418\uc5c8\ub358 \uc0c1\ud0dc\uc785\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
fail.common.insert = \uc0dd\uc131\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.update = \uc218\uc815\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.delete = \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.delete.upperMenuExist = \ucc38\uc870\ub418\ub294 \uba54\ub274\uac00 \uc788\uc5b4 \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.select = \uc870\ud68c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.login = \ub85c\uadf8\uc778 \uc815\ubcf4\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.loginIncorrect = {0}\ud68c \uc774\uc0c1 \ub85c\uadf8\uc778 \uc811\uc18d\uc774 \uc2dc\ub3c4 \ub418\uc5b4 \uacc4\uc815\uc774 \uc7a0\uaca8\uc2b5\ub2c8\ub2e4!
|
||||||
|
fail.common.login.password = \ud328\uc2a4\uc6cc\ub4dc \uc790\ub9ac \uc218\uac00 \uc77c\uce58 \ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.(8\uc790\ub9ac \uc774\uc0c1 20\uc790\ub9ac \uc774\ud558)
|
||||||
|
fail.common.idsearch = \uc544\uc774\ub514\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.pwsearch = \ube44\ubc00\ubc88\ud638\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.request.msg = \uc694\uccad\ucc98\ub9ac\ub97c \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.login.ip = \ub4f1\ub85d\ub41c IP\uac00 \uc544\ub2c8\ubbc0\ub85c \ub85c\uadf8\uc778\uc774 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#UI User Message#
|
||||||
|
fail.user.passwordUpdate1=\ud604\uc7ac \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.user.passwordUpdate2=\ube44\ubc00\ubc88\ud638\uc640 \ube44\ubc00\ubc88\ud638 \ud655\uc778\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
info.user.rlnmCnfirm=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624.
|
||||||
|
success.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4.
|
||||||
|
fail.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.user.connectFail=\uc2dc\uc2a4\ud15c \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.(\uc778\uc99d\uc11c\ubc84 \uc5f0\uacb0 \uc2e4\ud328)
|
||||||
|
info.user.rlnmPinCnfirm=\uacf5\uacf5 \uc544\uc774\ud540 \uc544\uc774\ub514\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624.
|
||||||
|
success.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4.
|
||||||
|
fail.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
|
||||||
|
#UI Cop Message#
|
||||||
|
cop.extrlUser = \uc678\ubd80\uc0ac\uc6a9\uc790
|
||||||
|
cop.intrlUser = \ub0b4\ubd80\uc0ac\uc6a9\uc790
|
||||||
|
cop.private = \ube44\uacf5\uac1c
|
||||||
|
cop.public = \uacf5\uac1c
|
||||||
|
|
||||||
|
cop.adbkNm = \uc8fc\uc18c\ub85d\uba85
|
||||||
|
cop.othbcScope = \uacf5\uac1c\ubc94\uc704
|
||||||
|
cop.company = \ud68c\uc0ac
|
||||||
|
cop.part = \ubd80\uc11c
|
||||||
|
cop.man = \uac1c\uc778
|
||||||
|
cop.adbkUser = \uad6c\uc131\uc6d0
|
||||||
|
cop.bbsNm = \uac8c\uc2dc\ud310\uba85
|
||||||
|
cop.bbsIntrcn = \uac8c\uc2dc\ud310\uc18c\uac1c
|
||||||
|
cop.bbsTyCode = \uac8c\uc2dc\ud310 \uc720\ud615
|
||||||
|
cop.bbsAttrbCode = \uac8c\uc2dc\ud310 \uc18d\uc131
|
||||||
|
cop.replyPosblAt = \ub2f5\uc7a5\uac00\ub2a5\uc5ec\ubd80
|
||||||
|
cop.fileAtchPosblAt = \ud30c\uc77c\ucca8\ubd80\uac00\ub2a5\uc5ec\ubd80
|
||||||
|
cop.posblAtchFileNumber = \ucca8\ubd80\uac00\ub2a5\ud30c\uc77c \uc22b\uc790
|
||||||
|
cop.tmplatId = \ud15c\ud50c\ub9bf \uc815\ubcf4
|
||||||
|
cop.guestList.subject = \ubc29\uba85\ub85d \uac8c\uc2dc\uae00\uc785\ub2c8\ub2e4.
|
||||||
|
cop.nttSj = \uc81c\ubaa9
|
||||||
|
cop.nttCn = \uae00\ub0b4\uc6a9
|
||||||
|
cop.ntceBgnde = \uac8c\uc2dc\uc2dc\uc791\uc77c
|
||||||
|
cop.ntceEndde = \uac8c\uc2dc\uc885\ub8cc\uc77c
|
||||||
|
cop.ntcrNm = \uc791\uc131\uc790
|
||||||
|
cop.password = \ud328\uc2a4\uc6cc\ub4dc
|
||||||
|
cop.atchFile = \ud30c\uc77c\ucca8\ubd80
|
||||||
|
cop.guestList = \ubc29\uba85\ub85d
|
||||||
|
cop.guestListCn = \ubc29\uba85\ub85d \ub0b4\uc6a9
|
||||||
|
cop.noticeTerm = \uac8c\uc2dc\uae30\uac04
|
||||||
|
cop.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d
|
||||||
|
cop.cmmntyNm = \ucee4\ubba4\ub2c8\ud2f0\uba85
|
||||||
|
cop.cmmntyIntrcn = \ucee4\ubba4\ub2c8\ud2f0 \uc18c\uac1c
|
||||||
|
cop.cmmntyMngr = \ucee4\ubba4\ub2c8\ud2f0 \uad00\ub9ac\uc790
|
||||||
|
cop.clbOprtr = \ub3d9\ud638\ud68c \uc6b4\uc601\uc790
|
||||||
|
cop.clbIntrcn = \ub3d9\ud638\ud68c \uc18c\uac1c
|
||||||
|
cop.clbNm = \ub3d9\ud638\ud68c \uba85
|
||||||
|
cop.tmplatNm = \ud15c\ud50c\ub9bf\uba85
|
||||||
|
cop.tmplatSeCode = \ud15c\ud50c\ub9bf \uad6c\ubd84
|
||||||
|
cop.tmplatCours = \ud15c\ud50c\ub9bf\uacbd\ub85c
|
||||||
|
cop.useAt = \uc0ac\uc6a9\uc5ec\ubd80
|
||||||
|
cop.ncrdNm = \uc774\ub984
|
||||||
|
cop.cmpnyNm = \ud68c\uc0ac\uba85
|
||||||
|
cop.deptNm = \ubd80\uc11c\uba85
|
||||||
|
cop.ofcpsNm = \uc9c1\uc704
|
||||||
|
cop.clsfNm = \uc9c1\uae09
|
||||||
|
cop.emailAdres = \uc774\uba54\uc77c\uc8fc\uc18c
|
||||||
|
cop.telNo = \uc804\ud654\ubc88\ud638
|
||||||
|
cop.mbtlNum = \ud734\ub300\ud3f0\ubc88\ud638
|
||||||
|
cop.adres = \uc8fc\uc18c
|
||||||
|
cop.extrlUserAt = \uc678\ubd80\uc0ac\uc6a9\uc790\uc5ec\ubd80
|
||||||
|
cop.publicAt = \uacf5\uac1c\uc5ec\ubd80
|
||||||
|
cop.remark = \ube44\uace0
|
||||||
|
cop.trgetNm = \ucee4\ubba4\ub2c8\ud2f0/\ub3d9\ud638\ud68c \uc815\ubcf4
|
||||||
|
cop.preview = \ubbf8\ub9ac\ubcf4\uae30
|
||||||
|
|
||||||
|
cop.withdraw.msg=\ud0c8\ud1f4\ucc98\ub9ac \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
cop.reregist.msg=\uc7ac\uac00\uc785 \ucc98\ub9ac\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
cop.registmanager.msg=\uc6b4\uc601\uc9c4\uc73c\ub85c \ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
cop.use.msg=\uc0ac\uc6a9 \ucc98\ub9ac\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
cop.unuse.msg=\uc0ac\uc6a9\uc911\uc9c0 \ucc98\ub9ac\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
cop.delete.confirm.msg=\uc0ac\uc6a9\uc911\uc9c0\ub97c \uc120\ud0dd\ud558\uc2e4 \uacbd\uc6b0 \ub2e4\uc2dc \uc0ac\uc6a9\uc73c\ub85c \ubcc0\uacbd\uc774 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4.
|
||||||
|
cop.ing.msg=\uc2b9\uc778\uc694\uccad \uc911\uc785\ub2c8\ub2e4.
|
||||||
|
cop.request.msg=\uac00\uc785\uc2e0\uccad\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \uc694\uccad\ub418\uc5c8\uc2b5\ub2c8\ub2e4
|
||||||
|
cop.password.msg=\ud328\uc2a4\uc6cc\ub4dc\ub97c \uc785\ub825\ud574 \uc8fc\uc2ed\uc2dc\uc624.
|
||||||
|
cop.password.not.same.msg=\ud328\uc2a4\uc6cc\ub4dc\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
cop.comment.wrterNm = \uc791\uc131\uc790
|
||||||
|
cop.comment.commentCn = \ub0b4\uc6a9
|
||||||
|
cop.comment.commentPassword = \ud328\uc2a4\uc6cc\ub4dc
|
||||||
|
|
||||||
|
cop.satisfaction.wrterNm = \uc791\uc131\uc790
|
||||||
|
cop.satisfaction.stsfdgCn = \ub0b4\uc6a9
|
||||||
|
cop.satisfaction.stsfdg = \ub9cc\uc871\ub3c4
|
||||||
|
cop.satisfaction.stsfdgPassword = \ud328\uc2a4\uc6cc\ub4dc
|
||||||
|
|
||||||
|
cop.scrap.scrapNm = \uc2a4\ud06c\ub7a9\uba85
|
||||||
|
|
||||||
|
#UI USS Message#
|
||||||
|
uss.ion.noi.ntfcSj=\uc81c\ubaa9
|
||||||
|
uss.ion.noi.ntfcCn=\ub0b4\uc6a9
|
||||||
|
uss.ion.noi.ntfcDate=\uc54c\ub9bc\uc77c\uc790
|
||||||
|
uss.ion.noi.ntfcTime=\uc54c\ub9bc\uc2dc\uac04
|
||||||
|
uss.ion.noi.ntfcHH=\uc54c\ub9bc\uc2dc\uac04
|
||||||
|
uss.ion.noi.ntfcMM=\uc54c\ub9bc\ubd84
|
||||||
|
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.alertNtfcTime=\uc54c\ub9bc\uc77c\uc790 \ubc0f \uc2dc\uac04\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#UI COP Message#
|
||||||
|
cop.sms.trnsmitTelno=\ubc1c\uc2e0\uc804\ud654\ubc88\ud638
|
||||||
|
cop.sms.trnsmitCn=\uc804\uc1a1\ub0b4\uc6a9
|
||||||
|
cop.sms.recptnTelno=\uc218\uc2e0\uc804\ud654\ubc88\ud638
|
||||||
|
cop.sms.send=\uc804\uc1a1
|
||||||
|
cop.sms.addRecptn=\ucd94\uac00
|
||||||
|
cop.sms.recptnTelno.msg=\uc218\uc2e0\uc804\ud654\ubc88\ud638 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#UI sym.log Message#
|
||||||
|
sym.log.histSeCode = \uc774\ub825\uad6c\ubd84
|
||||||
|
sym.log.sysNm = \uc2dc\uc2a4\ud15c\uba85
|
||||||
|
sym.log.histCn = \uc774\ub825\ub0b4\uc6a9
|
||||||
|
sym.log.atchFile = \ucca8\ubd80\ud30c\uc77c
|
||||||
|
sym.log.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d
|
||||||
|
sym.ems.receiver = \ubc1b\ub294\uc0ac\ub78c
|
||||||
|
sym.ems.title = \uc81c\ubaa9
|
||||||
|
sym.ems.content = \ubc1c\uc2e0\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors#
|
||||||
|
errors.prefix=<div class="error">
|
||||||
|
errors.suffix=</div><br/>
|
||||||
|
|
||||||
|
errors.required={0}\uc740(\ub294) \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4.
|
||||||
|
errors.minlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.maxlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
errors.invalid={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12\uc785\ub2c8\ub2e4.
|
||||||
|
errors.minInteger={0}\uc740(\ub294) \uc720\ud6a8\ud55c \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4. 1 \uc774\uc0c1\uc758 \uac12\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.byte={0}\uc740(\ub294) byte\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.short={0}\uc740(\ub294) short\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.integer={0}\uc740(\ub294) \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.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.date={0}\uc740(\ub294) \ub0a0\uc9dc \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4.
|
||||||
|
errors.range={0}\uc740(\ub294) {1}\uacfc {2} \uc0ac\uc774\uc758 \uac12\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.creditcard={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc2e0\uc6a9\uce74\ub4dc \ubc88\ud638\uc785\ub2c8\ub2e4.
|
||||||
|
errors.email={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc774\uba54\uc77c \uc8fc\uc18c\uc785\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
errors.ihidnum=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\uc785\ub2c8\ub2e4.
|
||||||
|
errors.korean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc785\ub825\ud558\uc154\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.ip=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 IP\uc8fc\uc18c\uc785\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
errors.password1={0}\uc740(\ub294) 8~20\uc790 \ub0b4\uc5d0\uc11c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.password2={0}\uc740(\ub294) \ud55c\uae00,\ud2b9\uc218\ubb38\uc790,\ub744\uc5b4\uc4f0\uae30\ub294 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
errors.password3={0}\uc740(\ub294) \uc21c\ucc28\uc801\uc778 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
errors.password4={0}\uc740(\ub294) \ubc18\ubcf5\ub418\ub294 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
errors.notKorean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
error.security.runtime.error = error
|
||||||
|
|
||||||
|
#Xss Errors#
|
||||||
|
errors.xss.checkerUser=\ud574\ub2f9 \uae30\ub2a5\uc5d0 \ub300\ud55c \uc0ac\uc6a9 \ubc0f \ucc98\ub9ac \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#File Upload / Download
|
||||||
|
errors.file.extension=\uc9c0\uc6d0\ub418\ub294 \ud30c\uc77c\uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4.
|
||||||
|
errors.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
|
||||||
|
success.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#Vlidator Errors- wordDicaryVO#
|
||||||
|
wordDicaryVO.wordNm=\uc6a9\uc5b4\uba85
|
||||||
|
wordDicaryVO.engNm=\uc601\ubb38\uba85
|
||||||
|
wordDicaryVO.wordDc=\uc6a9\uc5b4\uc124\uba85
|
||||||
|
wordDicaryVO.synonm=\ub3d9\uc758\uc5b4
|
||||||
|
|
||||||
|
#Vlidator Errors- cnsltManageVO#
|
||||||
|
cnsltManageVO.cnsltSj=\uc0c1\ub2f4\uc81c\ubaa9
|
||||||
|
cnsltManageVO.cnsltCn=\uc0c1\ub2f4\ub0b4\uc6a9
|
||||||
|
cnsltManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638
|
||||||
|
cnsltManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638
|
||||||
|
cnsltManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638
|
||||||
|
cnsltManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638
|
||||||
|
cnsltManageVO.wrterNm=\uc791\uc131\uc790\uba85
|
||||||
|
cnsltManageVO.managtCn=\ub2f5\ubcc0\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors- siteManageVO#
|
||||||
|
siteManageVO.siteNm=\uc0ac\uc774\ud2b8\uba85
|
||||||
|
siteManageVO.siteUrl=\uc0ac\uc774\ud2b8 URL
|
||||||
|
siteManageVO.siteDc=\uc0ac\uc774\ud2b8\uc124\uba85
|
||||||
|
siteManageVO.siteThemaClCode=\uc0ac\uc774\ud2b8\uc8fc\uc81c\ubd84\ub958
|
||||||
|
siteManageVO.actvtyAt=\ud65c\uc131\uc5ec\ubd80
|
||||||
|
siteManageVO.useAt=\uc0ac\uc6a9\uc5ec\ubd80
|
||||||
|
|
||||||
|
#Vlidator Errors- recomendSiteManageVO#
|
||||||
|
recomendSiteManageVO.recomendSiteNm=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uba85
|
||||||
|
recomendSiteManageVO.recomendSiteUrl=\ucd94\ucc9c\uc0ac\uc774\ud2b8 URL
|
||||||
|
recomendSiteManageVO.recomendSiteDc=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc124\uba85
|
||||||
|
recomendSiteManageVO.recomendResnCn=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc2b9\uc778\uc0ac\uc720
|
||||||
|
recomendSiteManageVO.confmDe=\uc2b9\uc778\uc77c\uc790
|
||||||
|
|
||||||
|
#Vlidator Errors- hpcmManageVO#
|
||||||
|
hpcmManageVO.hpcmSeCode=\ub3c4\uc6c0\ub9d0\uad6c\ubd84
|
||||||
|
hpcmManageVO.hpcmDf=\ub3c4\uc6c0\ub9d0\uc815\uc758
|
||||||
|
hpcmManageVO.hpcmDc=\ub3c4\uc6c0\ub9d0\uc124\uba85
|
||||||
|
|
||||||
|
#Vlidator Errors- newsManageVO#
|
||||||
|
newsManageVO.newsSj=\ub274\uc2a4\uc81c\ubaa9
|
||||||
|
newsManageVO.newsCn=\ub274\uc2a4\ub0b4\uc6a9
|
||||||
|
newsManageVO.ntceDe=\uac8c\uc2dc\uc77c\uc790
|
||||||
|
|
||||||
|
#Vlidator Errors- faqManageVO#
|
||||||
|
faqManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9
|
||||||
|
faqManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9
|
||||||
|
faqManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors- stplatManageVO#
|
||||||
|
stplatManageVO.useStplatNm=\uc774\uc6a9\uc57d\uad00\uba85
|
||||||
|
stplatManageVO.useStplatCn=\uc774\uc6a9\uc57d\uad00\ub0b4\uc6a9
|
||||||
|
stplatManageVO.infoProvdAgreCn=\uc815\ubcf4\uc81c\uacf5\ub3d9\uc758\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors- cpyrhtPrtcPolicyVO#
|
||||||
|
cpyrhtPrtcPolicyVO.cpyrhtPrtcPolicyCn=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors- qnaManageVO#
|
||||||
|
qnaManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9
|
||||||
|
qnaManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9
|
||||||
|
qnaManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638
|
||||||
|
qnaManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638
|
||||||
|
qnaManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638
|
||||||
|
qnaManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638
|
||||||
|
qnaManageVO.wrterNm=\uc791\uc131\uc790\uba85
|
||||||
|
qnaManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors- ReprtStatsVO#
|
||||||
|
sts.reprtId = \ubcf4\uace0\uc11cID
|
||||||
|
sts.title = \ubcf4\uace0\uc11c\uba85
|
||||||
|
sts.category = \ubcf4\uace0\uc11c\uc720\ud615
|
||||||
|
sts.status = \uc9c4\ud589\uc0c1\ud0dc
|
||||||
|
sts.regDate = \ub4f1\ub85d\uc77c\uc2dc
|
||||||
|
|
||||||
|
#Rest day messages#
|
||||||
|
sym.cal.restDay = \ud734\uc77c\uc77c\uc790
|
||||||
|
sym.cal.restName = \ud734\uc77c\uba85
|
||||||
|
sym.cal.restDetail = \ud734\uc77c\uc124\uba85
|
||||||
|
sym.cal.restCategory = \ud734\uc77c\uad6c\ubd84
|
||||||
|
|
||||||
|
image.errorBg = \uc624\ub958\uc774\ubbf8\uc9c0
|
||||||
|
|
||||||
|
|
||||||
|
#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.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.
|
@ -0,0 +1,287 @@
|
|||||||
|
valueRequired={0} is required.
|
||||||
|
|
||||||
|
pageNotFound=The requested page is not found.
|
||||||
|
sessionExpired=The session is expired due to excessive idle time.
|
||||||
|
invalidSession=You attempted to access the system via an invalid session.
|
||||||
|
accessDenied=You do not have the permission for the operation.<br />Please contact the administrator.
|
||||||
|
serverError=An error has occurred while performing the requested operation.<br />Please contact the administrator.
|
||||||
|
|
||||||
|
duplicate.object=\uc774\ubbf8 \ub4f1\ub85d\ub41c {0}\uc785\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
fail.common.msg=error ocurred!
|
||||||
|
fail.common.sql=sql error ocurred! error code: {0}, error msg: {1}
|
||||||
|
info.nodata.msg=no data found.
|
||||||
|
|
||||||
|
#UI Common resource#
|
||||||
|
table.num=num.
|
||||||
|
table.regdate=reg.date
|
||||||
|
table.reger=registrant
|
||||||
|
table.select=select
|
||||||
|
title.html=egovframe common component
|
||||||
|
title.detail=Detail Inquiry
|
||||||
|
title.inquire=Inquire
|
||||||
|
title.update=Modify
|
||||||
|
title.create=Create
|
||||||
|
title.delete=Delete
|
||||||
|
title.save=Save
|
||||||
|
title.list=List
|
||||||
|
title.searchCondition=search condition
|
||||||
|
title.search=keyword
|
||||||
|
title.reply=reply
|
||||||
|
title.scrap=scrap
|
||||||
|
title.comment=comment
|
||||||
|
title.attachedFileSelect=attached file
|
||||||
|
title.attachedFileDelete=attached file delete
|
||||||
|
title.link=link
|
||||||
|
title.management=Management
|
||||||
|
title.all=All
|
||||||
|
|
||||||
|
input.select=Select
|
||||||
|
input.cSelect=Select
|
||||||
|
input.input=input
|
||||||
|
input.button=button
|
||||||
|
input.selectAll.title=Checkbox select all
|
||||||
|
input.yes=Yes
|
||||||
|
input.no=No
|
||||||
|
|
||||||
|
select.searchCondition=select condition select
|
||||||
|
|
||||||
|
button.select=select
|
||||||
|
button.search=Search
|
||||||
|
button.use=use
|
||||||
|
button.notUsed=Not used
|
||||||
|
button.inquire=inquire
|
||||||
|
button.update=update
|
||||||
|
button.create=create
|
||||||
|
button.delete=delete
|
||||||
|
button.deleteDatabase=Wiping
|
||||||
|
button.close=close
|
||||||
|
button.save=save
|
||||||
|
button.list=list
|
||||||
|
button.reset=reset
|
||||||
|
button.passwordUpdate=password update
|
||||||
|
button.subscribe=subscribe
|
||||||
|
button.realname=realname confirm
|
||||||
|
button.moveToGpin=move to gpin confirm
|
||||||
|
button.moveToIhidnum=move to ihidnum confirm
|
||||||
|
button.agree=agree
|
||||||
|
button.disagree=disagree
|
||||||
|
button.possible=possible
|
||||||
|
button.impossible=impossible
|
||||||
|
button.qnaregist=Q&A create
|
||||||
|
button.cnsltregist=Counsel create
|
||||||
|
button.preview=preview
|
||||||
|
button.next=nexut
|
||||||
|
button.add=add it now
|
||||||
|
button.confirm=confirm
|
||||||
|
button.back =back
|
||||||
|
button.yes =yes
|
||||||
|
button.no =no
|
||||||
|
button.home =home
|
||||||
|
button.user =user support
|
||||||
|
button.cop =cooperation
|
||||||
|
button.wrkstart = work start
|
||||||
|
button.wrkend = work end
|
||||||
|
button.reply = reply
|
||||||
|
button.scrap = scrap
|
||||||
|
button.comment = comment
|
||||||
|
button.excel = excel
|
||||||
|
button.init=init
|
||||||
|
button.acknowledgment=acknowledgment
|
||||||
|
button.cancelAcknowledgment=cancel acknowledgment
|
||||||
|
button.bulkUpload=bulk upload
|
||||||
|
button.log = log
|
||||||
|
button.set = set
|
||||||
|
button.move = move
|
||||||
|
|
||||||
|
|
||||||
|
#UI Common Message#
|
||||||
|
common.noScriptTitle.msg=I can't use all functions in browser JavaScript is not supported.
|
||||||
|
common.searchCondition.msg=This layout is a lower information searches made up of information.
|
||||||
|
|
||||||
|
common.summary.list={0} A list of the details of the output.
|
||||||
|
common.summary.regist={0} Registered by typing the possible contents of registers by clicking the button.
|
||||||
|
common.summary.update={0} Registered by typing the possible content of modification by clicking the button.
|
||||||
|
common.summary.inqire={0} Full inquiry details about the details of the output.
|
||||||
|
|
||||||
|
common.save.msg=confirm save?
|
||||||
|
common.regist.msg=confirm regist?
|
||||||
|
common.delete.msg=confirm delete?
|
||||||
|
common.update.msg=confirm update?
|
||||||
|
common.nodata.msg=There is no data. please choose another seach keyword
|
||||||
|
common.required.msg=is required field
|
||||||
|
common.acknowledgement.msg=confirm acknowledgement?
|
||||||
|
common.acknowledgementcancel.msg=confirm acknowledgement cancel?
|
||||||
|
common.nocomment.msg=There is no comment.
|
||||||
|
common.noguest.msg=There is no guest notice.
|
||||||
|
|
||||||
|
success.request.msg=you're request successfully done
|
||||||
|
success.common.select=successfully selected
|
||||||
|
success.common.insert=successfully inserted
|
||||||
|
success.common.update=successfully updated
|
||||||
|
success.common.delete=successfully deleted
|
||||||
|
|
||||||
|
common.imposbl.fileupload = cannot upload files
|
||||||
|
common.isConfmDe.msg=Please check the approval date box
|
||||||
|
common.isExist.msg = already exist
|
||||||
|
|
||||||
|
fail.common.insert = fail to insert.
|
||||||
|
fail.common.update = fail to update
|
||||||
|
fail.common.delete = fail to delete
|
||||||
|
fail.common.delete.upperMenuExist = fail to delete[upperMenuId foreign key error]
|
||||||
|
fail.common.select = fail to select
|
||||||
|
fail.common.login = login information is not correct
|
||||||
|
fail.common.loginIncorrect = login in more than {0} account will be locked!
|
||||||
|
fail.common.login.password = password information is not correct(password digit should be 8 to 20)
|
||||||
|
fail.common.idsearch = can not find id
|
||||||
|
fail.common.pwsearch = can not find password
|
||||||
|
fail.request.msg = Failed to handle the request
|
||||||
|
fail.common.login.ip = Login is refused because it is not a registered IP.
|
||||||
|
|
||||||
|
|
||||||
|
#UI User Message#
|
||||||
|
fail.user.passwordUpdate1=current password is not correct
|
||||||
|
fail.user.passwordUpdate2=password confirm is not correct
|
||||||
|
info.user.rlnmCnfirm=realname confirm ready
|
||||||
|
success.user.rlnmCnfirm=it is realname
|
||||||
|
fail.user.rlnmCnfirm=it is not realname
|
||||||
|
fail.user.connectFail=connection fail
|
||||||
|
|
||||||
|
#UI Cop Message#
|
||||||
|
cop.extrlUser = External User
|
||||||
|
cop.intrlUser = Internal User
|
||||||
|
cop.private = private
|
||||||
|
cop.public = public
|
||||||
|
|
||||||
|
cop.bbsNm = BBS Name
|
||||||
|
cop.bbsIntrcn = BBS Introduction
|
||||||
|
cop.bbsTyCode = BBS Type
|
||||||
|
cop.bbsAttrbCode = BBS Attribute
|
||||||
|
cop.replyPosblAt = Reply Possible Alternative
|
||||||
|
cop.fileAtchPosblAt = File Attach Possible Alternative
|
||||||
|
cop.posblAtchFileNumber = Possible Attach File Number
|
||||||
|
cop.tmplatId = Template Information
|
||||||
|
cop.guestList.subject = This article registered by Guest List
|
||||||
|
cop.nttSj = Notice Subject
|
||||||
|
cop.nttCn = Notice Contents
|
||||||
|
cop.ntceBgnde = Notice Start Date
|
||||||
|
cop.ntceEndde = Notice End Date
|
||||||
|
cop.ntcrNm = Noticer Name
|
||||||
|
cop.password = PassWord
|
||||||
|
cop.atchFile = Attach Files
|
||||||
|
cop.guestList = Guest List
|
||||||
|
cop.guestListCn = Guest List Contents
|
||||||
|
cop.noticeTerm = Notice term
|
||||||
|
cop.atchFileList = Attached File List
|
||||||
|
cop.cmmntyNm = Community Name
|
||||||
|
cop.cmmntyIntrcn = Community Introduction
|
||||||
|
cop.cmmntyMngr = Community Manager
|
||||||
|
cop.clbOprtr = Club Operator
|
||||||
|
cop.clbIntrcn = Club Introduction
|
||||||
|
cop.clbNm = Club Name
|
||||||
|
cop.tmplatNm = Template Name
|
||||||
|
cop.tmplatSeCode = Template Se Code
|
||||||
|
cop.tmplatCours = Template Cours
|
||||||
|
cop.useAt = Use Alternative
|
||||||
|
cop.ncrdNm = NameCard user name
|
||||||
|
cop.cmpnyNm = Company name
|
||||||
|
cop.deptNm = Department name
|
||||||
|
cop.ofcpsNm = OFCPS name
|
||||||
|
cop.clsfNm = Class Name
|
||||||
|
cop.emailAdres = E-mail
|
||||||
|
cop.telNo = Tel No.
|
||||||
|
cop.mbtlNum = Mobile
|
||||||
|
cop.adres = Address
|
||||||
|
cop.extrlUserAt = External User alternative
|
||||||
|
cop.publicAt = Public open alternative
|
||||||
|
cop.remark = Remark
|
||||||
|
cop.trgetNm = Company/Club Information
|
||||||
|
cop.preview = preview
|
||||||
|
|
||||||
|
cop.withdraw.msg=confirm withdrawal memebership?
|
||||||
|
cop.reregist.msg=confirm re-registration?
|
||||||
|
cop.registmanager.msg=confirm registration of manager?
|
||||||
|
cop.use.msg=confirm use?
|
||||||
|
cop.unuse.msg=confirm stop using?
|
||||||
|
cop.delete.confirm.msg=If you choose to disable the re-use change is impossible.
|
||||||
|
cop.ing.msg=Approval is being requested.
|
||||||
|
cop.request.msg=Signup is normally requested.
|
||||||
|
cop.password.msg=Please enter your password.
|
||||||
|
cop.password.not.same.msg=Password do not match.
|
||||||
|
|
||||||
|
cop.comment.wrterNm = Writer Name
|
||||||
|
cop.comment.commentCn = Comment
|
||||||
|
cop.comment.commentPassword = Password
|
||||||
|
|
||||||
|
cop.satisfaction.wrterNm = Writer Name
|
||||||
|
cop.satisfaction.stsfdgCn = Satisfaction
|
||||||
|
cop.satisfaction.stsfdg = Satisfaction Degree
|
||||||
|
cop.satisfaction.stsfdgPassword = Password
|
||||||
|
|
||||||
|
cop.scrap.scrapNm = Scrap Name
|
||||||
|
|
||||||
|
#UI USS Message#
|
||||||
|
uss.ion.noi.ntfcSj=Subject
|
||||||
|
uss.ion.noi.ntfcCn=Contents
|
||||||
|
uss.ion.noi.ntfcDate=Notification Date
|
||||||
|
uss.ion.noi.ntfcTime=Notification Time
|
||||||
|
uss.ion.noi.ntfcHH=Notification Hour
|
||||||
|
uss.ion.noi.ntfcMM=Notification Minute
|
||||||
|
uss.ion.noi.bhNtfcIntrvl=Beforehand Interval
|
||||||
|
uss.ion.noi.bhNtfcIntrvl.msg=Beforehand Interval is required.
|
||||||
|
uss.ion.noi.alertNtfcTime=Date and time of notification is not valid.
|
||||||
|
|
||||||
|
#UI COP Message#
|
||||||
|
cop.sms.trnsmitTelno=Sender
|
||||||
|
cop.sms.trnsmitCn=Contents
|
||||||
|
cop.sms.recptnTelno=Receiver(s)
|
||||||
|
cop.sms.send=Send
|
||||||
|
cop.sms.addRecptn=Add
|
||||||
|
cop.sms.recptnTelno.msg=The phone number of receiver is required.
|
||||||
|
|
||||||
|
#UI sym.log Message#
|
||||||
|
sym.log.histSeCode = History Code
|
||||||
|
sym.log.sysNm = System Name
|
||||||
|
sym.log.histCn = History Contents
|
||||||
|
sym.log.atchFile = Attached File
|
||||||
|
sym.log.atchFileList = Attached File List
|
||||||
|
sym.ems.receiver = Receiver
|
||||||
|
sym.ems.title = Title
|
||||||
|
sym.ems.content = Content
|
||||||
|
|
||||||
|
#Vlidator Errors#
|
||||||
|
errors.required={0} is required.
|
||||||
|
errors.minlength={0} can not be less than {1} characters.
|
||||||
|
errors.maxlength={0} can not be greater than {1} characters.
|
||||||
|
errors.invalid={0} is invalid.
|
||||||
|
|
||||||
|
errors.byte={0} must be a byte.
|
||||||
|
errors.short={0} must be a short.
|
||||||
|
errors.integer={0} must be an integer.
|
||||||
|
errors.long={0} must be a long.
|
||||||
|
errors.float={0} must be a float.
|
||||||
|
errors.double={0} must be a double.
|
||||||
|
|
||||||
|
errors.date={0} is not a date.
|
||||||
|
errors.range={0} is not in the range {1} through {2}.
|
||||||
|
errors.creditcard={0} is an invalid credit card number.
|
||||||
|
errors.email={0} is an invalid e-mail address.
|
||||||
|
|
||||||
|
#Vlidator Errors- ReprtStatsVO#
|
||||||
|
sts.reprtId = Report ID
|
||||||
|
sts.title = Report Title
|
||||||
|
sts.category = Report Category
|
||||||
|
sts.status = Report Status
|
||||||
|
sts.regDate = Registration Date
|
||||||
|
|
||||||
|
#Rest day messages#
|
||||||
|
sym.cal.restDay = Holiday Date
|
||||||
|
sym.cal.restName = Holiday Name
|
||||||
|
sym.cal.restDetail = Holiday Detail
|
||||||
|
sym.cal.restCategory = Holiday Category
|
||||||
|
|
||||||
|
|
||||||
|
#Custom message#
|
||||||
|
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.isNotExist.msg=Data required for processing does not exist.
|
@ -0,0 +1,385 @@
|
|||||||
|
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.
|
||||||
|
sessionExpired=\ub300\uae30 \uc2dc\uac04\uc774 \uc624\ub798\ub418\uc5b4 \uc138\uc158\uc774 \ub9cc\ub8cc\ub410\uc2b5\ub2c8\ub2e4.
|
||||||
|
invalidSession=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc138\uc158\uc73c\ub85c \uc811\uadfc\ud588\uc2b5\ub2c8\ub2e4.
|
||||||
|
accessDenied=\uc694\uccad\ud558\uc2e0 \uc791\uc5c5\uc5d0 \ub300\ud55c \uad8c\ud55c\uc774 \uc5c6\uc5b4\uc11c \uc811\uadfc\uc774 \uac70\ubd80\ub410\uc2b5\ub2c8\ub2e4.<br />\uad00\ub9ac\uc790\uc5d0\uac8c \ubb38\uc758 \ubc14\ub78d\ub2c8\ub2e4.
|
||||||
|
serverError=\uc694\uccad\ud558\uc2e0 \uc791\uc5c5\uc744 \uc218\ud589 \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.<br />\uad00\ub9ac\uc790\uc5d0\uac8c \ubb38\uc758 \ubc14\ub78d\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.sql=sql \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! error code: {0}, error msg: {1}
|
||||||
|
info.nodata.msg=\ud574\ub2f9 \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#UI Common resource#
|
||||||
|
table.num=\ubc88\ud638
|
||||||
|
table.regdate=\ub4f1\ub85d\uc77c
|
||||||
|
table.reger=\ub4f1\ub85d\uc790
|
||||||
|
table.select=\uc120\ud0dd
|
||||||
|
title.html=egovframe common component
|
||||||
|
title.detail=\uc0c1\uc138\uc870\ud68c
|
||||||
|
title.inquire=\uc870\ud68c
|
||||||
|
title.update=\uc218\uc815
|
||||||
|
title.create=\ub4f1\ub85d
|
||||||
|
title.delete=\uc0ad\uc81c
|
||||||
|
title.save=\uc800\uc7a5
|
||||||
|
title.list=\ubaa9\ub85d
|
||||||
|
title.searchCondition=\uac80\uc0c9\uc870\uac74
|
||||||
|
title.search=\uac80\uc0c9\uc5b4
|
||||||
|
title.reply=\ub2f5\uae00
|
||||||
|
title.scrap=\uc2a4\ud06c\ub7a9
|
||||||
|
title.comment=\ub313\uae00
|
||||||
|
title.attachedFileSelect=\ud30c\uc77c\uc120\ud0dd
|
||||||
|
title.attachedFileDelete=\ud30c\uc77c\uc0ad\uc81c
|
||||||
|
title.link=\ub9c1\ud06c
|
||||||
|
title.management=\uad00\ub9ac
|
||||||
|
title.all=\uc804\uccb4
|
||||||
|
|
||||||
|
input.select=\uc120\ud0dd\ud558\uc138\uc694
|
||||||
|
input.cSelect=\uc120\ud0dd
|
||||||
|
input.input=\uc785\ub825
|
||||||
|
input.button=\ubc84\ud2bc
|
||||||
|
input.selectAll.title=\uc804\uccb4\uc120\ud0dd\uccb4\ud06c\ubc15\uc2a4
|
||||||
|
input.yes=\uc608
|
||||||
|
input.no=\uc544\ub2c8\uc624
|
||||||
|
|
||||||
|
select.searchCondition=\uc870\ud68c\uc870\uac74 \uc120\ud0dd
|
||||||
|
|
||||||
|
button.select=\uc120\ud0dd
|
||||||
|
button.search=\uac80\uc0c9
|
||||||
|
button.use=\uc0ac\uc6a9
|
||||||
|
button.notUsed=\uc0ac\uc6a9\uc911\uc9c0
|
||||||
|
button.inquire=\uc870\ud68c
|
||||||
|
button.update=\uc218\uc815
|
||||||
|
button.create=\ub4f1\ub85d
|
||||||
|
button.delete=\uc0ad\uc81c
|
||||||
|
button.deleteDatabase=\uc644\uc804\uc0ad\uc81c
|
||||||
|
button.close=\ub2eb\uae30
|
||||||
|
button.save=\uc800\uc7a5
|
||||||
|
button.list=\ubaa9\ub85d
|
||||||
|
button.reset=\ucde8\uc18c
|
||||||
|
button.passwordUpdate=\uc554\ud638\ubcc0\uacbd
|
||||||
|
button.subscribe=\uac00\uc785\uc2e0\uccad
|
||||||
|
button.realname=\uc2e4\uba85\ud655\uc778
|
||||||
|
button.moveToGpin=GPIN\uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9
|
||||||
|
button.moveToIhidnum=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638 \uc2e4\uba85\ud655\uc778\uc73c\ub85c \uc774\ub3d9
|
||||||
|
button.agree=\ub3d9\uc758
|
||||||
|
button.disagree=\ube44\ub3d9\uc758
|
||||||
|
button.possible=\uac00\ub2a5
|
||||||
|
button.impossible=\ubd88\uac00\ub2a5
|
||||||
|
button.qnaregist=Q&A\ub4f1\ub85d
|
||||||
|
button.cnsltregist=\uc0c1\ub2f4\ub4f1\ub85d
|
||||||
|
button.preview=\ubbf8\ub9ac\ubcf4\uae30
|
||||||
|
button.next=\ub2e4\uc74c
|
||||||
|
button.add=\ubc14\ub85c\ucd94\uac00
|
||||||
|
button.confirm=\ud655\uc778
|
||||||
|
button.back = \ub4a4\ub85c
|
||||||
|
button.yes = \uc608
|
||||||
|
button.no = \uc544\ub2c8\uc624
|
||||||
|
button.home = \ud648
|
||||||
|
button.user = \uc0ac\uc6a9\uc790\uc9c0\uc6d0
|
||||||
|
button.cop = \ud611\uc5c5
|
||||||
|
button.wrkstart = \ucd9c\uadfc
|
||||||
|
button.wrkend = \ud1f4\uadfc
|
||||||
|
button.reply = \ub2f5\uae00
|
||||||
|
button.scrap = \uc2a4\ud06c\ub7a9
|
||||||
|
button.comment = \ub313\uae00
|
||||||
|
button.excel = \uc5d1\uc140
|
||||||
|
button.init=\ucd08\uae30\ud654
|
||||||
|
button.acknowledgment=\uc2b9\uc778
|
||||||
|
button.cancelAcknowledgment=\uc2b9\uc778\ucde8\uc18c
|
||||||
|
button.bulkUpload=\uc77c\uad04\ub4f1\ub85d
|
||||||
|
button.log = \ub85c\uadf8
|
||||||
|
button.set = \uc124\uc815
|
||||||
|
button.move = \uc774\ub3d9
|
||||||
|
|
||||||
|
|
||||||
|
#UI Common Message#
|
||||||
|
common.noScriptTitle.msg=\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c\ub294 \uc77c\ubd80 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uc2e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
common.searchCondition.msg=\uc774 \ub808\uc774\uc544\uc6c3\uc740 \ud558\ub2e8 \uc815\ubcf4\ub97c \ub300\ud55c \uac80\uc0c9 \uc815\ubcf4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
common.summary.list={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \ubaa9\ub85d\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4.
|
||||||
|
common.summary.regist={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub4f1\ub85d\ud55c\ub2e4.
|
||||||
|
common.summary.update={0}\uc758 \ub4f1\ub85d \uac00\ub2a5\ud55c \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uc5ec \ub4f1\ub85d \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \uc218\uc815\ud55c\ub2e4.
|
||||||
|
common.summary.inqire={0}\uc758 \ub0b4\uc5ed\uc5d0 \ub300\ud55c \uc0c1\uc138\uc870\ud68c \ub0b4\uc5ed\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
common.save.msg=\uc800\uc7a5\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.regist.msg=\ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.delete.msg=\uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.update.msg=\uc218\uc815\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.nodata.msg=\uc790\ub8cc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \uac80\uc0c9\uc870\uac74\uc744 \uc120\ud0dd\ud574\uc8fc\uc138\uc694
|
||||||
|
common.required.msg=(\uc740)\ub294 \ud544\uc218\uc785\ub825\ud56d\ubaa9\uc785\ub2c8\ub2e4.
|
||||||
|
common.acknowledgement.msg=\uc2b9\uc778\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.acknowledgementcancel.msg=\uc2b9\uc778\ucde8\uc18c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
common.nocomment.msg=\ub313\uae00\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
common.noguest.msg=\uc791\uc131\ub41c \ubc29\uba85\ub85d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
success.request.msg = \uc694\uccad\ucc98\ub9ac\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc218\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
success.common.select=\uc815\uc0c1\uc801\uc73c\ub85c \uc870\ud68c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
success.common.insert=\uc815\uc0c1\uc801\uc73c\ub85c \ub4f1\ub85d\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
success.common.update=\uc815\uc0c1\uc801\uc73c\ub85c \uc218\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
success.common.delete=\uc815\uc0c1\uc801\uc73c\ub85c \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
common.imposbl.fileupload = \ub354 \uc774\uc0c1 \ud30c\uc77c\uc744 \ucca8\ubd80\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
common.isConfmDe.msg=\uc2b9\uc778\uc77c\uc790\ub97c \ud655\uc778 \ubc14\ub78d\ub2c8\ub2e4.
|
||||||
|
common.isExist.msg = \uc774\ubbf8 \uc874\uc7ac\ud558\uac70\ub098 \uacfc\uac70\uc5d0 \ub4f1\ub85d\uc774 \ub418\uc5c8\ub358 \uc0c1\ud0dc\uc785\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
fail.common.insert = \uc0dd\uc131\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.update = \uc218\uc815\uc774 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.delete = \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.delete.upperMenuExist = \ucc38\uc870\ub418\ub294 \uba54\ub274\uac00 \uc788\uc5b4 \uc0ad\uc81c\uac00 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.select = \uc870\ud68c\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.login = \ub85c\uadf8\uc778 \uc815\ubcf4\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.loginIncorrect = {0}\ud68c \uc774\uc0c1 \ub85c\uadf8\uc778 \uc811\uc18d\uc774 \uc2dc\ub3c4 \ub418\uc5b4 \uacc4\uc815\uc774 \uc7a0\uaca8\uc2b5\ub2c8\ub2e4!
|
||||||
|
fail.common.login.password = \ud328\uc2a4\uc6cc\ub4dc \uc790\ub9ac \uc218\uac00 \uc77c\uce58 \ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.(8\uc790\ub9ac \uc774\uc0c1 20\uc790\ub9ac \uc774\ud558)
|
||||||
|
fail.common.idsearch = \uc544\uc774\ub514\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.pwsearch = \ube44\ubc00\ubc88\ud638\ub97c \ucc3e\uc744\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.request.msg = \uc694\uccad\ucc98\ub9ac\ub97c \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.common.login.ip = \ub4f1\ub85d\ub41c IP\uac00 \uc544\ub2c8\ubbc0\ub85c \ub85c\uadf8\uc778\uc774 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#UI User Message#
|
||||||
|
fail.user.passwordUpdate1=\ud604\uc7ac \ube44\ubc00\ubc88\ud638\uac00 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.user.passwordUpdate2=\ube44\ubc00\ubc88\ud638\uc640 \ube44\ubc00\ubc88\ud638 \ud655\uc778\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
info.user.rlnmCnfirm=\uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624.
|
||||||
|
success.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4.
|
||||||
|
fail.user.rlnmCnfirm=\ud589\uc815\uc548\uc804\ubd80\uc758 \uc8fc\ubbfc\ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
fail.user.connectFail=\uc2dc\uc2a4\ud15c \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.(\uc778\uc99d\uc11c\ubc84 \uc5f0\uacb0 \uc2e4\ud328)
|
||||||
|
info.user.rlnmPinCnfirm=\uacf5\uacf5 \uc544\uc774\ud540 \uc544\uc774\ub514\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uba85\ud655\uc778\uc744 \ud558\uc2ed\uc2dc\uc624.
|
||||||
|
success.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4.
|
||||||
|
fail.user.rlnmPinCnfirm=\uacf5\uacf5\uc544\uc774\ud540\uc758 \ub4f1\ub85d\uc790\ub8cc\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
|
||||||
|
#UI Cop Message#
|
||||||
|
cop.extrlUser = \uc678\ubd80\uc0ac\uc6a9\uc790
|
||||||
|
cop.intrlUser = \ub0b4\ubd80\uc0ac\uc6a9\uc790
|
||||||
|
cop.private = \ube44\uacf5\uac1c
|
||||||
|
cop.public = \uacf5\uac1c
|
||||||
|
|
||||||
|
cop.adbkNm = \uc8fc\uc18c\ub85d\uba85
|
||||||
|
cop.othbcScope = \uacf5\uac1c\ubc94\uc704
|
||||||
|
cop.company = \ud68c\uc0ac
|
||||||
|
cop.part = \ubd80\uc11c
|
||||||
|
cop.man = \uac1c\uc778
|
||||||
|
cop.adbkUser = \uad6c\uc131\uc6d0
|
||||||
|
cop.bbsNm = \uac8c\uc2dc\ud310\uba85
|
||||||
|
cop.bbsIntrcn = \uac8c\uc2dc\ud310\uc18c\uac1c
|
||||||
|
cop.bbsTyCode = \uac8c\uc2dc\ud310 \uc720\ud615
|
||||||
|
cop.bbsAttrbCode = \uac8c\uc2dc\ud310 \uc18d\uc131
|
||||||
|
cop.replyPosblAt = \ub2f5\uc7a5\uac00\ub2a5\uc5ec\ubd80
|
||||||
|
cop.fileAtchPosblAt = \ud30c\uc77c\ucca8\ubd80\uac00\ub2a5\uc5ec\ubd80
|
||||||
|
cop.posblAtchFileNumber = \ucca8\ubd80\uac00\ub2a5\ud30c\uc77c \uc22b\uc790
|
||||||
|
cop.tmplatId = \ud15c\ud50c\ub9bf \uc815\ubcf4
|
||||||
|
cop.guestList.subject = \ubc29\uba85\ub85d \uac8c\uc2dc\uae00\uc785\ub2c8\ub2e4.
|
||||||
|
cop.nttSj = \uc81c\ubaa9
|
||||||
|
cop.nttCn = \uae00\ub0b4\uc6a9
|
||||||
|
cop.ntceBgnde = \uac8c\uc2dc\uc2dc\uc791\uc77c
|
||||||
|
cop.ntceEndde = \uac8c\uc2dc\uc885\ub8cc\uc77c
|
||||||
|
cop.ntcrNm = \uc791\uc131\uc790
|
||||||
|
cop.password = \ud328\uc2a4\uc6cc\ub4dc
|
||||||
|
cop.atchFile = \ud30c\uc77c\ucca8\ubd80
|
||||||
|
cop.guestList = \ubc29\uba85\ub85d
|
||||||
|
cop.guestListCn = \ubc29\uba85\ub85d \ub0b4\uc6a9
|
||||||
|
cop.noticeTerm = \uac8c\uc2dc\uae30\uac04
|
||||||
|
cop.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d
|
||||||
|
cop.cmmntyNm = \ucee4\ubba4\ub2c8\ud2f0\uba85
|
||||||
|
cop.cmmntyIntrcn = \ucee4\ubba4\ub2c8\ud2f0 \uc18c\uac1c
|
||||||
|
cop.cmmntyMngr = \ucee4\ubba4\ub2c8\ud2f0 \uad00\ub9ac\uc790
|
||||||
|
cop.clbOprtr = \ub3d9\ud638\ud68c \uc6b4\uc601\uc790
|
||||||
|
cop.clbIntrcn = \ub3d9\ud638\ud68c \uc18c\uac1c
|
||||||
|
cop.clbNm = \ub3d9\ud638\ud68c \uba85
|
||||||
|
cop.tmplatNm = \ud15c\ud50c\ub9bf\uba85
|
||||||
|
cop.tmplatSeCode = \ud15c\ud50c\ub9bf \uad6c\ubd84
|
||||||
|
cop.tmplatCours = \ud15c\ud50c\ub9bf\uacbd\ub85c
|
||||||
|
cop.useAt = \uc0ac\uc6a9\uc5ec\ubd80
|
||||||
|
cop.ncrdNm = \uc774\ub984
|
||||||
|
cop.cmpnyNm = \ud68c\uc0ac\uba85
|
||||||
|
cop.deptNm = \ubd80\uc11c\uba85
|
||||||
|
cop.ofcpsNm = \uc9c1\uc704
|
||||||
|
cop.clsfNm = \uc9c1\uae09
|
||||||
|
cop.emailAdres = \uc774\uba54\uc77c\uc8fc\uc18c
|
||||||
|
cop.telNo = \uc804\ud654\ubc88\ud638
|
||||||
|
cop.mbtlNum = \ud734\ub300\ud3f0\ubc88\ud638
|
||||||
|
cop.adres = \uc8fc\uc18c
|
||||||
|
cop.extrlUserAt = \uc678\ubd80\uc0ac\uc6a9\uc790\uc5ec\ubd80
|
||||||
|
cop.publicAt = \uacf5\uac1c\uc5ec\ubd80
|
||||||
|
cop.remark = \ube44\uace0
|
||||||
|
cop.trgetNm = \ucee4\ubba4\ub2c8\ud2f0/\ub3d9\ud638\ud68c \uc815\ubcf4
|
||||||
|
cop.preview = \ubbf8\ub9ac\ubcf4\uae30
|
||||||
|
|
||||||
|
cop.withdraw.msg=\ud0c8\ud1f4\ucc98\ub9ac \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
cop.reregist.msg=\uc7ac\uac00\uc785 \ucc98\ub9ac\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
cop.registmanager.msg=\uc6b4\uc601\uc9c4\uc73c\ub85c \ub4f1\ub85d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
cop.use.msg=\uc0ac\uc6a9 \ucc98\ub9ac\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
cop.unuse.msg=\uc0ac\uc6a9\uc911\uc9c0 \ucc98\ub9ac\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
|
||||||
|
cop.delete.confirm.msg=\uc0ac\uc6a9\uc911\uc9c0\ub97c \uc120\ud0dd\ud558\uc2e4 \uacbd\uc6b0 \ub2e4\uc2dc \uc0ac\uc6a9\uc73c\ub85c \ubcc0\uacbd\uc774 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4.
|
||||||
|
cop.ing.msg=\uc2b9\uc778\uc694\uccad \uc911\uc785\ub2c8\ub2e4.
|
||||||
|
cop.request.msg=\uac00\uc785\uc2e0\uccad\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \uc694\uccad\ub418\uc5c8\uc2b5\ub2c8\ub2e4
|
||||||
|
cop.password.msg=\ud328\uc2a4\uc6cc\ub4dc\ub97c \uc785\ub825\ud574 \uc8fc\uc2ed\uc2dc\uc624.
|
||||||
|
cop.password.not.same.msg=\ud328\uc2a4\uc6cc\ub4dc\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
cop.comment.wrterNm = \uc791\uc131\uc790
|
||||||
|
cop.comment.commentCn = \ub0b4\uc6a9
|
||||||
|
cop.comment.commentPassword = \ud328\uc2a4\uc6cc\ub4dc
|
||||||
|
|
||||||
|
cop.satisfaction.wrterNm = \uc791\uc131\uc790
|
||||||
|
cop.satisfaction.stsfdgCn = \ub0b4\uc6a9
|
||||||
|
cop.satisfaction.stsfdg = \ub9cc\uc871\ub3c4
|
||||||
|
cop.satisfaction.stsfdgPassword = \ud328\uc2a4\uc6cc\ub4dc
|
||||||
|
|
||||||
|
cop.scrap.scrapNm = \uc2a4\ud06c\ub7a9\uba85
|
||||||
|
|
||||||
|
#UI USS Message#
|
||||||
|
uss.ion.noi.ntfcSj=\uc81c\ubaa9
|
||||||
|
uss.ion.noi.ntfcCn=\ub0b4\uc6a9
|
||||||
|
uss.ion.noi.ntfcDate=\uc54c\ub9bc\uc77c\uc790
|
||||||
|
uss.ion.noi.ntfcTime=\uc54c\ub9bc\uc2dc\uac04
|
||||||
|
uss.ion.noi.ntfcHH=\uc54c\ub9bc\uc2dc\uac04
|
||||||
|
uss.ion.noi.ntfcMM=\uc54c\ub9bc\ubd84
|
||||||
|
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.alertNtfcTime=\uc54c\ub9bc\uc77c\uc790 \ubc0f \uc2dc\uac04\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#UI COP Message#
|
||||||
|
cop.sms.trnsmitTelno=\ubc1c\uc2e0\uc804\ud654\ubc88\ud638
|
||||||
|
cop.sms.trnsmitCn=\uc804\uc1a1\ub0b4\uc6a9
|
||||||
|
cop.sms.recptnTelno=\uc218\uc2e0\uc804\ud654\ubc88\ud638
|
||||||
|
cop.sms.send=\uc804\uc1a1
|
||||||
|
cop.sms.addRecptn=\ucd94\uac00
|
||||||
|
cop.sms.recptnTelno.msg=\uc218\uc2e0\uc804\ud654\ubc88\ud638 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#UI sym.log Message#
|
||||||
|
sym.log.histSeCode = \uc774\ub825\uad6c\ubd84
|
||||||
|
sym.log.sysNm = \uc2dc\uc2a4\ud15c\uba85
|
||||||
|
sym.log.histCn = \uc774\ub825\ub0b4\uc6a9
|
||||||
|
sym.log.atchFile = \ucca8\ubd80\ud30c\uc77c
|
||||||
|
sym.log.atchFileList = \ucca8\ubd80\ud30c\uc77c\ubaa9\ub85d
|
||||||
|
sym.ems.receiver = \ubc1b\ub294\uc0ac\ub78c
|
||||||
|
sym.ems.title = \uc81c\ubaa9
|
||||||
|
sym.ems.content = \ubc1c\uc2e0\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors#
|
||||||
|
errors.prefix=<div class="error">
|
||||||
|
errors.suffix=</div><br/>
|
||||||
|
|
||||||
|
errors.required={0}\uc740(\ub294) \ud544\uc218 \uc785\ub825\uac12\uc785\ub2c8\ub2e4.
|
||||||
|
errors.minlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.maxlength={0}\uc740(\ub294) {1}\uc790 \uc774\uc0c1 \uc785\ub825\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
errors.invalid={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12\uc785\ub2c8\ub2e4.
|
||||||
|
errors.minInteger={0}\uc740(\ub294) \uc720\ud6a8\ud55c \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4. 1 \uc774\uc0c1\uc758 \uac12\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.byte={0}\uc740(\ub294) byte\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.short={0}\uc740(\ub294) short\ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.integer={0}\uc740(\ub294) \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.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.date={0}\uc740(\ub294) \ub0a0\uc9dc \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4.
|
||||||
|
errors.range={0}\uc740(\ub294) {1}\uacfc {2} \uc0ac\uc774\uc758 \uac12\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.creditcard={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc2e0\uc6a9\uce74\ub4dc \ubc88\ud638\uc785\ub2c8\ub2e4.
|
||||||
|
errors.email={0}\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc774\uba54\uc77c \uc8fc\uc18c\uc785\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
errors.ihidnum=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc8fc\ubbfc\ub4f1\ub85d\ubc88\ud638\uc785\ub2c8\ub2e4.
|
||||||
|
errors.korean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc785\ub825\ud558\uc154\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.ip=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 IP\uc8fc\uc18c\uc785\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
errors.password1={0}\uc740(\ub294) 8~20\uc790 \ub0b4\uc5d0\uc11c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.
|
||||||
|
errors.password2={0}\uc740(\ub294) \ud55c\uae00,\ud2b9\uc218\ubb38\uc790,\ub744\uc5b4\uc4f0\uae30\ub294 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
|
||||||
|
errors.password3={0}\uc740(\ub294) \uc21c\ucc28\uc801\uc778 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
errors.password4={0}\uc740(\ub294) \ubc18\ubcf5\ub418\ub294 \ubb38\uc790\ub098 \uc22b\uc790\ub97c 4\uac1c\uc774\uc0c1 \uc5f0\uc18d\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
errors.notKorean={0}\uc740(\ub294) \ud55c\uae00\uc744 \uc0ac\uc6a9\ud558\uc2e4\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
error.security.runtime.error = error
|
||||||
|
|
||||||
|
#Xss Errors#
|
||||||
|
errors.xss.checkerUser=\ud574\ub2f9 \uae30\ub2a5\uc5d0 \ub300\ud55c \uc0ac\uc6a9 \ubc0f \ucc98\ub9ac \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#File Upload / Download
|
||||||
|
errors.file.extension=\uc9c0\uc6d0\ub418\ub294 \ud30c\uc77c\uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4.
|
||||||
|
errors.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
|
||||||
|
success.file.transfer=\ud30c\uc77c\uc804\uc1a1\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||||
|
|
||||||
|
#Vlidator Errors- wordDicaryVO#
|
||||||
|
wordDicaryVO.wordNm=\uc6a9\uc5b4\uba85
|
||||||
|
wordDicaryVO.engNm=\uc601\ubb38\uba85
|
||||||
|
wordDicaryVO.wordDc=\uc6a9\uc5b4\uc124\uba85
|
||||||
|
wordDicaryVO.synonm=\ub3d9\uc758\uc5b4
|
||||||
|
|
||||||
|
#Vlidator Errors- cnsltManageVO#
|
||||||
|
cnsltManageVO.cnsltSj=\uc0c1\ub2f4\uc81c\ubaa9
|
||||||
|
cnsltManageVO.cnsltCn=\uc0c1\ub2f4\ub0b4\uc6a9
|
||||||
|
cnsltManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638
|
||||||
|
cnsltManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638
|
||||||
|
cnsltManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638
|
||||||
|
cnsltManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638
|
||||||
|
cnsltManageVO.wrterNm=\uc791\uc131\uc790\uba85
|
||||||
|
cnsltManageVO.managtCn=\ub2f5\ubcc0\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors- siteManageVO#
|
||||||
|
siteManageVO.siteNm=\uc0ac\uc774\ud2b8\uba85
|
||||||
|
siteManageVO.siteUrl=\uc0ac\uc774\ud2b8 URL
|
||||||
|
siteManageVO.siteDc=\uc0ac\uc774\ud2b8\uc124\uba85
|
||||||
|
siteManageVO.siteThemaClCode=\uc0ac\uc774\ud2b8\uc8fc\uc81c\ubd84\ub958
|
||||||
|
siteManageVO.actvtyAt=\ud65c\uc131\uc5ec\ubd80
|
||||||
|
siteManageVO.useAt=\uc0ac\uc6a9\uc5ec\ubd80
|
||||||
|
|
||||||
|
#Vlidator Errors- recomendSiteManageVO#
|
||||||
|
recomendSiteManageVO.recomendSiteNm=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uba85
|
||||||
|
recomendSiteManageVO.recomendSiteUrl=\ucd94\ucc9c\uc0ac\uc774\ud2b8 URL
|
||||||
|
recomendSiteManageVO.recomendSiteDc=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc124\uba85
|
||||||
|
recomendSiteManageVO.recomendResnCn=\ucd94\ucc9c\uc0ac\uc774\ud2b8\uc2b9\uc778\uc0ac\uc720
|
||||||
|
recomendSiteManageVO.confmDe=\uc2b9\uc778\uc77c\uc790
|
||||||
|
|
||||||
|
#Vlidator Errors- hpcmManageVO#
|
||||||
|
hpcmManageVO.hpcmSeCode=\ub3c4\uc6c0\ub9d0\uad6c\ubd84
|
||||||
|
hpcmManageVO.hpcmDf=\ub3c4\uc6c0\ub9d0\uc815\uc758
|
||||||
|
hpcmManageVO.hpcmDc=\ub3c4\uc6c0\ub9d0\uc124\uba85
|
||||||
|
|
||||||
|
#Vlidator Errors- newsManageVO#
|
||||||
|
newsManageVO.newsSj=\ub274\uc2a4\uc81c\ubaa9
|
||||||
|
newsManageVO.newsCn=\ub274\uc2a4\ub0b4\uc6a9
|
||||||
|
newsManageVO.ntceDe=\uac8c\uc2dc\uc77c\uc790
|
||||||
|
|
||||||
|
#Vlidator Errors- faqManageVO#
|
||||||
|
faqManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9
|
||||||
|
faqManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9
|
||||||
|
faqManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors- stplatManageVO#
|
||||||
|
stplatManageVO.useStplatNm=\uc774\uc6a9\uc57d\uad00\uba85
|
||||||
|
stplatManageVO.useStplatCn=\uc774\uc6a9\uc57d\uad00\ub0b4\uc6a9
|
||||||
|
stplatManageVO.infoProvdAgreCn=\uc815\ubcf4\uc81c\uacf5\ub3d9\uc758\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors- cpyrhtPrtcPolicyVO#
|
||||||
|
cpyrhtPrtcPolicyVO.cpyrhtPrtcPolicyCn=\uc800\uc791\uad8c\ubcf4\ud638\uc815\ucc45\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors- qnaManageVO#
|
||||||
|
qnaManageVO.qestnSj=\uc9c8\ubb38\uc81c\ubaa9
|
||||||
|
qnaManageVO.qestnCn=\uc9c8\ubb38\ub0b4\uc6a9
|
||||||
|
qnaManageVO.writngPassword=\uc791\uc131\ube44\ubc00\ubc88\ud638
|
||||||
|
qnaManageVO.areaNo=\uc9c0\uc5ed\ubc88\ud638
|
||||||
|
qnaManageVO.middleTelno=\uc911\uac04\uc804\ud654\ubc88\ud638
|
||||||
|
qnaManageVO.endTelno=\ub05d\uc804\ud654\ubc88\ud638
|
||||||
|
qnaManageVO.wrterNm=\uc791\uc131\uc790\uba85
|
||||||
|
qnaManageVO.answerCn=\ub2f5\ubcc0\ub0b4\uc6a9
|
||||||
|
|
||||||
|
#Vlidator Errors- ReprtStatsVO#
|
||||||
|
sts.reprtId = \ubcf4\uace0\uc11cID
|
||||||
|
sts.title = \ubcf4\uace0\uc11c\uba85
|
||||||
|
sts.category = \ubcf4\uace0\uc11c\uc720\ud615
|
||||||
|
sts.status = \uc9c4\ud589\uc0c1\ud0dc
|
||||||
|
sts.regDate = \ub4f1\ub85d\uc77c\uc2dc
|
||||||
|
|
||||||
|
#Rest day messages#
|
||||||
|
sym.cal.restDay = \ud734\uc77c\uc77c\uc790
|
||||||
|
sym.cal.restName = \ud734\uc77c\uba85
|
||||||
|
sym.cal.restDetail = \ud734\uc77c\uc124\uba85
|
||||||
|
sym.cal.restCategory = \ud734\uc77c\uad6c\ubd84
|
||||||
|
|
||||||
|
image.errorBg = \uc624\ub958\uc774\ubbf8\uc9c0
|
||||||
|
|
||||||
|
|
||||||
|
#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.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.
|
@ -0,0 +1,69 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<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:beans="http://www.springframework.org/schema/beans"
|
||||||
|
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
|
||||||
|
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/util http://www.springframework.org/schema/util/spring-util.xsd">
|
||||||
|
|
||||||
|
<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.Service"/>
|
||||||
|
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
|
||||||
|
</context:component-scan>
|
||||||
|
|
||||||
|
<bean id="antPathMatcher" class="org.springframework.util.AntPathMatcher" />
|
||||||
|
|
||||||
|
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
|
||||||
|
<property name="basenames">
|
||||||
|
<list>
|
||||||
|
<value>classpath:message/message-common</value>
|
||||||
|
<value>classpath:message/authentication-message</value>
|
||||||
|
<value>classpath:org/egovframe/rte/fdl/property/messages/properties</value>
|
||||||
|
</list>
|
||||||
|
</property>
|
||||||
|
<property name="defaultEncoding" value="UTF-8"/>
|
||||||
|
<property name="cacheSeconds">
|
||||||
|
<value>60</value>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
|
||||||
|
<property name="dateFormat" ref="dateFormat"/>
|
||||||
|
</bean>
|
||||||
|
<bean id="dateFormat" class="java.text.SimpleDateFormat">
|
||||||
|
<constructor-arg index="0" value="yyyy-MM-dd HH:mm"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
|
||||||
|
<property name="defaultLocale" value="ko_KR"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean name="propertyService" class="org.egovframe.rte.fdl.property.impl.EgovPropertyServiceImpl" destroy-method="destroy">
|
||||||
|
<property name="properties">
|
||||||
|
<map>
|
||||||
|
<entry key="tempDir" value="C:/temp"/>
|
||||||
|
|
||||||
|
<entry key="pageUnit" value="10"/>
|
||||||
|
<entry key="pageSize" value="10"/>
|
||||||
|
</map>
|
||||||
|
</property>
|
||||||
|
<!--
|
||||||
|
<property name="extFileName">
|
||||||
|
<set>
|
||||||
|
<map>
|
||||||
|
<entry key="encoding" value="UTF-8"/>
|
||||||
|
<entry key="filename" value="classpath*:properties/your-file.properties"/>
|
||||||
|
</map>
|
||||||
|
</set>
|
||||||
|
</property>
|
||||||
|
-->
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean name="requestHandlers" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
|
||||||
|
|
||||||
|
<bean id="leaveaTrace" class="org.egovframe.rte.fdl.cmmn.trace.LeaveaTrace" />
|
||||||
|
|
||||||
|
</beans>
|
@ -0,0 +1,45 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<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:aop="http://www.springframework.org/schema/aop"
|
||||||
|
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
|
||||||
|
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
|
||||||
|
">
|
||||||
|
|
||||||
|
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
|
||||||
|
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
|
||||||
|
<property name="url" value="jdbc:log4jdbc:mariadb://localhost:3306/xit-base?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&useSSL=false" />
|
||||||
|
<property name="username" value="root"/>
|
||||||
|
<property name="password" value="mjkhan"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean"
|
||||||
|
p:dataSource-ref="dataSource"
|
||||||
|
p:configLocation="classpath:sql/mybatis-config.xml"
|
||||||
|
p:mapperLocations="classpath:sql/mapper/**/*.xml"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<bean id="mapperConfigurer" class="org.egovframe.rte.psl.dataaccess.mapper.MapperConfigurer">
|
||||||
|
<property name="basePackage" value="cokr.xit" />
|
||||||
|
<property name="sqlSessionFactoryBeanName" value="sqlSession"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
|
||||||
|
<property name="dataSource" ref="dataSource"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<tx:advice id="txAdvice" transaction-manager="txManager">
|
||||||
|
<tx:attributes>
|
||||||
|
<tx:method name="*" rollback-for="Exception"/>
|
||||||
|
</tx:attributes>
|
||||||
|
</tx:advice>
|
||||||
|
|
||||||
|
<aop:config>
|
||||||
|
<aop:pointcut id="serviceMethod" 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:config>
|
||||||
|
|
||||||
|
</beans>
|
@ -0,0 +1,13 @@
|
|||||||
|
<?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">
|
||||||
|
<mapper namespace="cokr.xit.foundation.test.TestMapper">
|
||||||
|
|
||||||
|
<insert id="insert" parameterType="map">${sql}</insert>
|
||||||
|
|
||||||
|
<update id="update" parameterType="map">${sql}</update>
|
||||||
|
|
||||||
|
<delete id="delete" parameterType="map">${sql}</delete>
|
||||||
|
|
||||||
|
<update id="commit">COMMIT</update>
|
||||||
|
|
||||||
|
</mapper>
|
@ -0,0 +1,29 @@
|
|||||||
|
<?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">
|
||||||
|
<mapper namespace="utility">
|
||||||
|
|
||||||
|
<!-- For Maria DB -->
|
||||||
|
<sql id="paging-prefix"><if test="fetchSize != null and fetchSize > 0">
|
||||||
|
SELECT QROWS.* FROM (
|
||||||
|
SELECT ROW_NUMBER() OVER(<include refid="utility.sortBy" />) ROW_NUM
|
||||||
|
, COUNT(*) OVER() TOT_CNT, QBODY.*
|
||||||
|
FROM (</if></sql>
|
||||||
|
|
||||||
|
<sql id="paging-suffix"><if test="fetchSize != null and fetchSize > 0"> ) QBODY
|
||||||
|
) QROWS
|
||||||
|
WHERE ROW_NUM BETWEEN ((#{pageNum} - 1) * #{fetchSize}) + 1 AND (#{pageNum} * #{fetchSize})</if></sql>
|
||||||
|
|
||||||
|
<select id="foundRows" resultType="dataobject">/* 전체 결과수 가져오기(utility.foundRows) */
|
||||||
|
SELECT FOUND_ROWS() TOT_CNT</select>
|
||||||
|
|
||||||
|
<sql id="sortBy"><if test="orderBy != null and orderBy != ''">ORDER BY ${orderBy}</if></sql>
|
||||||
|
|
||||||
|
<sql id="orderBy"><if test="fetchSize == null or fetchSize < 1"><include refid="utility.sortBy" /></if></sql>
|
||||||
|
|
||||||
|
<sql id="now">DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y%m%d%H%i%s')</sql>
|
||||||
|
|
||||||
|
<sql id="thisDay">IFNULL(#{thisDay}, DATE_FORMAT(CURRENT_DATE, '%Y%m%d'))</sql>
|
||||||
|
|
||||||
|
<sql id="selectThisDay">SELECT<include refid="utility.thisDay" />THIS_DAY</sql>
|
||||||
|
|
||||||
|
</mapper>
|
@ -0,0 +1,25 @@
|
|||||||
|
<?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">
|
||||||
|
<configuration>
|
||||||
|
|
||||||
|
<settings>
|
||||||
|
<setting name="mapUnderscoreToCamelCase" value="false"/>
|
||||||
|
<setting name="cacheEnabled" value="false" />
|
||||||
|
<setting name="jdbcTypeForNull" value="NULL" />
|
||||||
|
<setting name="callSettersOnNulls" value="true"/>
|
||||||
|
</settings>
|
||||||
|
|
||||||
|
<typeAliases>
|
||||||
|
<typeAlias alias="egovMap" type="org.egovframe.rte.psl.dataaccess.util.EgovMap"/>
|
||||||
|
<typeAlias alias="dataobject" type="cokr.xit.foundation.data.DataObject"/>
|
||||||
|
</typeAliases>
|
||||||
|
|
||||||
|
<typeHandlers>
|
||||||
|
<typeHandler handler="cokr.xit.foundation.data.RowValueHandler" javaType="java.lang.Object"/>
|
||||||
|
</typeHandlers>
|
||||||
|
|
||||||
|
<plugins>
|
||||||
|
<plugin interceptor="cokr.xit.foundation.data.paging.PagingSupport" />
|
||||||
|
</plugins>
|
||||||
|
|
||||||
|
</configuration>
|
Loading…
Reference in New Issue