diff --git a/src/main/java/cokr/xit/foundation/AbstractComponent.java b/src/main/java/cokr/xit/foundation/AbstractComponent.java index 46dc635..a36b912 100644 --- a/src/main/java/cokr/xit/foundation/AbstractComponent.java +++ b/src/main/java/cokr/xit/foundation/AbstractComponent.java @@ -1,7 +1,5 @@ package cokr.xit.foundation; -import java.util.function.Supplier; - import cokr.xit.foundation.data.Convert; /**기능 구현 컴포넌트를 정의할 때 상속받는 클래스. @@ -12,111 +10,7 @@ import cokr.xit.foundation.data.Convert; * 등의 기능을 사용할 수 있다. * @author mjkhan */ -public class AbstractComponent { - /**lv와 rv가 같은 지 반환한다. - * @param lv 좌측 값 - * @param rv 우측 값 - * @return - * - */ - protected static final boolean equals(Object lv, Object rv) { - return lv == rv ? true : lv != null && lv.equals(rv); - } - - /**{@link Assert#isEmpty(Object)} 참고 - */ - protected static final boolean isEmpty(Object obj) { - return Assert.isEmpty(obj); - } - - /**{@link Assert#ifEmpty(Object, Supplier)} 참고*/ - protected static final T ifEmpty(T t, Supplier nt) { - return Assert.ifEmpty(t, nt); - } - - /**{@link Assert#ifEmpty(Object, Object)} 참고. - */ - protected static final T ifEmpty(T t, T nt) { - return Assert.ifEmpty(t, nt); - } - - /**obj가 빈 값이면 공백문자("")를 반환한다. 빈 값이 아니면 obj를 String으로 캐스팅하여 반환한다. - * @param obj 객체 - * @return - *
  • obj가 빈 값이면 공백문자("")
  • - *
  • 빈 값이 아니면 String으로 캐스팅한 obj
  • - *
- */ - protected static final String blankIfEmpty(Object obj) { - return ifEmpty((String)obj, ""); - } - - /**{@link Assert#notEmpty(Object, String)} 참고. - */ - protected static final T notEmpty(T t, String name) { - return Assert.notEmpty(t, name); - } - - /**See {@link Convert#toString(Object)}.*/ - protected static final String toString(Object obj) { - return Convert.toString(obj); - } - - /**See {@link Convert#toShort(Object)}.*/ - protected static final short toShort(Object obj) { - return Convert.toShort(obj); - } - - /**See {@link Convert#toInt(Object)}.*/ - protected static final int toInt(Object obj) { - return Convert.toInt(obj); - } - - /**See {@link Convert#toLong(Object)}.*/ - protected static final long toLong(Object obj) { - return Convert.toLong(obj); - } - - /**See {@link Convert#toDouble(Object)}.*/ - protected static final double toDouble(Object obj) { - return Convert.toDouble(obj); - } - - /**See {@link Convert#toFloat(Object)}.*/ - protected static final float toFloat(Object obj) { - return Convert.toFloat(obj); - } - - /**See {@link Convert#toByte(Object)}.*/ - protected static final byte toByte(Object obj) { - return Convert.toByte(obj); - } - - /**See {@link Convert#toBoolean(Object)}.*/ - protected static final boolean toBoolean(Object obj) { - return Convert.toBoolean(obj); - } - - /**{@link Assert#rootCause(Throwable)} 참고 - */ - protected static final Throwable rootCause(Throwable t) { - return Assert.rootCause(t); - } - - /**{@link ApplicationException#get(Throwable)} 참고 - */ - protected static final ApplicationException applicationException(Throwable t) { - return ApplicationException.get(t); - } - - /**{@link Assert#runtimeException(Throwable)} 참고 - */ - protected static final RuntimeException runtimeException(Throwable t) { - return Assert.runtimeException(t); - } - +public class AbstractComponent extends AbstractObject { /**klass와 연계된 Log를 반환한다. * @param klass Log와 연계된 클래스 * @return Log @@ -131,13 +25,4 @@ public class AbstractComponent { protected Log log() { return log(getClass()); } - - /**현재 객체를 반환한다. - * @param AbstractComponent 유형 - * @return 현재 객체 - */ - @SuppressWarnings("unchecked") - protected T self() { - return (T)this; - } } \ No newline at end of file diff --git a/src/main/java/cokr/xit/foundation/AbstractEntity.java b/src/main/java/cokr/xit/foundation/AbstractEntity.java index 5ebc191..88b8687 100644 --- a/src/main/java/cokr/xit/foundation/AbstractEntity.java +++ b/src/main/java/cokr/xit/foundation/AbstractEntity.java @@ -14,7 +14,7 @@ package cokr.xit.foundation; * * @author mjkhan */ -public abstract class AbstractEntity { +public abstract class AbstractEntity extends AbstractObject { private String createdBy; private String createdAt; private String modifiedBy; @@ -151,13 +151,4 @@ public abstract class AbstractEntity { public void setUseYN(String useYN) { this.useYN = useYN; } - - /**현재 객체를 반환한다. - * @param AbstractEntity 유형 - * @return 현재 객체 - */ - @SuppressWarnings("unchecked") - protected T self() { - return (T)this; - } } \ No newline at end of file diff --git a/src/main/java/cokr/xit/foundation/AbstractObject.java b/src/main/java/cokr/xit/foundation/AbstractObject.java new file mode 100644 index 0000000..d31fd22 --- /dev/null +++ b/src/main/java/cokr/xit/foundation/AbstractObject.java @@ -0,0 +1,122 @@ +package cokr.xit.foundation; + +import java.util.function.Supplier; + +import cokr.xit.foundation.data.Convert; + +/**베이스 클래스. + *

AbstractObject를 상속받는 클래스는 + *

  • {@link Assert}
  • + *
  • {@link Convert}
  • + *
+ * 등의 기능을 사용할 수 있다. + * @author mjkhan + */ +public class AbstractObject { + /**{@link Assert#equals(Object, Object)} 참고 + */ + protected static final boolean equals(Object lv, Object rv) { + return Assert.equals(lv, rv); + } + + /**{@link Assert#isEmpty(Object)} 참고 + */ + protected static final boolean isEmpty(Object obj) { + return Assert.isEmpty(obj); + } + + /**{@link Assert#ifEmpty(Object, Supplier)} 참고*/ + protected static final T ifEmpty(T t, Supplier nt) { + return Assert.ifEmpty(t, nt); + } + + /**{@link Assert#ifEmpty(Object, Object)} 참고. + */ + protected static final T ifEmpty(T t, T nt) { + return Assert.ifEmpty(t, nt); + } + + /**obj가 빈 값이면 공백문자("")를 반환한다. 빈 값이 아니면 obj를 String으로 캐스팅하여 반환한다. + * @param obj 객체 + * @return + *
  • obj가 빈 값이면 공백문자("")
  • + *
  • 빈 값이 아니면 String으로 캐스팅한 obj
  • + *
+ */ + protected static final String blankIfEmpty(Object obj) { + return ifEmpty((String)obj, ""); + } + + /**{@link Assert#notEmpty(Object, String)} 참고. + */ + protected static final T notEmpty(T t, String name) { + return Assert.notEmpty(t, name); + } + + /**See {@link Convert#toString(Object)}.*/ + protected static final String toString(Object obj) { + return Convert.toString(obj); + } + + /**See {@link Convert#toShort(Object)}.*/ + protected static final short toShort(Object obj) { + return Convert.toShort(obj); + } + + /**See {@link Convert#toInt(Object)}.*/ + protected static final int toInt(Object obj) { + return Convert.toInt(obj); + } + + /**See {@link Convert#toLong(Object)}.*/ + protected static final long toLong(Object obj) { + return Convert.toLong(obj); + } + + /**See {@link Convert#toDouble(Object)}.*/ + protected static final double toDouble(Object obj) { + return Convert.toDouble(obj); + } + + /**See {@link Convert#toFloat(Object)}.*/ + protected static final float toFloat(Object obj) { + return Convert.toFloat(obj); + } + + /**See {@link Convert#toByte(Object)}.*/ + protected static final byte toByte(Object obj) { + return Convert.toByte(obj); + } + + /**See {@link Convert#toBoolean(Object)}.*/ + protected static final boolean toBoolean(Object obj) { + return Convert.toBoolean(obj); + } + + /**{@link Assert#rootCause(Throwable)} 참고 + */ + protected static final Throwable rootCause(Throwable t) { + return Assert.rootCause(t); + } + + /**{@link ApplicationException#get(Throwable)} 참고 + */ + protected static final ApplicationException applicationException(Throwable t) { + return ApplicationException.get(t); + } + + /**{@link Assert#runtimeException(Throwable)} 참고 + */ + protected static final RuntimeException runtimeException(Throwable t) { + return Assert.runtimeException(t); + } + + /**현재 객체를 반환한다. + * @param AbstractComponent 유형 + * @return 현재 객체 + */ + @SuppressWarnings("unchecked") + protected T self() { + return (T)this; + } +} \ No newline at end of file diff --git a/src/main/java/cokr/xit/foundation/Assert.java b/src/main/java/cokr/xit/foundation/Assert.java index bfa3911..bc6470d 100644 --- a/src/main/java/cokr/xit/foundation/Assert.java +++ b/src/main/java/cokr/xit/foundation/Assert.java @@ -9,6 +9,18 @@ import java.util.function.Supplier; public class Assert { private Assert() {} + /**lv와 rv가 같은지 반환한다. + * @param lv 좌측항의 값 + * @param rv 우측항의 값 + * @return + *
  • lv와 rv가 같으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public static final boolean equals(Object lv, Object rv) { + return lv == rv || lv != null && lv.equals(rv); + } + /**obj가 null인지, 공백문자인지, 빈 collection인지, 빈 배열인지 반환한다. * @param obj 오브젝트 * @return @@ -112,6 +124,11 @@ public class Assert { *

*/ public static interface Support { + /** {@link Assert#equals(Object, Object)} 참고 */ + default boolean equals(Object lv, Object rv) { + return Assert.equals(lv, rv); + } + /** {@link Assert#isEmpty(Object)} 참고 */ default boolean isEmpty(Object obj) { return Assert.isEmpty(obj); diff --git a/src/main/java/cokr/xit/foundation/component/AbstractServiceBean.java b/src/main/java/cokr/xit/foundation/component/AbstractServiceBean.java index d668b90..813a3fd 100644 --- a/src/main/java/cokr/xit/foundation/component/AbstractServiceBean.java +++ b/src/main/java/cokr/xit/foundation/component/AbstractServiceBean.java @@ -85,7 +85,7 @@ public abstract class AbstractServiceBean extends EgovAbstractServiceImpl { * */ protected static final boolean equals(Object lv, Object rv) { - return lv == rv ? true : lv != null && lv.equals(rv); + return Assert.equals(lv, rv); } /**{@link Assert#isEmpty(Object)} 참고 diff --git a/src/main/java/cokr/xit/foundation/component/QueryRequest.java b/src/main/java/cokr/xit/foundation/component/QueryRequest.java index bcb75c7..a591cba 100644 --- a/src/main/java/cokr/xit/foundation/component/QueryRequest.java +++ b/src/main/java/cokr/xit/foundation/component/QueryRequest.java @@ -9,152 +9,4 @@ package cokr.xit.foundation.component; */ 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 setBy(String by) { - this.by = by; - return self(); - } - - /**조회 조건을 반환한다. - * @return 조회 조건 - */ - public String getTerm() { - return ifEmpty(term, () -> null); - } - - /**조회 조건을 설정한다. - * @param term 조회 조건 - * @return QueryRequest - */ - public T setTerm(String term) { - this.term = term; - return self(); - } - - /**정렬 조건을 반환한다. - * @return 정렬 조건 - */ - public String getOrderBy() { - return orderBy; - } - - /**정렬 조건을 설정한다. - * @param orderBy 정렬 조건 - * @return QueryRequest - */ - 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 QueryRequest - */ - public T setPageNum(int pageNum) { - this.pageNum = pageNum; - return self(); - } - - /**한 번에 가지고 올 결과 갯수를 반환한다. - * @return fetchSize 한 번에 가지고 올 결과 갯수 - */ - public int getFetchSize() { - return fetchSize; - } - - /**한 번에 가지고 올 결과 갯수를 설정한다. - * @param fetchSize 한 번에 가지고 올 결과 갯수 - * @return QueryRequest - */ - 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 QueryRequest - */ - public T setDownload(String download) { - this.download = download; - return self(); - } } \ No newline at end of file diff --git a/src/main/java/cokr/xit/foundation/component/ServiceRequest.java b/src/main/java/cokr/xit/foundation/component/ServiceRequest.java index 72b89d4..e0db135 100644 --- a/src/main/java/cokr/xit/foundation/component/ServiceRequest.java +++ b/src/main/java/cokr/xit/foundation/component/ServiceRequest.java @@ -12,7 +12,17 @@ import cokr.xit.foundation.AbstractComponent; public abstract class ServiceRequest extends AbstractComponent implements Serializable { private static final long serialVersionUID = 1L; - private String type; + private String + type, + by, + term, + orderBy; + private int pageNum; + private int fetchSize; + private boolean + fetchAll, + includeAll; + private String download; /**요청유형을 반환한다. 요청유형은 애플리케이션에서 필요에 따라 정의한다. * @return 요청유형 @@ -30,6 +40,145 @@ public abstract class ServiceRequest extends AbstractComponent implements Serial 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을 발생시킨다. */ diff --git a/src/main/java/cokr/xit/foundation/component/ServiceResponse.java b/src/main/java/cokr/xit/foundation/component/ServiceResponse.java index b812146..2b61eb7 100644 --- a/src/main/java/cokr/xit/foundation/component/ServiceResponse.java +++ b/src/main/java/cokr/xit/foundation/component/ServiceResponse.java @@ -1,7 +1,5 @@ package cokr.xit.foundation.component; -import java.io.Serializable; - import cokr.xit.foundation.AbstractComponent; import cokr.xit.foundation.data.DataObject; @@ -10,9 +8,7 @@ import cokr.xit.foundation.data.DataObject; * 결과 정보가 하나일 경우는 응답클래스를 정의할 필요없다. * @author mjkhan */ -public class ServiceResponse extends AbstractComponent implements Serializable { - private static final long serialVersionUID = 1L; - +public class ServiceResponse extends AbstractComponent { private int affected; private String code, diff --git a/src/main/java/cokr/xit/foundation/data/DataObject.java b/src/main/java/cokr/xit/foundation/data/DataObject.java index d25c99c..5ae1612 100644 --- a/src/main/java/cokr/xit/foundation/data/DataObject.java +++ b/src/main/java/cokr/xit/foundation/data/DataObject.java @@ -33,30 +33,24 @@ public class DataObject extends StringMap { caseSensitiveKey(false); } - /**lv와 rv가 같은지 반환한다. - * @param lv 비교항의 좌측값 - * @param rv 비교항의 우측값 - * @return - *
  • lv와 rv가 같으면 true
  • - *
  • 그렇지 않으면 false
  • - *
+ /**{@link Assert#equals(Object, Object)} 참고. */ protected static boolean equals(Object lv, Object rv) { - return lv == rv ? true : lv != null && lv.equals(rv); + return Assert.equals(lv, rv); } - /**{@link Assert#isEmpty(Object) Assert.isEmpty(...)} 참고. + /**{@link Assert#isEmpty(Object)} 참고. */ protected static boolean isEmpty(Object obj) { return Assert.isEmpty(obj); } - /**{@link Assert#ifEmpty(Object, Supplier) Assert.ifEmpty(...)} 참고*/ + /**{@link Assert#ifEmpty(Object, Supplier)} 참고*/ protected static T ifEmpty(T t, Supplier nt) { return Assert.ifEmpty(t, nt); } - /**{@link Assert#notEmpty(Object, String) Assert.notEmpty(...)} 참고. + /**{@link Assert#notEmpty(Object, String)} 참고. */ protected static T notEmpty(T t, String name) { return Assert.notEmpty(t, name);