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.
 
 
 
 
 
 

102 lines
4.2 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.List;
import java.util.Map;
import javax.jdo.PersistenceManager;
import kr.co.kihyun.lang.MString;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Kts
*/
public class BoardService extends BaseService {
private static final Logger LOG = LoggerFactory.getLogger(BoardService.class);
/**
* 기본생성자
*/
public BoardService() {}
/**
* 생성자
* @param pm PersistenceManager
*/
public BoardService(PersistenceManager pm) {
super(pm);
}
public void createBoardListQuery(Map params) throws Exception{
StringBuilder sbSearch = new StringBuilder();
String findOption = (String) params.get("findOption");
String findWord = (String) params.get("findWord");
sbSearch.append("SELECT \n");
sbSearch.append(" A0.POPUP_YN AS popupYn \n");
sbSearch.append(" , A0.ID AS id \n");
sbSearch.append(" , A0.WRITE_DATE AS writeDate \n");
sbSearch.append(" , A0.TITLE AS title \n");
sbSearch.append(" , A0.CONTENTS AS contents \n");
sbSearch.append(" , SP_CM_DEC_FU(US.NAME) AS userName \n");
sbSearch.append(" , DT.NAME AS deptName \n");
sbSearch.append(" , A0.VISIT AS visit \n");
sbSearch.append(" , CASE WHEN A0.ATTACHMENTS IS NOT NULL THEN 'Y' ELSE 'N' END isAttachments \n");
// sbSearch.append(" , ROWNUMBER() OVER() AS rowNo \n");
sbSearch.append("FROM \n");
sbSearch.append(" MOUMI_BOARD A0 \n");
sbSearch.append(" ,MOUMI_MUSER US \n");
sbSearch.append(" ,MOUMI_DEPT DT \n");
sbSearch.append("WHERE \n");
sbSearch.append(" US.ID = A0.USER_ID \n");
sbSearch.append(" AND US.DEPT_ID = DT.ID \n");
sbSearch.append(" AND US.DEPT_ID = DT.ID \n");
sbSearch.append(" AND A0.GROUP_ID = :groupId \n");
if (!MString.isNull(findOption) && !MString.isNull(findWord)) {
if (findOption.equals("title")) {
sbSearch.append(" AND A0.TITLE LIKE '%' || :findWord || '%' \n");
}else if (findOption.equals("mUser.name")) {
sbSearch.append(" AND SP_CM_DEC_FU(US.NAME) LIKE '%' || :findWord || '%' \n");
}
}
//레코드갯수를 구하는 부모클래스의 함수를 호출하기 위해서 멤버변수에 저장
this.setCountQuery(sbSearch);
//조건맵을 멤버변수에 저장
this.setParams(params);
sbSearch.append("ORDER BY WRITEDATE DESC \n");
//검색쿼리를 멤버변수에 저장
this.setSearchQuery(sbSearch);
if( LOG.isDebugEnabled() ) {
LOG.debug("query={}", sbSearch.toString());
}
}
public void isAttachment(Map params) throws Exception{
StringBuilder sb = new StringBuilder();
Long boardId = (Long) params.get("boardId");
sb.append(" SELECT ID as id \n");
sb.append(" ,TITLE as title \n");
sb.append(" ,CONTENTS as contents \n");
sb.append(" ,CASE WHEN ATTACHMENTS IS NOT NULL THEN 'Y' ELSE 'N' END isAttachments \n");
sb.append(" FROM MOUMI_BOARD \n");
sb.append(" WHERE ID = :boardId \n");
this.setCountQuery(sb);
this.setParams(params);
this.setSearchQuery(sb);
}
}