knu project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

112 lines
3.9 KiB

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package kr.co.kihyun.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.jdo.PersistenceManager;
import kr.co.kihyun.service.vo.CodeVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Kts
*/
public class DeptService extends BaseService {
private static final Logger LOG = LoggerFactory.getLogger(DeptService.class);
//쿼리구분자 정의
public static enum TYPE {SAME_ROOT_DEPT, DEPT_OF_SAME_ORGAN, SCHOOL_OF_SAME_ORGAN;}
//동일한 root dept를 가진 부서 검색쿼리
private static final StringBuilder deptLov1 = new StringBuilder()
.append("SELECT \n")
.append(" ID AS value \n")
.append(" , NAME AS code \n")
.append("FROM \n")
.append(" MOUMI_DEPT \n")
.append("WHERE \n")
.append(" ROOT_DEPT = :deptId \n")
.append(" AND ID = ORGAN \n")
.append(" AND SEL_TYPE = 'Y' \n")
.append(" AND IS_OUT = 'N' \n")
.append("ORDER BY \n")
.append(" ID ASC \n");
//동일한 organ를 가진 부서 검색쿼리
private static final StringBuilder deptLov2 = new StringBuilder()
.append("SELECT \n")
.append(" ID AS value \n")
.append(" , NAME AS code \n")
.append("FROM \n")
.append(" MOUMI_DEPT \n")
.append("WHERE \n")
.append(" ORGAN = :deptId \n")
.append(" AND GRADE IS NULL \n")
.append(" AND SEL_TYPE = 'Y' \n")
.append(" AND IS_OUT = 'N' \n")
.append(" AND ID <> ORGAN \n")
.append("ORDER BY \n")
.append(" GRADE ASC \n")
.append(" , NAME ASC \n");
//동일한 organ를 가진 학교 검색쿼리
private static final StringBuilder deptLov3 = new StringBuilder()
.append("SELECT \n")
.append(" ID AS value \n")
.append(" , NAME AS code \n")
.append("FROM \n")
.append(" MOUMI_DEPT \n")
.append("WHERE \n")
.append(" ORGAN = :deptId \n")
.append(" AND GRADE IS NOT NULL \n")
.append(" AND SEL_TYPE = 'Y' \n")
.append(" AND IS_OUT = 'N' \n")
.append(" AND ID <> ORGAN \n")
.append("ORDER BY \n")
.append(" GRADE ASC \n")
.append(" , NAME ASC \n");
/**
* 기본생성자
*/
public DeptService() {
/**
* 기본생성자
*/
}
/**
* 생성자
* @param pm PersistenceManager
*/
public DeptService(PersistenceManager pm) {
super(pm);
}
/**
* 쿼리구분자별로 부서ID를 만족하는 LOV를 반환하는 메소드
* @param type - 쿼리구분자
* @param id - 부서ID
* @return - 부서의 LOV
*/
public List getLOVFromDept(TYPE type, String id) {
StringBuilder sbQuery = null;
if( type == TYPE.SAME_ROOT_DEPT ) { //동일한 root dept를 가진 부서 검색쿼리
sbQuery = deptLov1;
}else if( type == TYPE.DEPT_OF_SAME_ORGAN ) { //동일한 organ를 가진 부서 검색쿼리
sbQuery = deptLov2;
}else if( type == TYPE.SCHOOL_OF_SAME_ORGAN ) { //동일한 organ를 가진 학교 검색쿼리
sbQuery = deptLov3;
}
Map lvParams = new HashMap();
lvParams.put("deptId", id);
return (List)this.executeQuery(sbQuery, lvParams, CodeVO.class);
}
}