diff --git a/src/main/java/nlib/bbs/service/BoardService.java b/src/main/java/nlib/bbs/service/BoardService.java index bf0758a9..932537b4 100644 --- a/src/main/java/nlib/bbs/service/BoardService.java +++ b/src/main/java/nlib/bbs/service/BoardService.java @@ -5,8 +5,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import nlib.restful.service.DataApiReqVO; -import nlib.restful.service.DataApiResVO; +import nlib.restful.DataApiReqVO; +import nlib.restful.DataApiResVO; import nlib.user.service.NlibLoginVO; public interface BoardService diff --git a/src/main/java/nlib/bbs/service/BoardServiceApi.java b/src/main/java/nlib/bbs/service/BoardServiceApi.java index d47dece8..11604ccb 100644 --- a/src/main/java/nlib/bbs/service/BoardServiceApi.java +++ b/src/main/java/nlib/bbs/service/BoardServiceApi.java @@ -1,8 +1,8 @@ package nlib.bbs.service; -import nlib.restful.service.DataApiReqVO; -import nlib.restful.service.DataApiResVO; +import nlib.restful.DataApiReqVO; +import nlib.restful.DataApiResVO; /** *
diff --git a/src/main/java/nlib/bbs/service/QnaService.java b/src/main/java/nlib/bbs/service/QnaService.java
index 876029da..b07f29b9 100644
--- a/src/main/java/nlib/bbs/service/QnaService.java
+++ b/src/main/java/nlib/bbs/service/QnaService.java
@@ -5,8 +5,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
diff --git a/src/main/java/nlib/bbs/service/impl/BoardDAO.java b/src/main/java/nlib/bbs/service/impl/BoardDAO.java
index 180554ac..9349a80b 100644
--- a/src/main/java/nlib/bbs/service/impl/BoardDAO.java
+++ b/src/main/java/nlib/bbs/service/impl/BoardDAO.java
@@ -9,7 +9,7 @@ import org.springframework.stereotype.Repository;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
import nlib.cmm.service.NotificationVO;
-import nlib.restful.service.DataApiReqVO;
+import nlib.restful.DataApiReqVO;
import nlib.bbs.service.ArticleVO;
import nlib.bbs.service.AttachFileVO;
import nlib.cmm.service.NlibProperty;
diff --git a/src/main/java/nlib/bbs/service/impl/BoardDAOApi.java b/src/main/java/nlib/bbs/service/impl/BoardDAOApi.java
index faf3cff0..771b4c6d 100644
--- a/src/main/java/nlib/bbs/service/impl/BoardDAOApi.java
+++ b/src/main/java/nlib/bbs/service/impl/BoardDAOApi.java
@@ -7,8 +7,8 @@ import org.springframework.stereotype.Repository;
import nlib.cmm.web.MainController;
import nlib.restful.DataApi;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
@Repository("boardDAO")
public class BoardDAOApi extends DataApi
diff --git a/src/main/java/nlib/bbs/service/impl/BoardServiceImplApi.java b/src/main/java/nlib/bbs/service/impl/BoardServiceImplApi.java
index 058c263d..d5a27c80 100644
--- a/src/main/java/nlib/bbs/service/impl/BoardServiceImplApi.java
+++ b/src/main/java/nlib/bbs/service/impl/BoardServiceImplApi.java
@@ -8,8 +8,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import nlib.bbs.service.BoardServiceApi;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
@Service("boardService")
public class BoardServiceImplApi implements BoardServiceApi
diff --git a/src/main/java/nlib/bbs/service/impl/QnaDAO.java b/src/main/java/nlib/bbs/service/impl/QnaDAO.java
index cf540cc8..cac64458 100644
--- a/src/main/java/nlib/bbs/service/impl/QnaDAO.java
+++ b/src/main/java/nlib/bbs/service/impl/QnaDAO.java
@@ -2,7 +2,7 @@ package nlib.bbs.service.impl;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
import nlib.bbs.service.ArticleVO;
-import nlib.restful.service.DataApiReqVO;
+import nlib.restful.DataApiReqVO;
@Mapper("qnaDAO")
public interface QnaDAO extends BoardDAO {
diff --git a/src/main/java/nlib/bbs/web/FaqController.java b/src/main/java/nlib/bbs/web/FaqController.java
index c116a4a9..79b659bf 100644
--- a/src/main/java/nlib/bbs/web/FaqController.java
+++ b/src/main/java/nlib/bbs/web/FaqController.java
@@ -32,8 +32,8 @@ import nlib.cmm.service.CodeService;
import nlib.cmm.service.NlibProperty;
import nlib.cmm.service.NotificationVO;
import nlib.cmm.service.PagingVO;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
diff --git a/src/main/java/nlib/cmm/NlibCommonController.java b/src/main/java/nlib/cmm/NlibCommonController.java
index 2bdc188c..7865a863 100644
--- a/src/main/java/nlib/cmm/NlibCommonController.java
+++ b/src/main/java/nlib/cmm/NlibCommonController.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import nlib.cmm.exception.ErrorMessage;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiResVO;
import nlib.security.SecUserVO;
import nlib.user.service.LoginService;
import nlib.user.service.NlibLoginVO;
diff --git a/src/main/java/nlib/cmm/web/NotificationController.java b/src/main/java/nlib/cmm/web/NotificationController.java
index 60177dd7..df860283 100644
--- a/src/main/java/nlib/cmm/web/NotificationController.java
+++ b/src/main/java/nlib/cmm/web/NotificationController.java
@@ -26,8 +26,8 @@ import nlib.cmm.service.NotificationService;
import nlib.cmm.service.NotificationVO;
import nlib.cmm.service.PagingVO;
import nlib.cmm.service.NlibProperty;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import nlib.util.StringUtil;
/**
diff --git a/src/main/java/nlib/col/service/InterestService.java b/src/main/java/nlib/col/service/InterestService.java
index d20fc12a..0118841b 100644
--- a/src/main/java/nlib/col/service/InterestService.java
+++ b/src/main/java/nlib/col/service/InterestService.java
@@ -2,8 +2,8 @@ package nlib.col.service;
import java.util.List;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
public interface InterestService
{
diff --git a/src/main/java/nlib/col/service/ReadService.java b/src/main/java/nlib/col/service/ReadService.java
index 89fe5d84..3c0c2250 100644
--- a/src/main/java/nlib/col/service/ReadService.java
+++ b/src/main/java/nlib/col/service/ReadService.java
@@ -4,7 +4,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiResVO;
/**
*
diff --git a/src/main/java/nlib/col/service/RentService.java b/src/main/java/nlib/col/service/RentService.java
index 98044cb0..1d406943 100644
--- a/src/main/java/nlib/col/service/RentService.java
+++ b/src/main/java/nlib/col/service/RentService.java
@@ -5,8 +5,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
public interface RentService
{
diff --git a/src/main/java/nlib/col/service/RisService.java b/src/main/java/nlib/col/service/RisService.java
index b2d04ffd..192da2a5 100644
--- a/src/main/java/nlib/col/service/RisService.java
+++ b/src/main/java/nlib/col/service/RisService.java
@@ -3,8 +3,8 @@ package nlib.col.service;
import java.util.List;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
public interface RisService
{
diff --git a/src/main/java/nlib/col/service/impl/CollectionServiceImpl.java b/src/main/java/nlib/col/service/impl/CollectionServiceImpl.java
index 78796ed1..3315335f 100644
--- a/src/main/java/nlib/col/service/impl/CollectionServiceImpl.java
+++ b/src/main/java/nlib/col/service/impl/CollectionServiceImpl.java
@@ -14,9 +14,9 @@ import org.springframework.stereotype.Service;
import nlib.col.service.CollectionService;
import nlib.col.service.CollectionVO;
import nlib.restful.DataApi;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
-import nlib.restful.service.XmlConverter;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
+import nlib.restful.XmlConverter;
import nlib.util.StringUtil;
/**
diff --git a/src/main/java/nlib/col/service/impl/InterestDAO.java b/src/main/java/nlib/col/service/impl/InterestDAO.java
index 36519b87..3699a211 100644
--- a/src/main/java/nlib/col/service/impl/InterestDAO.java
+++ b/src/main/java/nlib/col/service/impl/InterestDAO.java
@@ -10,8 +10,8 @@ import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import nlib.col.service.CollectionVO;
import nlib.col.service.DeptVO;
import nlib.restful.DataApi;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
@Repository("interestDAO")
public class InterestDAO extends EgovComAbstractDAO
diff --git a/src/main/java/nlib/col/service/impl/InterestServiceImpl.java b/src/main/java/nlib/col/service/impl/InterestServiceImpl.java
index 70119c5e..6ad27154 100644
--- a/src/main/java/nlib/col/service/impl/InterestServiceImpl.java
+++ b/src/main/java/nlib/col/service/impl/InterestServiceImpl.java
@@ -12,8 +12,8 @@ import nlib.col.service.CartService;
import nlib.col.service.CollectionVO;
import nlib.col.service.DeptVO;
import nlib.col.service.InterestService;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
@Service("interestService")
public class InterestServiceImpl implements InterestService
diff --git a/src/main/java/nlib/col/service/impl/ReadServiceImpl.java b/src/main/java/nlib/col/service/impl/ReadServiceImpl.java
index d1e2a489..0899b5d4 100644
--- a/src/main/java/nlib/col/service/impl/ReadServiceImpl.java
+++ b/src/main/java/nlib/col/service/impl/ReadServiceImpl.java
@@ -15,8 +15,8 @@ import nlib.col.service.CollectionVO;
import nlib.col.service.ReadService;
import nlib.info.service.InformService;
import nlib.restful.DataApi;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import nlib.util.StringUtil;
@Service("readService")
diff --git a/src/main/java/nlib/col/service/impl/RentServiceImpl.java b/src/main/java/nlib/col/service/impl/RentServiceImpl.java
index 8fc3f507..9cf317b7 100644
--- a/src/main/java/nlib/col/service/impl/RentServiceImpl.java
+++ b/src/main/java/nlib/col/service/impl/RentServiceImpl.java
@@ -17,9 +17,9 @@ import nlib.col.service.CartService;
import nlib.col.service.CollectionVO;
import nlib.col.service.RentService;
import nlib.restful.DataApi;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
-import nlib.restful.service.XmlConverter;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
+import nlib.restful.XmlConverter;
import nlib.util.StringUtil;
@Service("rentService")
diff --git a/src/main/java/nlib/col/service/impl/RisDAO.java b/src/main/java/nlib/col/service/impl/RisDAO.java
index 5c54d811..865e3f3e 100644
--- a/src/main/java/nlib/col/service/impl/RisDAO.java
+++ b/src/main/java/nlib/col/service/impl/RisDAO.java
@@ -11,8 +11,8 @@ import nlib.col.service.CollectionVO;
import nlib.col.service.DeptVO;
import nlib.col.service.RisVO;
import nlib.restful.DataApi;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import java.util.HashMap;
import java.util.List;
diff --git a/src/main/java/nlib/col/service/impl/RisServiceImpl.java b/src/main/java/nlib/col/service/impl/RisServiceImpl.java
index a014e7b5..43a5ac7e 100644
--- a/src/main/java/nlib/col/service/impl/RisServiceImpl.java
+++ b/src/main/java/nlib/col/service/impl/RisServiceImpl.java
@@ -13,8 +13,8 @@ import nlib.col.service.RisService;
import nlib.col.service.CollectionVO;
import nlib.col.service.DeptVO;
import nlib.col.service.RisVO;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
@Service("risService")
public class RisServiceImpl implements RisService
diff --git a/src/main/java/nlib/col/web/ReadController.java b/src/main/java/nlib/col/web/ReadController.java
index c2ff6b2e..3dbd9146 100644
--- a/src/main/java/nlib/col/web/ReadController.java
+++ b/src/main/java/nlib/col/web/ReadController.java
@@ -21,7 +21,7 @@ import nlib.cmm.service.PagingVO;
import nlib.col.service.CollectionService;
import nlib.col.service.CollectionVO;
import nlib.col.service.ReadService;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiResVO;
import nlib.util.StringUtil;
/**
diff --git a/src/main/java/nlib/col/web/RentController.java b/src/main/java/nlib/col/web/RentController.java
index c0a95858..f5424fe1 100644
--- a/src/main/java/nlib/col/web/RentController.java
+++ b/src/main/java/nlib/col/web/RentController.java
@@ -28,9 +28,9 @@ import nlib.cmm.service.PagingVO;
import nlib.col.service.CollectionService;
import nlib.col.service.CollectionVO;
import nlib.col.service.RentService;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
-import nlib.restful.service.DataApiVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
+import nlib.restful.DataApiVO;
import nlib.util.StringUtil;
/**
diff --git a/src/main/java/nlib/col/web/RisController.java b/src/main/java/nlib/col/web/RisController.java
index d39e9d08..65083e97 100644
--- a/src/main/java/nlib/col/web/RisController.java
+++ b/src/main/java/nlib/col/web/RisController.java
@@ -37,8 +37,8 @@ import nlib.col.service.CollectionVO;
import nlib.col.service.DeptVO;
import nlib.col.service.InterestService;
import nlib.col.service.RisVO;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
diff --git a/src/main/java/nlib/info/service/impl/InformServiceImpl.java b/src/main/java/nlib/info/service/impl/InformServiceImpl.java
index c1c6351a..36d10b2e 100644
--- a/src/main/java/nlib/info/service/impl/InformServiceImpl.java
+++ b/src/main/java/nlib/info/service/impl/InformServiceImpl.java
@@ -10,8 +10,8 @@ import org.springframework.stereotype.Service;
import nlib.cmm.service.NlibProperty;
import nlib.info.service.InformService;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import nlib.util.StringUtil;
/**
diff --git a/src/main/java/nlib/info/web/InformController.java b/src/main/java/nlib/info/web/InformController.java
index a6c56d9e..00657438 100644
--- a/src/main/java/nlib/info/web/InformController.java
+++ b/src/main/java/nlib/info/web/InformController.java
@@ -18,8 +18,8 @@ import nlib.cmm.NlibCommonController;
import nlib.cmm.service.NlibProperty;
import nlib.info.service.InformService;
import nlib.info.service.impl.InformServiceImpl;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import nlib.util.StringUtil;
/**
diff --git a/src/main/java/nlib/restful/DataApi.java b/src/main/java/nlib/restful/DataApi.java
index b571f27a..f5deb200 100644
--- a/src/main/java/nlib/restful/DataApi.java
+++ b/src/main/java/nlib/restful/DataApi.java
@@ -1,13 +1,30 @@
package nlib.restful;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.stereotype.Repository;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.HttpServerErrorException;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
-import nlib.restful.service.impl.DataApiTempXml;
-import nlib.restful.service.impl.DataApiRESTful;
+import nlib.util.StringUtil;
/**
@@ -16,12 +33,6 @@ import nlib.restful.service.impl.DataApiRESTful;
*
* @Description : 통합자료관리시스템에 RESTful API를 통해 질의/응답을 처리한다.
*
- * 개발 기간 중, RESTful API 서버 기능이 준비될 동안 로컬 XML 파일 읽기로 처리 가능하며,
- * 이를 위해서는 상속 클래스를 변경해 준다.
- *
- * - DataApiRESTful : RESTful API 서버에 접속하여 받아온 값으로 응답 처리
- * - DataApiTempXml : 로컬파일(dataapi.temp.xml.path)을 읽어서 응답 처리
- *
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
*
@@ -30,7 +41,6 @@ import nlib.restful.service.impl.DataApiRESTful;
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 9. KNKIM 최초 생성
- *
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 9.
@@ -38,13 +48,384 @@ import nlib.restful.service.impl.DataApiRESTful;
*
*/
@Repository("dataApi")
-public class DataApi extends DataApiRESTful { // RESTFul 서버에 접속하여 요청/응답처리를 수행하는 경우
-//public class DataApi extends DataApiTempXml { // 로컬파일에서 읽어와서 요청/응답처리를 수행하는 경우
+public class DataApi {
private static final Logger log = LoggerFactory.getLogger(DataApi.class);
+ /* DataApi 접속 서버 정보 */
+ @Value("#{properties['dataapi.server.ip']}")
+ private String DAPI_SERVER_IP;
+
+ @Value("#{properties['dataapi.server.port']}")
+ private String DAPI_SERVER_PORT;
+
+ @Value("#{properties['dataapi.server.protocol']}")
+ private String DAPI_SERVER_PROTOCOL;
+
+ /**
+ * 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다.
+ *
+ * @param reqVO
+ * @param method
+ * @return
+ */
public DataApiResVO request(DataApiReqVO reqVO) {
- return super.request(reqVO);
+
+ log.debug("request > " + reqVO.getReqMethod());
+
+ DataApiResVO resVO = null;
+
+ try {
+
+ //-----------------------------------
+ // 입력값 검증작업
+ //-----------------------------------
+ resVO = checkReqCommonParams(reqVO);
+ if(resVO != null) return resVO;
+ HttpMethod method = reqVO.getReqMethod();
+
+ //-----------------------------------
+ // 폼 파라메터 생성 작업 및 요청 처리
+ //-----------------------------------
+ String url = DAPI_SERVER_PROTOCOL + "://" + DAPI_SERVER_IP + ("80".equals(DAPI_SERVER_PORT) ? "" : ":" + DAPI_SERVER_PORT) + reqVO.getReqUrl();
+ log.debug("REQ URL : " + url);
+
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+
+ ResponseEntity responseEntity = null;
+ RestTemplate restTemplate = new RestTemplate();
+ restTemplate.getMessageConverters()
+ .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
+
+ HttpStatus statusCode = HttpStatus.OK;
+ String resultXML = null;
+
+ if(method == HttpMethod.GET) {
+ HttpEntity requestEntity = new HttpEntity(headers);
+ try {
+ responseEntity = restTemplate.exchange (makeRequestParamUrl(url, reqVO), method, requestEntity, String.class);
+ statusCode = responseEntity.getStatusCode();
+ resultXML = responseEntity.getBody();
+ } catch(HttpClientErrorException e) {
+ log.error("request > HttpClientErrorException 발생 : " + e.toString());
+ resultXML = e.getResponseBodyAsString();
+ statusCode = e.getStatusCode();
+ } catch(HttpServerErrorException e) {
+ log.error("request > HttpServerErrorException 발생 : " + e.toString());
+ resultXML = e.getResponseBodyAsString();
+ statusCode = e.getStatusCode();
+ }
+ } else if(method == HttpMethod.POST) {
+ MultiValueMap parameters = makeRequestParamMultiValueMap(reqVO);
+ parameters.forEach((k, v) -> log.debug("params > " + k + " : " + v));
+ HttpEntity> requestEntity = new HttpEntity(parameters, headers);
+ try {
+ responseEntity = restTemplate.postForEntity(url, requestEntity , String.class);
+ statusCode = responseEntity.getStatusCode();
+ resultXML = responseEntity.getBody();
+ } catch(HttpClientErrorException e) {
+ log.error("request > HttpClientErrorException 발생 : " + e.toString());
+ resultXML = e.getResponseBodyAsString();
+ statusCode = e.getStatusCode();
+ } catch(HttpServerErrorException e) {
+ log.error("request > HttpServerErrorException 발생 : " + e.toString());
+ resultXML = e.getResponseBodyAsString();
+ statusCode = e.getStatusCode();
+ }
+ } else {
+ String message = "RESTFul API Http Method 설정 오류입니다. : POST, GET 방식만 허용됩니다.";
+ log.error("request > " + message);
+ return makeErrorRes("E_ERR_METHOD", message);
+ }
+
+ //-----------------------------------
+ // 응답 처리
+ //-----------------------------------
+ log.debug("RES StatusCode : " + statusCode);
+ log.debug("RES resultXML : " + resultXML);
+
+ // 응답 자료 객체화
+ resVO = convertXmlToResVO(resultXML);
+
+ // 처리결과 코드 확인
+ if(StringUtil.isEmpty(resVO.getResultCode())) {
+ String resultMessage = resVO.getResultMessage();
+ if (statusCode == HttpStatus.OK) {
+ resVO.setResultCode("S_HTTP_STATUS_OK");
+ resVO.setResultMessage(StringUtil.isEmpty(resultMessage) ? "정상처리되었습니다." : resultMessage);
+ } else {
+ resVO.setResultCode("E_STATUS_CODE_FAIL");
+ resVO.setResultMessage(StringUtil.isEmpty(resultMessage) ? String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString()) : resultMessage);
+ }
+ }
+
+ log.debug("RES resVO : resultCode = " + resVO.getResultCode());
+ log.debug("RES resVO : resultMessage = " + resVO.getResultMessage());
+
+ }catch(HttpClientErrorException e) {
+ log.error("request > HttpClientErrorException 발생 : " + e.toString());
+ return makeErrorRes("E_REQ_HTTPCLIENTERROREXCEPTION", e.toString());
+ }catch(HttpServerErrorException e) {
+ log.error("request > HttpServerErrorException 발생 : " + e.toString());
+ return makeErrorRes("E_REQ_HTTPSERVERERROREXCEPTION", e.toString());
+ } catch(Exception e) {
+ log.error("request > Exception 발생 : " + e.toString());
+ return makeErrorRes("E_REQ_EXCEPTION", e.toString());
+ }
+
+ return resVO;
}
+ /**
+ * [POST용] 요청 VO의 입력변수값을 API 요청을 위한 MultiValueMap 형태로 변환한다.
+ *
+ * @param reqVO
+ * @return
+ */
+ public static MultiValueMap makeRequestParamMultiValueMap(DataApiReqVO reqVO) {
+
+ MultiValueMap map = new LinkedMultiValueMap();
+
+ // 추가 정보
+ if(reqVO.hasInfo()) {
+ HashMap info = reqVO.getInfo();
+ for(String key : info.keySet()) {
+ String val = null;
+ if(DataApiVO.XML_EL_NAME_MB_INFO_ID.equals(key)) {
+ val = reqVO.getEncMbInfoId();
+ } else {
+ val = info.get(key);
+ }
+
+ /*
+ String encVal = null;
+ try {
+ encVal = URLEncoder.encode((String)val, "UTF-8");
+ } catch(Exception e) {
+ log.error("makeRequestParamUrl > " + e.toString());
+ continue;
+ }
+ */
+
+ map.add(key, val);
+ }
+ }
+
+ if(reqVO.hasList()) {
+ HashMap>> listMap = reqVO.getListMap();
+ if(listMap != null) {
+ for(String listName : listMap.keySet() ) {
+ List> list = listMap.get(listName);
+
+ // 목록변수명은 있으나, 값이 없는 경우, 빈 배열 JSON값 설정
+ if(list == null || list.size() < 1) {
+ map.add(listName, "[]");
+ continue;
+ }
+
+ // 목록변수명에 대한 목록 자료 존재하는 경우, JSON 생성 처리
+ map.add(listName, makeJsonStrFromListMap(list));
+
+ } // for
+ } // if(listMap != null)
+ } // if(reqVO.hasList())
+
+ // 요청 파라메타 확인
+ for(String key : map.keySet()) {
+ log.debug("MultiValueMap > " + key + "=" + map.get(key));
+ }
+
+ return map;
+ }
+
+ /**
+ * [GET용] 요청 VO의 입력변수값을 API 요청을 위한 URL 쿼리 형태의 문자열로 리턴한다.
+ *
+ * @param url
+ * @param reqVO
+ * @return
+ */
+ public static String makeRequestParamUrl(String url, DataApiReqVO reqVO) {
+
+ UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
+
+ // 추가 정보
+ if(reqVO.hasInfo()) {
+ HashMap info = reqVO.getInfo();
+ for(String key : info.keySet()) {
+ Object val = null;
+ if(DataApiVO.XML_EL_NAME_MB_INFO_ID.equals(key)) {
+ val = reqVO.getEncMbInfoId();
+ } else {
+ val = info.get(key);
+ }
+ /*
+ String encVal = null;
+ try {
+ encVal = URLEncoder.encode((String)val, "UTF-8");
+ } catch(Exception e) {
+ log.error("makeRequestParamUrl > " + e.toString());
+ continue;
+ }*/
+ builder.queryParam(key, (String)val);
+ }
+ }
+
+ if(reqVO.hasList()) {
+ HashMap>> listMap = reqVO.getListMap();
+ if(listMap != null) {
+ for(String listName : listMap.keySet() ) {
+ List> list = listMap.get(listName);
+
+ // 목록변수명은 있으나, 값이 없는 경우, 빈 배열 JSON값 설정
+ if(list == null || list.size() < 1) {
+ builder.queryParam(listName, "[]");
+ continue;
+ }
+
+ // 목록변수명에 대한 목록 자료 존재하는 경우, JSON 생성 처리
+ builder.queryParam(listName, makeJsonStrFromListMap(list));
+
+ } // for
+ } // if(listMap != null)
+ } // if(reqVO.hasList())
+
+ String retUrl = builder.toUriString();
+ log.debug("makeRequestParamUrl > queryUrl = " + retUrl);
+
+ return retUrl;
+ }
+
+ /**
+ * HashMap를 목록의 요소로 하는 리스트를 받아서 해당 요소들의 배열을 가진 JSON 객체 문자열을 생성하여 리턴한다.
+ * 예 : [{"name":"James", "city":"Miracle", ...}, ..., {"name":"James", "city":"Miracle", ...}]
+ *
+ * @param list
+ * @return
+ */
+ public static String makeJsonStrFromListMap(List> list) {
+
+ // 목록변수명은 있으나, 값이 없는 경우, 빈 배열 JSON값 설정
+ if(list == null || list.size() < 1) {
+ return "[]";
+ }
+
+ // 목록변수명에 대한 목록 자료 존재하는 경우, JSON 생성 처리
+ String jsonListStr = "";
+ for(int i=0; i record = list.get(i);
+
+ String jsonRecordStr = makeJsonStrFromMap(record);
+ if(StringUtil.isEmpty(jsonRecordStr)) continue;
+
+ if(jsonListStr.length() > 0) jsonListStr += ",";
+ jsonListStr += jsonRecordStr;
+ }
+ return "[" + jsonListStr + "]";
+ }
+
+ /**
+ * HashMap을 받아서 해당 요소들을 맴버변수로 하는 JSON객체 문자열을 생성하여 리턴한다.
+ * 예 : {"name":"James", "city":"Miracle", ...}
+ *
+ * @param record
+ * @return
+ */
+ public static String makeJsonStrFromMap(HashMap record) {
+ if(record == null || record.size() < 1) return null;
+
+ String jsonRecordStr = "";
+ for(String subKey : record.keySet()) {
+ String subVal = record.get(subKey);
+ if(jsonRecordStr.length() > 0) jsonRecordStr += ",";
+ jsonRecordStr += "\"" + subKey + ":" + (subVal == null? "null" : "\"" + subVal + "\"");
+ }
+
+ return "{" + jsonRecordStr + "}";
+ }
+
+ /**
+ * 요청전 공통 필수 입력 매개변수를 체크하여 결과를 리턴한다.
+ *
+ * @param reqVO
+ * @return
+ * @throws Exception :
+ */
+ public static DataApiResVO checkReqCommonParams(DataApiReqVO reqVO) {
+
+ if(reqVO == null) {
+ return new DataApiResVO("ERR_NO_REQ", "데이터송수신 요청객체가 존재하지 않습니다.");
+ }
+
+ if(StringUtil.isEmpty(reqVO.getReqUrl())) {
+ return new DataApiResVO("ERR_NO_RURL", "데이터 요청 업무ID에 대한 URL/RUI 정보가 존재하지 않습니다.");
+ }
+
+ if(reqVO.getReqMethod() == null) {
+ return new DataApiResVO("ERR_NO_METHOD", "데이터 요청 방식 정보가 존재하지 않습니다.");
+ }
+
+ return null;
+ }
+
+ /**
+ * 처리결과 정보를 입력받아 DataApiResVO를 생성한다.
+ *
+ * @param resultCode
+ * @param resultMessage
+ * @return
+ */
+ public static DataApiResVO makeErrorRes(String resultCode, String resultMessage) {
+ return new DataApiResVO(resultCode, resultMessage);
+ }
+
+ /**
+ * 응답받은 XML 문자열을 DataApiResVO (내부 Map객체 포함) 객체로 변환하여 리턴한다.
+ *
+ * @param xmlStr
+ * @return
+ */
+ public static DataApiResVO convertXmlToResVO(String xmlStr) {
+
+ DataApiResVO resVO = new DataApiResVO();
+ Map map = null;
+
+ try {
+ map = XmlConverter.convert(xmlStr, DataApiVO.XML_EL_NAME_ROOT_NAME);
+ } catch(Exception e) {
+ resVO.setResultCode("ERR_RES_XML_FORMAT");
+ resVO.setResultMessage(String.format("올바르지 않은 XML 형식의 응답입니다. : [%s]", xmlStr));
+ log.error("convertXmlToResVO > " + resVO.getResultMessage());
+ e.printStackTrace();
+ return resVO;
+ }
+
+ // 처리결과 확인
+ List> recordList = null;
+ for( String key : map.keySet()) {
+ if(key.equalsIgnoreCase(DataApiVO.XML_EL_NAME_RESULT_CODE)) resVO.setResultCode((String)map.get(key));
+ else if(key.equalsIgnoreCase(DataApiVO.XML_EL_NAME_RESULT_MESSAGE)) resVO.setResultMessage((String)map.get(key));
+ else if(key.equalsIgnoreCase(DataApiVO.XML_EL_NAME_RECORD)) {
+ // 다건 목록 데이터인 경우
+ Object obj = map.get(DataApiVO.XML_EL_NAME_RECORD);
+ if(obj instanceof HashMap) {
+ // 맵인 경우, 리스트형식으로 저장 처리
+ List> list = new ArrayList>();
+ list.add((HashMap)obj);
+ resVO.setList(DataApiVO.XML_EL_NAME_RECORD, list);
+ } else if(obj instanceof List) {
+ resVO.setList(DataApiVO.XML_EL_NAME_RECORD, (List)obj);
+ } else {
+ resVO.setResultCode("ERR_RES_XML_FORMAT_RECORD");
+ resVO.setResultMessage(DataApiVO.XML_EL_NAME_RECORD + " 요소가 알수 없는 형식으로 객체화되었습니다. 확인바랍니다. : " + obj.toString());
+ log.error("convertXmlToResVO > " + resVO.getResultMessage());
+ return resVO;
+ }
+ } else resVO.putInfoItem(key, (String)map.get(key));
+ }
+
+ return resVO;
+ }
+
}
diff --git a/src/main/java/nlib/restful/service/DataApiReqVO.java b/src/main/java/nlib/restful/DataApiReqVO.java
similarity index 98%
rename from src/main/java/nlib/restful/service/DataApiReqVO.java
rename to src/main/java/nlib/restful/DataApiReqVO.java
index 17be6c81..419a74bd 100644
--- a/src/main/java/nlib/restful/service/DataApiReqVO.java
+++ b/src/main/java/nlib/restful/DataApiReqVO.java
@@ -1,4 +1,4 @@
-package nlib.restful.service;
+package nlib.restful;
import org.springframework.http.HttpMethod;
import nlib.cmm.crypto.AriaCrypto;
diff --git a/src/main/java/nlib/restful/service/DataApiResVO.java b/src/main/java/nlib/restful/DataApiResVO.java
similarity index 97%
rename from src/main/java/nlib/restful/service/DataApiResVO.java
rename to src/main/java/nlib/restful/DataApiResVO.java
index 779066dd..32fa60f4 100644
--- a/src/main/java/nlib/restful/service/DataApiResVO.java
+++ b/src/main/java/nlib/restful/DataApiResVO.java
@@ -1,4 +1,4 @@
-package nlib.restful.service;
+package nlib.restful;
import nlib.util.StringUtil;
diff --git a/src/main/java/nlib/restful/service/DataApiVO.java b/src/main/java/nlib/restful/DataApiVO.java
similarity index 99%
rename from src/main/java/nlib/restful/service/DataApiVO.java
rename to src/main/java/nlib/restful/DataApiVO.java
index f69763cc..fdf1d75b 100644
--- a/src/main/java/nlib/restful/service/DataApiVO.java
+++ b/src/main/java/nlib/restful/DataApiVO.java
@@ -1,4 +1,4 @@
-package nlib.restful.service;
+package nlib.restful;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/src/main/java/nlib/restful/service/XmlConverter.java b/src/main/java/nlib/restful/XmlConverter.java
similarity index 99%
rename from src/main/java/nlib/restful/service/XmlConverter.java
rename to src/main/java/nlib/restful/XmlConverter.java
index 3b97ecce..4c9cf4e2 100644
--- a/src/main/java/nlib/restful/service/XmlConverter.java
+++ b/src/main/java/nlib/restful/XmlConverter.java
@@ -1,4 +1,4 @@
-package nlib.restful.service;
+package nlib.restful;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
diff --git a/src/main/java/nlib/restful/service/DataApiInterface.java b/src/main/java/nlib/restful/service/DataApiInterface.java
deleted file mode 100644
index 684d4992..00000000
--- a/src/main/java/nlib/restful/service/DataApiInterface.java
+++ /dev/null
@@ -1,307 +0,0 @@
-package nlib.restful.service;
-
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import nlib.util.StringUtil;
-
-/**
- *
- * @Class Name : DataApiInterface.java
- *
- * @Description : DAO에서 상속할 DataApi의 부모 클래스들을 위한 인터페이스
- *
- *
- * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
- *
- *
- *
- * @ ------------ -------- ---------------------------
- * @ 수정일 수정자 수정내용
- * @ ------------ -------- ---------------------------
- * @ 2021. 7. 9. KNKIM 최초 생성
- *
- *
- * @author 이씨플라자 * DIGITALSHIP KNKIM
- * @since 2021. 7. 9.
- * @version 1.0
- *
- */
-public interface DataApiInterface {
-
- static final Logger log = LoggerFactory.getLogger(DataApiInterface.class);
-
- /**
- * 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다.
- *
- * @param reqVO
- * @param method
- * @return
- */
- public DataApiResVO request(DataApiReqVO reqVO);
-
-
- /**
- * [POST용] 요청 VO의 입력변수값을 API 요청을 위한 MultiValueMap 형태로 변환한다.
- *
- * @param reqVO
- * @return
- */
- public static MultiValueMap makeRequestParamMultiValueMap(DataApiReqVO reqVO) {
-
- MultiValueMap map = new LinkedMultiValueMap();
-
- // 추가 정보
- if(reqVO.hasInfo()) {
- HashMap info = reqVO.getInfo();
- for(String key : info.keySet()) {
- String val = null;
- if(DataApiVO.XML_EL_NAME_MB_INFO_ID.equals(key)) {
- val = reqVO.getEncMbInfoId();
- } else {
- val = info.get(key);
- }
-
- /*
- String encVal = null;
- try {
- encVal = URLEncoder.encode((String)val, "UTF-8");
- } catch(Exception e) {
- log.error("makeRequestParamUrl > " + e.toString());
- continue;
- }
- */
-
- map.add(key, val);
- }
- }
-
- if(reqVO.hasList()) {
- HashMap>> listMap = reqVO.getListMap();
- if(listMap != null) {
- for(String listName : listMap.keySet() ) {
- List> list = listMap.get(listName);
-
- // 목록변수명은 있으나, 값이 없는 경우, 빈 배열 JSON값 설정
- if(list == null || list.size() < 1) {
- map.add(listName, "[]");
- continue;
- }
-
- // 목록변수명에 대한 목록 자료 존재하는 경우, JSON 생성 처리
- map.add(listName, makeJsonStrFromListMap(list));
-
- } // for
- } // if(listMap != null)
- } // if(reqVO.hasList())
-
- // 요청 파라메타 확인
- for(String key : map.keySet()) {
- log.debug("MultiValueMap > " + key + "=" + map.get(key));
- }
-
- return map;
- }
-
- /**
- * [GET용] 요청 VO의 입력변수값을 API 요청을 위한 URL 쿼리 형태의 문자열로 리턴한다.
- *
- * @param url
- * @param reqVO
- * @return
- */
- public static String makeRequestParamUrl(String url, DataApiReqVO reqVO) {
-
- UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
-
- // 추가 정보
- if(reqVO.hasInfo()) {
- HashMap info = reqVO.getInfo();
- for(String key : info.keySet()) {
- Object val = null;
- if(DataApiVO.XML_EL_NAME_MB_INFO_ID.equals(key)) {
- val = reqVO.getEncMbInfoId();
- } else {
- val = info.get(key);
- }
- /*
- String encVal = null;
- try {
- encVal = URLEncoder.encode((String)val, "UTF-8");
- } catch(Exception e) {
- log.error("makeRequestParamUrl > " + e.toString());
- continue;
- }*/
- builder.queryParam(key, (String)val);
- }
- }
-
- if(reqVO.hasList()) {
- HashMap>> listMap = reqVO.getListMap();
- if(listMap != null) {
- for(String listName : listMap.keySet() ) {
- List> list = listMap.get(listName);
-
- // 목록변수명은 있으나, 값이 없는 경우, 빈 배열 JSON값 설정
- if(list == null || list.size() < 1) {
- builder.queryParam(listName, "[]");
- continue;
- }
-
- // 목록변수명에 대한 목록 자료 존재하는 경우, JSON 생성 처리
- builder.queryParam(listName, makeJsonStrFromListMap(list));
-
- } // for
- } // if(listMap != null)
- } // if(reqVO.hasList())
-
- String retUrl = builder.toUriString();
- log.debug("makeRequestParamUrl > queryUrl = " + retUrl);
-
- return retUrl;
- }
-
- /**
- * HashMap를 목록의 요소로 하는 리스트를 받아서 해당 요소들의 배열을 가진 JSON 객체 문자열을 생성하여 리턴한다.
- * 예 : [{"name":"James", "city":"Miracle", ...}, ..., {"name":"James", "city":"Miracle", ...}]
- *
- * @param list
- * @return
- */
- public static String makeJsonStrFromListMap(List> list) {
-
- // 목록변수명은 있으나, 값이 없는 경우, 빈 배열 JSON값 설정
- if(list == null || list.size() < 1) {
- return "[]";
- }
-
- // 목록변수명에 대한 목록 자료 존재하는 경우, JSON 생성 처리
- String jsonListStr = "";
- for(int i=0; i record = list.get(i);
-
- String jsonRecordStr = makeJsonStrFromMap(record);
- if(StringUtil.isEmpty(jsonRecordStr)) continue;
-
- if(jsonListStr.length() > 0) jsonListStr += ",";
- jsonListStr += jsonRecordStr;
- }
- return "[" + jsonListStr + "]";
- }
-
- /**
- * HashMap을 받아서 해당 요소들을 맴버변수로 하는 JSON객체 문자열을 생성하여 리턴한다.
- * 예 : {"name":"James", "city":"Miracle", ...}
- *
- * @param record
- * @return
- */
- public static String makeJsonStrFromMap(HashMap record) {
- if(record == null || record.size() < 1) return null;
-
- String jsonRecordStr = "";
- for(String subKey : record.keySet()) {
- String subVal = record.get(subKey);
- if(jsonRecordStr.length() > 0) jsonRecordStr += ",";
- jsonRecordStr += "\"" + subKey + ":" + (subVal == null? "null" : "\"" + subVal + "\"");
- }
-
- return "{" + jsonRecordStr + "}";
- }
-
- /**
- * 요청전 공통 필수 입력 매개변수를 체크하여 결과를 리턴한다.
- *
- * @param reqVO
- * @return
- * @throws Exception :
- */
- public static DataApiResVO checkReqCommonParams(DataApiReqVO reqVO) {
-
- if(reqVO == null) {
- return new DataApiResVO("ERR_NO_REQ", "데이터송수신 요청객체가 존재하지 않습니다.");
- }
-
- if(StringUtil.isEmpty(reqVO.getReqUrl())) {
- return new DataApiResVO("ERR_NO_RURL", "데이터 요청 업무ID에 대한 URL/RUI 정보가 존재하지 않습니다.");
- }
-
- if(reqVO.getReqMethod() == null) {
- return new DataApiResVO("ERR_NO_METHOD", "데이터 요청 방식 정보가 존재하지 않습니다.");
- }
-
- return null;
- }
-
- /**
- * 처리결과 정보를 입력받아 DataApiResVO를 생성한다.
- *
- * @param resultCode
- * @param resultMessage
- * @return
- */
- public static DataApiResVO makeErrorRes(String resultCode, String resultMessage) {
- return new DataApiResVO(resultCode, resultMessage);
- }
-
- /**
- * 응답받은 XML 문자열을 DataApiResVO (내부 Map객체 포함) 객체로 변환하여 리턴한다.
- *
- * @param xmlStr
- * @return
- */
- public static DataApiResVO convertXmlToResVO(String xmlStr) {
-
- DataApiResVO resVO = new DataApiResVO();
- Map map = null;
-
- try {
- map = XmlConverter.convert(xmlStr, DataApiVO.XML_EL_NAME_ROOT_NAME);
- } catch(Exception e) {
- resVO.setResultCode("ERR_RES_XML_FORMAT");
- resVO.setResultMessage(String.format("올바르지 않은 XML 형식의 응답입니다. : [%s]", xmlStr));
- log.error("convertXmlToResVO > " + resVO.getResultMessage());
- e.printStackTrace();
- return resVO;
- }
-
- // 처리결과 확인
- List> recordList = null;
- for( String key : map.keySet()) {
- if(key.equalsIgnoreCase(DataApiVO.XML_EL_NAME_RESULT_CODE)) resVO.setResultCode((String)map.get(key));
- else if(key.equalsIgnoreCase(DataApiVO.XML_EL_NAME_RESULT_MESSAGE)) resVO.setResultMessage((String)map.get(key));
- else if(key.equalsIgnoreCase(DataApiVO.XML_EL_NAME_RECORD)) {
- // 다건 목록 데이터인 경우
- Object obj = map.get(DataApiVO.XML_EL_NAME_RECORD);
- if(obj instanceof HashMap) {
- // 맵인 경우, 리스트형식으로 저장 처리
- List> list = new ArrayList>();
- list.add((HashMap)obj);
- resVO.setList(DataApiVO.XML_EL_NAME_RECORD, list);
- } else if(obj instanceof List) {
- resVO.setList(DataApiVO.XML_EL_NAME_RECORD, (List)obj);
- } else {
- resVO.setResultCode("ERR_RES_XML_FORMAT_RECORD");
- resVO.setResultMessage(DataApiVO.XML_EL_NAME_RECORD + " 요소가 알수 없는 형식으로 객체화되었습니다. 확인바랍니다. : " + obj.toString());
- log.error("convertXmlToResVO > " + resVO.getResultMessage());
- return resVO;
- }
- } else resVO.putInfoItem(key, (String)map.get(key));
- }
-
- return resVO;
- }
-}
diff --git a/src/main/java/nlib/restful/service/DataApiServerResponseVO.java b/src/main/java/nlib/restful/service/DataApiServerResponseVO.java
deleted file mode 100644
index f4514df5..00000000
--- a/src/main/java/nlib/restful/service/DataApiServerResponseVO.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package nlib.restful.service;
-
-/**
- *
- * @Class Name : DataApiServerResponseVO.java
- *
- * @Description : RESUTful 임시 서버에서 응답을 위해 사용하는 VO 클래스
- *
- *
- * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
- *
- *
- *
- * @ ------------ -------- ---------------------------
- * @ 수정일 수정자 수정내용
- * @ ------------ -------- ---------------------------
- * @ 2021. 7. 9. KNKIM 최초 생성
- *
- *
- * @author 이씨플라자 * DIGITALSHIP KNKIM
- * @since 2021. 7. 9.
- * @version 1.0
- *
- */
-public class DataApiServerResponseVO {
-
- private String code;
-
- private String message;
-
- /**
- * 생성자 : 처리결과코드와 메시지를 입력받아 DataApiServerResponseVO 객체를 생성한다.
- * @param code
- * @param message
- */
- public DataApiServerResponseVO(String code, String message) {
- this.code = code;
- this.message = message;
- }
-
- /**
- * 처리결과코드 리턴한다.
- *
- * @return
- */
- public String getCode() {
- return code;
- }
-
- /**
- * 처리결과메시지 리턴한다.
- *
- * @return
- */
- public String getMessage() {
- return message;
- }
-
-}
diff --git a/src/main/java/nlib/restful/service/impl/DataApiRESTful.java b/src/main/java/nlib/restful/service/impl/DataApiRESTful.java
deleted file mode 100644
index f858bda3..00000000
--- a/src/main/java/nlib/restful/service/impl/DataApiRESTful.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package nlib.restful.service.impl;
-
-import java.nio.charset.StandardCharsets;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.http.converter.StringHttpMessageConverter;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.HttpClientErrorException;
-import org.springframework.web.client.HttpServerErrorException;
-import org.springframework.web.client.RestTemplate;
-
-import nlib.restful.service.DataApiInterface;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
-import nlib.util.StringUtil;
-
-/**
- *
- * @Class Name : DataApiRESTful.java
- *
- * @Description : 통합자료관리시스템에 RESTful API를 통해 질의/응답을 처리한다.
- *
- *
- * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
- *
- *
- *
- * @ ------------ -------- ---------------------------
- * @ 수정일 수정자 수정내용
- * @ ------------ -------- ---------------------------
- * @ 2021. 6. 22. KNKIM 최초 생성
- *
- *
- * @author 이씨플라자 * DIGITALSHIP KNKIM
- * @since 2021. 6. 22.
- * @version 1.0
- *
- */
-public class DataApiRESTful implements DataApiInterface {
-
- private static final Logger log = LoggerFactory.getLogger(DataApiRESTful.class);
-
- /* DataApi 접속 서버 정보 */
- @Value("#{properties['dataapi.server.ip']}")
- private String DAPI_SERVER_IP;
-
- @Value("#{properties['dataapi.server.port']}")
- private String DAPI_SERVER_PORT;
-
- @Value("#{properties['dataapi.server.protocol']}")
- private String DAPI_SERVER_PROTOCOL;
-
- /**
- * 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다.
- *
- * @param reqVO
- * @param method
- * @return
- */
- public DataApiResVO request(DataApiReqVO reqVO) {
-
- log.debug("request > " + reqVO.getReqMethod());
-
- DataApiResVO resVO = null;
-
- try {
-
- //-----------------------------------
- // 입력값 검증작업
- //-----------------------------------
- resVO = DataApiInterface.checkReqCommonParams(reqVO);
- if(resVO != null) return resVO;
- HttpMethod method = reqVO.getReqMethod();
-
- //-----------------------------------
- // 폼 파라메터 생성 작업 및 요청 처리
- //-----------------------------------
- String url = DAPI_SERVER_PROTOCOL + "://" + DAPI_SERVER_IP + ("80".equals(DAPI_SERVER_PORT) ? "" : ":" + DAPI_SERVER_PORT) + reqVO.getReqUrl();
- log.debug("REQ URL : " + url);
-
- HttpHeaders headers = new HttpHeaders();
- headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
-
- ResponseEntity responseEntity = null;
- RestTemplate restTemplate = new RestTemplate();
- restTemplate.getMessageConverters()
- .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
-
- HttpStatus statusCode = HttpStatus.OK;
- String resultXML = null;
-
- if(method == HttpMethod.GET) {
- HttpEntity requestEntity = new HttpEntity(headers);
- try {
- responseEntity = restTemplate.exchange (DataApiInterface.makeRequestParamUrl(url, reqVO), method, requestEntity, String.class);
- statusCode = responseEntity.getStatusCode();
- resultXML = responseEntity.getBody();
- } catch(HttpClientErrorException e) {
- log.error("request > HttpClientErrorException 발생 : " + e.toString());
- resultXML = e.getResponseBodyAsString();
- statusCode = e.getStatusCode();
- } catch(HttpServerErrorException e) {
- log.error("request > HttpServerErrorException 발생 : " + e.toString());
- resultXML = e.getResponseBodyAsString();
- statusCode = e.getStatusCode();
- }
- } else if(method == HttpMethod.POST) {
- MultiValueMap parameters = DataApiInterface.makeRequestParamMultiValueMap(reqVO);
- parameters.forEach((k, v) -> log.debug("params > " + k + " : " + v));
- HttpEntity> requestEntity = new HttpEntity(parameters, headers);
- try {
- responseEntity = restTemplate.postForEntity(url, requestEntity , String.class);
- statusCode = responseEntity.getStatusCode();
- resultXML = responseEntity.getBody();
- } catch(HttpClientErrorException e) {
- log.error("request > HttpClientErrorException 발생 : " + e.toString());
- resultXML = e.getResponseBodyAsString();
- statusCode = e.getStatusCode();
- } catch(HttpServerErrorException e) {
- log.error("request > HttpServerErrorException 발생 : " + e.toString());
- resultXML = e.getResponseBodyAsString();
- statusCode = e.getStatusCode();
- }
- } else {
- String message = "RESTFul API Http Method 설정 오류입니다. : POST, GET 방식만 허용됩니다.";
- log.error("request > " + message);
- return DataApiInterface.makeErrorRes("E_ERR_METHOD", message);
- }
-
- //-----------------------------------
- // 응답 처리
- //-----------------------------------
- log.debug("RES StatusCode : " + statusCode);
- log.debug("RES resultXML : " + resultXML);
-
- // 응답 자료 객체화
- resVO = DataApiInterface.convertXmlToResVO(resultXML);
-
- // 처리결과 코드 확인
- if(StringUtil.isEmpty(resVO.getResultCode())) {
- String resultMessage = resVO.getResultMessage();
- if (statusCode == HttpStatus.OK) {
- resVO.setResultCode("S_HTTP_STATUS_OK");
- resVO.setResultMessage(StringUtil.isEmpty(resultMessage) ? "정상처리되었습니다." : resultMessage);
- } else {
- resVO.setResultCode("E_STATUS_CODE_FAIL");
- resVO.setResultMessage(StringUtil.isEmpty(resultMessage) ? String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString()) : resultMessage);
- }
- }
-
- log.debug("RES resVO : resultCode = " + resVO.getResultCode());
- log.debug("RES resVO : resultMessage = " + resVO.getResultMessage());
-
- }catch(HttpClientErrorException e) {
- log.error("request > HttpClientErrorException 발생 : " + e.toString());
- return DataApiInterface.makeErrorRes("E_REQ_HTTPCLIENTERROREXCEPTION", e.toString());
- }catch(HttpServerErrorException e) {
- log.error("request > HttpServerErrorException 발생 : " + e.toString());
- return DataApiInterface.makeErrorRes("E_REQ_HTTPSERVERERROREXCEPTION", e.toString());
- } catch(Exception e) {
- log.error("request > Exception 발생 : " + e.toString());
- return DataApiInterface.makeErrorRes("E_REQ_EXCEPTION", e.toString());
- }
-
- return resVO;
- }
-
-
-}
diff --git a/src/main/java/nlib/restful/service/impl/DataApiTempXml.java b/src/main/java/nlib/restful/service/impl/DataApiTempXml.java
deleted file mode 100644
index bc8f90fc..00000000
--- a/src/main/java/nlib/restful/service/impl/DataApiTempXml.java
+++ /dev/null
@@ -1,178 +0,0 @@
-package nlib.restful.service.impl;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.util.MultiValueMap;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-
-import nlib.restful.service.DataApiInterface;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
-import nlib.restful.service.DataApiServerResponseVO;
-import nlib.restful.service.DataApiVO;
-import nlib.util.StringUtil;
-
-/**
- *
- * @Class Name : DataApiTempXml.java
- *
- * @Description : DataAPI의 요청에 대해서 로컬의 테스트용 XML 파일을 읽어서 응답을 처리한다. (자체 선개발 진행용)
- *
- *
- * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
- *
- *
- *
- * @ ------------ -------- ---------------------------
- * @ 수정일 수정자 수정내용
- * @ ------------ -------- ---------------------------
- * @ 2021. 7. 9. KNKIM 최초 생성
- *
- *
- * @author 이씨플라자 * DIGITALSHIP KNKIM
- * @since 2021. 7. 9.
- * @version 1.0
- *
- */
-public class DataApiTempXml implements DataApiInterface {
-
- private static final Logger log = LoggerFactory.getLogger(DataApiTempXml.class);
-
- /* DataApi 접속 서버 정보 */
- @Value("#{properties['dataapi.temp.xml.path']}")
- private String DAPI_TEMP_XML_PATH;
-
-
- /**
- * 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다.
- *
- * @param reqVO
- * @param method
- * @return
- */
- public DataApiResVO request(DataApiReqVO reqVO) {
-
- log.debug("request > " + reqVO.getReqMethod());
-
- DataApiResVO resVO = null;
-
- try {
- //-----------------------------------
- // 입력값 검증작업
- //-----------------------------------
- resVO = DataApiInterface.checkReqCommonParams(reqVO);
- if(resVO != null) return resVO;
- HttpMethod method = reqVO.getReqMethod();
-
- //-----------------------------------
- // 폼 파라메터 생성 작업 (요청데이터 확인용)
- //-----------------------------------
- HttpHeaders headers = new HttpHeaders();
- headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
- MultiValueMap parameters = DataApiInterface.makeRequestParamMultiValueMap(reqVO);
-
- //-----------------------------------
- // 응답 처리
- //-----------------------------------
- HttpStatus statusCode = HttpStatus.OK;
- String resultXML = getTempDataFromXmlFile(reqVO);
- //log.debug("RES resultXML : " + resultXML);
-
- // 응답 자료 객체화
- resVO = DataApiInterface.convertXmlToResVO(resultXML);
-
- // 처리결과 코드 확인
- if(StringUtil.isEmpty(resVO.getResultCode())) {
- String resultMessage = resVO.getResultMessage();
- if (statusCode == HttpStatus.OK) {
- resVO.setResultCode("S_HTTP_STATUS_OK");
- resVO.setResultMessage(StringUtil.isEmpty(resultMessage) ? "정상처리되었습니다." : resultMessage);
- } else {
- resVO.setResultCode("E_STATUS_CODE_FAIL");
- resVO.setResultMessage(StringUtil.isEmpty(resultMessage) ? String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString()) : resultMessage);
- }
- }
-
- log.debug("RES resVO : resultCode = " + resVO.getResultCode());
- log.debug("RES resVO : resultMessage = " + resVO.getResultMessage());
-
- } catch(JsonProcessingException e) {
- log.error("JsonProcessingException at DataApiTempXml.request : " + e.toString());
- return DataApiInterface.makeErrorRes("E_REQ_EXCEPTION", e.toString());
- }
-
- return resVO;
- }
-
- /**
- * 요청 URI와 메소드를 기반으로 임시 응답 XML 파일을 찾아서 내용을 문자열로 리턴한다.
- *
- * @param reqVO
- * @param method
- * @return
- * @throws Exception
- */
- private String getTempDataFromXmlFile(DataApiReqVO reqVO) throws JsonProcessingException {
-
- HttpMethod method = reqVO.getReqMethod();
- String fileName = reqVO.getReqUrl().substring(1).replaceAll("/", ".");
- String xmlPath = DAPI_TEMP_XML_PATH + "/" + fileName + "_" + method.toString().toUpperCase() + ".xml";
- String returnXmlStr = null;
-
- log.info("XML FILE PATH : " + xmlPath);
-
-
- DataApiServerResponseVO resVO = null;
-
- File xmlFile = new File(xmlPath);
- if(!xmlFile.exists()) {
- resVO = new DataApiServerResponseVO("-20", String.format("%s 파일을 찾을 수 없습니다.",xmlPath));
- XmlMapper mapper = new XmlMapper();
- returnXmlStr = mapper.writer().withRootName("result").writeValueAsString(resVO);
- }
-
- if(resVO == null && !xmlFile.isFile()) {
- resVO = new DataApiServerResponseVO("-21", String.format("%s는 파일이어야 합니다.",xmlPath));
- XmlMapper mapper = new XmlMapper();
- returnXmlStr = mapper.writer().withRootName(DataApiVO.XML_EL_NAME_ROOT_NAME).writeValueAsString(resVO);
- }
-
- if(resVO == null) {
- StringBuilder strBd = new StringBuilder();
-
- try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(xmlPath),StandardCharsets.UTF_8))) {
-
- String line;
- int i = 0;
- while ((line = br.readLine()) != null) {
- strBd.append(line + "\n");
- }
- returnXmlStr = strBd.toString();
- } catch (IOException e) {
- log.error("XML 파일 읽는 중 오류 발생 : " + e.toString());
- resVO = new DataApiServerResponseVO("-22", String.format("%s 파일을 읽는 중 오류가 발생하였습니다(%s). ",xmlPath, e.toString()));
- XmlMapper mapper = new XmlMapper();
- returnXmlStr = mapper.writer().withRootName(DataApiVO.XML_EL_NAME_ROOT_NAME).writeValueAsString(resVO);
- }
-
- }
-
- //log.info("RESUTN XML STR : " + returnXmlStr);
- return returnXmlStr;
- }
-
-}
diff --git a/src/main/java/nlib/security/SecUserDetailsService.java b/src/main/java/nlib/security/SecUserDetailsService.java
index a697dedb..1e2df565 100644
--- a/src/main/java/nlib/security/SecUserDetailsService.java
+++ b/src/main/java/nlib/security/SecUserDetailsService.java
@@ -13,8 +13,8 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
/**
*
diff --git a/src/main/java/nlib/user/service/LoginService.java b/src/main/java/nlib/user/service/LoginService.java
index 5d963676..15def74c 100644
--- a/src/main/java/nlib/user/service/LoginService.java
+++ b/src/main/java/nlib/user/service/LoginService.java
@@ -6,8 +6,8 @@ import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
public interface LoginService
{
diff --git a/src/main/java/nlib/user/service/MemberService.java b/src/main/java/nlib/user/service/MemberService.java
index fdef04fa..f04c90dd 100644
--- a/src/main/java/nlib/user/service/MemberService.java
+++ b/src/main/java/nlib/user/service/MemberService.java
@@ -5,8 +5,8 @@ import java.util.HashMap;
import java.util.List;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
/**
* Description :
diff --git a/src/main/java/nlib/user/service/impl/LoginDAO.java b/src/main/java/nlib/user/service/impl/LoginDAO.java
index 60672283..5979dd1c 100644
--- a/src/main/java/nlib/user/service/impl/LoginDAO.java
+++ b/src/main/java/nlib/user/service/impl/LoginDAO.java
@@ -7,8 +7,8 @@ import org.springframework.stereotype.Repository;
import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import nlib.cmm.crypto.AriaCrypto;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import nlib.user.service.NlibLoginVO;
@Repository("loginDAO")
diff --git a/src/main/java/nlib/user/service/impl/LoginServiceImpl.java b/src/main/java/nlib/user/service/impl/LoginServiceImpl.java
index a45acc3c..6818fa82 100644
--- a/src/main/java/nlib/user/service/impl/LoginServiceImpl.java
+++ b/src/main/java/nlib/user/service/impl/LoginServiceImpl.java
@@ -21,8 +21,8 @@ import org.springframework.stereotype.Service;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
import nlib.cmm.session.SessionConfig;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import nlib.user.service.LoginService;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
diff --git a/src/main/java/nlib/user/service/impl/MemberDAO.java b/src/main/java/nlib/user/service/impl/MemberDAO.java
index c6e8f77b..13c69534 100644
--- a/src/main/java/nlib/user/service/impl/MemberDAO.java
+++ b/src/main/java/nlib/user/service/impl/MemberDAO.java
@@ -8,8 +8,8 @@ import org.springframework.stereotype.Repository;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import nlib.user.service.NlibLoginVO;
import nlib.user.service.NlibSmsVO;
diff --git a/src/main/java/nlib/user/service/impl/MemberServiceImpl.java b/src/main/java/nlib/user/service/impl/MemberServiceImpl.java
index c56b7355..316bfaaa 100644
--- a/src/main/java/nlib/user/service/impl/MemberServiceImpl.java
+++ b/src/main/java/nlib/user/service/impl/MemberServiceImpl.java
@@ -16,8 +16,8 @@ import org.springframework.stereotype.Service;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
import nlib.cmm.crypto.AriaCrypto;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiReqVO;
+import nlib.restful.DataApiResVO;
import nlib.user.service.MemberService;
import nlib.user.service.NlibLoginVO;
import nlib.user.service.NlibSmsVO;
diff --git a/src/main/java/nlib/user/web/UserInfoController.java b/src/main/java/nlib/user/web/UserInfoController.java
index 483be0fc..650c81e8 100644
--- a/src/main/java/nlib/user/web/UserInfoController.java
+++ b/src/main/java/nlib/user/web/UserInfoController.java
@@ -38,7 +38,7 @@ import nlib.col.service.CollectionVO;
import nlib.col.service.InterestService;
import nlib.col.service.ReadService;
import nlib.col.service.RentService;
-import nlib.restful.service.DataApiResVO;
+import nlib.restful.DataApiResVO;
import nlib.security.SecUserDetailsService;
import nlib.security.SecUserVO;
import nlib.user.service.LoginService;
diff --git a/src/main/resources/nlib/nlib.properties b/src/main/resources/nlib/nlib.properties
index ef7d5aa7..1b4e91fc 100644
--- a/src/main/resources/nlib/nlib.properties
+++ b/src/main/resources/nlib/nlib.properties
@@ -27,10 +27,13 @@ domain.host.localhost = nlib-dev
# \ub85c\uadf8\uc778/\ud68c\uc6d0\uac00\uc785\uad00\ub828 URL \uc815\ubcf4
#----------------------------------------
member.new.url = /login/memberSnsForm.do
+
# \ub85c\uadf8\uc778 \ub610\ub294 \uad8c\ud55c\uc5c6\ub294 \uacbd\uc6b0, \ub85c\uadf8\uc778\uc73c\ub85c \uc804\ud658\ucc98\ub9ac\ub418\uc5b4 \uc811\uc18d\ub418\ub294 \ucd5c\ucd08 \uc8fc\uc18c
login.url = /login/loginForm.do
+
# \ub85c\uadf8\uc778 \ubb38\uc81c \ubc1c\uc0dd \uc2dc, \ub2e4\uc2dc \ub9ac\ub2e4\uc774\ub809\ud2b8\ub420 \uc8fc\uc18c
login.back.url = /login/loginGuide.do
+
# \ud734\uba74\uacc4\uc88c \ud574\uc9c0\uc548\ub0b4 \uc8fc\uc18c
login.dormant.url = /login/activateDormantAccForm.do