소스 이상 충돌 정리

This commit is contained in:
KNKIM 2021-11-17 12:27:07 +09:00
parent 0f84dc08fd
commit 4b44dc0acf

View File

@ -1,302 +1,307 @@
package nlib.sch.service.impl; package nlib.sch.service.impl;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.Reader; import java.io.Reader;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.net.URL; import java.net.URL;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import nlib.sch.service.NlibSearchVO; import nlib.sch.service.NlibSearchVO;
import nlib.col.service.CollectionVO; import nlib.col.service.CollectionVO;
import nlib.restful.DataApi; import nlib.restful.DataApi;
import nlib.restful.service.DataApiInterface; import nlib.restful.service.DataApiInterface;
import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO; import nlib.restful.service.DataApiResVO;
import nlib.restful.service.impl.DataApiRESTful; import nlib.restful.service.impl.DataApiRESTful;
import nlib.sch.service.NlibSearchCollectionVO; import nlib.sch.service.NlibSearchCollectionVO;
import nlib.sch.service.NlibSearchInterface; import nlib.sch.service.NlibSearchInterface;
import nlib.sch.service.NlibSearchService; import nlib.sch.service.NlibSearchService;
import nlib.util.StringUtil; import nlib.util.StringUtil;
@Service("nlibSearchService") @Service("nlibSearchService")
public class NlibSearchServiceImpl implements NlibSearchService{ public class NlibSearchServiceImpl implements NlibSearchService{
private static final Logger log = LoggerFactory.getLogger(NlibSearchServiceImpl.class); private static final Logger log = LoggerFactory.getLogger(NlibSearchServiceImpl.class);
/* DataApi 접속 서버 정보 */ /* DataApi 접속 서버 정보 */
@Value("#{properties['search.searchIp']}") @Value("#{properties['search.searchIp']}")
private String SEARCH_IP; private String SEARCH_IP;
@Value("#{properties['search.searchPort']}") @Value("#{properties['search.searchPort']}")
private String SEARCH_PORT; private String SEARCH_PORT;
@Value("#{properties['search.protocol']}") @Value("#{properties['search.protocol']}")
private String SEARCH_PROTOCOL; private String SEARCH_PROTOCOL;
/** RESTFul API 송수신 모듈 */ /** RESTFul API 송수신 모듈 */
@Resource(name = "dataApi") @Resource(name = "dataApi")
private DataApi dataApi; private DataApi dataApi;
public NlibSearchVO getSearch(NlibSearchVO searchVO) throws Exception { public NlibSearchVO getSearch(NlibSearchVO searchVO) throws Exception {
try { try {
//검색엔진 페이지 셋팅 //검색엔진 페이지 셋팅
searchVO.setListCount(Integer.toString(searchVO.getPageSize())); searchVO.setListCount(Integer.toString(searchVO.getPageSize()));
searchVO.setStartCount(Integer.toString(searchVO.getPageIndex())); searchVO.setStartCount(Integer.toString(searchVO.getPageIndex()));
String collectionTemp=""; String collectionTemp="";
String nameTemp=""; String nameTemp="";
//----------------------------------- //-----------------------------------
// 입력값 검증작업 // 입력값 검증작업
//----------------------------------- //-----------------------------------
/*resVO = DataApiInterface.checkReqCommonParams(reqVO); /*resVO = DataApiInterface.checkReqCommonParams(reqVO);
if(resVO != null) return resVO; if(resVO != null) return resVO;
HttpMethod method = reqVO.getReqMethod();*/ HttpMethod method = reqVO.getReqMethod();*/
//----------------------------------- //-----------------------------------
// 파라메터 생성 작업 요청 처리 // 파라메터 생성 작업 요청 처리
//----------------------------------- //-----------------------------------
String url = SEARCH_PROTOCOL + "://" + SEARCH_IP + ("80".equals(SEARCH_PORT) ? "" : ":" + SEARCH_PORT) + "/searchApi/searchApi.jsp"; String url = SEARCH_PROTOCOL + "://" + SEARCH_IP + ("80".equals(SEARCH_PORT) ? "" : ":" + SEARCH_PORT) + "/searchApi/searchApi.jsp";
log.debug("REQ URL : " + url); log.debug("REQ URL : " + url);
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
ResponseEntity<String> responseEntity = null; ResponseEntity<String> responseEntity = null;
ResponseEntity<String> allResponseEntity = null; ResponseEntity<String> allResponseEntity = null;
RestTemplate restTemplate = new RestTemplate(); RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters() restTemplate.getMessageConverters()
.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8)); .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
//단일 검색 //단일 검색
MultiValueMap<String, String> parameters= searchVO.getSearchMap(); MultiValueMap<String, String> parameters= searchVO.getSearchMap();
//전체 검색 ( 탭별 count가 목적) //전체 검색 ( 탭별 count가 목적)
collectionTemp = searchVO.getCollection(); collectionTemp = searchVO.getCollection();
if("".equals(StringUtil.getString(searchVO.getCollectionList(), "")) || "ALL".equals(StringUtil.getString(searchVO.getCollectionList(), ""))) if("".equals(StringUtil.getString(searchVO.getCollectionList(), "")) || "ALL".equals(StringUtil.getString(searchVO.getCollectionList(), "")))
{ {
searchVO.setCollection("ALL"); searchVO.setCollection("ALL");
}else }else
{ {
//상세검색시 콜렉션리스트만 카운트하기위해 추가. //상세검색시 콜렉션리스트만 카운트하기위해 추가.
searchVO.setCollection(searchVO.getCollectionList()); searchVO.setCollection(searchVO.getCollectionList());
} }
MultiValueMap<String, String> allParameters= searchVO.getSearchMap(); MultiValueMap<String, String> allParameters= searchVO.getSearchMap();
searchVO.setCollection(collectionTemp); searchVO.setCollection(collectionTemp);
//post방식 //post방식
parameters.forEach((k, v) -> log.debug("params > " + k + " : " + v)); parameters.forEach((k, v) -> log.debug("params > " + k + " : " + v));
allParameters.forEach((k, v) -> log.debug("allParams > " + k + " : " + v)); allParameters.forEach((k, v) -> log.debug("allParams > " + k + " : " + v));
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity(parameters, headers); HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity(parameters, headers);
HttpEntity<MultiValueMap<String, String>> allRequestEntity = new HttpEntity(allParameters, headers); HttpEntity<MultiValueMap<String, String>> allRequestEntity = new HttpEntity(allParameters, headers);
responseEntity = restTemplate.postForEntity(url, requestEntity , String.class); responseEntity = restTemplate.postForEntity(url, requestEntity , String.class);
allResponseEntity = restTemplate.postForEntity(url, allRequestEntity , String.class); allResponseEntity = restTemplate.postForEntity(url, allRequestEntity , String.class);
//----------------------------------- //-----------------------------------
// 응답 처리 // 응답 처리
//----------------------------------- //-----------------------------------
HttpStatus statusCode = responseEntity.getStatusCode(); HttpStatus statusCode = responseEntity.getStatusCode();
log.debug("RES StatusCode : " + statusCode); log.debug("RES StatusCode : " + statusCode);
String resultXML = responseEntity.getBody(); String resultXML = responseEntity.getBody();
log.debug("RES resultXML : " + resultXML); log.debug("RES resultXML : " + resultXML);
HttpStatus allStatusCode = allResponseEntity.getStatusCode(); HttpStatus allStatusCode = allResponseEntity.getStatusCode();
log.debug("RES allStatusCode : " + allStatusCode); log.debug("RES allStatusCode : " + allStatusCode);
String allResultXML = allResponseEntity.getBody(); String allResultXML = allResponseEntity.getBody();
log.debug("RES allResultXML : " + allResultXML); log.debug("RES allResultXML : " + allResultXML);
//검색엔진 결과 json 파싱 //검색엔진 결과 json 파싱
JsonParser jsonParser = new JsonParser(); JsonParser jsonParser = new JsonParser();
JsonObject jsonObject = null; JsonObject jsonObject = null;
JsonObject tmp = null; JsonObject tmp = null;
String collection = ""; String collection = "";
String totalCount = ""; String totalCount = "";
JsonArray jsonArray = null; JsonArray jsonArray = null;
//전체검색 결과 탭별 count //전체검색 결과 탭별 count
jsonObject = (JsonObject) jsonParser.parse(allResultXML); jsonObject = (JsonObject) jsonParser.parse(allResultXML);
jsonObject = (JsonObject) jsonObject.get("SearchQueryResult"); jsonObject = (JsonObject) jsonObject.get("SearchQueryResult");
jsonArray = (JsonArray) jsonObject.get("Collection"); jsonArray = (JsonArray) jsonObject.get("Collection");
for(int i=0;i<jsonArray.size();i++){ for(int i=0;i<jsonArray.size();i++){
tmp = (JsonObject)jsonArray.get(i); tmp = (JsonObject)jsonArray.get(i);
// 탭별 총개수 // 탭별 총개수
collection = tmp.get("Id").getAsString(); collection = tmp.get("Id").getAsString();
tmp = (JsonObject) tmp.get("DocumentSet"); tmp = (JsonObject) tmp.get("DocumentSet");
totalCount = tmp.get("TotalCount").getAsString(); totalCount = tmp.get("TotalCount").getAsString();
searchVO.setCollectionTotalCount(collection, totalCount); searchVO.setCollectionTotalCount(collection, totalCount);
}; };
//단일 결과데이터 담기 //단일 결과데이터 담기
JsonArray colArray = null; JsonArray colArray = null;
jsonObject = (JsonObject) jsonParser.parse(resultXML); jsonObject = (JsonObject) jsonParser.parse(resultXML);
jsonObject = (JsonObject) jsonObject.get("SearchQueryResult"); jsonObject = (JsonObject) jsonObject.get("SearchQueryResult");
jsonArray = (JsonArray) jsonObject.get("Collection"); jsonArray = (JsonArray) jsonObject.get("Collection");
JsonObject filterObject = null; JsonObject filterObject = null;
JsonArray filterList = null; JsonArray filterList = null;
JsonArray tmpList = null; JsonArray tmpList = null;
JsonArray subjectList = null; JsonArray subjectList = null;
JsonArray typeList = null; JsonArray typeList = null;
JsonArray orgList = null; JsonArray orgList = null;
JsonArray categoryList = null; JsonArray categoryList = null;
List<CollectionVO> list = new ArrayList<>(); List<CollectionVO> list = new ArrayList<>();
List<HashMap<String,String>> subjectMap = new ArrayList<HashMap<String,String>>(); List<HashMap<String,String>> subjectMap = new ArrayList<HashMap<String,String>>();
List<HashMap<String,String>> typeMap = new ArrayList<HashMap<String,String>>(); List<HashMap<String,String>> typeMap = new ArrayList<HashMap<String,String>>();
List<HashMap<String,String>> orgMap = new ArrayList<HashMap<String,String>>(); List<HashMap<String,String>> orgMap = new ArrayList<HashMap<String,String>>();
String code=""; String code="";
String code_up=""; String code_up="";
int j; int j;
int k; int k;
for(int i=0;i<jsonArray.size();i++){ for(int i=0;i<jsonArray.size();i++){
tmp = (JsonObject)jsonArray.get(i); tmp = (JsonObject)jsonArray.get(i);
if(searchVO.getCollection().equals(tmp.get("Id").getAsString())) if(searchVO.getCollection().equals(tmp.get("Id").getAsString()))
{ {
//주제분야 , 자료유형 ,생산기관 카운트 //주제분야 , 자료유형 ,생산기관 카운트
tmpList = (JsonArray) tmp.get("CategoryGroup"); tmpList = (JsonArray) tmp.get("CategoryGroup");
if(tmpList != null)
for( k=0; k < tmpList.size(); k++){ {
filterObject = (JsonObject) tmpList.get(k); for( k=0; k < tmpList.size(); k++){
filterObject = (JsonObject) tmpList.get(k);
if(filterObject.get("SUBJECT_CATE") != null)
{ if(filterObject.get("SUBJECT_CATE") != null)
subjectList = (JsonArray) filterObject.get("SUBJECT_CATE"); {
} subjectList = (JsonArray) filterObject.get("SUBJECT_CATE");
if(filterObject.get("DIV_CATE") != null) }
{ if(filterObject.get("DIV_CATE") != null)
typeList = (JsonArray) filterObject.get("DIV_CATE"); {
} typeList = (JsonArray) filterObject.get("DIV_CATE");
if(filterObject.get("ORG_NM") != null) }
{ if(filterObject.get("ORG_NM") != null)
orgList = (JsonArray) filterObject.get("ORG_NM"); {
} orgList = (JsonArray) filterObject.get("ORG_NM");
} }
if(subjectList.size()>0) }
{ if(subjectList.size()>0)
filterObject =(JsonObject) subjectList.get(0); {
filterObject = (JsonObject) filterObject.get("Categories"); filterObject =(JsonObject) subjectList.get(0);
subjectList = (JsonArray) filterObject.get("Category"); filterObject = (JsonObject) filterObject.get("Categories");
}; subjectList = (JsonArray) filterObject.get("Category");
if(typeList.size()>0) };
{ if(typeList.size()>0)
filterObject =(JsonObject) typeList.get(0); {
filterObject = (JsonObject) filterObject.get("Categories"); filterObject =(JsonObject) typeList.get(0);
typeList = (JsonArray) filterObject.get("Category"); filterObject = (JsonObject) filterObject.get("Categories");
}; typeList = (JsonArray) filterObject.get("Category");
if(orgList.size()>0) };
{ if(orgList.size()>0)
filterObject =(JsonObject) orgList.get(0); {
filterObject = (JsonObject) filterObject.get("Categories"); filterObject =(JsonObject) orgList.get(0);
orgList = (JsonArray) filterObject.get("Category"); filterObject = (JsonObject) filterObject.get("Categories");
}; orgList = (JsonArray) filterObject.get("Category");
for(k = 0; k < subjectList.size(); k++){ };
HashMap<String,String> temp = new HashMap<String,String>(); for(k = 0; k < subjectList.size(); k++){
filterObject = (JsonObject)subjectList.get(k); HashMap<String,String> temp = new HashMap<String,String>();
nameTemp = filterObject.get("Name").getAsString(); filterObject = (JsonObject)subjectList.get(k);
//상위코드값 nameTemp = filterObject.get("Name").getAsString();
code_up = nameTemp.substring(nameTemp.indexOf("@")+1,nameTemp.indexOf("^")); //상위코드값
temp.put("category_nm_up",code_up); code_up = nameTemp.substring(nameTemp.indexOf("@")+1,nameTemp.indexOf("^"));
temp.put("category_nm_up",code_up);
//코드값
code = nameTemp.substring(nameTemp.lastIndexOf("@")+1); //코드값
temp.put("category_nm",code); code = nameTemp.substring(nameTemp.lastIndexOf("@")+1);
temp.put("category_cnt",filterObject.get("Count").getAsString()); temp.put("category_nm",code);
subjectMap.add(temp); temp.put("category_cnt",filterObject.get("Count").getAsString());
} subjectMap.add(temp);
for(k = 0; k < typeList.size(); k++){ }
HashMap<String,String> temp = new HashMap<String,String>(); for(k = 0; k < typeList.size(); k++){
filterObject = (JsonObject)typeList.get(k); HashMap<String,String> temp = new HashMap<String,String>();
nameTemp = filterObject.get("Name").getAsString(); filterObject = (JsonObject)typeList.get(k);
//상위코드값 nameTemp = filterObject.get("Name").getAsString();
code_up = nameTemp.substring(nameTemp.indexOf("@")+1,nameTemp.indexOf("^")); //상위코드값
temp.put("class_nm_up",code_up); code_up = nameTemp.substring(nameTemp.indexOf("@")+1,nameTemp.indexOf("^"));
temp.put("class_nm_up",code_up);
//코드값
code = nameTemp.substring(nameTemp.lastIndexOf("@")+1); //코드값
temp.put("class_nm",code); code = nameTemp.substring(nameTemp.lastIndexOf("@")+1);
temp.put("class_cnt",filterObject.get("Count").getAsString()); temp.put("class_nm",code);
typeMap.add(temp); temp.put("class_cnt",filterObject.get("Count").getAsString());
} typeMap.add(temp);
for(k = 0; k < orgList.size(); k++){ }
HashMap<String,String> temp = new HashMap<String,String>(); for(k = 0; k < orgList.size(); k++){
filterObject = (JsonObject)orgList.get(k); HashMap<String,String> temp = new HashMap<String,String>();
nameTemp = filterObject.get("Name").getAsString(); filterObject = (JsonObject)orgList.get(k);
if(!"null".equals(nameTemp)) { nameTemp = filterObject.get("Name").getAsString();
temp.put("org_nm",nameTemp); if(!"null".equals(nameTemp)) {
temp.put("org_cnt",filterObject.get("Count").getAsString()); temp.put("org_nm",nameTemp);
orgMap.add(temp); temp.put("org_cnt",filterObject.get("Count").getAsString());
} orgMap.add(temp);
} }
}
tmp = (JsonObject) tmp.get("DocumentSet"); }
searchVO.setTotalCount(tmp.get("TotalCount").getAsString());
colArray = (JsonArray) tmp.get("Document"); tmp = (JsonObject) tmp.get("DocumentSet");
searchVO.setTotalCount(tmp.get("TotalCount").getAsString());
//vo list로 json list 파싱 colArray = (JsonArray) tmp.get("Document");
for(j=0;j<colArray.size();j++){
tmp = (JsonObject)colArray.get(j); if(colArray != null)
tmp = (JsonObject) tmp.get("Field"); {
//vo list로 json list 파싱
CollectionVO vo = new CollectionVO(); for(j=0;j<colArray.size();j++){
vo.setMasterId(tmp.get("MASTER_ID").getAsString()); tmp = (JsonObject)colArray.get(j);
tmp = (JsonObject) tmp.get("Field");
list.add(vo); CollectionVO vo = new CollectionVO();
vo.setMasterId(tmp.get("MASTER_ID").getAsString());
/*vo = gson.fromJson(tmp, NlibSearchCollectionVO.class);*/
/* NlibSearchCollectionVO vo = new NlibSearchCollectionVO();
vo.setMasterId(tmp.get); = gson.fromJson(tmp, NlibSearchCollectionVO.class);*/ list.add(vo);
}
} /*vo = gson.fromJson(tmp, NlibSearchCollectionVO.class);*/
}; /* NlibSearchCollectionVO vo = new NlibSearchCollectionVO();
searchVO.setResultList(list); vo.setMasterId(tmp.get); = gson.fromJson(tmp, NlibSearchCollectionVO.class);*/
searchVO.setSubjectCountList(subjectMap); }
searchVO.setTypeCountList(typeMap); }
searchVO.setOrgCountList(orgMap); }
} catch(Exception e) { };
e.printStackTrace(); searchVO.setResultList(list);
log.error("getSearch > Exception 발생 : " + e.toString()); searchVO.setSubjectCountList(subjectMap);
} searchVO.setTypeCountList(typeMap);
return searchVO; searchVO.setOrgCountList(orgMap);
} } catch(Exception e) {
}; e.printStackTrace();
log.error("getSearch > Exception 발생 : " + e.toString());
}
return searchVO;
}
};