package cokr.xit.foundation.component; import cokr.xit.foundation.AbstractObject; /**서비스 요청을 위한 정보를 갖는 객체의 베이스 클래스.
* 서비스를 요청할 때 전달해야할 정보가 많을 경우(4개 이상) 이 클래스를 상속받아 요청을 정의한다.
* 전달해야할 정보가 많지 않으면 서비스 요청을 정의할 필요없다. * @author mjkhan */ public abstract class ServiceRequest extends AbstractObject { private String type, by, term, orderBy; private int pageNum; private int fetchSize; private boolean fetchAll, includeAll; private String download; /**요청유형을 반환한다. 요청유형은 애플리케이션에서 필요에 따라 정의한다. * @return 요청유형 */ public String getType() { return ifEmpty(type, ""); } /**요청유형을 설정한다. 요청유형은 애플리케이션에서 필요에 따라 정의한다. * @param type 요청유형 * @return 현재 요청 */ public T setType(String type) { this.type = type; return self(); } /**조회 조건 필드를 반환한다. * @return 조회 조건 필드 */ public String getBy() { return ifEmpty(by, () -> null); } /**조회 조건 필드를 설정한다. * @param by 조회 조건 필드 * @return 현재 요청 */ public T setBy(String by) { this.by = by; return self(); } /**조회 조건을 반환한다. * @return 조회 조건 */ public String getTerm() { return ifEmpty(term, () -> null); } /**조회 조건을 설정한다. * @param term 조회 조건 * @return 현재 요청 */ public T setTerm(String term) { this.term = term; return self(); } /**정렬 조건을 반환한다. * @return 정렬 조건 */ public String getOrderBy() { return orderBy; } /**정렬 조건을 설정한다. * @param orderBy 정렬 조건 * @return 현재 요청 */ public T setOrderBy(String orderBy) { this.orderBy = orderBy; return self(); } /**조회 결과의 시작 페이지를 반환한다. * @return dataStart 조회 결과의 시작 페이지 */ public int getPageNum() { return Math.max(pageNum, 1); // return isEmpty(download) ? pageNum : 0; } /**조회 결과의 시작 페이지를 설정한다. * @param pageNum 조회 결과의 시작 페이지 * @return 현재 요청 */ public T setPageNum(int pageNum) { this.pageNum = pageNum; return self(); } /**한 번에 가지고 올 결과 갯수를 반환한다. * @return fetchSize 한 번에 가지고 올 결과 갯수 */ public int getFetchSize() { return fetchSize; } /**한 번에 가지고 올 결과 갯수를 설정한다. * @param fetchSize 한 번에 가지고 올 결과 갯수 * @return 현재 요청 */ public T setFetchSize(int fetchSize) { this.fetchSize = fetchSize; return self(); } /**모든 조회 결과의 반환 여부를 반환한다. * @return fetchAll 모든 조회 결과의 반환 여부 *
  • 조회 결과를 모두 반환하려면 true
  • *
  • 그렇지 않으면 false
  • *
*/ public boolean fetchAll() { return fetchAll; } /**모든 조회 결과의 반환 여부를 설정한다. * @param fetchAll 모든 조회 결과의 반환 여부 *
  • 조회 결과를 모두 반환하려면 true
  • *
  • 그렇지 않으면 false
  • *
*/ public T setFetchAll(boolean fetchAll) { this.fetchAll = fetchAll; return self(); } /**사용하지 않는 정보의 포함여부를 반환한다. * @return includeAll 사용하지 않는 정보의 포함여부 */ public boolean isIncludeAll() { return includeAll; } /**사용하지 않는 정보의 포함여부를 설정한다. * @param includeAll 사용하지 않는 정보의 포함여부 */ public T setIncludeAll(boolean includeAll) { this.includeAll = includeAll; return self(); } /**조회결과를 다운로드할 파일 유형을 반환한다. * @return download 다운로드 파일 유형 *
  • 엑셀 파일 - "xls"
  • *
  • 다운로드하지 않으면 빈 값
  • *
*/ public String getDownload() { return download; } /**조회결과를 다운로드할 유형을 설정한다. * @param download 다운로드 파일 유형 *
  • 엑셀 파일 - "xls"
  • *
  • 다운로드하지 않으면 빈 값
  • *
* @return 현재 요청 */ public T setDownload(String download) { this.download = download; return self(); } /**요청의 상태값에 대한 유효성을 체크한다.
* 상태값이 유효하지 않으면 RuntimeException을 발생시킨다. */ public void validate() {} /**요청의 상태값이 유효한지 반환한다. * @return 요청의 상태값의 유효 여부 *
  • 요청의 상태값이 유효하면 true
  • *
  • 그렇지 않으면 false
  • *
*/ public boolean isValid() { try { validate(); return true; } catch (Exception e) { return false; } } }