From a6eeb6a1bd25ef2f3307fa1a38ec59d8ce2b47ef Mon Sep 17 00:00:00 2001 From: KNKIM Date: Fri, 1 Oct 2021 16:33:45 +0900 Subject: [PATCH 1/7] =?UTF-8?q?getParamStr=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nlib/cmm/NlibCommonController.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/nlib/cmm/NlibCommonController.java b/src/main/java/nlib/cmm/NlibCommonController.java index 490fc823..2374d2d9 100644 --- a/src/main/java/nlib/cmm/NlibCommonController.java +++ b/src/main/java/nlib/cmm/NlibCommonController.java @@ -401,4 +401,17 @@ public class NlibCommonController { return nlibLoginVO.isAlerted(); } + + public String getParamStr(Map paramMap, String paramName) { + return getParamStr(paramMap, paramName, null); + } + + public String getParamStr(Map paramMap, String paramName, String defValue) { + if(paramMap == null) return null; + if(StringUtil.isEmpty(paramName)) return null; + String value = (String)paramMap.get(paramName); + + return StringUtil.isEmpty(value) ? defValue : value; + } + } From 3358abbc5fff9caacf6290c8f7c43bc028fa288d Mon Sep 17 00:00:00 2001 From: KNKIM Date: Fri, 1 Oct 2021 16:48:45 +0900 Subject: [PATCH 2/7] =?UTF-8?q?DataApi=20=EA=B3=B5=ED=86=B5=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EC=88=98=EC=A0=95/=EB=B3=B4=EC=99=84=20=EB=B0=8F?= =?UTF-8?q?=20API=EC=84=9C=EB=B2=84=EC=99=80=EC=9D=98=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=88=98=ED=96=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nlib/col/service/RisVO.java | 307 +++++++++--------- src/main/java/nlib/restful/DataApi.java | 57 +--- .../restful/service/DataApiInterface.java | 268 ++++++++------- .../nlib/restful/service/DataApiReqVO.java | 135 +++----- .../nlib/restful/service/DataApiResVO.java | 90 +---- .../java/nlib/restful/service/DataApiVO.java | 288 ++++++++++++++++ .../nlib/restful/service/XmlConverter.java | 4 +- .../restful/service/impl/DataApiRESTful.java | 115 +++---- .../restful/service/impl/DataApiTempXml.java | 157 ++++----- .../sample/service/SampleDataApiService.java | 1 + .../impl/SampleDataApiServiceImpl.java | 12 +- .../sample/web/SampleDataApiController.java | 95 +++++- .../nlib/security/SpringSecurityConfig.java | 2 + src/main/resources/nlib/nlib.properties | 11 +- src/main/webapp/WEB-INF/tiles/inc/menu.jsp | 4 +- 15 files changed, 886 insertions(+), 660 deletions(-) create mode 100644 src/main/java/nlib/restful/service/DataApiVO.java diff --git a/src/main/java/nlib/col/service/RisVO.java b/src/main/java/nlib/col/service/RisVO.java index d18f3cde..de440d9c 100644 --- a/src/main/java/nlib/col/service/RisVO.java +++ b/src/main/java/nlib/col/service/RisVO.java @@ -1,155 +1,152 @@ -package nlib.col.service; - -import java.io.Serializable; - -/** - *
- * @Class Name : RisVO.java
- * 
- * @Description : Ris 통신규약 항목 VO
- * 
- * 
- * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
- *
- * 
- * - * @ ------------ -------- --------------------------- - * @ 수정일 수정자 수정내용 - * @ ------------ -------- --------------------------- - * @ 2021. 9. 23. JSYOO 최초 생성 - - * - * - * @author 이씨플라자 * DIGITALSHIP JSYOO - * @since 2021. 9. 23. - * @version 1.0 - * - */ -public class RisVO implements Serializable { - - /* 기존 지역 n 문화 사이트 RIS 항목 */ - private String TY; /* 참조유형 (ex: BOOK) */ - private String TI; /* 표제 (ex: 수원사랑 259호) */ - private String AB; /* 요약 */ - private String DA; /* 날짜 */ - private String PY; /* 발행 년도 (YYYY) */ - private String LA; /* 언어 (ex: Korean) */ - private String UR; /* URL */ - private String KW; /* 키워드 (ex: 수원사랑) */ - private String T2; /* 보조제목 (ex: 수원사랑 259호) */ - private String ER; /* 참조의 끝(비어있고 마지막 태그 여야 함) */ - - /* RIS 추가 항목 */ - private String ID; /* 자료번호 */ - private String T3; /* 자료제목 */ - private String M3; /* 주제분야명 */ - private String L4; /* 썸네일이미지 URL */ - private String M1; /* 관리 번호 */ - private String PB; /* 저자명 */ - private String LB; /* 상표 */ - - public String getTY() { - return TY; - } - public void setTY(String tY) { - TY = tY; - } - public String getTI() { - return TI; - } - public void setTI(String tI) { - TI = tI; - } - public String getAB() { - return AB; - } - public void setAB(String aB) { - AB = aB; - } - public String getDA() { - return DA; - } - public void setDA(String dA) { - DA = dA; - } - public String getPY() { - return PY; - } - public void setPY(String pY) { - PY = pY; - } - public String getLA() { - return LA; - } - public void setLA(String lA) { - LA = lA; - } - public String getUR() { - return UR; - } - public void setUR(String uR) { - UR = uR; - } - public String getKW() { - return KW; - } - public void setKW(String kW) { - KW = kW; - } - public String getT2() { - return T2; - } - public void setT2(String t2) { - T2 = t2; - } - public String getER() { - return ER; - } - public void setER(String eR) { - ER = eR; - } - public String getID() { - return ID; - } - public void setID(String iD) { - ID = iD; - } - public String getT3() { - return T3; - } - public void setT3(String t3) { - T3 = t3; - } - public String getM3() { - return M3; - } - public void setM3(String m3) { - M3 = m3; - } - public String getL4() { - return L4; - } - public void setL4(String l4) { - L4 = l4; - } - public String getM1() { - return M1; - } - public void setM1(String m1) { - M1 = m1; - } - public String getPB() { - return PB; - } - public void setPB(String pB) { - PB = pB; - } - public String getLB() { - return LB; - } - public void setLB(String lB) { - LB = lB; - } - - -} +package nlib.col.service; + +import java.io.Serializable; + +/** + *
+ * @Class Name : RisVO.java
+ * 
+ * @Description : Ris 통신규약 항목 VO
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 9. 23. JSYOO 최초 생성 + + * + * + * @author 이씨플라자 * DIGITALSHIP JSYOO + * @since 2021. 9. 23. + * @version 1.0 + * + */ +public class RisVO implements Serializable { + + /* 기존 지역 n 문화 사이트 RIS 항목 */ + private String typeDivCd; /* 참조유형 TY */ + private String title; /* 제목 TI */ + private String subTitle; /* 부제목 T2 */ + private String creatYyyy; /* 생산일자 (YYYY) PY */ + private String keyword; /* 키워드 (ex: 수원사랑) KW */ + private String UR; /* URL */ + + /*private String AB; 요약 + private String DA; 날짜 + private String LA; 언어 (ex: Korean) */ + + /* RIS 추가 항목 */ + private String masterId; /* 자료번호 ID */ + private String M3; /* 주제분야명 */ + private String rprsThumbUrl; /* 썸네일이미지 URL L4 */ + private String stakrmMngNo; /* 관리번호 M1 */ + private String producer; /* 생산자(저자) A1 */ + private String orgNm; /* 생산기관명 PP */ + + public String getTypeDivCd() { + return typeDivCd; + } + public String getTy() { + return typeDivCd; + } + public void setTypeDivCd(String typeDivCd) { + this.typeDivCd = typeDivCd; + } + public String getTitle() { + return title; + } + public String getTt() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getSubTitle() { + return subTitle; + } + public String getT2() { + return subTitle; + } + public void setSubTitle(String subTitle) { + this.subTitle = subTitle; + } + public String getCreatYyyy() { + return creatYyyy; + } + public String getPy() { + return creatYyyy; + } + public void setCreatYyyy(String creatYyyy) { + this.creatYyyy = creatYyyy; + } + public String getKeyword() { + return keyword; + } + public String getKw() { + return keyword; + } + public void setKeyword(String keyword) { + this.keyword = keyword; + } + public String getUR() { + return UR; + } + public void setUR(String uR) { + UR = uR; + } + public String getMasterId() { + return masterId; + } + public String getId() { + return masterId; + } + public void setMasterId(String masterId) { + this.masterId = masterId; + } + public String getM3() { + return M3; + } + public void setM3(String m3) { + M3 = m3; + } + public String getRprsThumbUrl() { + return rprsThumbUrl; + } + public String getL4() { + return rprsThumbUrl; + } + public void setRprsThumbUrl(String rprsThumbUrl) { + this.rprsThumbUrl = rprsThumbUrl; + } + public String getStakrmMngNo() { + return stakrmMngNo; + } + public String getM1() { + return stakrmMngNo; + } + public void setStakrmMngNo(String stakrmMngNo) { + this.stakrmMngNo = stakrmMngNo; + } + public String getProducer() { + return producer; + } + public String getA1() { + return producer; + } + public void setProducer(String producer) { + this.producer = producer; + } + public String getOrgNm() { + return orgNm; + } + public String getPp() { + return orgNm; + } + public void setOrgNm(String orgNm) { + this.orgNm = orgNm; + } +} diff --git a/src/main/java/nlib/restful/DataApi.java b/src/main/java/nlib/restful/DataApi.java index feb2ebbb..b571f27a 100644 --- a/src/main/java/nlib/restful/DataApi.java +++ b/src/main/java/nlib/restful/DataApi.java @@ -2,20 +2,12 @@ package nlib.restful; 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.util.MultiValueMap; -import org.springframework.web.client.RestTemplate; +import org.springframework.stereotype.Repository; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; import nlib.restful.service.impl.DataApiTempXml; -import nlib.util.StringUtil; +import nlib.restful.service.impl.DataApiRESTful; /** @@ -45,49 +37,14 @@ import nlib.util.StringUtil; * @version 1.0 * */ -public class DataApi extends DataApiTempXml { +@Repository("dataApi") +public class DataApi extends DataApiRESTful { // RESTFul 서버에 접속하여 요청/응답처리를 수행하는 경우 +//public class DataApi extends DataApiTempXml { // 로컬파일에서 읽어와서 요청/응답처리를 수행하는 경우 private static final Logger log = LoggerFactory.getLogger(DataApi.class); - - /** - * 조회 - * - * @param reqVO - * @return - */ - public DataApiResVO get(DataApiReqVO reqVO) { - return super.get(reqVO); - } - - /** - * 등록 - * - * @param reqVO - * @return - */ - public DataApiResVO put(DataApiReqVO reqVO) { - return super.put(reqVO); - } - - /** - * 수정 - * - * @param reqVO - * @return - */ - public DataApiResVO post(DataApiReqVO reqVO) { - return super.post(reqVO); - } - - /** - * 삭제 - * - * @param reqVO - * @return - */ - public DataApiResVO delete (DataApiReqVO reqVO) { - return super.delete(reqVO); + public DataApiResVO request(DataApiReqVO reqVO) { + return super.request(reqVO); } } diff --git a/src/main/java/nlib/restful/service/DataApiInterface.java b/src/main/java/nlib/restful/service/DataApiInterface.java index 804ce6cf..f730e420 100644 --- a/src/main/java/nlib/restful/service/DataApiInterface.java +++ b/src/main/java/nlib/restful/service/DataApiInterface.java @@ -1,13 +1,19 @@ package nlib.restful.service; +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; @@ -36,38 +42,6 @@ import nlib.util.StringUtil; public interface DataApiInterface { static final Logger log = LoggerFactory.getLogger(DataApiInterface.class); - - /** - * 조회 - * - * @param reqVO - * @return - */ - public DataApiResVO get(DataApiReqVO reqVO); - - /** - * 등록 - * - * @param reqVO - * @return - */ - public DataApiResVO put(DataApiReqVO reqVO); - - /** - * 수정 - * - * @param reqVO - * @return - */ - public DataApiResVO post(DataApiReqVO reqVO); - - /** - * 삭제 - * - * @param reqVO - * @return - */ - public DataApiResVO delete (DataApiReqVO reqVO); /** * 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다. @@ -76,39 +50,46 @@ public interface DataApiInterface { * @param method * @return */ - public DataApiResVO send(DataApiReqVO reqVO, HttpMethod method); + public DataApiResVO request(DataApiReqVO reqVO); /** - * 요청 VO를 Map 형태로 변환한다. + * [POST용] 요청 VO의 입력변수값을 API 요청을 위한 MultiValueMap 형태로 변환한다. * * @param reqVO * @return */ - public static MultiValueMap makeParamMap(DataApiReqVO reqVO) { + public static MultiValueMap makeRequestParamMultiValueMap(DataApiReqVO reqVO) { - MultiValueMap map = new LinkedMultiValueMap<>(); + MultiValueMap map = new LinkedMultiValueMap(); - // 공통 - map.add("rows", "" + reqVO.getPageSize()); - map.add("page", "" + reqVO.getPageIndex()); - // 추가 정보 if(reqVO.hasInfo()) { - HashMap info = reqVO.getInfo(); + HashMap info = reqVO.getInfo(); for(String key : info.keySet()) { - Object val = info.get(key); - if(val instanceof HashMap) { - HashMap subInfo = (HashMap)val; - for(String subKey : subInfo.keySet()) { - String subVal = subInfo.get(subKey); - map.add(subKey, subVal); - } - } else { - map.add(key, (String)val); - } + String val = info.get(key); + 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()) { @@ -118,13 +99,104 @@ public interface DataApiInterface { 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 = info.get(key); + 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()) + + log.debug("makeRequestParamUrl > queryUrl = " + builder.toUriString()); + + return builder.toUriString(); + } + + /** + * 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 + * @throws Exception : */ public static DataApiResVO checkReqCommonParams(DataApiReqVO reqVO) throws Exception { @@ -135,6 +207,10 @@ public interface DataApiInterface { 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; } @@ -162,75 +238,37 @@ public interface DataApiInterface { Map map = null; try { - map = XmlConverter.convert(xmlStr); + map = XmlConverter.convert(xmlStr, DataApiVO.XML_EL_NAME_ROOT_NAME); } catch(Exception e) { - e.printStackTrace(); - resVO.setResultCode("ERR_RES_XML_FORMAT"); resVO.setResultMessage(String.format("올바르지 않은 XML 형식의 응답입니다. : [%s]", xmlStr)); - + log.error("convertXmlToResVO > " + resVO.getResultMessage()); + e.printStackTrace(); return resVO; } // 처리결과 확인 - String commonKeyList = "|resulttype|code|message|page|totpages|records|".toLowerCase(); - String lowerKey = null; + List> recordList = null; for( String key : map.keySet()) { - - lowerKey = key.toLowerCase(); - if(commonKeyList.contains("|" + lowerKey + "|")) { - - if(lowerKey.equals("resulttype")) { - String resultType = (String)map.get(key); - if(!StringUtil.isEmpty(resultType) && resultType.toLowerCase().compareTo("success") == 0) { - resVO.setResultCode("S0000"); - } - } - - if(lowerKey.equals("code")) { - String code = (String)map.get(key); - int codeInt = 0; - try { - codeInt = Integer.parseInt(code); - - if(codeInt != 0) { - resVO.setResultCode(String.format("ERR_BIZERR(%s)", code)); - } else { - resVO.setResultCode("S0000"); - } - } catch(Exception e) { - if(StringUtil.isNotEmpty(code) && code.startsWith("S")) { - codeInt = 0; - resVO.setResultCode("S0000"); - } else { - resVO.setResultCode(String.format("ERR_BIZERR(%s)", code)); - log.error("회신 code 정보를 정수로 변환처리 중 오류가 발생하였습니다." + e.toString()); - codeInt = -1; - e.printStackTrace(); - } - } - } - - if(lowerKey.equals("message")) { - resVO.setResultMessage((String)map.get(key)); - } - - if(lowerKey.equals("page")) { - resVO.setPageIndex(StringUtil.toNumber((String)map.get(key))); - } - - if(lowerKey.equals("totpages")) { - resVO.setPageLastIndex(StringUtil.toNumber((String)map.get(key))); - } - - if(lowerKey.equals("records")) { - resVO.setRecordTotCount(StringUtil.toNumber((String)map.get(key), 0)); - } - } else { - if(resVO.getInfo() == null) resVO.setInfo(new HashMap()); - HashMap info = resVO.getInfo(); - info.put(key, map.get(key)); - } + 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/service/DataApiReqVO.java index 84bc69df..17be6c81 100644 --- a/src/main/java/nlib/restful/service/DataApiReqVO.java +++ b/src/main/java/nlib/restful/service/DataApiReqVO.java @@ -1,8 +1,7 @@ package nlib.restful.service; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import org.springframework.http.HttpMethod; +import nlib.cmm.crypto.AriaCrypto; /** *
@@ -26,104 +25,52 @@ import java.util.Map;
  * @version 1.0
  *
  */
-public class DataApiReqVO {
+public class DataApiReqVO extends DataApiVO {
 	
-	public static final int DEFAULT_PAGE_SIZE = 10;
-	public static final int DEFAULT_PAGE_INDEX = 1;
+	/**
+	 * 메소드를 GET으로 기본설정하여 객체 생성하는 생성자 
+	 */
+	public DataApiReqVO() {
+		this(null, HttpMethod.GET);
+	}
 	
-    /* 페이징 정보 */
-    private int pageIndex = 0;		/* 요청 페이지 번호 */ 
-    private int pageSize = 0;		/* 페이지별 표출할 레코드 수 */
+    /**
+     * 요청 URL을 받아 객체 생성하는 생성자
+     * 메소드는 GET으로 설정된다. 
+     * 
+     * @param reqUrl
+     */
+    public DataApiReqVO(String reqUrl) {
+    	this(reqUrl, HttpMethod.GET);
+    }
 
-    /* 기본정보 */
-    private HashMap info = null;
-
-    public boolean hasInfo() {
-    	return (info != null && info.size() > 0);
+    /**
+     * 요청 URL과 메소드를 받아 객체 생성하는 생성자 
+     * 
+     * @param reqUrl
+     * @param reqMethod
+     */
+    public DataApiReqVO(String reqUrl, HttpMethod reqMethod) {
+    	this.reqUrl = reqUrl;
+    	this.reqMethod = reqMethod;
     }
     
-    /* 요청업무ID 및 처리URI */
-    int    reqMethod; /* 요청메소드구분값 */
-    String reqUrl;    /* 요청업무ID에 대한 통합시스템의 응답 처리 프로그램 URI */
-    
-    // GET/SET
-
-    public int getPageIndex() {
-        return (pageIndex < 1 ? DEFAULT_PAGE_INDEX : pageIndex);
-    }
-
-    public void setPageIndex(int pageIndex) {
-        this.pageIndex = pageIndex;
-    }
-    
-    public void setPageIndex(String pageIndex) {
-    	try {
-    		this.pageIndex = Integer.parseInt(pageIndex);
-    	} catch(Exception e) {
-    		this.pageIndex = DEFAULT_PAGE_INDEX;	
-    	}
-        
-    }
-
-    public int getPageSize() {
-        return (pageSize < 1 ? DEFAULT_PAGE_SIZE : pageSize);
-    }
-
-    public void setPageSize(String pageSize) {
-    	try {
-    		this.pageSize = Integer.parseInt(pageSize);
-    	} catch(Exception e) {
-    		this.pageSize = DEFAULT_PAGE_SIZE;	
-    	}
-    }
-
-    public void setPageSize(int pageSize) {
-        this.pageSize = pageSize;
-    }
-
-    public HashMap getInfo() {
-        return info;
-    }
-
-    public void setInfo(HashMap info) {
-        this.info = info;
-    } 
-
-	public String getReqUrl() {
-		return reqUrl;
-	}
-	public void setReqUrl(String reqUrl) {
-		this.reqUrl = reqUrl;
-	}
-
-	public int getReqMethod() {
-		return reqMethod;
-	}
-
-	public void setReqMethod(int reqMethod) {
-		this.reqMethod = reqMethod;
+	/**
+	 * 사용자ID 값을 디코딩하여 리턴한다. 
+	 * 
+	 * @return
+	 */
+	public String getMbInfoIdWithDec() {
+		return AriaCrypto.decode(getMbInfoId());
 	}
 	
-	public void addInfoItem(String key, String value) {
-		if(key == null) return;
-		
-		if(info == null) info = new HashMap();
-		
-		info.put(key, value);
+	/**
+	 * 사용자ID를 인코딩하여 설정한다. 
+	 * 
+	 * @param mbInfoId
+	 */
+	public void setMbInfoIdWithEnc(String mbInfoId) {
+		setMbInfoId(mbInfoId);
 	}
 	
-	public String getInfoItem(String key) {
-		if(key == null) return null;
-		if(info == null) return null;
-		
-		return (String)info.get(key);
-	}
-	
-	public void removeInfoItem(String key) {
-		if(key == null) return;
-		if(info == null) return;
-		
-		info.remove(key);
-	}
-
 }
diff --git a/src/main/java/nlib/restful/service/DataApiResVO.java b/src/main/java/nlib/restful/service/DataApiResVO.java
index f6e0b36d..779066dd 100644
--- a/src/main/java/nlib/restful/service/DataApiResVO.java
+++ b/src/main/java/nlib/restful/service/DataApiResVO.java
@@ -1,9 +1,5 @@
 package nlib.restful.service;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import nlib.util.StringUtil;
 
 /**
@@ -28,17 +24,21 @@ import nlib.util.StringUtil;
  * @version 1.0
  *
  */
-public class DataApiResVO {
+public class DataApiResVO extends DataApiVO {
 	
 	/**
 	 * 생성자 
+	 * 
+	 * @param resultCode
+	 * @param resultMessage
 	 */
 	public DataApiResVO() {
-		super();
+		this.resultCode = null;
+		this.resultMessage = null;
 	}
-
+	
 	/**
-	 * 생성자 
+	 * 처리결과 코드와 메시지를 입력받아 객체를 생성하는 생성자 
 	 * 
 	 * @param resultCode
 	 * @param resultMessage
@@ -48,24 +48,9 @@ public class DataApiResVO {
 		this.resultMessage = resultMessage;
 	}
 	
-
-    /* 처리결과 */
-    String	resultCode;							/* 결과코드 */
-    String	resultMessage;						/* 결과내용(오류내용) */
-    
-    /* 페이징 정보 */
-    int pageIndex = 0;								/* 요청 페이지 번호 (page) */ 
-    int pageLastIndex = 0;						/* 마지막페이지번호 (totPages)  */ 
-
-    /* 기본/추가 정보 */
-    HashMap info = null;
-
-    /* 목록정보 */
-    int recordTotCount = 0;						/* 총 레코드수 (records) */ 
-    
     /**
      * 응답 처리결과가 성공인지의 여부를 리턴한다.
-     * 결과코드(resultCode)의 값이 "S"로 시작하는 경우 true 리턴한다.
+     * 결과코드(resultCode)의 값이 "S"로 시작하는 경우 true 리턴한다. 이외 false 리턴한다. 
      * 
      * @return
      */
@@ -73,62 +58,5 @@ public class DataApiResVO {
 		if(StringUtil.isEmpty(resultCode)) return false;
 		return (resultCode.trim().charAt(0) == 'S');
     }
-    
-    // GET/SET 
-    
-    public String getResultCode() {
-        return resultCode;
-    }
-    public void setResultCode(String resultCode) {
-        this.resultCode = resultCode;
-    }
-    public String getResultMessage() {
-        return resultMessage;
-    }
-    public void setResultMessage(String resultMessage) {
-        this.resultMessage = resultMessage;
-    }
-    public int getPageIndex() {
-        return pageIndex;
-    }
-    public void setPageIndex(int pageIndex) {
-        this.pageIndex = pageIndex;
-    }
-    public int getPageLastIndex() {
-        return pageLastIndex;
-    }
-    public void setPageLastIndex(int pageLastIndex) {
-        this.pageLastIndex = pageLastIndex;
-    }
-    public HashMap getInfo() {
-        return info;
-    }
-    public void setInfo(HashMap info) {
-        this.info = info;
-    }
-    public int getRecordTotCount() {
-        return recordTotCount;
-    }
-    public void setRecordTotCount(int recordTotCount) {
-        this.recordTotCount = recordTotCount;
-    }
-    
-    /**
-     * 반복되는 목록용 리스트 정보를 가져온다. 
-     * - RESTful API : ""요소로 반복되는 요소를 반환한다.
-     * 
-     * @return
-     */
-    public List> getList() {
-    	if(info == null) return null;
-        return (List>)info.get("results");
-    }
-    
 
-	public String getInfoItem(String key) {
-		if(key == null) return null;
-		if(info == null) return null;
-		
-		return (String)info.get(key);
-	}
 }
diff --git a/src/main/java/nlib/restful/service/DataApiVO.java b/src/main/java/nlib/restful/service/DataApiVO.java
new file mode 100644
index 00000000..061d8236
--- /dev/null
+++ b/src/main/java/nlib/restful/service/DataApiVO.java
@@ -0,0 +1,288 @@
+package nlib.restful.service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpMethod;
+
+import nlib.cmm.crypto.AriaCrypto;
+import nlib.cmm.service.NlibProperty;
+import nlib.util.StringUtil;
+
+/**
+ * 
+ * @Class Name : DataApiReqVO.java
+ * 
+ * @Description : RESTful API 요청 VO
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 22. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 22. + * @version 1.0 + * + */ +public class DataApiVO { + + private static final Logger log = LoggerFactory.getLogger(DataApiVO.class); + + /* 입출력 정보 중 공통 및 특정 항목들에 대한 처리를 위한 API 요소명 */ + public static final String XML_EL_NAME_ROOT_NAME = "results"; // 결과값 최상위 요소명 + public static final String XML_EL_NAME_PAGE_SIZE = "rows"; // 페이지크기 : 한페이지에 보여줄 레코드수 + public static final String XML_EL_NAME_PAGE_INDEX = "page"; // 페이지번호 + public static final String XML_EL_NAME_PAGE_LAST_INDEX = "totPages"; // 총페이지수 + public static final String XML_EL_NAME_RECORD_TOT_COUNT = "records"; // 총레코드수 + public static final String XML_EL_NAME_MB_INFO_ID = "mbInfoId"; // 시스템 내부 사용자ID + public static final String XML_EL_NAME_RECORD = "record"; // 다건 목록 자료인 레코드 요소명 + public static final String XML_EL_NAME_RESULT_CODE = "resultCode"; // 처리결과 코드 + public static final String XML_EL_NAME_RESULT_MESSAGE = "resultMessage"; // 처리결과 메시지 + + /* 페이지 처리 기본값 */ + public static final int DEFAULT_PAGE_SIZE = NlibProperty.getInt("list.paging.page.size", 10); + public static final int DEFAULT_PAGE_INDEX = 1; + + String reqUrl = null; /* 요청업무ID에 대한 통합시스템의 응답 처리 프로그램 URI */ + HttpMethod reqMethod = HttpMethod.GET; /* 요청메소드구분값 */ + + String resultCode; /* 결과코드 */ + String resultMessage; /* 결과내용(오류내용) */ + + HashMap info = null; /* 입출력 정보 맵 */ + HashMap>> listMap = null; /* 다건 레코드 리스트를 관리하는 맵 */ + + public DataApiVO() { + super(); + } + + //-------------------------------------------------------------- + // 정보 항목 관련 IN/OUT 함수 + //-------------------------------------------------------------- + public void putInfoItem(String key, String value) { + if(StringUtil.isEmpty(key)) return; + if(info == null) info = new HashMap(); + + info.put(key, value); + } + public String getInfoItem(String key) { + return getInfoItem(key, null); + } + public String getInfoItem(String key, String defValue) { + if(StringUtil.isEmpty(key)) return defValue; + if(info == null) return defValue; + + String value = info.get(key); + + return StringUtil.isEmpty(value) ? defValue : value; + } + public void removeInfoItem(String key) { + if(StringUtil.isEmpty(key)) return; + if(info == null) return; + info.remove(key); + } + public boolean hasInfo() { + return (info != null && info.size() > 0); + } + + public boolean hasList() { + return (listMap != null && listMap.size() > 0); + } + + public boolean hasList(String listName) { + List list = getList(listName); + return (list != null && list.size() > 0); + } + + //-------------------------------------------------------------- + // 다건 레코드관련 함수 + //-------------------------------------------------------------- + public void addListItem(String listName, HashMap map) { + if(StringUtil.isEmpty(listName)) return; + List> list = getList(listName); + + if(list == null) list = new ArrayList>(); + list.add(map); + setList(listName, list); + return; + } + + public void removeListItem(String listName, int idx) { + if(StringUtil.isEmpty(listName)) return; + if(idx < 0) return; + + List> list = getList(listName); + if(list != null && list.size() > idx) list.remove(idx); + return; + } + + public void clearList(String listName) { + if(StringUtil.isEmpty(listName)) return; + + List> list = getList(listName); + if(list != null) list.clear(); + return; + } + + public List> getList(String listName) { + if(StringUtil.isEmpty(listName)) return null; + if(listMap == null && listMap.size() < 1) return null; + + return listMap.get(listName); + } + + public void setList(String listName, List> list) { + if(StringUtil.isEmpty(listName)) return; + if(listMap == null) initList(); + + List> listOld = getList(listName); + if(listOld != null) listOld.clear(); + + listMap.put(listName, list); + return; + } + + private void initList() { + if(listMap == null) listMap = new HashMap>>(); + return; + } + + //-------------------------------------------------------------- + // 페이징 처리 관련 + //-------------------------------------------------------------- + public int getPageIndex() { + int pageIndex = 0; + try { + pageIndex = Integer.parseInt(getInfoItem(XML_EL_NAME_PAGE_INDEX, "0")); + } catch(Exception e) { + log.error("getPageIndex > " + e.toString()); + return 0; + } + return pageIndex; + } + public void setPageIndex(int pageIndex) { + setPageIndex("" + pageIndex); + } + public void setPageIndex(String pageIndex) { + putInfoItem("XML_EL_NAME_PAGE_INDEX", pageIndex); + } + public int getPageLastIndex() { + int pageLastIndex = 0; + try { + pageLastIndex = Integer.parseInt(getInfoItem(XML_EL_NAME_PAGE_LAST_INDEX, "0")); + } catch(Exception e) { + log.error("getPageLastIndex > " + e.toString()); + return 0; + } + return pageLastIndex; + } + public void setPageLastIndex(int pageLastIndex) { + setPageLastIndex("" + pageLastIndex); + } + public void setPageLastIndex(String pageLastIndex) { + putInfoItem("XML_EL_NAME_PAGE_LAST_INDEX", pageLastIndex); + } + public int getPageSize() { + int pageSize = 0; + try { + pageSize = Integer.parseInt(getInfoItem(XML_EL_NAME_PAGE_SIZE, "0")); + } catch(Exception e) { + log.error("getPageSize > " + e.toString()); + return 0; + } + return pageSize; + } + public void setPageSize(int pageSize) { + setPageSize("" + pageSize); + } + public void setPageSize(String pageSize) { + putInfoItem("XML_EL_NAME_PAGE_SIZE", pageSize); + } + public int getRecordTotCount() { + int recordTotCount = 0; + try { + recordTotCount = Integer.parseInt(getInfoItem(XML_EL_NAME_RECORD_TOT_COUNT, "0")); + } catch(Exception e) { + log.error("getRecordTotCount > " + e.toString()); + return 0; + } + return recordTotCount; + } + public void setRecordTotCount(int recordTotCount) { + setRecordTotCount("" + recordTotCount); + } + public void setRecordTotCount(String recordTotCount) { + putInfoItem(XML_EL_NAME_RECORD_TOT_COUNT, recordTotCount); + } + + //-------------------------------------------------------------- + // 사용자ID 처리 관련 + //-------------------------------------------------------------- + public String getMbInfoId() { + return getInfoItem("XML_EL_NAME_MB_INFO_ID"); + } + public String getEncMbInfoId() { + return AriaCrypto.encode(getInfoItem("XML_EL_NAME_MB_INFO_ID")); + } + public void setMbInfoId(String mbInfoId) { + putInfoItem("XML_EL_NAME_MB_INFO_ID", mbInfoId); + } + + //-------------------------------------------------------------- + // GET & SET + //-------------------------------------------------------------- + public String getReqUrl() { + return reqUrl; + } + + public void setReqUrl(String reqUrl) { + this.reqUrl = reqUrl; + } + + public HttpMethod getReqMethod() { + return reqMethod; + } + + public void setReqMethod(HttpMethod reqMethod) { + this.reqMethod = reqMethod; + } + + public String getResultCode() { + return resultCode; + } + + public void setResultCode(String resultCode) { + this.resultCode = resultCode; + } + + public String getResultMessage() { + return resultMessage; + } + + public void setResultMessage(String resultMessage) { + this.resultMessage = resultMessage; + } + + public HashMap getInfo() { + return info; + } + + public void setInfo(HashMap info) { + this.info = info; + } + + public HashMap>> getListMap() { + return listMap; + } + +} diff --git a/src/main/java/nlib/restful/service/XmlConverter.java b/src/main/java/nlib/restful/service/XmlConverter.java index 66580e5c..ae9125d6 100644 --- a/src/main/java/nlib/restful/service/XmlConverter.java +++ b/src/main/java/nlib/restful/service/XmlConverter.java @@ -24,7 +24,7 @@ public class XmlConverter { private static final Logger log = LoggerFactory.getLogger(XmlConverter.class); - public static HashMap convert(String xmlStr) throws Exception { + public static HashMap convert(String xmlStr, String rootEleName) throws Exception { if(xmlStr == null) return null; @@ -35,7 +35,7 @@ public class XmlConverter { XMLInputFactory inputFactory = XMLInputFactory.newInstance(); XMLEventReader eventReader = inputFactory.createXMLEventReader(bIn); - resMap = getElementValue("result", eventReader, null); + resMap = getElementValue(rootEleName, eventReader, null); //log.debug("Converting XML to HashMap : Done >> " + resMap); } catch (XMLStreamException e) { e.printStackTrace(); diff --git a/src/main/java/nlib/restful/service/impl/DataApiRESTful.java b/src/main/java/nlib/restful/service/impl/DataApiRESTful.java index 8723c6f4..74b1921e 100644 --- a/src/main/java/nlib/restful/service/impl/DataApiRESTful.java +++ b/src/main/java/nlib/restful/service/impl/DataApiRESTful.java @@ -1,5 +1,7 @@ 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; @@ -9,12 +11,13 @@ 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.RestTemplate; +import nlib.restful.service.DataApiInterface; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; -import nlib.restful.service.DataApiInterface; import nlib.util.StringUtil; /** @@ -53,48 +56,6 @@ public class DataApiRESTful implements DataApiInterface { @Value("#{properties['dataapi.server.protocol']}") private String DAPI_SERVER_PROTOCOL; - - /** - * 조회 - * - * @param reqVO - * @return - */ - public DataApiResVO get(DataApiReqVO reqVO) { - - return send(reqVO, HttpMethod.GET); - } - - /** - * 등록 - * - * @param reqVO - * @return - */ - public DataApiResVO put(DataApiReqVO reqVO) { - return send(reqVO, HttpMethod.PUT); - } - - /** - * 수정 - * - * @param reqVO - * @return - */ - public DataApiResVO post(DataApiReqVO reqVO) { - return send(reqVO, HttpMethod.POST); - } - - /** - * 삭제 - * - * @param reqVO - * @return - */ - public DataApiResVO delete (DataApiReqVO reqVO) { - return send(reqVO, HttpMethod.DELETE); - } - /** * 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다. * @@ -102,42 +63,79 @@ public class DataApiRESTful implements DataApiInterface { * @param method * @return */ - public DataApiResVO send(DataApiReqVO reqVO, HttpMethod method) { + public DataApiResVO request(DataApiReqVO reqVO) { + + log.debug("request > " + reqVO.getReqMethod()); DataApiResVO resVO = null; try { + //----------------------------------- // 입력값 검증작업 //----------------------------------- resVO = DataApiInterface.checkReqCommonParams(reqVO); if(resVO != null) return resVO; - if(method == null) return new DataApiResVO("ERR_NO_METHOD", "HTTP 요청 Method가 유효하지 않습니다."); + 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); - MultiValueMap parameters = DataApiInterface.makeParamMap(reqVO); - HttpEntity> requestEntity = new HttpEntity(parameters, headers); + + ResponseEntity responseEntity = null; + RestTemplate restTemplate = new RestTemplate(); + restTemplate.getMessageConverters() + .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8)); + + if(method == HttpMethod.GET) { + HttpEntity requestEntity = new HttpEntity(headers); + responseEntity = restTemplate.exchange (DataApiInterface.makeRequestParamUrl(url, reqVO), method, requestEntity, String.class); + } 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); + responseEntity = restTemplate.postForEntity(url, requestEntity , String.class); + } else { + String message = "RESTFul API Http Method 설정 오류입니다. : POST, GET 방식만 허용됩니다."; + log.error("request > " + message); + return DataApiInterface.makeErrorRes("E_ERR_METHOD", message); + } //----------------------------------- // 요청 처리 //----------------------------------- - RestTemplate restTemplate = new RestTemplate(); - String url = DAPI_SERVER_PROTOCOL + "://" + DAPI_SERVER_IP + ("80".equals(DAPI_SERVER_PORT) ? "" : ":" + DAPI_SERVER_PORT) + reqVO.getReqUrl(); - log.debug("REQ URL : " + reqVO.getReqUrl()); +// RestTemplate restTemplate = new RestTemplate(); + //restTemplate.setMessageConverters(msgConverters); + + //ResponseEntity responseEntity = restTemplate.exchange(url, method, requestEntity, String.class); +// ResponseEntity responseEntity = restTemplate.exchange (url, method, requestEntity, String.class); + //ResponseEntity responseEntity = restTemplate.exchange (url, HttpMethod.GET, requestEntity, String.class, parameters); + //ResponseEntity responseEntity = restTemplate.postForEntity( url, requestEntity , String.class ); // working well + //ResponseEntity responseEntity = restTemplate.getForEntity(url, String.class, parameters); // not working + + /* + // GET // OK + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) + .queryParam("mngOrgCd", "SU01") + .queryParam("masterId", "UR-408A9832D25C42289D9B1FC81FDA8360") + .queryParam("typeDivCd", "IT_MUSE"); + HttpEntity entity = new HttpEntity<>(headers); + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity responseEntity = restTemplate.exchange (builder.toUriString(), method, entity, String.class); + */ - ResponseEntity responseEntity = restTemplate.exchange(url, method, requestEntity, String.class); //----------------------------------- // 응답 처리 //----------------------------------- HttpStatus statusCode = responseEntity.getStatusCode(); log.debug("RES StatusCode : " + statusCode); - String resultXML = ""; - resultXML = responseEntity.getBody(); + String resultXML = responseEntity.getBody(); log.debug("RES resultXML : " + resultXML); // 응답 자료 객체화 @@ -145,19 +143,22 @@ public class DataApiRESTful implements DataApiInterface { // 처리결과 코드 확인 if(StringUtil.isEmpty(resVO.getResultCode())) { + String resultMessage = resVO.getResultMessage(); if (statusCode == HttpStatus.OK) { resVO.setResultCode("S_HTTP_STATUS_OK"); - resVO.setResultMessage("정상처리되었습니다."); + resVO.setResultMessage(StringUtil.isEmpty(resultMessage) ? "정상처리되었습니다." : resultMessage); } else { resVO.setResultCode("E_STATUS_CODE_FAIL"); - resVO.setResultMessage(String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString())); + resVO.setResultMessage(StringUtil.isEmpty(resultMessage) ? String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString()) : resultMessage); } } - //log.debug("RES resVO : " + resVO); + log.debug("RES resVO : resultCode = " + resVO.getResultCode()); + log.debug("RES resVO : resultMessage = " + resVO.getResultMessage()); } catch(Exception e) { e.printStackTrace(); + log.error("request > Exception 발생 : " + e.toString()); return DataApiInterface.makeErrorRes("E_REQ_EXCEPTION", e.toString()); } diff --git a/src/main/java/nlib/restful/service/impl/DataApiTempXml.java b/src/main/java/nlib/restful/service/impl/DataApiTempXml.java index 7c085675..0720fa8e 100644 --- a/src/main/java/nlib/restful/service/impl/DataApiTempXml.java +++ b/src/main/java/nlib/restful/service/impl/DataApiTempXml.java @@ -10,7 +10,6 @@ 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; @@ -19,10 +18,11 @@ import org.springframework.util.MultiValueMap; 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.DataApiInterface; +import nlib.restful.service.DataApiVO; import nlib.util.StringUtil; /** @@ -55,47 +55,6 @@ public class DataApiTempXml implements DataApiInterface { @Value("#{properties['dataapi.temp.xml.path']}") private String DAPI_TEMP_XML_PATH; - - /** - * 조회 - * - * @param reqVO - * @return - */ - public DataApiResVO get(DataApiReqVO reqVO) { - - return send(reqVO, HttpMethod.GET); - } - - /** - * 등록 - * - * @param reqVO - * @return - */ - public DataApiResVO put(DataApiReqVO reqVO) { - return send(reqVO, HttpMethod.PUT); - } - - /** - * 수정 - * - * @param reqVO - * @return - */ - public DataApiResVO post(DataApiReqVO reqVO) { - return send(reqVO, HttpMethod.POST); - } - - /** - * 삭제 - * - * @param reqVO - * @return - */ - public DataApiResVO delete (DataApiReqVO reqVO) { - return send(reqVO, HttpMethod.DELETE); - } /** * 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다. @@ -104,8 +63,10 @@ public class DataApiTempXml implements DataApiInterface { * @param method * @return */ - public DataApiResVO send(DataApiReqVO reqVO, HttpMethod method) { - + public DataApiResVO request(DataApiReqVO reqVO) { + + log.debug("request > " + reqVO.getReqMethod()); + DataApiResVO resVO = null; try { @@ -114,21 +75,20 @@ public class DataApiTempXml implements DataApiInterface { //----------------------------------- resVO = DataApiInterface.checkReqCommonParams(reqVO); if(resVO != null) return resVO; - if(method == null) return new DataApiResVO("ERR_NO_METHOD", "HTTP 요청 Method가 유효하지 않습니다."); - + HttpMethod method = reqVO.getReqMethod(); + //----------------------------------- - // 폼 파라메터 생성 작업 + // 폼 파라메터 생성 작업 (요청데이터 확인용) //----------------------------------- HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - MultiValueMap parameters = DataApiInterface.makeParamMap(reqVO); - HttpEntity> requestEntity = new HttpEntity(parameters, headers); + MultiValueMap parameters = DataApiInterface.makeRequestParamMultiValueMap(reqVO); //----------------------------------- // 응답 처리 //----------------------------------- HttpStatus statusCode = HttpStatus.OK; - String resultXML = getTempDataFromXmlFile(reqVO, method); + String resultXML = getTempDataFromXmlFile(reqVO); //log.debug("RES resultXML : " + resultXML); // 응답 자료 객체화 @@ -136,16 +96,18 @@ public class DataApiTempXml implements DataApiInterface { // 처리결과 코드 확인 if(StringUtil.isEmpty(resVO.getResultCode())) { + String resultMessage = resVO.getResultMessage(); if (statusCode == HttpStatus.OK) { resVO.setResultCode("S_HTTP_STATUS_OK"); - resVO.setResultMessage("정상처리되었습니다."); + resVO.setResultMessage(StringUtil.isEmpty(resultMessage) ? "정상처리되었습니다." : resultMessage); } else { resVO.setResultCode("E_STATUS_CODE_FAIL"); - resVO.setResultMessage(String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString())); + resVO.setResultMessage(StringUtil.isEmpty(resultMessage) ? String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString()) : resultMessage); } } - //log.debug("RES resVO : " + resVO); + log.debug("RES resVO : resultCode = " + resVO.getResultCode()); + log.debug("RES resVO : resultMessage = " + resVO.getResultMessage()); } catch(Exception e) { e.printStackTrace(); @@ -163,54 +125,55 @@ public class DataApiTempXml implements DataApiInterface { * @return * @throws Exception */ - private String getTempDataFromXmlFile(DataApiReqVO reqVO, HttpMethod method) throws Exception { - - String fileName = reqVO.getReqUrl().substring(1).replaceAll("/", "."); - String xmlPath = DAPI_TEMP_XML_PATH + "/" + fileName + "_" + method.toString().toUpperCase() + ".xml"; - String returnXmlStr = null; + private String getTempDataFromXmlFile(DataApiReqVO reqVO) throws Exception { + + 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(); - 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("result").writeValueAsString(resVO); - } - - if(resVO == null) { - StringBuilder strBd = new StringBuilder(); + try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(xmlPath),StandardCharsets.UTF_8))) { - 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()); - e.printStackTrace(); - - resVO = new DataApiServerResponseVO("-22", String.format("%s 파일을 읽는 중 오류가 발생하였습니다(%s). ",xmlPath, e.toString())); - XmlMapper mapper = new XmlMapper(); - returnXmlStr = mapper.writer().withRootName("result").writeValueAsString(resVO); - } + 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()); + e.printStackTrace(); + 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; + } + + //log.info("RESUTN XML STR : " + returnXmlStr); + return returnXmlStr; } } diff --git a/src/main/java/nlib/sample/service/SampleDataApiService.java b/src/main/java/nlib/sample/service/SampleDataApiService.java index 6be6c327..4cca94d2 100644 --- a/src/main/java/nlib/sample/service/SampleDataApiService.java +++ b/src/main/java/nlib/sample/service/SampleDataApiService.java @@ -29,4 +29,5 @@ public interface SampleDataApiService { public DataApiResVO getSampleInfo(DataApiReqVO reqVO) throws Exception; + public DataApiResVO getItemInfo(DataApiReqVO reqVO) throws Exception; } diff --git a/src/main/java/nlib/sample/service/impl/SampleDataApiServiceImpl.java b/src/main/java/nlib/sample/service/impl/SampleDataApiServiceImpl.java index 10d87081..25cb9642 100644 --- a/src/main/java/nlib/sample/service/impl/SampleDataApiServiceImpl.java +++ b/src/main/java/nlib/sample/service/impl/SampleDataApiServiceImpl.java @@ -4,6 +4,7 @@ import javax.annotation.Resource; import org.springframework.stereotype.Service; +import nlib.restful.DataApi; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; import nlib.sample.service.SampleDataApiService; @@ -33,12 +34,15 @@ import nlib.sample.service.SampleDataApiService; @Service("sampleDataApiService") public class SampleDataApiServiceImpl implements SampleDataApiService { - /** SampleDataApiDAO */ - @Resource(name = "sampleDataApiDAO") - private SampleDataApiDAO sampleDataApiDAO; + /** RESTFul API 송수신 모듈 */ + @Resource(name = "dataApi") + private DataApi dataApi; public DataApiResVO getSampleInfo(DataApiReqVO reqVO) throws Exception { - return sampleDataApiDAO.getSampleInfo(reqVO); + return dataApi.request(reqVO); } + public DataApiResVO getItemInfo(DataApiReqVO reqVO) throws Exception { + return dataApi.request(reqVO); + } } diff --git a/src/main/java/nlib/sample/web/SampleDataApiController.java b/src/main/java/nlib/sample/web/SampleDataApiController.java index 0a5c55f8..c3c0b38f 100644 --- a/src/main/java/nlib/sample/web/SampleDataApiController.java +++ b/src/main/java/nlib/sample/web/SampleDataApiController.java @@ -3,16 +3,22 @@ package nlib.sample.web; import java.util.Map; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpMethod; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import nlib.cmm.NlibCommonController; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; +import nlib.restful.service.DataApiVO; import nlib.sample.service.SampleDataApiService; +import nlib.user.service.NlibLoginVO; +import nlib.util.StringUtil; /** *
@@ -37,7 +43,7 @@ import nlib.sample.service.SampleDataApiService;
  *
  */
 @Controller
-public class SampleDataApiController {
+public class SampleDataApiController extends NlibCommonController {
 	
 	/** SampleDataApiService */
 	@Resource(name = "sampleDataApiService")
@@ -80,4 +86,91 @@ public class SampleDataApiController {
 		return "nlib/sample/getSampleInfo";
     }
 
+    @RequestMapping("/sample/getItemInfo.do")
+    public String getItemInfo(HttpServletRequest request, @RequestParam Map commandMap, ModelMap model) throws Exception {
+		
+    	String message = null;
+    	
+    	DataApiReqVO reqVO = new DataApiReqVO("/uac/service/nlib/col/getItemInfo", HttpMethod.GET);
+    	
+    	String mngOrgCd = commandMap.get("mngOrgCd");
+    	String masterId = commandMap.get("masterId");
+    	String typeDivCd = commandMap.get("typeDivCd");
+    	
+    	if(StringUtil.isEmpty(mngOrgCd) || StringUtil.isEmpty(masterId) || StringUtil.isEmpty(typeDivCd)) {
+    		message = "필수정보값이 입력되지 않았습니다.";
+    		model.addAttribute("message", message);
+    		return "nlib/sample/getItemInfo";
+    	}
+    	
+    	// 변수 설정 
+    	reqVO.putInfoItem("mngOrgCd", mngOrgCd);
+    	reqVO.putInfoItem("masterId", masterId);
+    	reqVO.putInfoItem("typeDivCd", typeDivCd);
+    	
+    	// 사용자ID 설정 
+    	NlibLoginVO nlibLoginVO = getNlibLoginVO(request);
+    	if(nlibLoginVO != null && !StringUtil.isEmpty(nlibLoginVO.getMbInfoId())) {
+    		reqVO.setMbInfoId(nlibLoginVO.getMbInfoId());
+    	}
+    	
+    	// API 호출 
+    	DataApiResVO resVO = sampleDataApiService.getItemInfo(reqVO);
+
+    	// 결과값 전달 
+    	model.addAttribute("resultCode", resVO.getResultCode());
+    	model.addAttribute("resultMessage", resVO.getResultMessage());
+    	model.addAttribute("info", resVO.getInfo());
+
+    	// 참고 정보 : API 접속 서버 정보 
+		model.addAttribute("serverProtocol", dataapiServerIp);
+		model.addAttribute("serverIp", dataapiServerPort);
+		model.addAttribute("serverPort", dataapiServerProtocol);
+		
+		return "nlib/sample/getItemInfo";
+    }
+    
+    @RequestMapping("/sample/listRentItem.do")
+    public String listRentItem(HttpServletRequest request, @RequestParam Map commandMap, ModelMap model) throws Exception {
+		
+    	String message = null;
+    	
+    	DataApiReqVO reqVO = new DataApiReqVO("/uac/service/nlib/rent/listRentItem", HttpMethod.GET);
+    	
+    	// 변수 설정 
+    	reqVO.putInfoItem("rows", getParamStr(commandMap, "rows", "10"));
+    	reqVO.putInfoItem("page", getParamStr(commandMap, "rows", "1"));
+    	reqVO.putInfoItem("mngOrgCd", getParamStr(commandMap, "mngOrgCd", "KCCF"));
+    	reqVO.putInfoItem("mbInfoId", getParamStr(commandMap, "mbInfoId", "BDCCAF34CF8AA365C660ADB121CE6741"));
+    	
+    	// 사용자ID 설정 
+//    	NlibLoginVO nlibLoginVO = getNlibLoginVO(request);
+//    	if(nlibLoginVO != null && !StringUtil.isEmpty(nlibLoginVO.getMbInfoId())) {
+//    		reqVO.setMbInfoId(nlibLoginVO.getMbInfoId());
+//    	}
+    	
+    	// API 호출 
+    	DataApiResVO resVO = sampleDataApiService.getItemInfo(reqVO);
+
+    	// 입력 매개변수 전달 
+    	model.addAttribute("rows", resVO.getRecordTotCount());
+    	model.addAttribute("page", resVO.getPageIndex());
+    	model.addAttribute("mngOrgCd", resVO.getInfoItem("mngOrgCd"));
+    	model.addAttribute("mbInfoId", resVO.getInfoItem("mbInfoId"));
+    	
+    	// 결과값 전달 
+    	model.addAttribute("resultCode", resVO.getResultCode());
+    	model.addAttribute("resultMessage", resVO.getResultMessage());
+    	model.addAttribute("info", resVO.getInfo());
+    	model.addAttribute("list", resVO.getList(DataApiVO.XML_EL_NAME_RECORD));
+
+    	// 참고 정보 : API 접속 서버 정보 
+		model.addAttribute("serverProtocol", dataapiServerIp);
+		model.addAttribute("serverIp", dataapiServerPort);
+		model.addAttribute("serverPort", dataapiServerProtocol);
+		
+		return "nlib/sample/listRentItem";
+    }
+
+    
 }
diff --git a/src/main/java/nlib/security/SpringSecurityConfig.java b/src/main/java/nlib/security/SpringSecurityConfig.java
index 7859a0ed..61ea8099 100644
--- a/src/main/java/nlib/security/SpringSecurityConfig.java
+++ b/src/main/java/nlib/security/SpringSecurityConfig.java
@@ -77,10 +77,12 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
 			.antMatchers("/rent/*.do").permitAll()
 			.antMatchers("/collection/*.do").permitAll()
 			.antMatchers("/sample/password/getSampleEncoder.do").permitAll()
+			.antMatchers("/sample/*.do").permitAll()
 			.antMatchers("/*/*Ajax.do").permitAll()
 			.antMatchers("/fileupload/**").permitAll()
 			.antMatchers("/board/**").permitAll()
 			.antMatchers("/inform/**").permitAll()
+			.antMatchers("/test/**").permitAll()
 			.antMatchers("/alert/**").permitAll()
 			.antMatchers("/code/**").permitAll()
 			.antMatchers("/homes/**").permitAll()
diff --git a/src/main/resources/nlib/nlib.properties b/src/main/resources/nlib/nlib.properties
index 601796ba..5bcc4653 100644
--- a/src/main/resources/nlib/nlib.properties
+++ b/src/main/resources/nlib/nlib.properties
@@ -54,11 +54,16 @@ nlib.council.dns.host = nlib
 #dataapi.server.port = 80
 #dataapi.server.protocol = http
 
-# \ub85c\uceec \uc11c\ubc84 
-dataapi.server.ip = localhost
-dataapi.server.port = 8088
+# \uc784\uc2dc PC \uac1c\ubc1c \uc11c\ubc84
+dataapi.server.ip = 192.168.25.87
+dataapi.server.port = 8080
 dataapi.server.protocol = http
 
+# \ub85c\uceec \uc11c\ubc84 
+#dataapi.server.ip = localhost
+#dataapi.server.port = 8088
+#dataapi.server.protocol = http
+
 # \ub85c\uceec \uac1c\ubc1c\uc6a9 XML \ud30c\uc77c \uc704\uce58 
 dataapi.temp.xml.path = C:/iams/workspace/nlib/data/dataxml
 
diff --git a/src/main/webapp/WEB-INF/tiles/inc/menu.jsp b/src/main/webapp/WEB-INF/tiles/inc/menu.jsp
index 7c0b11d0..b19a97fa 100644
--- a/src/main/webapp/WEB-INF/tiles/inc/menu.jsp
+++ b/src/main/webapp/WEB-INF/tiles/inc/menu.jsp
@@ -22,7 +22,7 @@
     
  • 대출
  • 예약
  • 열람요청
  • -
  • 관심자료
  • +
  • 관심자료
  • 알림
  • @@ -31,6 +31,8 @@
  • 암호화
  • 프로퍼티갱신
  • 코드조회
  • +
  • 자료상세조회:API샘플
  • +
  • 목록조회:API샘플
  • From 61fee5e9dd8c9fb5310962fc68a140997cbfc9fd Mon Sep 17 00:00:00 2001 From: KNKIM Date: Fri, 1 Oct 2021 16:49:44 +0900 Subject: [PATCH 3/7] =?UTF-8?q?DataApi=20=EA=B0=9C=EC=84=A0=20=EB=B0=8F=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=84=9C=EB=B2=84=EC=99=80?= =?UTF-8?q?=EC=9D=98=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=88=98=ED=96=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../uac.service.nlib.col.getItemInfo_GET.xml | 9 ++ .../sample/service/impl/SampleDataApiDAO.java | 47 --------- .../WEB-INF/jsp/nlib/sample/getItemInfo.jsp | 86 ++++++++++++++++ .../WEB-INF/jsp/nlib/sample/listRentItem.jsp | 98 +++++++++++++++++++ src/main/webapp/test/testRest.html | 28 ++++++ 5 files changed, 221 insertions(+), 47 deletions(-) create mode 100644 data/dataxml/uac.service.nlib.col.getItemInfo_GET.xml delete mode 100644 src/main/java/nlib/sample/service/impl/SampleDataApiDAO.java create mode 100644 src/main/webapp/WEB-INF/jsp/nlib/sample/getItemInfo.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/nlib/sample/listRentItem.jsp create mode 100644 src/main/webapp/test/testRest.html diff --git a/data/dataxml/uac.service.nlib.col.getItemInfo_GET.xml b/data/dataxml/uac.service.nlib.col.getItemInfo_GET.xml new file mode 100644 index 00000000..44941ed8 --- /dev/null +++ b/data/dataxml/uac.service.nlib.col.getItemInfo_GET.xml @@ -0,0 +1,9 @@ + + + + S001 + 정상적으로 조회되었습니다. + 1111111 + 제목입니다. + 도서간행물 + diff --git a/src/main/java/nlib/sample/service/impl/SampleDataApiDAO.java b/src/main/java/nlib/sample/service/impl/SampleDataApiDAO.java deleted file mode 100644 index d3f48a58..00000000 --- a/src/main/java/nlib/sample/service/impl/SampleDataApiDAO.java +++ /dev/null @@ -1,47 +0,0 @@ -package nlib.sample.service.impl; - -import org.springframework.stereotype.Repository; - -import nlib.restful.DataApi; -import nlib.restful.service.DataApiReqVO; -import nlib.restful.service.DataApiResVO; - -/** - *
    - * @Class Name : SampleDataApiDAO.java
    - * 
    - * @Description : RESTful API 호출 샘플
    - * 
    - * 
    - * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    - *
    - * 
    - * - * @ ------------ -------- --------------------------- - * @ 수정일 수정자 수정내용 - * @ ------------ -------- --------------------------- - * @ 2021. 6. 22. KNKIM 최초 생성 - * - * - * @author 이씨플라자 * DIGITALSHIP KNKIM - * @since 2021. 6. 22. - * @version 1.0 - * - */ -@Repository("sampleDataApiDAO") -public class SampleDataApiDAO extends DataApi { - - /** - * 주 자원의 URI - */ - public static final String RESOURCE_URI = "/uac/service/exports"; - - public DataApiResVO getSampleInfo(DataApiReqVO reqVO) throws Exception { - - // URI가 다른 경우, 해당 URI 설정 - reqVO.setReqUrl(RESOURCE_URI); - - return get(reqVO); - } - -} diff --git a/src/main/webapp/WEB-INF/jsp/nlib/sample/getItemInfo.jsp b/src/main/webapp/WEB-INF/jsp/nlib/sample/getItemInfo.jsp new file mode 100644 index 00000000..ec05c220 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/sample/getItemInfo.jsp @@ -0,0 +1,86 @@ +<% +/** + *
    + * @Class Name : getSampleInfo.jsp
    + * 
    + * @Description : RESTful API 호출 샘플
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 15. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 15. + * @version 1.0 + * + */ + %> +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> + - 결과 + + + + +${pageTitle} + + + + + + + + +
    + +
    + +

    ${pageTitle}

    + +
    Server Protocol : ${serverProtocol}
    +
    Server IP : ${serverIp}
    +
    Server PORT : ${serverPort}
    + +
      +
      +
    + + mngOrgCd :
    + masterId :
    + typeDivCd :
    + +
    + resultCode :
    + resultMessage :
    + info.title :
    + info.typeCodeNm :
    + info.masterId :
    +
    + +
    + + + +
    + +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/nlib/sample/listRentItem.jsp b/src/main/webapp/WEB-INF/jsp/nlib/sample/listRentItem.jsp new file mode 100644 index 00000000..729a95f6 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/sample/listRentItem.jsp @@ -0,0 +1,98 @@ +<% +/** + *
    + * @Class Name : getSampleInfo.jsp
    + * 
    + * @Description : RESTful API 호출 샘플
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 6. 15. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 6. 15. + * @version 1.0 + * + */ + %> +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +대출목록 + + + + +${pageTitle} + + + + + + + + +
    + +
    + +

    ${pageTitle}

    + +
    Server Protocol : ${serverProtocol}
    +
    Server IP : ${serverIp}
    +
    Server PORT : ${serverPort}
    + +
      +
      +
    + + rows :
    + page :
    + mngOrgCd :
    + mbInfoId :
    + -------------------------------------------------------------------------- +
    + resultCode :
    + resultMessage :
    + totPages :
    + records :
    + list :
    + +      > -----------------------------------------------------------
    +      > mngOrgCd = ${record.mngOrgCd}
    +      > operReadRangeCd = ${record.operReadRangeCd}
    +      > bookLtRvStatusCd = ${record.bookLtRvStatusCd}
    +      > title = ${record.title}
    +      > typeCodeNm = ${record.typeCodeNm}
    +      > awaiterCnt = ${record.awaiterCnt}
    +      > useStatus = ${record.useStatus}
    +
    + +
    + +
    + + + +
    + +
    + + + diff --git a/src/main/webapp/test/testRest.html b/src/main/webapp/test/testRest.html new file mode 100644 index 00000000..4f779f1d --- /dev/null +++ b/src/main/webapp/test/testRest.html @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + +
    + mngOrgCd :
    + masterId :
    + typeDivCd :
    + +
    + +
    + + + \ No newline at end of file From 63698ba7efd6d85d333125de403849d13f478810 Mon Sep 17 00:00:00 2001 From: KNKIM Date: Fri, 1 Oct 2021 17:01:32 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=EC=86=8C=EC=8A=A4=20=EC=B6=A9=EB=8F=8C=20?= =?UTF-8?q?=EC=9D=B4=EC=83=81=20=EA=B1=B4=20=EB=90=98=EB=8F=8C=EB=A6=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/nlib/col/service/RisVO.java | 155 ---------------------- 1 file changed, 155 deletions(-) diff --git a/src/main/java/nlib/col/service/RisVO.java b/src/main/java/nlib/col/service/RisVO.java index ddbd3c4f..de440d9c 100644 --- a/src/main/java/nlib/col/service/RisVO.java +++ b/src/main/java/nlib/col/service/RisVO.java @@ -1,4 +1,3 @@ -<<<<<<< HEAD package nlib.col.service; import java.io.Serializable; @@ -151,157 +150,3 @@ public class RisVO implements Serializable { this.orgNm = orgNm; } } -======= -package nlib.col.service; - -import java.io.Serializable; - -/** - *
    - * @Class Name : RisVO.java
    - * 
    - * @Description : Ris 통신규약 항목 VO
    - * 
    - * 
    - * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    - *
    - * 
    - * - * @ ------------ -------- --------------------------- - * @ 수정일 수정자 수정내용 - * @ ------------ -------- --------------------------- - * @ 2021. 9. 23. JSYOO 최초 생성 - - * - * - * @author 이씨플라자 * DIGITALSHIP JSYOO - * @since 2021. 9. 23. - * @version 1.0 - * - */ -public class RisVO implements Serializable { - - /* 기존 지역 n 문화 사이트 RIS 항목 */ - private String typeDivCd; /* 참조유형 TY */ - private String title; /* 제목 TI */ - private String subTitle; /* 부제목 T2 */ - private String creatYyyy; /* 생산일자 (YYYY) PY */ - private String keyword; /* 키워드 (ex: 수원사랑) KW */ - private String UR; /* URL */ - - /*private String AB; 요약 - private String DA; 날짜 - private String LA; 언어 (ex: Korean) */ - - /* RIS 추가 항목 */ - private String masterId; /* 자료번호 ID */ - private String M3; /* 주제분야명 */ - private String rprsThumbUrl; /* 썸네일이미지 URL L4 */ - private String stakrmMngNo; /* 관리번호 M1 */ - private String producer; /* 생산자(저자) A1 */ - private String orgNm; /* 생산기관명 PP */ - - public String getTypeDivCd() { - return typeDivCd; - } - public String getTy() { - return typeDivCd; - } - public void setTypeDivCd(String typeDivCd) { - this.typeDivCd = typeDivCd; - } - public String getTitle() { - return title; - } - public String getTt() { - return title; - } - public void setTitle(String title) { - this.title = title; - } - public String getSubTitle() { - return subTitle; - } - public String getT2() { - return subTitle; - } - public void setSubTitle(String subTitle) { - this.subTitle = subTitle; - } - public String getCreatYyyy() { - return creatYyyy; - } - public String getPy() { - return creatYyyy; - } - public void setCreatYyyy(String creatYyyy) { - this.creatYyyy = creatYyyy; - } - public String getKeyword() { - return keyword; - } - public String getKw() { - return keyword; - } - public void setKeyword(String keyword) { - this.keyword = keyword; - } - public String getUR() { - return UR; - } - public void setUR(String uR) { - UR = uR; - } - public String getMasterId() { - return masterId; - } - public String getId() { - return masterId; - } - public void setMasterId(String masterId) { - this.masterId = masterId; - } - public String getM3() { - return M3; - } - public void setM3(String m3) { - M3 = m3; - } - public String getRprsThumbUrl() { - return rprsThumbUrl; - } - public String getL4() { - return rprsThumbUrl; - } - public void setRprsThumbUrl(String rprsThumbUrl) { - this.rprsThumbUrl = rprsThumbUrl; - } - public String getStakrmMngNo() { - return stakrmMngNo; - } - public String getM1() { - return stakrmMngNo; - } - public void setStakrmMngNo(String stakrmMngNo) { - this.stakrmMngNo = stakrmMngNo; - } - public String getProducer() { - return producer; - } - public String getA1() { - return producer; - } - public void setProducer(String producer) { - this.producer = producer; - } - public String getOrgNm() { - return orgNm; - } - public String getPp() { - return orgNm; - } - public void setOrgNm(String orgNm) { - this.orgNm = orgNm; - } -} ->>>>>>> refs/remotes/origin/master From 9ec18d2ae91b854cce694ed984aef906a6f51bcd Mon Sep 17 00:00:00 2001 From: KNKIM Date: Tue, 5 Oct 2021 08:57:47 +0900 Subject: [PATCH 5/7] =?UTF-8?q?=EC=A0=91=EC=86=8D=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EC=86=8C=EC=9E=A5=EC=9E=90=EB=A3=8C=EA=B4=80=20=EC=8B=9C?= =?UTF-8?q?=EC=8A=A4=ED=85=9C=EA=B5=AC=EB=B6=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/nlib/user/LoginDAO_SQL.xml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/resources/egovframework/mapper/nlib/user/LoginDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/user/LoginDAO_SQL.xml index 2e5b4cc7..a4a2a191 100644 --- a/src/main/resources/egovframework/mapper/nlib/user/LoginDAO_SQL.xml +++ b/src/main/resources/egovframework/mapper/nlib/user/LoginDAO_SQL.xml @@ -69,13 +69,14 @@ INSERT INTO SM_ACC_LOG /* 접속로그 */ - ( USER_ID - ,USER_NM - ,DEPT_SEQ - ,DEPT_NM - ,ACC_IP - ,LOGIN_SUCS_YN - ,ACC_DATE + ( USER_ID + , USER_NM + , DEPT_SEQ + , DEPT_NM + , ACC_IP + , LOGIN_SUCS_YN + , ACC_DATE + , SYS_DIV ) VALUES ( #{mbInfoId} ,#{name} @@ -84,6 +85,7 @@ ,#{ip} ,'Y' ,NOW() + ,'02' /* 2021.10.05 추가 (소장자료관) */ ) From c784ef39fbf14cad1eb77fa658c700c6286c3849 Mon Sep 17 00:00:00 2001 From: KNKIM Date: Tue, 5 Oct 2021 09:09:39 +0900 Subject: [PATCH 6/7] =?UTF-8?q?API=20=EA=B3=B5=ED=86=B5=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EB=B3=80=EA=B2=BD=EC=97=90=20=EB=94=B0=EB=A5=B8=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=ED=95=A8=EC=88=98=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nlib/bbs/service/impl/BoardDAOApi.java | 18 ++--- .../java/nlib/bbs/web/BoardControllerApi.java | 78 +++++++++---------- .../java/nlib/col/service/impl/RentDAO.java | 12 +-- .../nlib/col/web/CollectionController.java | 9 ++- .../java/nlib/col/web/RentController.java | 31 ++++---- 5 files changed, 75 insertions(+), 73 deletions(-) diff --git a/src/main/java/nlib/bbs/service/impl/BoardDAOApi.java b/src/main/java/nlib/bbs/service/impl/BoardDAOApi.java index fdd89353..faf3cff0 100644 --- a/src/main/java/nlib/bbs/service/impl/BoardDAOApi.java +++ b/src/main/java/nlib/bbs/service/impl/BoardDAOApi.java @@ -22,22 +22,22 @@ public class BoardDAOApi extends DataApi public DataApiResVO listNotices(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/notice/list"); - return get(reqVO); + return request(reqVO); } public DataApiResVO selectNotice(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/notice"); - return get(reqVO); + return request(reqVO); } public DataApiResVO listFAQs(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/faq/list"); - return get(reqVO); + return request(reqVO); } public DataApiResVO selectFAQ(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/faq"); - return get(reqVO); + return request(reqVO); } @@ -49,12 +49,12 @@ public class BoardDAOApi extends DataApi */ public DataApiResVO listQnAs(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/qna/list"); - return get(reqVO); + return request(reqVO); } public DataApiResVO selectQnA(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/qna"); - return get(reqVO); + return request(reqVO); } public DataApiResVO verifyWriter(DataApiReqVO reqVO) { @@ -63,17 +63,17 @@ public class BoardDAOApi extends DataApi public DataApiResVO updateQnA(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/qna"); - return post(reqVO); + return request(reqVO); } public DataApiResVO deleteQnA(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/qna"); - return delete(reqVO); + return request(reqVO); } public DataApiResVO insertQnA(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/qna"); - return put(reqVO); + return request(reqVO); } diff --git a/src/main/java/nlib/bbs/web/BoardControllerApi.java b/src/main/java/nlib/bbs/web/BoardControllerApi.java index 0df77b4d..f19eb9f7 100644 --- a/src/main/java/nlib/bbs/web/BoardControllerApi.java +++ b/src/main/java/nlib/bbs/web/BoardControllerApi.java @@ -121,8 +121,8 @@ public class BoardControllerApi extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("searchKeyword", searchKeyword); - reqVO.addInfoItem("articleType", articleType); + reqVO.putInfoItem("searchKeyword", searchKeyword); + reqVO.putInfoItem("articleType", articleType); // 요청 DataApiResVO resVO = boardService.listNotices(reqVO); @@ -135,7 +135,7 @@ public class BoardControllerApi extends NlibCommonController // itemsCount: 255 // } HashMap retMap = new HashMap(); - retMap.put("data", resVO.getList()); + retMap.put("data", resVO.getList("record")); retMap.put("itemsCount", resVO.getRecordTotCount()); return makeResponseEntityJson(retMap); @@ -172,8 +172,8 @@ public class BoardControllerApi extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID - reqVO.addInfoItem("articleNo", articleNo); // 게시물번호 + reqVO.putInfoItem("boardNo", "QNA"); // 게시판ID + reqVO.putInfoItem("articleNo", articleNo); // 게시물번호 // 요청 DataApiResVO resVO = boardService.selectNotice(reqVO); @@ -181,8 +181,8 @@ public class BoardControllerApi extends NlibCommonController // 반환 정보 model.addAttribute("articleNo" , articleNo); model.addAttribute("article" , resVO.getInfo()); // 게시물 상세 - model.addAttribute("preArticle" , resVO.getList().get(0)); // 이전글 정보 - model.addAttribute("nextArticle" , resVO.getList().get(1)); // 다음글 정보 + model.addAttribute("preArticle" , resVO.getList("record").get(0)); // 이전글 정보 + model.addAttribute("nextArticle" , resVO.getList("record").get(1)); // 다음글 정보 model.addAttribute("message" , message); model.addAttribute("pageIndex" , pageIndex); model.addAttribute("pageSize" , pageSize); @@ -264,8 +264,8 @@ public class BoardControllerApi extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("searchKeyword", searchKeyword); - reqVO.addInfoItem("faqType", faqType); + reqVO.putInfoItem("searchKeyword", searchKeyword); + reqVO.putInfoItem("faqType", faqType); // 요청 DataApiResVO resVO = boardService.listFAQs(reqVO); @@ -278,7 +278,7 @@ public class BoardControllerApi extends NlibCommonController // itemsCount: 255 // } HashMap retMap = new HashMap(); - retMap.put("data", resVO.getList()); + retMap.put("data", resVO.getList("record")); retMap.put("itemsCount", resVO.getRecordTotCount()); return makeResponseEntityJson(retMap); @@ -303,14 +303,14 @@ public class BoardControllerApi extends NlibCommonController // REQ VO 구성 //------------------------------- DataApiReqVO reqVO = new DataApiReqVO(); - reqVO.addInfoItem("boardNo", "FAQ"); // 게시판ID - reqVO.addInfoItem("articleNo", articleNo); // 게시물번호 + reqVO.putInfoItem("boardNo", "FAQ"); // 게시판ID + reqVO.putInfoItem("articleNo", articleNo); // 게시물번호 // 요청 DataApiResVO resVO = boardService.selectFAQ(reqVO); // 반환 정보 - return makeResponseEntityJson(resVO.getInfo()); + return makeResponseEntityJson(resVO); } /** @@ -369,7 +369,7 @@ public class BoardControllerApi extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("searchKeyword", searchKeyword); + reqVO.putInfoItem("searchKeyword", searchKeyword); // 요청 DataApiResVO resVO = boardService.listQnAs(reqVO); @@ -382,7 +382,7 @@ public class BoardControllerApi extends NlibCommonController // itemsCount: 255 // } HashMap retMap = new HashMap(); - retMap.put("data", resVO.getList()); + retMap.put("data", resVO.getList("record")); retMap.put("itemsCount", resVO.getRecordTotCount()); return makeResponseEntityJson(retMap); @@ -424,8 +424,8 @@ public class BoardControllerApi extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID - reqVO.addInfoItem("articleNo", articleNo); // 게시물번호 + reqVO.putInfoItem("boardNo", "QNA"); // 게시판ID + reqVO.putInfoItem("articleNo", articleNo); // 게시물번호 // 요청 DataApiResVO resVO = boardService.selectQnA(reqVO); @@ -433,8 +433,8 @@ public class BoardControllerApi extends NlibCommonController // 반환 정보 model.addAttribute("articleNo" , articleNo); model.addAttribute("article" , resVO.getInfo()); // 게시물 상세 - model.addAttribute("preArticle" , resVO.getList().get(0)); // 이전글 정보 - model.addAttribute("nextArticle" , resVO.getList().get(1)); // 다음글 정보 + model.addAttribute("preArticle" , resVO.getList("record").get(0)); // 이전글 정보 + model.addAttribute("nextArticle" , resVO.getList("record").get(1)); // 다음글 정보 model.addAttribute("message" , message); model.addAttribute("pageIndex" , pageIndex); model.addAttribute("pageSize" , pageSize); @@ -490,11 +490,11 @@ public class BoardControllerApi extends NlibCommonController // REQ VO 구성 //------------------------------- DataApiReqVO reqVO = new DataApiReqVO(); - reqVO.addInfoItem("boardNo" , "QNA"); - reqVO.addInfoItem("title" , paramMap.get("title")); - reqVO.addInfoItem("regUserName" , paramMap.get("regUserName")); - reqVO.addInfoItem("email" , paramMap.get("email")); - reqVO.addInfoItem("contentQeust", paramMap.get("contentQeust")); + reqVO.putInfoItem("boardNo" , "QNA"); + reqVO.putInfoItem("title" , paramMap.get("title")); + reqVO.putInfoItem("regUserName" , paramMap.get("regUserName")); + reqVO.putInfoItem("email" , paramMap.get("email")); + reqVO.putInfoItem("contentQeust", paramMap.get("contentQeust")); String fileListJsonStr = paramMap.get("fileList"); if(fileListJsonStr.startsWith("\"")) fileListJsonStr = fileListJsonStr.substring(1); @@ -524,7 +524,7 @@ public class BoardControllerApi extends NlibCommonController log.debug("fileMap =" + fileList); */ - reqVO.addInfoItem("fileList", fileListJsonStr); + reqVO.putInfoItem("fileList", fileListJsonStr); // 요청 DataApiResVO resVO = boardService.insertQnA(reqVO); @@ -598,14 +598,14 @@ public class BoardControllerApi extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID - reqVO.addInfoItem("articleNo", articleNo); // 게시물번호 + reqVO.putInfoItem("boardNo", "QNA"); // 게시판ID + reqVO.putInfoItem("articleNo", articleNo); // 게시물번호 // 요청 DataApiResVO resVO = boardService.selectQnA(reqVO); // 비밀번호 확인 - HashMap article = resVO.getInfo(); + HashMap article = resVO.getInfo(); String shaArticlePassword = nlibPasswordEncoder.encode(articlePassword); log.debug("updateQnAForm > 입력받은 비밀번호를 SHA256 암호화한 값 : " + shaArticlePassword); @@ -677,7 +677,7 @@ public class BoardControllerApi extends NlibCommonController //------------------------------- // 기존 정보 조회 DataApiReqVO reqVO = new DataApiReqVO(); - reqVO.addInfoItem("articleNo", articleNo); + reqVO.putInfoItem("articleNo", articleNo); DataApiResVO resVO = boardService.selectQnA(reqVO); String oldArticlePassword = resVO.getInfoItem("articlePassword"); @@ -700,13 +700,13 @@ public class BoardControllerApi extends NlibCommonController // REQ VO 구성 //------------------------------- DataApiReqVO updateReqVO = new DataApiReqVO(); - updateReqVO.addInfoItem("boardNo" , "QNA"); - updateReqVO.addInfoItem("articleNo" , articleNo); - updateReqVO.addInfoItem("title" , paramMap.get("title")); - updateReqVO.addInfoItem("regUserName" , paramMap.get("regUserName")); - updateReqVO.addInfoItem("email" , paramMap.get("email")); - updateReqVO.addInfoItem("contentQeust", paramMap.get("contentQeust")); - updateReqVO.addInfoItem("articlePassword", articlePassword); // SHA256 글비밀번호 + updateReqVO.putInfoItem("boardNo" , "QNA"); + updateReqVO.putInfoItem("articleNo" , articleNo); + updateReqVO.putInfoItem("title" , paramMap.get("title")); + updateReqVO.putInfoItem("regUserName" , paramMap.get("regUserName")); + updateReqVO.putInfoItem("email" , paramMap.get("email")); + updateReqVO.putInfoItem("contentQeust", paramMap.get("contentQeust")); + updateReqVO.putInfoItem("articlePassword", articlePassword); // SHA256 글비밀번호 // 요청 DataApiResVO updateResVO = boardService.updateQnA(updateReqVO); @@ -779,14 +779,14 @@ public class BoardControllerApi extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID - reqVO.addInfoItem("articleNo", articleNo); // 게시물번호 + reqVO.putInfoItem("boardNo", "QNA"); // 게시판ID + reqVO.putInfoItem("articleNo", articleNo); // 게시물번호 // 요청 DataApiResVO resVO = boardService.selectQnA(reqVO); // 비밀번호 확인 - HashMap article = resVO.getInfo(); + HashMap article = resVO.getInfo(); String shaArticlePassword = nlibPasswordEncoder.encode(articlePassword); log.debug("updateQnAForm > 입력받은 비밀번호를 SHA256 암호화한 값 : " + shaArticlePassword); diff --git a/src/main/java/nlib/col/service/impl/RentDAO.java b/src/main/java/nlib/col/service/impl/RentDAO.java index acff5a92..c333a69e 100644 --- a/src/main/java/nlib/col/service/impl/RentDAO.java +++ b/src/main/java/nlib/col/service/impl/RentDAO.java @@ -29,7 +29,7 @@ public class RentDAO extends DataApi */ public DataApiResVO listRentItems(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/list"); - return get(reqVO); + return request(reqVO); } /** @@ -40,7 +40,7 @@ public class RentDAO extends DataApi */ public DataApiResVO listPostpones(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/list"); - return get(reqVO); + return request(reqVO); } /** @@ -51,7 +51,7 @@ public class RentDAO extends DataApi */ public DataApiResVO listCanceledRentItems(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/list"); - return get(reqVO); + return request(reqVO); } /** @@ -62,7 +62,7 @@ public class RentDAO extends DataApi */ public DataApiResVO listReservations(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/list"); - return get(reqVO); + return request(reqVO); } public DataApiResVO cancelReservations(DataApiReqVO reqVO) { @@ -77,12 +77,12 @@ public class RentDAO extends DataApi */ public DataApiResVO listRequestsForViewingItem(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/read/list"); - return get(reqVO); + return request(reqVO); } public DataApiResVO selectRequestInfoForViewingItem(DataApiReqVO reqVO) { reqVO.setReqUrl(RESOURCE_URI + "/read"); - return get(reqVO); + return request(reqVO); } diff --git a/src/main/java/nlib/col/web/CollectionController.java b/src/main/java/nlib/col/web/CollectionController.java index 789ab859..6af2dc14 100644 --- a/src/main/java/nlib/col/web/CollectionController.java +++ b/src/main/java/nlib/col/web/CollectionController.java @@ -36,6 +36,7 @@ import nlib.col.service.DeptVO; import nlib.col.service.RisVO; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; +import nlib.restful.service.DataApiVO; import nlib.user.service.NlibLoginVO; import nlib.util.StringUtil; @@ -98,7 +99,7 @@ public class CollectionController extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("searchKeyword", searchKeyword); + reqVO.putInfoItem("searchKeyword", searchKeyword); // 요청 DataApiResVO resVO = collectionService.listItems(reqVO); @@ -111,7 +112,7 @@ public class CollectionController extends NlibCommonController // itemsCount: 255 // } HashMap retMap = new HashMap(); - retMap.put("data", resVO.getList()); + retMap.put("data", resVO.getList(DataApiVO.XML_EL_NAME_RECORD)); retMap.put("itemsCount", resVO.getRecordTotCount()); return makeResponseEntityJson(retMap); @@ -214,8 +215,8 @@ public class CollectionController extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID - reqVO.addInfoItem("articleNo", articleNo); // 게시물번호 + reqVO.putInfoItem("boardNo", "QNA"); // 게시판ID + reqVO.putInfoItem("articleNo", articleNo); // 게시물번호 // 요청 DataApiResVO resVO = collectionService.selectItemInfo(reqVO); diff --git a/src/main/java/nlib/col/web/RentController.java b/src/main/java/nlib/col/web/RentController.java index 66eebb92..9c50d5c7 100644 --- a/src/main/java/nlib/col/web/RentController.java +++ b/src/main/java/nlib/col/web/RentController.java @@ -24,6 +24,7 @@ import nlib.cmm.service.NlibProperty; import nlib.col.service.RentService; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; +import nlib.restful.service.DataApiVO; import nlib.util.StringUtil; /** @@ -102,8 +103,8 @@ public class RentController extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("searchKeyword", searchKeyword); - + reqVO.putInfoItem("searchKeyword", searchKeyword); + // 요청 DataApiResVO resVO = rentService.listRentItems(reqVO); @@ -115,7 +116,7 @@ public class RentController extends NlibCommonController // itemsCount: 255 // } HashMap retMap = new HashMap(); - retMap.put("data", resVO.getList()); + retMap.put("data", resVO.getList(DataApiVO.XML_EL_NAME_RECORD)); retMap.put("itemsCount", resVO.getRecordTotCount()); return makeResponseEntityJson(retMap); @@ -162,7 +163,7 @@ public class RentController extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("searchKeyword", searchKeyword); + reqVO.putInfoItem("searchKeyword", searchKeyword); // 요청 DataApiResVO resVO = rentService.listCanceledRentItems(reqVO); @@ -175,7 +176,7 @@ public class RentController extends NlibCommonController // itemsCount: 255 // } HashMap retMap = new HashMap(); - retMap.put("data", resVO.getList()); + retMap.put("data", resVO.getList(DataApiVO.XML_EL_NAME_RECORD)); retMap.put("itemsCount", resVO.getRecordTotCount()); return makeResponseEntityJson(retMap); @@ -222,7 +223,7 @@ public class RentController extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("searchKeyword", searchKeyword); + reqVO.putInfoItem("searchKeyword", searchKeyword); // 요청 DataApiResVO resVO = rentService.listPostpones(reqVO); @@ -235,7 +236,7 @@ public class RentController extends NlibCommonController // itemsCount: 255 // } HashMap retMap = new HashMap(); - retMap.put("data", resVO.getList()); + retMap.put("data", resVO.getList(DataApiVO.XML_EL_NAME_RECORD)); retMap.put("itemsCount", resVO.getRecordTotCount()); return makeResponseEntityJson(retMap); @@ -286,7 +287,7 @@ public class RentController extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("searchKeyword", searchKeyword); + reqVO.putInfoItem("searchKeyword", searchKeyword); // 요청 DataApiResVO resVO = rentService.listReservations(reqVO); @@ -299,7 +300,7 @@ public class RentController extends NlibCommonController // itemsCount: 255 // } HashMap retMap = new HashMap(); - retMap.put("data", resVO.getList()); + retMap.put("data", resVO.getList(DataApiVO.XML_EL_NAME_RECORD)); retMap.put("itemsCount", resVO.getRecordTotCount()); return makeResponseEntityJson(retMap); @@ -352,7 +353,7 @@ public class RentController extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("searchKeyword", searchKeyword); + reqVO.putInfoItem("searchKeyword", searchKeyword); // 요청 DataApiResVO resVO = rentService.listRequestsForViewingItem(reqVO); @@ -365,7 +366,7 @@ public class RentController extends NlibCommonController // itemsCount: 255 // } HashMap retMap = new HashMap(); - retMap.put("data", resVO.getList()); + retMap.put("data", resVO.getList(DataApiVO.XML_EL_NAME_RECORD)); retMap.put("itemsCount", resVO.getRecordTotCount()); return makeResponseEntityJson(retMap); @@ -401,8 +402,8 @@ public class RentController extends NlibCommonController DataApiReqVO reqVO = new DataApiReqVO(); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); - reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID - reqVO.addInfoItem("articleNo", articleNo); // 게시물번호 + reqVO.putInfoItem("boardNo", "QNA"); // 게시판ID + reqVO.putInfoItem("articleNo", articleNo); // 게시물번호 // 요청 DataApiResVO resVO = rentService.selectRequestInfoForViewingItem(reqVO); @@ -410,8 +411,8 @@ public class RentController extends NlibCommonController // 반환 정보 model.addAttribute("articleNo" , articleNo); model.addAttribute("article" , resVO.getInfo()); // 게시물 상세 - model.addAttribute("preArticle" , resVO.getList().get(0)); // 이전글 정보 - model.addAttribute("nextArticle" , resVO.getList().get(1)); // 다음글 정보 + model.addAttribute("preArticle" , resVO.getList(DataApiVO.XML_EL_NAME_RECORD).get(0)); // 이전글 정보 + model.addAttribute("nextArticle" , resVO.getList(DataApiVO.XML_EL_NAME_RECORD).get(1)); // 다음글 정보 model.addAttribute("message" , message); model.addAttribute("pageIndex" , pageIndex); model.addAttribute("pageSize" , pageSize); From 43b1981de8fbcd3e3b913571247ef7114187149e Mon Sep 17 00:00:00 2001 From: KNKIM Date: Wed, 6 Oct 2021 10:07:18 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=EC=9E=90=EB=A3=8C=20=EC=84=B8=EB=B6=80=20?= =?UTF-8?q?=ED=95=AD=EB=AA=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/nlib/col/service/CollectionVO.java | 597 +++++++++++++++--- 1 file changed, 497 insertions(+), 100 deletions(-) diff --git a/src/main/java/nlib/col/service/CollectionVO.java b/src/main/java/nlib/col/service/CollectionVO.java index 8dba34bc..61f11c69 100644 --- a/src/main/java/nlib/col/service/CollectionVO.java +++ b/src/main/java/nlib/col/service/CollectionVO.java @@ -1,100 +1,497 @@ -package nlib.col.service; - -import nlib.cmm.service.PagingVO; - -import java.io.Serializable; - -/** - *
    - * @Class Name : CollectionVO.java
    - * 
    - * @Description : 소장자료 관련 VO
    - * 
    - * 
    - * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    - *
    - * 
    - * - * @ ------------ -------- --------------------------- - * @ 수정일 수정자 수정내용 - * @ ------------ -------- --------------------------- - * @ 2021. 9. 23. JSYOO 최초 생성 - - * - * - * @author 이씨플라자 * DIGITALSHIP JSYOO - * @since 2021. 9. 28. - * @version 1.0 - * - */ -public class CollectionVO extends PagingVO { - - private String masterId; /* 마스터id */ - private int mbInterestId; /* 관심 id */ - private String mbInfoId; /* 회원 id */ - private String title; /* 제목 */ - private String rprsThumbUrl; /* 대표썸네일URL */ - private String useYn; /* 사용여부 */ - private String regDd; /* 등록일자 */ - private String mngOrgNm; /* 관리처리과명 */ - private String mngOrgCd; /* 관리처리과코드 */ - - public String getMasterId() { - return masterId; - } - public void setMasterId(String masterId) { - this.masterId = masterId; - } - public int getMbInterestId() { - return mbInterestId; - } - public void setMbInterestId(int mbInterestId) { - this.mbInterestId = mbInterestId; - } - public void setMbInterestId(String mbInterestId) { - this.mbInterestId = Integer.parseInt(mbInterestId); - } - public String getMbInfoId() { - return mbInfoId; - } - public void setMbInfoId(String mbInfoId) { - this.mbInfoId = mbInfoId; - } - public String getTitle() { - return title; - } - public void setTitle(String title) { - this.title = title; - } - public String getRprsThumbUrl() { - return rprsThumbUrl; - } - public void setRprsThumbUrl(String rprsThumbUrl) { - this.rprsThumbUrl = rprsThumbUrl; - } - public String getUseYn() { - return useYn; - } - public void setUseYn(String useYn) { - this.useYn = useYn; - } - public String getRegDd() { - return regDd; - } - public void setRegDd(String regDd) { - this.regDd = regDd; - } - public String getMngOrgNm() { - return mngOrgNm; - } - public void setMngOrgNm(String mngOrgNm) { - this.mngOrgNm = mngOrgNm; - } - public String getMngOrgCd() { - return mngOrgCd; - } - public void setMngOrgCd(String mngOrgCd) { - this.mngOrgCd = mngOrgCd; - } - -} +package nlib.col.service; + +import nlib.cmm.service.PagingVO; + +import java.io.Serializable; + +/** + *
    + * @Class Name : CollectionVO.java
    + * 
    + * @Description : 소장자료 관련 VO
    + * 
    + * 
    + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
    + *
    + * 
    + * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 9. 23. JSYOO 최초 생성 + * @ 2021.10. 06. KKN 자료에 대한 세부 항목 추가 + + * + * + * @author 이씨플라자 * DIGITALSHIP JSYOO + * @since 2021. 9. 28. + * @version 1.0 + * + */ +public class CollectionVO extends PagingVO { + + private String masterId; /* 마스터id */ + private int mbInterestId; /* 관심 id */ + private String mbInfoId; /* 회원 id */ + private String title; /* 제목 */ + private String rprsThumbUrl; /* 대표썸네일URL */ + private String useYn; /* 사용여부 */ + private String regDd; /* 등록일자 */ + private String mngOrgNm; /* 관리처리과명 */ + private String mngOrgCd; /* 관리처리과코드 */ + + // 상세항목 추가 (2021.10. 06.) + private String typeDivCd; /* 자료유형코드 */ + private String typeCodeNm; /* 자료유형명 (도서간행물/문서/도면 등) */ + private String subjectNm; /* 주제분야명 */ + private String orgNm; /* 생산기관명 */ + private String creatYyyy; /* 생산년도 */ + private String interfaceId; /* 지역N문화서비스ID */ + private String openDivCd; /* 원문공개코드 */ + private String openDivNm; /* 원문공개코드명 */ + private String operReadRangeCd; /* 열람가능코드 */ + private String operReadRangeNm; /* 열람가능코드명 */ + private String operOutRangeCd; /* 대출가능코드 */ + private String operOutRangeNm; /* 대출가능코드명 */ + private String useStatus; /* 이용상태코드 */ + private String useStatusNm; /* 이용상태코드명 */ + private String rtnExpctDd; /* 반납예정일자 */ + private int awaiterCnt; /* 대출대기자수 */ + private String bookLentPsblYn; /* 현재대출신청가능여부 */ + private String rsrvPsblYn; /* 현재대출예약가능여부 */ + private String reqPsblYn; /* 현재열람신청가능여부 */ + private String interestYn; /* 사용자관심여부 */ + private String dtlsTypeDivCd; /* 세부유형코드 */ + private String dtlsTypeDivNm; /* 세부유형명 */ + private String mngtNo; /* 관리번호 */ + private String bookAuthor; /* 저자명 */ + private String bookPublisher; /* 출판사명 */ + private String bookPlbcTypeNm; /* 발간유형명 */ + private String bookPlbcMda; /* 발간매채명 */ + private String bookCallNo; /* 청구기호 */ + private String themeCodeNm; /* 테마명 */ + private String ageCodeNm; /* 시대 */ + private String chronologicalCodeStartNm; /* 연대 start */ + private String chronologicalCodeEndNm; /* 연대 end */ + private String keyword; /* 키워드목록 */ + private String bookIndex; /* 목차정보 */ + private String docNo; /* (구)문서번호 */ + private String mapTypeCd; /* 도면지도구분코드 */ + private String mapTypeNm; /* 도면지도구분코드명 */ + private String mapLoc; /* 도면지도위치주소 */ + private String photoMediaCd; /* 사진필름미디어유형구분코드 */ + private String photoMediaNm; /* 사진필름미디어매체 */ + private String photoSizeNm; /* 사진필름미디어규격 */ + private String photoDescription; /* 사진필름미디어설명 */ + private String photoAdditionalDescription; /* 사진필름미디어부가설명 */ + private String videoMediaCd; /* 녹음동영상미디어유형구분코드 */ + private String videoMediaNm; /* 녹음동영상미디어유형구분코드명 */ + private String videoTime; /* 녹음동영상미디어재생시간 */ + private String videoStat; /* 녹음동영상미디어재생화질상태 */ + private String videoDescription; /* 녹음동영상미디어설명 */ + private String videoAdditionalDescription; /* 녹음동영상미디어부가설명 */ + private String museTypeCd; /* 박물유형구분코드 */ + private String museTypeNm; /* 박물유형구분코드명 */ + private String museKindCd; /* 박물형태 */ + private String museKindNm; /* 박물형태명 */ + private String museMeterialCd; /* 박물재질 */ + private String museMeterialNm; /* 박물재질명 */ + private String assetLink; /* 자산링크 */ + + + public String getMasterId() { + return masterId; + } + public void setMasterId(String masterId) { + this.masterId = masterId; + } + public int getMbInterestId() { + return mbInterestId; + } + public void setMbInterestId(int mbInterestId) { + this.mbInterestId = mbInterestId; + } + public void setMbInterestId(String mbInterestId) { + this.mbInterestId = Integer.parseInt(mbInterestId); + } + public String getMbInfoId() { + return mbInfoId; + } + public void setMbInfoId(String mbInfoId) { + this.mbInfoId = mbInfoId; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getRprsThumbUrl() { + return rprsThumbUrl; + } + public void setRprsThumbUrl(String rprsThumbUrl) { + this.rprsThumbUrl = rprsThumbUrl; + } + public String getUseYn() { + return useYn; + } + public void setUseYn(String useYn) { + this.useYn = useYn; + } + public String getRegDd() { + return regDd; + } + public void setRegDd(String regDd) { + this.regDd = regDd; + } + public String getMngOrgNm() { + return mngOrgNm; + } + public void setMngOrgNm(String mngOrgNm) { + this.mngOrgNm = mngOrgNm; + } + public String getMngOrgCd() { + return mngOrgCd; + } + public void setMngOrgCd(String mngOrgCd) { + this.mngOrgCd = mngOrgCd; + } + public String getTypeDivCd() { + return typeDivCd; + } + public void setTypeDivCd(String typeDivCd) { + this.typeDivCd = typeDivCd; + } + public String getTypeCodeNm() { + return typeCodeNm; + } + public void setTypeCodeNm(String typeCodeNm) { + this.typeCodeNm = typeCodeNm; + } + public String getSubjectNm() { + return subjectNm; + } + public void setSubjectNm(String subjectNm) { + this.subjectNm = subjectNm; + } + public String getOrgNm() { + return orgNm; + } + public void setOrgNm(String orgNm) { + this.orgNm = orgNm; + } + public String getCreatYyyy() { + return creatYyyy; + } + public void setCreatYyyy(String creatYyyy) { + this.creatYyyy = creatYyyy; + } + public String getInterfaceId() { + return interfaceId; + } + public void setInterfaceId(String interfaceId) { + this.interfaceId = interfaceId; + } + public String getOpenDivCd() { + return openDivCd; + } + public void setOpenDivCd(String openDivCd) { + this.openDivCd = openDivCd; + } + public String getOpenDivNm() { + return openDivNm; + } + public void setOpenDivNm(String openDivNm) { + this.openDivNm = openDivNm; + } + public String getOperReadRangeCd() { + return operReadRangeCd; + } + public void setOperReadRangeCd(String operReadRangeCd) { + this.operReadRangeCd = operReadRangeCd; + } + public String getOperReadRangeNm() { + return operReadRangeNm; + } + public void setOperReadRangeNm(String operReadRangeNm) { + this.operReadRangeNm = operReadRangeNm; + } + public String getOperOutRangeCd() { + return operOutRangeCd; + } + public void setOperOutRangeCd(String operOutRangeCd) { + this.operOutRangeCd = operOutRangeCd; + } + public String getOperOutRangeNm() { + return operOutRangeNm; + } + public void setOperOutRangeNm(String operOutRangeNm) { + this.operOutRangeNm = operOutRangeNm; + } + public String getUseStatus() { + return useStatus; + } + public void setUseStatus(String useStatus) { + this.useStatus = useStatus; + } + public String getUseStatusNm() { + return useStatusNm; + } + public void setUseStatusNm(String useStatusNm) { + this.useStatusNm = useStatusNm; + } + public String getRtnExpctDd() { + return rtnExpctDd; + } + public void setRtnExpctDd(String rtnExpctDd) { + this.rtnExpctDd = rtnExpctDd; + } + public int getAwaiterCnt() { + return awaiterCnt; + } + public void setAwaiterCnt(int awaiterCnt) { + this.awaiterCnt = awaiterCnt; + } + public String getBookLentPsblYn() { + return bookLentPsblYn; + } + public void setBookLentPsblYn(String bookLentPsblYn) { + this.bookLentPsblYn = bookLentPsblYn; + } + public String getRsrvPsblYn() { + return rsrvPsblYn; + } + public void setRsrvPsblYn(String rsrvPsblYn) { + this.rsrvPsblYn = rsrvPsblYn; + } + public String getReqPsblYn() { + return reqPsblYn; + } + public void setReqPsblYn(String reqPsblYn) { + this.reqPsblYn = reqPsblYn; + } + public String getInterestYn() { + return interestYn; + } + public void setInterestYn(String interestYn) { + this.interestYn = interestYn; + } + public String getDtlsTypeDivCd() { + return dtlsTypeDivCd; + } + public void setDtlsTypeDivCd(String dtlsTypeDivCd) { + this.dtlsTypeDivCd = dtlsTypeDivCd; + } + public String getDtlsTypeDivNm() { + return dtlsTypeDivNm; + } + public void setDtlsTypeDivNm(String dtlsTypeDivNm) { + this.dtlsTypeDivNm = dtlsTypeDivNm; + } + public String getMngtNo() { + return mngtNo; + } + public void setMngtNo(String mngtNo) { + this.mngtNo = mngtNo; + } + public String getBookAuthor() { + return bookAuthor; + } + public void setBookAuthor(String bookAuthor) { + this.bookAuthor = bookAuthor; + } + public String getBookPublisher() { + return bookPublisher; + } + public void setBookPublisher(String bookPublisher) { + this.bookPublisher = bookPublisher; + } + public String getBookPlbcTypeNm() { + return bookPlbcTypeNm; + } + public void setBookPlbcTypeNm(String bookPlbcTypeNm) { + this.bookPlbcTypeNm = bookPlbcTypeNm; + } + public String getBookPlbcMda() { + return bookPlbcMda; + } + public void setBookPlbcMda(String bookPlbcMda) { + this.bookPlbcMda = bookPlbcMda; + } + public String getBookCallNo() { + return bookCallNo; + } + public void setBookCallNo(String bookCallNo) { + this.bookCallNo = bookCallNo; + } + public String getThemeCodeNm() { + return themeCodeNm; + } + public void setThemeCodeNm(String themeCodeNm) { + this.themeCodeNm = themeCodeNm; + } + public String getAgeCodeNm() { + return ageCodeNm; + } + public void setAgeCodeNm(String ageCodeNm) { + this.ageCodeNm = ageCodeNm; + } + public String getChronologicalCodeStartNm() { + return chronologicalCodeStartNm; + } + public void setChronologicalCodeStartNm(String chronologicalCodeStartNm) { + this.chronologicalCodeStartNm = chronologicalCodeStartNm; + } + public String getChronologicalCodeEndNm() { + return chronologicalCodeEndNm; + } + public void setChronologicalCodeEndNm(String chronologicalCodeEndNm) { + this.chronologicalCodeEndNm = chronologicalCodeEndNm; + } + public String getKeyword() { + return keyword; + } + public void setKeyword(String keyword) { + this.keyword = keyword; + } + public String getBookIndex() { + return bookIndex; + } + public void setBookIndex(String bookIndex) { + this.bookIndex = bookIndex; + } + public String getDocNo() { + return docNo; + } + public void setDocNo(String docNo) { + this.docNo = docNo; + } + public String getMapTypeCd() { + return mapTypeCd; + } + public void setMapTypeCd(String mapTypeCd) { + this.mapTypeCd = mapTypeCd; + } + public String getMapTypeNm() { + return mapTypeNm; + } + public void setMapTypeNm(String mapTypeNm) { + this.mapTypeNm = mapTypeNm; + } + public String getMapLoc() { + return mapLoc; + } + public void setMapLoc(String mapLoc) { + this.mapLoc = mapLoc; + } + public String getPhotoMediaCd() { + return photoMediaCd; + } + public void setPhotoMediaCd(String photoMediaCd) { + this.photoMediaCd = photoMediaCd; + } + public String getPhotoMediaNm() { + return photoMediaNm; + } + public void setPhotoMediaNm(String photoMediaNm) { + this.photoMediaNm = photoMediaNm; + } + public String getPhotoSizeNm() { + return photoSizeNm; + } + public void setPhotoSizeNm(String photoSizeNm) { + this.photoSizeNm = photoSizeNm; + } + public String getPhotoDescription() { + return photoDescription; + } + public void setPhotoDescription(String photoDescription) { + this.photoDescription = photoDescription; + } + public String getPhotoAdditionalDescription() { + return photoAdditionalDescription; + } + public void setPhotoAdditionalDescription(String photoAdditionalDescription) { + this.photoAdditionalDescription = photoAdditionalDescription; + } + public String getVideoMediaCd() { + return videoMediaCd; + } + public void setVideoMediaCd(String videoMediaCd) { + this.videoMediaCd = videoMediaCd; + } + public String getVideoMediaNm() { + return videoMediaNm; + } + public void setVideoMediaNm(String videoMediaNm) { + this.videoMediaNm = videoMediaNm; + } + public String getVideoTime() { + return videoTime; + } + public void setVideoTime(String videoTime) { + this.videoTime = videoTime; + } + public String getVideoStat() { + return videoStat; + } + public void setVideoStat(String videoStat) { + this.videoStat = videoStat; + } + public String getVideoDescription() { + return videoDescription; + } + public void setVideoDescription(String videoDescription) { + this.videoDescription = videoDescription; + } + public String getVideoAdditionalDescription() { + return videoAdditionalDescription; + } + public void setVideoAdditionalDescription(String videoAdditionalDescription) { + this.videoAdditionalDescription = videoAdditionalDescription; + } + public String getMuseTypeCd() { + return museTypeCd; + } + public void setMuseTypeCd(String museTypeCd) { + this.museTypeCd = museTypeCd; + } + public String getMuseTypeNm() { + return museTypeNm; + } + public void setMuseTypeNm(String museTypeNm) { + this.museTypeNm = museTypeNm; + } + public String getMuseKindCd() { + return museKindCd; + } + public void setMuseKindCd(String museKindCd) { + this.museKindCd = museKindCd; + } + public String getMuseKindNm() { + return museKindNm; + } + public void setMuseKindNm(String museKindNm) { + this.museKindNm = museKindNm; + } + public String getMuseMeterialCd() { + return museMeterialCd; + } + public void setMuseMeterialCd(String museMeterialCd) { + this.museMeterialCd = museMeterialCd; + } + public String getMuseMeterialNm() { + return museMeterialNm; + } + public void setMuseMeterialNm(String museMeterialNm) { + this.museMeterialNm = museMeterialNm; + } + public String getAssetLink() { + return assetLink; + } + public void setAssetLink(String assetLink) { + this.assetLink = assetLink; + } + +} +