최초 커밋
commit
1d49f86c65
@ -0,0 +1,198 @@
|
||||
<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</groupId>
|
||||
<artifactId>xit-menu</artifactId>
|
||||
<version>23.04.01</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>xit-menu</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
|
||||
<java.version>1.8</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>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>cokr.xit</groupId>
|
||||
<artifactId>xit-foundation</artifactId>
|
||||
<version>23.04.01</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>1.8</source>
|
||||
<target>1.8</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>hibernate3-maven-plugin</artifactId>
|
||||
<version>2.1</version>
|
||||
<configuration>
|
||||
<components>
|
||||
<component>
|
||||
<name>hbm2ddl</name>
|
||||
<implementation>annotationconfiguration</implementation>
|
||||
</component>
|
||||
</components>
|
||||
</configuration>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.hsqldb</groupId>
|
||||
<artifactId>hsqldb</artifactId>
|
||||
<version>2.3.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
<!-- EMMA -->
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>emma-maven-plugin</artifactId>
|
||||
<version>1.0-alpha-3</version>
|
||||
</plugin>
|
||||
<!-- PMD manven plugin -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-pmd-plugin</artifactId>
|
||||
<version>3.1</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.3.0</version>
|
||||
<configuration>
|
||||
<includes>
|
||||
<include>**/*.class</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>
|
||||
</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>
|
||||
</project>
|
@ -0,0 +1,158 @@
|
||||
package cokr.xit.base.menu;
|
||||
|
||||
/**프로그램 변경요청 정보
|
||||
* @author mjkhan
|
||||
*/
|
||||
public class ChangeRequest {
|
||||
private String
|
||||
id,
|
||||
filename,
|
||||
subject,
|
||||
requestorID,
|
||||
requestDate,
|
||||
requestDetail,
|
||||
processorID,
|
||||
processDate,
|
||||
processDetail,
|
||||
status;
|
||||
|
||||
/**요청번호를 반환한다.
|
||||
* @return 요청번호
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**요청번호를 설정한다.
|
||||
* @param id 요청번호
|
||||
*/
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**프로그램 파일이름을 반환한다.
|
||||
* @return 프로그램 파일이름
|
||||
*/
|
||||
public String getFilename() {
|
||||
return filename;
|
||||
}
|
||||
|
||||
/**프로그램 파일이름을 설정한다.
|
||||
* @param filename 프로그램 파일이름
|
||||
*/
|
||||
public void setFilename(String filename) {
|
||||
this.filename = filename;
|
||||
}
|
||||
|
||||
/**요청제목을 반환한다.
|
||||
* @return 요청제목
|
||||
*/
|
||||
public String getSubject() {
|
||||
return subject;
|
||||
}
|
||||
|
||||
/**요청제목을 설정한다.
|
||||
* @param title 요청제목
|
||||
*/
|
||||
public void setSubject(String subject) {
|
||||
this.subject = subject;
|
||||
}
|
||||
|
||||
/**요청자 ID를 반환한다.
|
||||
* @return 요청자 ID
|
||||
*/
|
||||
public String getRequestorID() {
|
||||
return requestorID;
|
||||
}
|
||||
|
||||
/**요청자 ID를 설정한다.
|
||||
* @param requestorID 요청자 ID
|
||||
*/
|
||||
public void setRequestorID(String requestorID) {
|
||||
this.requestorID = requestorID;
|
||||
}
|
||||
|
||||
/**요청일을 반환한다.
|
||||
* @return 요청일
|
||||
*/
|
||||
public String getRequestDate() {
|
||||
return requestDate;
|
||||
}
|
||||
|
||||
/**요청일을 설정한다.
|
||||
* @param requestDate 요청일
|
||||
*/
|
||||
public void setRequestDate(String requestDate) {
|
||||
this.requestDate = requestDate;
|
||||
}
|
||||
|
||||
/**요청내용을 반환한다.
|
||||
* @return 요청내용
|
||||
*/
|
||||
public String getRequestDetail() {
|
||||
return requestDetail;
|
||||
}
|
||||
|
||||
/**요청내용을 설정한다.
|
||||
* @param requestDetail 요청내용
|
||||
*/
|
||||
public void setRequestDetail(String requestDetail) {
|
||||
this.requestDetail = requestDetail;
|
||||
}
|
||||
|
||||
/**처리자 ID를 반환한다.
|
||||
* @return 처리자 ID
|
||||
*/
|
||||
public String getProcessorID() {
|
||||
return processorID;
|
||||
}
|
||||
|
||||
/**처리자 ID를 설정한다.
|
||||
* @param processorID 처리자 ID
|
||||
*/
|
||||
public void setProcessorID(String processorID) {
|
||||
this.processorID = processorID;
|
||||
}
|
||||
|
||||
/**처리일을 반환한다.
|
||||
* @return 처리일
|
||||
*/
|
||||
public String getProcessDate() {
|
||||
return processDate;
|
||||
}
|
||||
|
||||
/**처리일을 설정한다.
|
||||
* @param processDate 처리일
|
||||
*/
|
||||
public void setProcessDate(String processDate) {
|
||||
this.processDate = processDate;
|
||||
}
|
||||
|
||||
/**처리내용을 반환한다.
|
||||
* @return 처리내용
|
||||
*/
|
||||
public String getProcessDetail() {
|
||||
return processDetail;
|
||||
}
|
||||
|
||||
/**처리내용을 설정한다.
|
||||
* @param processDetail 처리내용
|
||||
*/
|
||||
public void setProcessDetail(String processDetail) {
|
||||
this.processDetail = processDetail;
|
||||
}
|
||||
|
||||
/**처리상태를 반환한다.
|
||||
* @return 처리상태
|
||||
*/
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
/**처리상태를 설정한다.
|
||||
* @param status 처리상태
|
||||
*/
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
}
|
@ -0,0 +1,250 @@
|
||||
package cokr.xit.base.menu;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.foundation.Assert;
|
||||
import cokr.xit.foundation.UserInfo;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**메뉴 정보
|
||||
* @author mjkhan
|
||||
*/
|
||||
public class Menu {
|
||||
private Integer
|
||||
id,
|
||||
parentID;
|
||||
private String
|
||||
name,
|
||||
programFilename,
|
||||
action,
|
||||
description,
|
||||
imageName,
|
||||
imageConf;
|
||||
|
||||
private int sortOrder;
|
||||
|
||||
private Menu parent;
|
||||
private ArrayList<Menu> children;
|
||||
|
||||
/**id를 반환한다.
|
||||
* @return id
|
||||
*/
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**id를 반환한다.
|
||||
* @return id
|
||||
*/
|
||||
public String getKey() {
|
||||
return getId().toString();
|
||||
}
|
||||
|
||||
/**id를 설정한다.
|
||||
* @param id id
|
||||
*/
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**이름을 반환한다.
|
||||
* @return 이름
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**이름을 설정한다.
|
||||
* @param name 이름
|
||||
*/
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**프로그램 파일이름을 반환한다.
|
||||
* @return 프로그램 파일이름
|
||||
*/
|
||||
public String getProgramFilename() {
|
||||
return programFilename;
|
||||
}
|
||||
|
||||
/**프로그램 파일이름을 설정한다.
|
||||
* @param programFilename 프로그램 파일이름
|
||||
*/
|
||||
public void setProgramFilename(String programFilename) {
|
||||
this.programFilename = programFilename;
|
||||
}
|
||||
|
||||
/**실행기능(url)을 반환한다.
|
||||
* @return 실행기능
|
||||
*/
|
||||
public String getAction() {
|
||||
return action;
|
||||
}
|
||||
|
||||
/**실행기능(url)을 설정한다.
|
||||
* @param action 실행기능
|
||||
*/
|
||||
public void setAction(String action) {
|
||||
this.action = action;
|
||||
}
|
||||
|
||||
/**실행기능(url)을 반환한다.
|
||||
* @return url
|
||||
*/
|
||||
public String getUrl() {
|
||||
return getAction();
|
||||
}
|
||||
|
||||
/**설명을 반환한다.
|
||||
* @return 설명
|
||||
*/
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
/**설명을 설정한다.
|
||||
* @param description 설명
|
||||
*/
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
/**상위메뉴 id를 반환한다.
|
||||
* @return 상위메뉴 id
|
||||
*/
|
||||
public Integer getParentID() {
|
||||
return parentID;
|
||||
}
|
||||
|
||||
/**상위메뉴 id를 반환한다.
|
||||
* @return 상위메뉴 id
|
||||
*/
|
||||
public String getParentKey() {
|
||||
Integer id = getParentID();
|
||||
return id != null ? id.toString() : null;
|
||||
}
|
||||
|
||||
/**상위메뉴 id를 설정한다.
|
||||
* @param parentID 상위메뉴 id
|
||||
*/
|
||||
public void setParentID(Integer parentID) {
|
||||
this.parentID = parentID;
|
||||
}
|
||||
|
||||
/**상위 메뉴를 반환한다.
|
||||
* @return 상위 메뉴
|
||||
*/
|
||||
public Menu parent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
/**이미지 이름을 반환한다.
|
||||
* @return 이미지 이름
|
||||
*/
|
||||
public String getImageName() {
|
||||
return imageName;
|
||||
}
|
||||
|
||||
/**이미지 이름을 설정한다.
|
||||
* @param imageName 이미지 이름
|
||||
*/
|
||||
public void setImageName(String imageName) {
|
||||
this.imageName = imageName;
|
||||
}
|
||||
|
||||
/**이미지 설정을 반환한다.
|
||||
* @return 이미지 설정
|
||||
*/
|
||||
public String getImageConf() {
|
||||
return imageConf;
|
||||
}
|
||||
|
||||
/**이미지 설정을 지정한다.
|
||||
* @param imageConf 이미지 설정
|
||||
*/
|
||||
public void setImageConf(String imageConf) {
|
||||
this.imageConf = imageConf;
|
||||
}
|
||||
|
||||
/**정렬순서를 반환한다.
|
||||
* @return 정렬순서
|
||||
*/
|
||||
public int getSortOrder() {
|
||||
return sortOrder;
|
||||
}
|
||||
|
||||
/**정렬순서를 설정한다.
|
||||
* @param sortOrder 정렬순서
|
||||
*/
|
||||
public void setSortOrder(int sortOrder) {
|
||||
this.sortOrder = sortOrder;
|
||||
}
|
||||
|
||||
/**하위 메뉴 목록을 반환한다.
|
||||
* @return 하위 메뉴 목록
|
||||
*/
|
||||
public List<Menu> getChildren() {
|
||||
return children != null ? children : Collections.emptyList();
|
||||
}
|
||||
|
||||
/**child를 현재 메뉴의 하위메뉴로 추가한다.
|
||||
* @param child 메뉴
|
||||
*/
|
||||
public void add(Menu child) {
|
||||
if (child == null || child.equals(this)) return;
|
||||
|
||||
if (children == null)
|
||||
children = new ArrayList<>();
|
||||
if (children.contains(child)) return;
|
||||
|
||||
children.add(child);
|
||||
child.parent = this;
|
||||
}
|
||||
|
||||
/**메뉴의 실행기능(url)이 urls에 포함되어 있으면 DataObject로 변환하여 반환한다.
|
||||
* 하위 메뉴들은 "children"키의 값으로 저장된다.
|
||||
* @param urls 포함 대상이 되는 url 목록
|
||||
* @return DataObject
|
||||
*/
|
||||
public DataObject toDataObject(List<String> urls) {
|
||||
boolean include = urls.contains(action) || urls.equals(UserInfo.ALL_ACTIONS);
|
||||
if (!include && Assert.isEmpty(children)) return null;
|
||||
|
||||
DataObject menuData = include ? new DataObject()
|
||||
.set("id", id)
|
||||
.set("name", name)
|
||||
.set("url", action)
|
||||
.set("parentID", parentID)
|
||||
.set("description", description)
|
||||
.set("imageConf", imageConf) : null;
|
||||
|
||||
if (Assert.isEmpty(children)) return menuData;
|
||||
|
||||
for (Menu child: children) {
|
||||
DataObject childData = child.toDataObject(urls);
|
||||
if (childData == null) continue;
|
||||
|
||||
if (menuData == null)
|
||||
menuData = new DataObject()
|
||||
.set("id", id)
|
||||
.set("name", name)
|
||||
.set("parentID", parentID)
|
||||
.set("description", description)
|
||||
.set("imageConf", imageConf);
|
||||
List<DataObject> children = (List<DataObject>)menuData.get("children");
|
||||
if (children == null)
|
||||
menuData.put("children", children = new ArrayList<>());
|
||||
children.add(childData);
|
||||
}
|
||||
|
||||
return menuData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("%s('%s', '%s')", getClass().getSimpleName(), getId(), getName());
|
||||
}
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
package cokr.xit.base.menu;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import cokr.xit.foundation.data.hierarchy.Hierarchy;
|
||||
import cokr.xit.foundation.data.hierarchy.HierarchyBuilder;
|
||||
|
||||
/**등록된 메뉴 정보로 메뉴 계층구조를 구성하여 메뉴 정보를 제공한다.
|
||||
* @author mjkhan
|
||||
*/
|
||||
public class MenuContext extends Hierarchy<Menu>{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**메뉴 정보 목록으로 메뉴 계층구조를 갖는 MenuContext를 생성하여 반환한다.
|
||||
* @param menus 메뉴 정보 목록
|
||||
* @return MenuContext
|
||||
*/
|
||||
public static MenuContext build(List<Menu> menus) {
|
||||
return new HierarchyBuilder<Menu>()
|
||||
.getID(Menu::getKey)
|
||||
.getParentID(Menu::getParentKey)
|
||||
.addChild((parent, child) -> parent.add(child))
|
||||
.setElements(menus)
|
||||
.build(MenuContext::new);
|
||||
}
|
||||
|
||||
/**주어진 메뉴에서 하위메뉴의 아이디를 포함한 모든 메뉴 아이디를 반환한다.
|
||||
* @param menuIDs 상위 메뉴 아이디 목록
|
||||
* @return 하위메뉴의 아이디를 포함한 모든 메뉴 아이디
|
||||
*/
|
||||
public List<Integer> getAllMenuIDs(Integer... menuIDs) {
|
||||
List<Menu> menus = Stream.of(menuIDs)
|
||||
.map(menuID -> {
|
||||
String key = menuID.toString();
|
||||
return get(key);
|
||||
})
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
ArrayList<Integer> result = new ArrayList<>();
|
||||
setIDs(menus, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void setIDs(List<Menu> menus, ArrayList<Integer> menuIDs) {
|
||||
if (isEmpty(menus)) return;
|
||||
|
||||
for (Menu menu: menus) {
|
||||
menuIDs.add(menu.getId());
|
||||
setIDs(menu.getChildren(), menuIDs);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,83 @@
|
||||
package cokr.xit.base.menu;
|
||||
|
||||
/**프로그램 정보
|
||||
* @author mjkhan
|
||||
*/
|
||||
public class Program {
|
||||
private String
|
||||
filename,
|
||||
name,
|
||||
location,
|
||||
url,
|
||||
description;
|
||||
|
||||
/**프로그램 파일이름을 반환한다.
|
||||
* @return 프로그램 파일이름
|
||||
*/
|
||||
public String getFilename() {
|
||||
return filename;
|
||||
}
|
||||
|
||||
/**프로그램 파일이름을 설정한다.
|
||||
* @param filename 프로그램 파일이름
|
||||
*/
|
||||
public void setFilename(String filename) {
|
||||
this.filename = filename;
|
||||
}
|
||||
|
||||
/**프로그램 이름을 반환한다.
|
||||
* @return 프로그램 이름
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**프로그램 이름을 설정한다.
|
||||
* @param name 프로그램 이름
|
||||
*/
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**프로그램 저장위치를 반환한다.
|
||||
* @return 프로그램 저장위치
|
||||
*/
|
||||
public String getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
/**프로그램 저장위치를 설정한다.
|
||||
* @param location 프로그램 저장위치
|
||||
*/
|
||||
public void setLocation(String location) {
|
||||
this.location = location;
|
||||
}
|
||||
|
||||
/**프로그램 경로(URL)를 반환한다.
|
||||
* @return 프로그램 경로(URL)
|
||||
*/
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
/**프로그램 경로(URL)를 설정한다.
|
||||
* @param url 프로그램 경로(URL)
|
||||
*/
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
/**설명을 반환한다.
|
||||
* @return 설명
|
||||
*/
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
/**설명을 설정한다.
|
||||
* @param description 설명
|
||||
*/
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
}
|
@ -0,0 +1,143 @@
|
||||
package cokr.xit.base.menu.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
|
||||
|
||||
import cokr.xit.base.menu.Menu;
|
||||
import cokr.xit.foundation.component.AbstractMapper;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**메뉴 정보 DAO
|
||||
* @author mjkhan
|
||||
*/
|
||||
@Mapper("menuMapper")
|
||||
public interface MenuMapper extends AbstractMapper {
|
||||
/**모든 메뉴를 가져와 목록으로 반환한다.
|
||||
* @return 모든 메뉴 목록
|
||||
*/
|
||||
List<Menu> getMenus();
|
||||
|
||||
/**지정하는 아이디의 메뉴를 가져온다.
|
||||
* @param menuID 메뉴 아이디
|
||||
* @return 지정하는 아이디의 메뉴
|
||||
*/
|
||||
Menu getMenu(Integer menuID);
|
||||
|
||||
int insertMenu(Map<String, ?> params);
|
||||
|
||||
/**메뉴 정보를 등록한다.
|
||||
* @param menu 메뉴
|
||||
* @return 등록 결과
|
||||
* <ul><li>등록됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
default boolean insertMenu(Menu menu) {
|
||||
if (menu == null) return false;
|
||||
|
||||
DataObject params = params()
|
||||
.set("menu", menu)
|
||||
.set("currentUser", currentUser());
|
||||
return insertMenu(params) > 0;
|
||||
}
|
||||
|
||||
/**메뉴 정보를 수정한다.
|
||||
* @param params 파라미터
|
||||
* <pre><code>{
|
||||
* menu: 메뉴,
|
||||
* currentUser: 현재 사용자
|
||||
* }</code></pre>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int updateMenu(Map<String, ?> params);
|
||||
|
||||
/**메뉴 정보를 수정한다.
|
||||
* @param menu 메뉴
|
||||
* @return 수정 여부
|
||||
* <ul><li>수정됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
default boolean updateMenu(Menu menu) {
|
||||
if (menu == null) return false;
|
||||
|
||||
DataObject params = params()
|
||||
.set("menu", menu)
|
||||
.set("currentUser", currentUser());
|
||||
return updateMenu(params) > 0;
|
||||
}
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 지정하는 상위 메뉴로 이동한다.
|
||||
* @param params 파라미터
|
||||
* <pre><code>{
|
||||
* parentID: 상위 메뉴 아이디
|
||||
* menuIDs: 이동하려는 메뉴들의 아이디
|
||||
* currentUser: 현재 사용자
|
||||
* }</code></pre>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int moveMenus(Map<String, ?> params);
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 지정하는 상위 메뉴로 이동한다.
|
||||
* @param parentId 상위 메뉴 아이디
|
||||
* @param menuIDs 이동하려는 메뉴들의 아이디
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
default int moveMenus(Integer parentId, Integer... menuIDs) {
|
||||
if (isEmpty(menuIDs)) return 0;
|
||||
|
||||
DataObject params = params()
|
||||
.set("parentID", parentId)
|
||||
.set("menuIDs", menuIDs)
|
||||
.set("currentUser", currentUser());
|
||||
return moveMenus(params);
|
||||
}
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 전달받은 아이디 순서대로 순서를 설정한다.
|
||||
* @param params 파라미터
|
||||
* <pre><code>{
|
||||
* menuIDs: 메뉴 아이디
|
||||
* currentUser: 현재 사용자
|
||||
* }</code></pre>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int reorderMenus(Map<String, ?> params);
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 전달받은 아이디 순서대로 순서를 설정한다.
|
||||
* @param menuIDs 메뉴 아이디
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
default int reorderMenus(Integer... menuIDs) {
|
||||
if (isEmpty(menuIDs)) return 0;
|
||||
|
||||
DataObject params = params()
|
||||
.set("menuIDs", menuIDs)
|
||||
.set("currentUser", currentUser());
|
||||
return reorderMenus(params);
|
||||
}
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 제거한다.
|
||||
* @param params 파라미터
|
||||
* <pre><code>{
|
||||
* menuIDs: 메뉴 아이디
|
||||
* currentUser: 현재 사용자
|
||||
* }</code></pre>
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int removeMenus(Map<String, ?> params);
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 제거한다.
|
||||
* @param menuIDs 메뉴 아이디
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
default int removeMenus(Integer... menuIDs) {
|
||||
if (isEmpty(menuIDs)) return 0;
|
||||
|
||||
DataObject params = params()
|
||||
.set("menuIDs", menuIDs)
|
||||
.set("currentUser", currentUser());
|
||||
return removeMenus(params);
|
||||
}
|
||||
}
|
@ -0,0 +1,141 @@
|
||||
package cokr.xit.base.menu.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.base.menu.ChangeRequest;
|
||||
import cokr.xit.base.menu.Menu;
|
||||
import cokr.xit.base.menu.Program;
|
||||
import cokr.xit.foundation.component.AbstractDao;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
public class ProgramDao extends AbstractDao {
|
||||
public ProgramDao() {
|
||||
setNamespace("program");
|
||||
}
|
||||
|
||||
public List<DataObject> getProgramList(String by, String term, int pageNum, int fetchSize) {
|
||||
switch (ifEmpty(by, () -> "")) {
|
||||
case "filename": by = "PGRM_FILE_NM"; break;
|
||||
case "path": by = "URL"; break;
|
||||
default: by = "PGRM_NM"; break;
|
||||
}
|
||||
|
||||
DataObject params = params()
|
||||
.set("by", by)
|
||||
.set("term", ifEmpty(term, () -> null))
|
||||
.set("pageNum", pageNum)
|
||||
.set("fetchSize", fetchSize);
|
||||
return selectList(sqlID("getProgramList"), params);
|
||||
}
|
||||
|
||||
public List<Program> getPrograms(String... filenames) {
|
||||
return selectList(sqlID("getPrograms"), params().set("filenames", ifEmpty(filenames, () -> null)));
|
||||
}
|
||||
|
||||
public Program getProgram(String filename) {
|
||||
List<Program> programs = getPrograms(filename);
|
||||
return !programs.isEmpty() ? programs.get(0) : null;
|
||||
}
|
||||
|
||||
public boolean create(Program program) {
|
||||
if (program == null) return false;
|
||||
|
||||
return insert(sqlID("insertProgram"), program) > 0;
|
||||
}
|
||||
|
||||
public boolean update(Program program) {
|
||||
if (program == null) return false;
|
||||
|
||||
return insert(sqlID("updateProgram"), program) > 0;
|
||||
}
|
||||
|
||||
public String save(Menu menu) {
|
||||
String name = menu.getName(),
|
||||
url = menu.getAction();
|
||||
boolean empty = isEmpty(url);
|
||||
int pos = !empty ? url.lastIndexOf(".do") : -1;
|
||||
String filename = empty ? "empty" : pos < 0 ? url : url.substring(0, pos);
|
||||
|
||||
Program program = new Program();
|
||||
program.setFilename(filename);
|
||||
program.setLocation(filename);
|
||||
program.setName(name);
|
||||
program.setUrl(!empty ? url : "empty");
|
||||
|
||||
boolean saved = update(program);
|
||||
if (!saved)
|
||||
saved = create(program);
|
||||
return filename;
|
||||
}
|
||||
|
||||
public int removePrograms(String... filenames) {
|
||||
if (isEmpty(filenames)) return 0;
|
||||
|
||||
return delete(sqlID("removePrograms"), params().set("filenames", filenames));
|
||||
}
|
||||
|
||||
public int clearPrograms() {
|
||||
return delete(sqlID("clearPrograms"));
|
||||
}
|
||||
|
||||
public List<DataObject> getRequestList(String fromReqDate, String toReqDate, String by, String term, int pageNum, int fetchSize) {
|
||||
switch (ifEmpty(by, () -> "")) {
|
||||
case "filename": by = "PGRM_FILE_NM"; break;
|
||||
case "requestor": by = "REQ_USER"; break;
|
||||
case "subject": by = "SUBJECT"; break;
|
||||
case "reqDetail": by = "REQ_CNTNT"; break;
|
||||
case "processor": by = "PRCS_USER"; break;
|
||||
case "procDetail": by = "PRCS_CNTNT"; break;
|
||||
default: by = "PGRM_NM"; break;
|
||||
}
|
||||
|
||||
DataObject params = params()
|
||||
.set("fromReqDate", fromReqDate)
|
||||
.set("toReqDate", toReqDate)
|
||||
.set("by", by)
|
||||
.set("term", ifEmpty(term, () -> null))
|
||||
.set("pageNum", pageNum)
|
||||
.set("fetchSize", fetchSize);
|
||||
return selectList(sqlID("getRequestList"), params);
|
||||
}
|
||||
|
||||
public List<ChangeRequest> getRequests(String[] filenames, String[] reqIDs) {
|
||||
return selectList(
|
||||
sqlID("getRequests"),
|
||||
params()
|
||||
.set("filenames", ifEmpty(filenames, () -> null))
|
||||
.set("reqIDs", ifEmpty(reqIDs, () -> null))
|
||||
);
|
||||
}
|
||||
|
||||
public List<ChangeRequest> getRequests(String... filenames) {
|
||||
return getRequests(filenames, null);
|
||||
}
|
||||
|
||||
public ChangeRequest getRequest(String filename, String reqID) {
|
||||
List<ChangeRequest> requests = getRequests(new String[] {filename}, new String[] {reqID});
|
||||
return !requests.isEmpty() ? requests.get(0) : null;
|
||||
}
|
||||
|
||||
public boolean create(ChangeRequest request) {
|
||||
if (request == null) return false;
|
||||
|
||||
return insert(sqlID("insertRequest"), request) > 0;
|
||||
}
|
||||
|
||||
public boolean update(ChangeRequest request) {
|
||||
if (request == null) return false;
|
||||
|
||||
return update(sqlID("updateRequest"), request) > 0;
|
||||
}
|
||||
|
||||
public int setRequestStatus(String filename, String reqID, String status) {
|
||||
return update(
|
||||
sqlID("setRequestStatus"),
|
||||
params()
|
||||
.set("filename", filename)
|
||||
.set("reqID", reqID)
|
||||
.set("status", status)
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
/**메뉴 정보 테이블 접근 객체
|
||||
*/
|
||||
package cokr.xit.base.menu.dao;
|
@ -0,0 +1,8 @@
|
||||
/**메뉴 정보 관리 모듈.
|
||||
* <p><ul><li>메뉴 정보는 데이터베이스의 <a href="{@docRoot}/doc-files/xit-base-mysql.sql" target="_blank">TBL_MENU 테이블</a>에 저장하여 관리한다</li>
|
||||
* </ul>
|
||||
* <ul><li>배포 모듈: xit-menu-yy.mm.dd.jar</li>
|
||||
* <li>의존 모듈: {@link cokr.xit.foundation xit-foundation-yy.mm.dd.jar}</li>
|
||||
* </ul>
|
||||
*/
|
||||
package cokr.xit.base.menu;
|
@ -0,0 +1,74 @@
|
||||
package cokr.xit.base.menu.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.base.menu.Menu;
|
||||
import cokr.xit.base.menu.MenuContext;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**메뉴 서비스를 제공한다.
|
||||
* <ul><li>{@link #getMenuContext() 메뉴 컨텍스트 제공}</li>
|
||||
* <li>{@link #getUserMenus() 사용자가 접근할 수 있는 메뉴 제공}</li>
|
||||
* <li>{@link #getMenu(Integer) 메뉴 가져오기}</li>
|
||||
* <li>{@link #create(Menu) 메뉴 등록}</li>
|
||||
* <li>{@link #update(Menu) 메뉴 수정}</li>
|
||||
* <li>{@link #move(Integer, Integer...) 메뉴 이동}</li>
|
||||
* <li>{@link #reorder(Integer...) 메뉴 순서 변경}</li>
|
||||
* <li>{@link #remove(Integer...) 메뉴 제거}</li>
|
||||
* </ul>
|
||||
* @author mjkhan
|
||||
*/
|
||||
public interface MenuService {
|
||||
/**등록된 메뉴를 로드해서 계층구조를 구성하여 MenuContext에 담아 반환한다.
|
||||
* @return MenuContext
|
||||
*/
|
||||
MenuContext getMenuContext();
|
||||
|
||||
/**현재 접근한 사용자가 사용할 수 있는 메뉴들을 반환한다.
|
||||
* @return 현재 접근한 사용자가 사용할 수 있는 메뉴 목록
|
||||
*/
|
||||
List<DataObject> getUserMenus();
|
||||
|
||||
/**지정하는 아이디의 메뉴를 반환한다.
|
||||
* @param menuID 메뉴 아이디
|
||||
* @return 메뉴
|
||||
*/
|
||||
Menu getMenu(Integer menuID);
|
||||
|
||||
/**메뉴 정보를 등록한다.
|
||||
* @param menu 메뉴
|
||||
* @return 등록 결과
|
||||
* <ul><li>등록됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
boolean create(Menu menu);
|
||||
|
||||
/**메뉴 정보를 수정한다.
|
||||
* @param menu 메뉴
|
||||
* @return 수정 결과
|
||||
* <ul><li>수정됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
boolean update(Menu menu);
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 지정하는 상위 메뉴로 이동한다.
|
||||
* @param parentID 상위 메뉴 아이디
|
||||
* @param menuIDs 이동하려는 메뉴들의 아이디
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int move(Integer parentID, Integer... menuIDs);
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 전달받은 아이디 순서대로 순서를 설정한다.
|
||||
* @param menuIDs 메뉴 아이디
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int reorder(Integer... menuIDs);
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 제거한다.
|
||||
* @param menuIDs 메뉴 아이디
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int remove(Integer... menuIDs);
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
package cokr.xit.base.menu.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.base.menu.ChangeRequest;
|
||||
import cokr.xit.base.menu.Program;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
public interface ProgramService {
|
||||
List<DataObject> getProgramList(String by, String term, int pageNum, int fetchSize);
|
||||
|
||||
List<Program> getPrograms(String... filenames);
|
||||
|
||||
default Program getProgram(String filename) {
|
||||
List<Program> programs = getPrograms(filename);
|
||||
return !programs.isEmpty() ? programs.get(0) : null;
|
||||
}
|
||||
|
||||
boolean create(Program program);
|
||||
|
||||
boolean update(Program program);
|
||||
|
||||
int removePrograms(String... filenames);
|
||||
|
||||
List<DataObject> getRequestList(String fromReqDate, String toReqDate, String by, String term, int pageNum, int fetchSize);
|
||||
|
||||
List<ChangeRequest> getRequests(String... filenames);
|
||||
|
||||
ChangeRequest getRequest(String filename, String reqID);
|
||||
|
||||
boolean create(ChangeRequest request);
|
||||
|
||||
boolean update(ChangeRequest request);
|
||||
|
||||
int setRequestStatus(String filename, String reqID, String status);
|
||||
}
|
@ -0,0 +1,87 @@
|
||||
package cokr.xit.base.menu.service.bean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import cokr.xit.base.menu.Menu;
|
||||
import cokr.xit.base.menu.dao.MenuMapper;
|
||||
import cokr.xit.foundation.AbstractComponent;
|
||||
|
||||
/**메뉴 정보 Bean
|
||||
* @author mjkhan
|
||||
*/
|
||||
@Component("menuBean")
|
||||
public class MenuBean extends AbstractComponent {
|
||||
@Resource(name = "menuMapper")
|
||||
private MenuMapper menuMapper;
|
||||
/**모든 메뉴를 가져와 목록으로 반환한다.
|
||||
* @return 모든 메뉴 목록
|
||||
*/
|
||||
public List<Menu> getMenus() {
|
||||
return menuMapper.getMenus();
|
||||
}
|
||||
|
||||
/**지정하는 아이디의 메뉴를 가져온다.
|
||||
* @param menuID 메뉴 아이디
|
||||
* @return 지정하는 아이디의 메뉴
|
||||
*/
|
||||
public Menu getMenu(Integer menuID) {
|
||||
return menuMapper.getMenu(menuID);
|
||||
}
|
||||
|
||||
/**메뉴 정보를 등록한다.
|
||||
* @param menu 메뉴
|
||||
* @return 등록 결과
|
||||
* <ul><li>등록됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean create(Menu menu) {
|
||||
return menu != null && menuMapper.insertMenu(menu);
|
||||
}
|
||||
|
||||
/**메뉴 정보를 수정한다.
|
||||
* @param menu 메뉴
|
||||
* @return 수정 결과
|
||||
* <ul><li>수정됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
public boolean update(Menu menu) {
|
||||
return menu != null && menuMapper.updateMenu(menu);
|
||||
}
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 지정하는 상위 메뉴로 이동한다.
|
||||
* @param parentId 상위 메뉴 아이디
|
||||
* @param menuIDs 이동하려는 메뉴들의 아이디
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
public int move(Integer parentId, Integer... menuIDs) {
|
||||
if (isEmpty(menuIDs)) return 0;
|
||||
|
||||
return menuMapper.moveMenus(parentId, menuIDs);
|
||||
}
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 전달받은 아이디 순서대로 순서를 설정한다.
|
||||
* @param menuIDs 메뉴 아이디
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
public int reorder(Integer... menuIDs) {
|
||||
if (isEmpty(menuIDs)) return 0;
|
||||
|
||||
return menuMapper.reorderMenus(menuIDs);
|
||||
}
|
||||
|
||||
/**지정하는 아이디의 메뉴들을 제거한다.
|
||||
* @param menuIDs 메뉴 아이디
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
public int remove(Integer... menuIDs) {
|
||||
if (isEmpty(menuIDs)) return 0;
|
||||
|
||||
return menuMapper.removeMenus(menuIDs);
|
||||
}
|
||||
}
|
@ -0,0 +1,115 @@
|
||||
package cokr.xit.base.menu.service.bean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import cokr.xit.base.menu.Menu;
|
||||
import cokr.xit.base.menu.MenuContext;
|
||||
import cokr.xit.base.menu.service.MenuService;
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**메뉴 서비스 인터페이스의 구현체
|
||||
* @author mjkhan
|
||||
*/
|
||||
@Service("menuService")
|
||||
public class MenuServiceBean extends AbstractServiceBean implements MenuService {
|
||||
/** 메뉴 정보 DAO */
|
||||
@Resource(name="menuBean")
|
||||
private MenuBean menuBean;
|
||||
/*
|
||||
@Resource(name="programDao")
|
||||
protected ProgramDao programDao;
|
||||
*/
|
||||
private MenuContext menuContext;
|
||||
|
||||
@Override
|
||||
public MenuContext getMenuContext() {
|
||||
if (menuContext == null)
|
||||
loadMenus();
|
||||
return menuContext;
|
||||
}
|
||||
|
||||
private void loadMenus() {
|
||||
List<Menu> menus = menuBean.getMenus();
|
||||
menuContext = MenuContext.build(menus);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DataObject> getUserMenus() {
|
||||
List<String> actions = currentUser().getAccessibleActions();
|
||||
List<Menu> topMenus = getMenuContext().topElements();
|
||||
|
||||
List<DataObject> accessible = new ArrayList<>();
|
||||
for (Menu menu: topMenus) {
|
||||
DataObject dataobject = menu.toDataObject(actions);
|
||||
if (dataobject != null)
|
||||
accessible.add(dataobject);
|
||||
}
|
||||
|
||||
return accessible;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Menu getMenu(Integer menuID) {
|
||||
return menuBean.getMenu(menuID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean create(Menu menu) {
|
||||
/*
|
||||
String filename = programDao.save(menu);
|
||||
menu.setProgramFilename(filename);
|
||||
*/
|
||||
boolean created = menuBean.create(menu);
|
||||
if (created)
|
||||
loadMenus();
|
||||
return created;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean update(Menu menu) {
|
||||
boolean updated = menuBean.update(menu);
|
||||
if (updated)
|
||||
loadMenus();
|
||||
return updated;
|
||||
/*
|
||||
String filename = programDao.save(menu);
|
||||
menu.setProgramFilename(filename);
|
||||
boolean saved = menuDao.update(menu);
|
||||
programDao.clearPrograms();
|
||||
return saved;
|
||||
*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public int move(Integer parentID, Integer... menuIDs) {
|
||||
int affected = menuBean.move(parentID, menuIDs);
|
||||
if (affected > 0)
|
||||
loadMenus();
|
||||
return affected;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int reorder(Integer... menuIDs) {
|
||||
int affected = menuBean.reorder(menuIDs);
|
||||
if (affected > 0)
|
||||
loadMenus();
|
||||
return affected;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int remove(Integer... menuIDs) {
|
||||
MenuContext mctx = getMenuContext();
|
||||
List<Integer> allIDs = mctx.getAllMenuIDs(menuIDs);
|
||||
int affected = menuBean.remove(allIDs.toArray(new Integer[allIDs.size()]));
|
||||
if (affected > 0)
|
||||
loadMenus();
|
||||
return affected;
|
||||
// programDao.clearPrograms();
|
||||
}
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
package cokr.xit.base.menu.service.bean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import cokr.xit.base.menu.ChangeRequest;
|
||||
import cokr.xit.base.menu.Program;
|
||||
import cokr.xit.base.menu.dao.ProgramDao;
|
||||
import cokr.xit.base.menu.service.ProgramService;
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
public class ProgramServiceBean extends AbstractServiceBean implements ProgramService {
|
||||
@Resource(name="programDao")
|
||||
private ProgramDao programDao;
|
||||
|
||||
protected ProgramDao programDao() {
|
||||
return programDao;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DataObject> getProgramList(String by, String term, int pageNum, int fetchSize) {
|
||||
return programDao.getProgramList(by, term, pageNum, fetchSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Program> getPrograms(String... filenames) {
|
||||
return programDao.getPrograms(filenames);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean create(Program program) {
|
||||
if (program == null) return false;
|
||||
|
||||
String filename = program.getFilename();
|
||||
Program existing = getProgram(filename);
|
||||
if (existing != null)
|
||||
throw new RuntimeException(message("duplicate.object", "프로그램"));
|
||||
|
||||
return programDao.create(program);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean update(Program program) {
|
||||
if (program == null) return false;
|
||||
return programDao.update(program);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int removePrograms(String... filenames) {
|
||||
return programDao.removePrograms(filenames);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DataObject> getRequestList(String fromReqDate, String toReqDate, String by, String term, int pageNum, int fetchSize) {
|
||||
return programDao.getRequestList(fromReqDate, toReqDate, by, term, pageNum, fetchSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ChangeRequest> getRequests(String... filenames) {
|
||||
return programDao.getRequests(filenames);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChangeRequest getRequest(String filename, String reqID) {
|
||||
return programDao.getRequest(filename, reqID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean create(ChangeRequest request) {
|
||||
return programDao.create(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean update(ChangeRequest request) {
|
||||
return programDao.update(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int setRequestStatus(String filename, String reqID, String status) {
|
||||
return programDao.setRequestStatus(filename, reqID, status);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
/**메뉴 서비스 구현부
|
||||
*/
|
||||
package cokr.xit.base.menu.service.bean;
|
@ -0,0 +1,3 @@
|
||||
/**메뉴 서비스 인터페이스
|
||||
*/
|
||||
package cokr.xit.base.menu.service;
|
@ -0,0 +1,148 @@
|
||||
package cokr.xit.base.menu.web;
|
||||
|
||||
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.base.menu.Menu;
|
||||
import cokr.xit.base.menu.MenuContext;
|
||||
import cokr.xit.base.menu.service.MenuService;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
|
||||
/**메뉴 서비스의 웹 컨트롤러<br />
|
||||
* {웹 컨텍스트}/menu/*로 접근할 수 있다.
|
||||
* @author mjkhan
|
||||
*/
|
||||
@RequestMapping(name="메뉴", value="/menu")
|
||||
public class MenuController extends AbstractController {
|
||||
@Resource(name="menuService")
|
||||
private MenuService menuService;
|
||||
|
||||
/**메뉴 서비스를 반환한다.
|
||||
* @return
|
||||
*/
|
||||
protected MenuService menuService() {
|
||||
return menuService;
|
||||
}
|
||||
|
||||
/**메뉴 관리 메인화면(menu/menu-main)을 연다. 이 때 {@link #getMenus() 모든 메뉴를 가져와 전달}한다.
|
||||
* @return ModelAndView
|
||||
*/
|
||||
@RequestMapping(name="메뉴 메인", value="/main.do")
|
||||
public ModelAndView main() {
|
||||
ModelAndView mav = getMenus();
|
||||
mav.setViewName("base/menu/menu-main");
|
||||
return mav
|
||||
.addObject("menus", toJson(mav.getModel().remove("menus")));
|
||||
}
|
||||
|
||||
/**모든 메뉴를 가져아 반환한다.
|
||||
* @return 조회 결과
|
||||
* <pre><code> {
|
||||
* "menus":[...] //메뉴 목록
|
||||
* }</code></pre>
|
||||
*/
|
||||
@RequestMapping(name="메뉴 가져오기", value="/tree.do")
|
||||
public ModelAndView getMenus() {
|
||||
MenuContext mctx = menuService.getMenuContext();
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("menus", mctx.topElements());
|
||||
}
|
||||
|
||||
/**사용자 메뉴를 가져아 반환한다.
|
||||
* @return 조회 결과
|
||||
* <pre><code> {
|
||||
* "userMenus":[...] //사용자 메뉴 목록
|
||||
* }</code></pre>
|
||||
*/
|
||||
@RequestMapping(name="사용자 메뉴 가져오기", value="/userMenus.do")
|
||||
public ModelAndView getUserMenus() {
|
||||
List<DataObject> menus = menuService.getUserMenus();
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("userMenus", menus);
|
||||
}
|
||||
|
||||
/**메뉴를 등록한다.
|
||||
* @param menu 메뉴
|
||||
* @return 등록 여부
|
||||
* <pre><code> {
|
||||
* "saved":true || false, // 등록 여부
|
||||
* "menu": {...} // 등록된 메뉴
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name="메뉴 등록", value="/create.do")
|
||||
public ModelAndView create(Menu menu) {
|
||||
boolean saved = menuService.create(menu);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved)
|
||||
.addObject("menu", menu);
|
||||
}
|
||||
|
||||
/**메뉴를 수정한다.
|
||||
* @param menu 메뉴
|
||||
* @return 수정 여부
|
||||
* <pre><code> {
|
||||
* "saved":true || false // 수정 여부
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name="메뉴 수정", value="/update.do")
|
||||
public ModelAndView update(Menu menu) {
|
||||
boolean saved = menuService.update(menu);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
/**지정하는 메뉴들을 지정하는 상위 메뉴로 이동시킨다.
|
||||
* @param parentID 상위 메뉴 아이디
|
||||
* @param menuIDs 메뉴 아이디
|
||||
* @return 이동 결과
|
||||
* <pre><code> {
|
||||
* "affected":..., // 저장된 정보 수
|
||||
* "saved":true || false // 이동 여부
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name="메뉴 이동", value="/move.do")
|
||||
public ModelAndView move(Integer parentID, Integer... menuIDs) {
|
||||
int affected = menuService.move(parentID, menuIDs);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("affected", affected)
|
||||
.addObject("saved", affected > 0);
|
||||
}
|
||||
|
||||
/**지정하는 메뉴들을 전달하는 순서대로 순서를 변경한다.
|
||||
* @param menuIDs 메뉴 아이디
|
||||
* @return 변경 결과
|
||||
* <pre><code> {
|
||||
* "affected":..., // 저장된 정보 수
|
||||
* "saved":true || false // 변경 여부
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name="메뉴 순서", value="/reorder.do")
|
||||
public ModelAndView reorder(Integer... menuIDs) {
|
||||
int affected = menuService.reorder(menuIDs);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("affected", affected)
|
||||
.addObject("saved", affected > 0);
|
||||
}
|
||||
|
||||
/**지정하는 메뉴들을 제거한다.
|
||||
* @param menuIDs 메뉴 아이디
|
||||
* @return 제거 결과
|
||||
* <pre><code> {
|
||||
* "affected":..., // 저장된 정보 수
|
||||
* "saved":true || false // 제거 여부
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name="메뉴 제거", value="/remove.do")
|
||||
public ModelAndView remove(Integer... menuIDs) {
|
||||
int affected = menuService.remove(menuIDs);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("affected", affected)
|
||||
.addObject("saved", affected > 0);
|
||||
}
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
package cokr.xit.base.menu.web;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import cokr.xit.base.menu.service.MenuService;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import cokr.xit.foundation.data.JSON;
|
||||
import cokr.xit.foundation.web.RequestInterceptor;
|
||||
|
||||
/**현재 사용자가 사용할 수 있는 메뉴 목록을 ModelAndView에 "_menus" 애트리뷰트로 설정한다.
|
||||
* @author mjkhan
|
||||
*/
|
||||
public class MenuInjector extends RequestInterceptor {
|
||||
private static final String HTML_GET = "html-get";
|
||||
// private static final String HTML_POST = "html-post";
|
||||
private static final String HTML_ALL = "html-all";
|
||||
// private static final String JSON_GET = "json-get";
|
||||
// private static final String JSON_POST = "json-post";
|
||||
private static final String JSON_ALL = "json-all";
|
||||
private static final String NONE = "none";
|
||||
|
||||
@Resource(name = "objectMapper")
|
||||
private ObjectMapper objectMapper;
|
||||
private JSON json;
|
||||
@Resource(name = "menuService")
|
||||
private MenuService menuService;
|
||||
|
||||
private List<String> active;
|
||||
|
||||
private List<String> getActive() {
|
||||
return !isEmpty(active) ? active : (active = Stream.of(HTML_GET).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
public void setActive(String... active) {
|
||||
this.active = !isEmpty(active) ?
|
||||
Stream.of(active).map(String::toLowerCase).collect(Collectors.toList())
|
||||
: null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postHandle(HttpServletRequest hreq, HttpServletResponse hresp, Object handler, ModelAndView mav) throws Exception {
|
||||
String respType = getRespType(hreq, mav);
|
||||
if (!isActive(respType)) return;
|
||||
|
||||
List<DataObject> menus = menuService.getUserMenus();
|
||||
Object resp = respType.startsWith("json") ? menus : toJson(menus);
|
||||
mav.addObject("userMenus", resp);
|
||||
}
|
||||
|
||||
private static final String[] STOP = {"login", "error", "downloadView"};
|
||||
|
||||
private String getRespType(HttpServletRequest hreq, ModelAndView mav) {
|
||||
String viewName = mav.getViewName();
|
||||
for (String stop: STOP) {
|
||||
if (viewName.contains(stop))
|
||||
return NONE;
|
||||
}
|
||||
|
||||
boolean json = "jsonView".equals(viewName);
|
||||
String method = hreq.getMethod().toLowerCase();
|
||||
return (json ? "json" : "html") + "-" + method;
|
||||
}
|
||||
|
||||
private boolean isActive(String respType) {
|
||||
if (NONE.equals(respType))
|
||||
return false;
|
||||
List<String> _active = getActive();
|
||||
if (_active.contains(NONE))
|
||||
return false;
|
||||
|
||||
if (_active.contains(respType))
|
||||
return true;
|
||||
if (respType.startsWith("html") && _active.contains(HTML_ALL))
|
||||
return true;
|
||||
if (respType.startsWith("json") && _active.contains(JSON_ALL))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private String toJson(List<DataObject> menus) {
|
||||
if (json == null)
|
||||
json = new JSON().setObjectMapper(objectMapper);
|
||||
return json.stringify(menus);
|
||||
}
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
package cokr.xit.base.menu.web;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
|
||||
|
||||
import cokr.xit.base.menu.Program;
|
||||
import cokr.xit.base.menu.service.ProgramService;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
import cokr.xit.foundation.web.RequestHandlerReader;
|
||||
|
||||
@RequestMapping("/menu/program")
|
||||
public class ProgramController extends AbstractController {
|
||||
@Resource(name="programService")
|
||||
private ProgramService programService;
|
||||
@Autowired
|
||||
private RequestMappingHandlerMapping requestHandlers;
|
||||
|
||||
protected ProgramService programService() {
|
||||
return programService;
|
||||
}
|
||||
|
||||
public ModelAndView main() {
|
||||
ModelAndView mav = getProgramList(null, null, 1);
|
||||
mav.setViewName("/menu/program/program-main");
|
||||
mav.addObject("programList", toJson(mav.getModel().remove("programList")));
|
||||
return mav;
|
||||
}
|
||||
|
||||
public ModelAndView getProgramList(String by, String term, @RequestParam(required=false, defaultValue="1") Integer pageNum) {
|
||||
int fetchSize = properties.getInt("pageSize");
|
||||
return setCollectionInfo(
|
||||
new ModelAndView("jsonView"),
|
||||
programService.getProgramList(by, term, pageNum, fetchSize),
|
||||
"program"
|
||||
);
|
||||
}
|
||||
|
||||
public ModelAndView isDuplicate(String filename) {
|
||||
Program program = programService.getProgram(filename);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("duplicate", program != null);
|
||||
}
|
||||
|
||||
public ModelAndView create(Program program) {
|
||||
boolean saved = programService.create(program);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
public ModelAndView update(Program program) {
|
||||
boolean saved = programService.update(program);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
public ModelAndView remove(String... filenames) {
|
||||
int affected = programService.removePrograms(filenames);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("affected", affected)
|
||||
.addObject("saved", affected > 0);
|
||||
}
|
||||
|
||||
@RequestMapping(name="프로그램 URL 선택", value="/urls.do")
|
||||
public ModelAndView getURLs(boolean multiple) {
|
||||
List<DataObject> urls = new RequestHandlerReader().read(requestHandlers);
|
||||
return new ModelAndView("menu/program/program-urls")
|
||||
.addObject("multiple", multiple)
|
||||
.addObject("urls", toJson(urls));
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
/**메뉴 서비스 웹 컨트롤러
|
||||
*/
|
||||
package cokr.xit.base.menu.web;
|
@ -0,0 +1,78 @@
|
||||
package cokr.xit.base.menu.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import cokr.xit.base.menu.Menu;
|
||||
import cokr.xit.base.menu.MenuContext;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import cokr.xit.foundation.test.TestSupport;
|
||||
|
||||
public class MenuServiceTest extends TestSupport {
|
||||
@Resource(name="menuService")
|
||||
private MenuService service;
|
||||
|
||||
private Menu createMenu(String name, Menu parent) {
|
||||
Menu menu = new Menu();
|
||||
menu.setName(name);
|
||||
if (parent != null)
|
||||
menu.setParentID(parent.getId());
|
||||
service.create(menu);
|
||||
return menu;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void menus() {
|
||||
Menu menu_0_0 = createMenu("메뉴 0-0", null);
|
||||
Menu loaded = service.getMenu(menu_0_0.getId());
|
||||
Assertions.assertNotNull(loaded);
|
||||
Assertions.assertEquals(menu_0_0.getName(), loaded.getName());
|
||||
|
||||
menu_0_0.setDescription("메뉴 0-0 설명");
|
||||
service.update(menu_0_0);
|
||||
Assertions.assertNotNull(loaded = service.getMenu(menu_0_0.getId()));
|
||||
Assertions.assertEquals(menu_0_0.getDescription(), loaded.getDescription());
|
||||
|
||||
Menu menu_0_1 = createMenu("메뉴 0-1", menu_0_0);
|
||||
Assertions.assertEquals(0, service.getMenu(menu_0_1.getId()).getSortOrder());
|
||||
Menu menu_0_2 = createMenu("메뉴 0-2", menu_0_0);
|
||||
Assertions.assertEquals(1, service.getMenu(menu_0_2.getId()).getSortOrder());
|
||||
|
||||
MenuContext mctx = service.getMenuContext();
|
||||
System.out.println(MenuContext.toString(mctx.topElements(), Menu::getChildren));
|
||||
|
||||
service.reorder(menu_0_2.getId(), menu_0_1.getId());
|
||||
Assertions.assertEquals(0, service.getMenu(menu_0_2.getId()).getSortOrder());
|
||||
Assertions.assertEquals(1, service.getMenu(menu_0_1.getId()).getSortOrder());
|
||||
|
||||
mctx = service.getMenuContext();
|
||||
System.out.println(MenuContext.toString(mctx.topElements(), Menu::getChildren));
|
||||
|
||||
Menu menu_0_1_0 = createMenu("메뉴 0-1-0", menu_0_1);
|
||||
Assertions.assertNotNull(menu_0_1_0);
|
||||
Menu menu_0_1_1 = createMenu("메뉴 0-1-1", menu_0_1);
|
||||
Assertions.assertNotNull(menu_0_1_1);
|
||||
Menu menu_0_1_2 = createMenu("메뉴 0-1-2", menu_0_1);
|
||||
Menu menu_0_1_3 = createMenu("메뉴 0-1-3", menu_0_1);
|
||||
mctx = service.getMenuContext();
|
||||
System.out.println(MenuContext.toString(mctx.topElements(), Menu::getChildren));
|
||||
|
||||
service.move(menu_0_2.getId(), menu_0_1_2.getId(), menu_0_1_3.getId());
|
||||
mctx = service.getMenuContext();
|
||||
System.out.println(MenuContext.toString(mctx.topElements(), Menu::getChildren));
|
||||
|
||||
service.remove(menu_0_0.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
void userMenus() {
|
||||
List<Menu> menus = service.getMenuContext().topElements();
|
||||
System.out.println(MenuContext.toString(menus, Menu::getChildren));
|
||||
List<DataObject> menuList = service.getUserMenus();
|
||||
menuList.forEach(System.out::println);
|
||||
}
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
package cokr.xit.base.menu.service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import cokr.xit.base.menu.Program;
|
||||
import cokr.xit.foundation.test.TestSupport;
|
||||
|
||||
public class ProgramServiceTest extends TestSupport {
|
||||
@Resource(name="programService")
|
||||
private ProgramService service;
|
||||
|
||||
@Test
|
||||
public void programs() {
|
||||
String filename = "program-0";
|
||||
Program program = new Program();
|
||||
program.setFilename(filename);
|
||||
program.setName(filename);
|
||||
|
||||
Assertions.assertTrue(service.create(program));
|
||||
|
||||
Assertions.assertFalse(service.getProgramList(null, null, 0, 0).isEmpty());
|
||||
Assertions.assertFalse(service.getProgramList(null, null, 1, 10).isEmpty());
|
||||
Assertions.assertFalse(service.getPrograms().isEmpty());
|
||||
|
||||
Program loaded = service.getProgram(filename);
|
||||
Assertions.assertNotNull(loaded);
|
||||
|
||||
program.setName("프로그램 0");
|
||||
program.setDescription("프로그램 0");
|
||||
Assertions.assertTrue(service.update(program));
|
||||
|
||||
Assertions.assertNotNull(loaded = service.getProgram(filename));
|
||||
Assertions.assertEquals(program.getName(), loaded.getName());
|
||||
Assertions.assertEquals(program.getDescription(), loaded.getDescription());
|
||||
|
||||
Assertions.assertTrue(service.removePrograms(filename) > 0);
|
||||
Assertions.assertNull(loaded = service.getProgram(filename));
|
||||
|
||||
deleteProgram(filename);
|
||||
}
|
||||
|
||||
private void deleteProgram(String filename) {
|
||||
testDao.execDelete("DELETE FROM TBL_PROGRAM WHERE PGRM_FILE_NM = '" + filename + "'");
|
||||
}
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE Configuration>
|
||||
<Configuration>
|
||||
<Appenders>
|
||||
<Console name="console" target="SYSTEM_OUT">
|
||||
<PatternLayout pattern="%d{HH:mm:ss,SSS} %5p [%c{1}] %m%n" />
|
||||
</Console>
|
||||
<RollingFile name="file" fileName="./logs/xit-base.log" filePattern="./logs/xit-base.%d{yy-MM-dd}.log" append="false">
|
||||
<PatternLayout pattern="%d{HH:mm:ss,SSS} %5p [%c{1}] %m%n"/>
|
||||
<Policies>
|
||||
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
|
||||
</Policies>
|
||||
</RollingFile>
|
||||
</Appenders>
|
||||
|
||||
<Loggers>
|
||||
<Logger name="org.springframework" level="INFO" additivity="false">
|
||||
<AppenderRef ref="console" />
|
||||
<AppenderRef ref="file" />
|
||||
</Logger>
|
||||
<Logger name="egovframework" level="INFO" additivity="false">
|
||||
<AppenderRef ref="console" />
|
||||
<AppenderRef ref="file" />
|
||||
</Logger>
|
||||
<Logger name="cokr.xit" level="DEBUG" additivity="false">
|
||||
<AppenderRef ref="console" />
|
||||
<AppenderRef ref="file" />
|
||||
</Logger>
|
||||
|
||||
<!-- log SQL with timing information, post execution -->
|
||||
<Logger name="jdbc.audit" level="OFF" />
|
||||
<Logger name="jdbc.sqlonly" level="OFF" />
|
||||
<Logger name="jdbc.resultset" level="OFF" />
|
||||
<Logger name="jdbc.resultsettable" level="OFF" />
|
||||
<Logger name="jdbc.sqltiming" level="DEBUG" additivity="false">
|
||||
<AppenderRef ref="console" />
|
||||
</Logger>
|
||||
|
||||
<Root level="DEBUG">
|
||||
<AppenderRef ref="console" />
|
||||
<AppenderRef ref="file" />
|
||||
</Root>
|
||||
</Loggers>
|
||||
</Configuration>
|
@ -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,2 @@
|
||||
# see https://projectlombok.org/features/constructor lombok.copyableAnnotations
|
||||
lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier
|
@ -0,0 +1,5 @@
|
||||
authenticationFailure.usernameNotFound=\uc0ac\uc6a9\uc790\ub97c \ucc3e\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.
|
||||
authenticationFailure.badCredentials=\uc0ac\uc6a9\uc790 \uc544\uc774\ub514\ub098 \ube44\ubc00\ubc88\ud638\uac00 \uc798\ubabb\ub410\uc2b5\ub2c8\ub2e4.
|
||||
authenticationFailure.credentialsExpired=\ube44\ubc00\ubc88\ud638\uac00 \ub9cc\ub8cc\ub410\uc2b5\ub2c8\ub2e4.
|
||||
authenticationFailure.authenticationFailed=\uc0ac\uc6a9\uc790\ub97c \uc778\uc99d\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.
|
||||
authenticationFailure.policyViolated=\ub85c\uadf8\uc778 \uc815\ucc45\uc5d0 \ub530\ub77c \uc811\uadfc\uc774 \ucc28\ub2e8\ub410\uc2b5\ub2c8\ub2e4.
|
@ -0,0 +1,382 @@
|
||||
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=\uc138\uc158\uc774 \ub9cc\ub8cc\ub410\uc2b5\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,277 @@
|
||||
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,375 @@
|
||||
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,12 @@
|
||||
<?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"
|
||||
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">
|
||||
<!--
|
||||
<beans:bean id="programDao" class="cokr.xit.base.menu.dao.ProgramDao" />
|
||||
<beans:bean id="programService" class="cokr.xit.base.menu.service.bean.ProgramServiceBean" />
|
||||
-->
|
||||
</beans>
|
@ -0,0 +1,68 @@
|
||||
<?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:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
|
||||
</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="D:/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 id="leaveaTrace" class="org.egovframe.rte.fdl.cmmn.trace.LeaveaTrace" />
|
||||
|
||||
</beans>
|
@ -0,0 +1,49 @@
|
||||
<?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:oracle:thin:@115.21.123.118:1521:bustms" />
|
||||
-->
|
||||
<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,88 @@
|
||||
<?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.base.menu.dao.MenuMapper">
|
||||
|
||||
<resultMap id="menuRow" type="cokr.xit.base.menu.Menu">
|
||||
<result property="id" column="MENU_NO"/>
|
||||
<result property="name" column="MENU_NM"/>
|
||||
<result property="programFilename" column="PGRM_FILE_NM"/>
|
||||
<result property="action" column="ACTION"/>
|
||||
<result property="description" column="DSCRP"/>
|
||||
<result property="parentID" column="PRNT_NO"/>
|
||||
<result property="imageName" column="IMG_NM"/>
|
||||
<result property="imageConf" column="IMG_CNF"/>
|
||||
<result property="sortOrder" column="SRT_ORD"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectMenus">
|
||||
SELECT A.*
|
||||
FROM TBL_MENU A
|
||||
<if test='menuID != null'>WHERE MENU_NO = #{menuID}</if>
|
||||
ORDER BY PRNT_NO, SRT_ORD, MENU_NO</sql>
|
||||
|
||||
<select id="getMenus" parameterType="map" resultMap="menuRow">/* 메뉴 정보 조회(menuMapper.getMenus) */
|
||||
<include refid="selectMenus" /></select>
|
||||
|
||||
<select id="getMenu" parameterType="int" resultMap="menuRow">/* 메뉴 가져오기(menuMapper.getMenu) */
|
||||
<include refid="selectMenus" /></select>
|
||||
|
||||
<insert id="insertMenu" parameterType="map">/* 메뉴 등록(menuMapper.insertMenu) */
|
||||
<selectKey order="BEFORE" resultType="map" keyColumn="NEW_NO,NEW_ORD" keyProperty="menu.id,menu.sortOrder">
|
||||
SELECT NEW_NO, NEW_ORD
|
||||
FROM (SELECT IFNULL(MAX(MENU_NO) + 1, 0) NEW_NO FROM TBL_MENU) A,
|
||||
(<include refid="newSortOrder" />) B</selectKey>
|
||||
INSERT INTO TBL_MENU (
|
||||
MENU_NO
|
||||
, MENU_NM
|
||||
, PRNT_NO
|
||||
, PGRM_FILE_NM
|
||||
, ACTION
|
||||
, DSCRP
|
||||
, IMG_NM
|
||||
, IMG_CNF
|
||||
, SRT_ORD
|
||||
) VALUES (
|
||||
#{menu.id}
|
||||
, #{menu.name}
|
||||
, #{menu.parentID}
|
||||
, #{menu.programFilename}
|
||||
, #{menu.action}
|
||||
, #{menu.description}
|
||||
, #{menu.imageName}
|
||||
, #{menu.imageConf}
|
||||
, #{menu.sortOrder}
|
||||
)</insert>
|
||||
|
||||
<update id="updateMenu" parameterType="map">/* 메뉴 수정(menuMapper.updateMenu) */
|
||||
UPDATE TBL_MENU SET
|
||||
MENU_NM = #{menu.name}
|
||||
, PGRM_FILE_NM = #{menu.programFilename}
|
||||
, ACTION = #{menu.action}
|
||||
, DSCRP = #{menu.description}
|
||||
, IMG_NM = #{menu.imageName}
|
||||
, IMG_CNF = #{menu.imageConf}
|
||||
WHERE MENU_NO = #{menu.id}</update>
|
||||
|
||||
<sql id="newSortOrder">SELECT IFNULL(MAX(SRT_ORD) + 1, 0) NEW_ORD FROM TBL_MENU WHERE PRNT_NO = IFNULL(#{parentID}, IFNULL(#{menu.parentID}, 0))</sql>
|
||||
|
||||
<update id="moveMenus" parameterType="map">/* 메뉴 이동(menuMapper.moveMenus) */
|
||||
UPDATE TBL_MENU SET
|
||||
PRNT_NO = #{parentID}
|
||||
, SRT_ORD = SRT_ORD + (<include refid="newSortOrder" />)
|
||||
WHERE MENU_NO IN (<foreach collection="menuIDs" item="menuID" separator=",">#{menuID}</foreach>)
|
||||
</update>
|
||||
|
||||
<update id="reorderMenus" parameterType="map">/* 메뉴 순서 변경(menuMapper.reorderMenus) */
|
||||
UPDATE TBL_MENU SET
|
||||
SRT_ORD = CASE MENU_NO
|
||||
<foreach collection="menuIDs" item="menuID" index="index">WHEN #{menuID} THEN #{index}
|
||||
</foreach>
|
||||
ELSE MENU_NO END
|
||||
WHERE MENU_NO IN (<foreach collection="menuIDs" item="menuID" separator=",">#{menuID}</foreach>)</update>
|
||||
|
||||
<delete id="removeMenus" parameterType="map">/* 메뉴 제거(menuMapper.removeMenus) */
|
||||
DELETE FROM TBL_MENU
|
||||
WHERE MENU_NO IN (<foreach collection="menuIDs" item="menuID" separator=",">#{menuID}</foreach>)
|
||||
</delete>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,135 @@
|
||||
<?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="program">
|
||||
|
||||
<resultMap id="programRow" type="cokr.xit.base.menu.Program">
|
||||
<result property="filename" column="PGRM_FILE_NM"/>
|
||||
<result property="location" column="PGRM_FILE_PATH"/>
|
||||
<result property="name" column="PGRM_NM"/>
|
||||
<result property="description" column="DSCRP"/>
|
||||
<result property="url" column="URL"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="reqRow" type="cokr.xit.base.menu.ChangeRequest">
|
||||
<result property="filename" column="PGRM_FILE_NM"/>
|
||||
<result property="id" column="REQ_ID"/>
|
||||
<result property="subject" column="SUBJECT"/>
|
||||
<result property="requestorID" column="REQ_USER"/>
|
||||
<result property="requestDate" column="REQ_DT"/>
|
||||
<result property="requestDetail" column="REQ_CNTNT"/>
|
||||
<result property="processorID" column="PRSC_USER"/>
|
||||
<result property="processDate" column="PRCS_DT"/>
|
||||
<result property="processDetail" column="PRCS_CNTNT"/>
|
||||
<result property="status" column="PRCS_STATUS"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectPrograms">
|
||||
<include refid="utility.paging-prefix"/>
|
||||
SELECT A.*
|
||||
FROM TBL_PROGRAM A
|
||||
<where>
|
||||
<if test="by != null and term != null">${by} LIKE CONCAT('%', #{term}, '%')</if>
|
||||
<if test='filenames != null'>PGRM_FILE_NM IN (<foreach collection="filenames" item="filename" separator=",">#{filename}</foreach>)</if>
|
||||
</where>
|
||||
ORDER BY<if test='by != null'>${by}</if><if test='by == null'>PGRM_FILE_NM</if>
|
||||
<include refid="utility.paging-suffix"/></sql>
|
||||
|
||||
<select id="getProgramList" parameterType="map" resultType="dataobject">/* 프로그램 목록 조회(program.getProgramList) */
|
||||
<include refid="selectPrograms"/></select>
|
||||
|
||||
<select id="getPrograms" parameterType="map" resultMap="programRow">/* 프로그램 가져오기(program.getPrograms) */
|
||||
<include refid="selectPrograms"/></select>
|
||||
|
||||
<insert id="insertProgram" parameterType="cokr.xit.base.menu.Program">/* 프로그램 등록(program.insertProgram) */
|
||||
INSERT INTO TBL_PROGRAM (
|
||||
PGRM_FILE_NM
|
||||
, PGRM_FILE_PATH
|
||||
, PGRM_NM
|
||||
, DSCRP
|
||||
, URL
|
||||
) VALUES (
|
||||
#{filename}
|
||||
, #{location}
|
||||
, #{name}
|
||||
, #{description}
|
||||
, #{url}
|
||||
)</insert>
|
||||
|
||||
<update id="updateProgram" parameterType="cokr.xit.base.menu.Program">/* 프로그램 수정(program.updateProgram) */
|
||||
UPDATE TBL_PROGRAM SET
|
||||
PGRM_FILE_PATH = #{location}
|
||||
, PGRM_NM = #{name}
|
||||
, DSCRP = #{description}
|
||||
, URL = #{url}
|
||||
WHERE PGRM_FILE_NM = #{filename}</update>
|
||||
|
||||
<delete id="removePrograms" parameterType="map">/* 프로그램 삭제(program.removePrograms) */
|
||||
DELETE FROM TBL_PROGRAM
|
||||
WHERE PGRM_FILE_NM IN (<foreach collection="filenames" item="filename" separator=",">#{filename}</foreach>)</delete>
|
||||
|
||||
<delete id="clearPrograms" parameterType="map">/* 프로그램 비우기(program.clearPrograms) */
|
||||
DELETE FROM TBL_PROGRAM
|
||||
WHERE PGRM_FILE_NM NOT IN (SELECT PGRM_FILE_NM FROM TBL_MENU)</delete>
|
||||
|
||||
<sql id="selectRequests">
|
||||
SELECT A.*
|
||||
FROM TBL_PGRM_CHNG_REQ A
|
||||
<where>
|
||||
<if test='fromReqDate != null'>REQ_DT >= #{fromReqDate}</if>
|
||||
<if test='toReqDate != null'>REQ_DT <= #{toReqDate}</if>
|
||||
<if test="by != null and term != null">${by} LIKE CONCAT('%', #{term}, '%')</if>
|
||||
<if test='filenames != null'>PGRM_FILE_NAME IN (<foreach collection="filenames" item="filename" separator=",">#{filename}</foreach>)</if>
|
||||
<if test='reqIDs != null'>REQ_ID IN (<foreach collection="reqIDs" item="reqID" separator=",">#{reqID}</foreach>)</if>
|
||||
</where>
|
||||
ORDER BY PGRM_FILE_NM,<if test='by != null'>${by}</if><if test='by == null'>REQ_ID DESC</if></sql>
|
||||
|
||||
<select id="getRequestList" parameterType="map" resultType="dataobject">/* 변경요청 목록 조회(program.getRequestList) */
|
||||
<include refid="selectRequests" /></select>
|
||||
|
||||
<select id="getRequests" parameterType="map" resultType="dataobject">/* 프로그램별 변경요청 목록 조회(program.getRequests) */
|
||||
<include refid="selectRequests" /></select>
|
||||
|
||||
<insert id="insertRequest" parameterType="cokr.xit.base.menu.ChangeRequest">/* 프로그램 변경요청 등록(program.insertRequest) */
|
||||
INSERT INTO TBL_PGRM_CHNG_REQ (
|
||||
PGRM_FILE_NM
|
||||
, REQ_ID
|
||||
, SUBJECT
|
||||
, REQ_USER
|
||||
, REQ_DT
|
||||
, REQ_CNTNT
|
||||
, PRSC_USER
|
||||
, PRCS_DT
|
||||
, PRCS_CNTNT
|
||||
, PRCS_STATUS
|
||||
) VALUES (
|
||||
#{filename}
|
||||
, #{id}
|
||||
, #{subject}
|
||||
, #{requestorID}
|
||||
, #{requestDate}
|
||||
, #{requestDetail}
|
||||
, #{processorID}
|
||||
, #{processDate}
|
||||
, #{processDetail}
|
||||
, #{status}
|
||||
)</insert>
|
||||
|
||||
<update id="updateRequest" parameterType="cokr.xit.base.menu.ChangeRequest">/* 프로그램 변경요청 수정(program.updateRequest) */
|
||||
UPDATE TBL_PGRM_CHNG_REQ SET
|
||||
SUBJECT = #{subject}
|
||||
, REQ_USER = #{requestorID}
|
||||
, REQ_DT = #{requestDate}
|
||||
, REQ_CNTNT = #{requestDetail}
|
||||
, PRSC_USER = #{processorID}
|
||||
, PRCS_DT = #{processDate}
|
||||
, PRCS_CNTNT = #{processDetail}
|
||||
WHERE PGRM_FILE_NM = #{filename}
|
||||
AND REQ_ID = #{id}</update>
|
||||
|
||||
<update id="setRequestStatus" parameterType="map">/* 프로그램 변경요청 상태 변경(program.setRequestStatus) */
|
||||
UPDATE TBL_PGRM_CHNG_REQ SET
|
||||
PRCS_STATUS = #{status}
|
||||
WHERE PGRM_FILE_NM = #{filename}
|
||||
AND REQ_ID = #{id}</update>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,14 @@
|
||||
<?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="test">
|
||||
|
||||
<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,27 @@
|
||||
<?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="thisDay">IFNULL(#{thisDay}, TO_CHAR(CURRENT_DATE, 'YYYYMMDD'))</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