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.

160 lines
4.3 KiB
Java

package cokr.xit.foundation.component;
/**조회 서비스를 요청할 때 필요정보를 전달하는 클래스.
* <p>pageNum, fetchSize가
* <ul><li>0보다 크면 결과를 페이징하여 반환한다.</li>
* <li>그렇지 않으면 전체 결과를 반환한다.</li>
* </ul>
* @author mjkhan
*/
public class QueryRequest extends ServiceRequest {
private static final long serialVersionUID = 1L;
private String by;
private String term;
private String orderBy;
private int pageNum;
private int fetchSize;
private boolean
fetchAll,
includeAll;
private String download;
/**조회 조건 필드를 반환한다.
* @return 조회 조건 필드
*/
public String getBy() {
return ifEmpty(by, () -> null);
}
/**조회 조건 필드를 설정한다.
* @param by 조회 조건 필드
* @return QueryRequest
*/
public <T extends QueryRequest> T setBy(String by) {
this.by = by;
return self();
}
/**조회 조건을 반환한다.
* @return 조회 조건
*/
public String getTerm() {
return ifEmpty(term, () -> null);
}
/**조회 조건을 설정한다.
* @param term 조회 조건
* @return QueryRequest
*/
public <T extends QueryRequest> T setTerm(String term) {
this.term = term;
return self();
}
/**정렬 조건을 반환한다.
* @return 정렬 조건
*/
public String getOrderBy() {
return orderBy;
}
/**정렬 조건을 설정한다.
* @param orderBy 정렬 조건
* @return QueryRequest
*/
public <T extends QueryRequest> 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 QueryRequest
*/
public <T extends QueryRequest> T setPageNum(int pageNum) {
this.pageNum = pageNum;
return self();
}
/**한 번에 가지고 올 결과 갯수를 반환한다.
* @return fetchSize 한 번에 가지고 올 결과 갯수
*/
public int getFetchSize() {
return fetchSize;
}
/**한 번에 가지고 올 결과 갯수를 설정한다.
* @param fetchSize 한 번에 가지고 올 결과 갯수
* @return QueryRequest
*/
public <T extends QueryRequest> 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 QueryRequest> T setFetchAll(boolean fetchAll) {
this.fetchAll = fetchAll;
return self();
}
/**사용하지 않는 정보의 포함여부를 반환한다.
* @return includeAll 사용하지 않는 정보의 포함여부
*/
public boolean isIncludeAll() {
return includeAll;
}
/**사용하지 않는 정보의 포함여부를 설정한다.
* @param includeAll 사용하지 않는 정보의 포함여부
*/
public <T extends QueryRequest> 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 QueryRequest
*/
public <T extends QueryRequest> T setDownload(String download) {
this.download = download;
return self();
}
}