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
- *
- lv와 rv가 같으면 true
- * - 그렇지 않으면 false
- *
- */
- 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