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

197 lines
5.3 KiB
Java

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