From be93b50e5ed972ee77b6ad464011f431f595f0f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=84=9D=20=EC=B5=9C?= Date: Wed, 14 Jun 2023 18:15:12 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A4=91=EA=B0=84=EC=A0=80=EC=9E=A5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 - .../searchEngine/SearchEngineController.java | 34 ++++- .../searchEngine/model/SearchBoardView.java | 39 +++--- .../searchEngine/model/SearchFileView.java | 19 +-- .../searchEngine/model/SearchMenuView.java | 6 +- .../main/searchEngine/model/SearchResult.java | 1 - .../service/SearchEngineService.java | 41 ++++-- .../static/css/searchEngine/search.css | 2 +- .../resources/templates/fragments/header.html | 118 ++++++++++-------- .../templates/searchEngine/search.html | 109 +++++++--------- 10 files changed, 210 insertions(+), 160 deletions(-) diff --git a/build.gradle b/build.gradle index 5ed77344..c341f0c2 100644 --- a/build.gradle +++ b/build.gradle @@ -41,7 +41,6 @@ dependencies { implementation 'com.oracle.database.jdbc:ojdbc8:21.7.0.0' implementation files('libs/tibero6-jdbc.jar') - // json implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1' diff --git a/src/main/java/com/dbnt/faisp/main/searchEngine/SearchEngineController.java b/src/main/java/com/dbnt/faisp/main/searchEngine/SearchEngineController.java index c6b3aa55..06e1fbe4 100644 --- a/src/main/java/com/dbnt/faisp/main/searchEngine/SearchEngineController.java +++ b/src/main/java/com/dbnt/faisp/main/searchEngine/SearchEngineController.java @@ -4,7 +4,7 @@ import com.dbnt.faisp.main.codeMgt.service.CodeMgtService; import com.dbnt.faisp.main.publicBoard.model.PublicBoard; import com.dbnt.faisp.main.publicBoard.model.PublicComment; import com.dbnt.faisp.main.publicBoard.service.PublicBoardService; -import com.dbnt.faisp.main.searchEngine.model.SearchParams; +import com.dbnt.faisp.main.searchEngine.model.*; import com.dbnt.faisp.main.searchEngine.service.SearchEngineService; import com.dbnt.faisp.main.userInfo.model.UserInfo; import com.dbnt.faisp.util.Utils; @@ -31,20 +31,46 @@ public class SearchEngineController { if (Utils.isEmpty(params.getActiveTab())){ params.setActiveTab("all"); } + mav.addObject("searchParams", params); + int totalCnt = 0; + SearchResult result = null; switch (params.getActiveTab()){ case "all": - params.setOffset("0"); - params.setLimit("5"); +// params.setOffset("0"); +// params.setLimit("10"); params.setForm("search_menu_view.search_menu_view"); - + result = searchEngineService.getData(params, SearchMenuView.class); + totalCnt += result.getTotalCount(); + mav.addObject("menuResult", result); + params.setForm("search_board_view.search_board_view"); + result = searchEngineService.getData(params, SearchBoardView.class); + totalCnt += result.getTotalCount(); + mav.addObject("boardResult", result); + params.setForm("search_file_view.search_file_view"); + result = searchEngineService.getData(params, SearchFileView.class); + totalCnt += result.getTotalCount(); + mav.addObject("fileResult", result); break; case "menu": + params.setForm("search_menu_view.search_menu_view"); + result = searchEngineService.getData(params, SearchMenuView.class); + totalCnt += result.getTotalCount(); + mav.addObject("menuResult", result); break; case "board": + params.setForm("search_board_view.search_board_view"); + result = searchEngineService.getData(params, SearchBoardView.class); + totalCnt += result.getTotalCount(); + mav.addObject("boardResult", result); break; case "file": + params.setForm("search_file_view.search_file_view"); + result = searchEngineService.getData(params, SearchFileView.class); + totalCnt += result.getTotalCount(); + mav.addObject("fileResult", result); break; } + mav.addObject("totalCnt", totalCnt); return mav; } diff --git a/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchBoardView.java b/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchBoardView.java index 7b12757f..faf9199b 100644 --- a/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchBoardView.java +++ b/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchBoardView.java @@ -1,37 +1,42 @@ package com.dbnt.faisp.main.searchEngine.model; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import lombok.Data; import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; @Data @NoArgsConstructor public class SearchBoardView { - private Integer menuKey; - private Integer mainKey; + private Integer menu_key; + private Integer main_key; private String category; - private String title1Nm; + private String title1_nm; private String title1; - private String title2Nm; + private String title2_nm; private String title2; - private String content1Nm; + private String content1_nm; private String content1; - private String content2Nm; + private String content2_nm; private String content2; - private String content3Nm; + private String content3_nm; private String content3; - private String content4Nm; + private String content4_nm; private String content4; - private String content5Nm; + private String content5_nm; private String content5; private String description; - private String hashTag; - private String wrtOrgan; - private String wrtPart; - private Integer wrtUserSeq; - private String wrtUserGrd; - private String wrtUserNm; - private LocalDateTime wrtDt; - private String readAbleUser; + private String hash_tag; + private String wrt_organ; + private String wrt_part; + private Integer wrt_user_seq; + private String wrt_user_grd; + private String wrt_user_nm; + @JsonFormat(pattern = "yyyyMMddHHmmss") + private LocalDateTime wrt_dt; + private String readableuser; } diff --git a/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchFileView.java b/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchFileView.java index 0575a873..b2e29908 100644 --- a/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchFileView.java +++ b/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchFileView.java @@ -6,13 +6,14 @@ import lombok.NoArgsConstructor; @Data @NoArgsConstructor public class SearchFileView { - private Integer menuKey; - private Integer mainKey; - private Integer fileSeq; - private String origNm; - private String convNm; - private String fileExtn; - private String fileSize; - private String savePath; - private String fullPath; + private Integer menu_key; + private Integer main_key; + private Integer file_seq; + private String orig_nm; + private String conv_nm; + private String file_extn; + private String file_size; + private String save_path; + private String full_path; + private String file_content; } diff --git a/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchMenuView.java b/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchMenuView.java index 057b47e6..c6293162 100644 --- a/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchMenuView.java +++ b/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchMenuView.java @@ -6,7 +6,7 @@ import lombok.NoArgsConstructor; @Data @NoArgsConstructor public class SearchMenuView { - private Integer menuKey; - private String menuUrl; - private String menuNm; + private Integer menu_key; + private String menu_url; + private String menu_nm; } diff --git a/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchResult.java b/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchResult.java index 3ae32a9c..6f997e46 100644 --- a/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchResult.java +++ b/src/main/java/com/dbnt/faisp/main/searchEngine/model/SearchResult.java @@ -10,6 +10,5 @@ import java.util.List; @NoArgsConstructor public class SearchResult { private Long totalCount; - private JSONArray rows; private List rowList; } diff --git a/src/main/java/com/dbnt/faisp/main/searchEngine/service/SearchEngineService.java b/src/main/java/com/dbnt/faisp/main/searchEngine/service/SearchEngineService.java index 783713ad..5ae85627 100644 --- a/src/main/java/com/dbnt/faisp/main/searchEngine/service/SearchEngineService.java +++ b/src/main/java/com/dbnt/faisp/main/searchEngine/service/SearchEngineService.java @@ -1,9 +1,13 @@ package com.dbnt.faisp.main.searchEngine.service; +import com.dbnt.faisp.main.searchEngine.model.SearchMenuView; import com.dbnt.faisp.main.searchEngine.model.SearchParams; import com.dbnt.faisp.main.searchEngine.model.SearchResult; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import lombok.extern.slf4j.Slf4j; -import org.json.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; @@ -16,6 +20,8 @@ import org.springframework.web.util.UriComponentsBuilder; import java.net.URI; import java.time.Duration; +import java.util.ArrayList; +import java.util.List; @Slf4j @Service @@ -24,14 +30,19 @@ public class SearchEngineService { @Value("${search.engine.url}") private String engineUrl; - public SearchResult requestToSearchEngine(SearchParams params){ + public SearchResult getData(SearchParams params, Class rowClass){ + JSONObject jsonObj = requestToSearchEngine(params); + return convertJSONObjectToSearchResult(jsonObj, rowClass); + } + + private JSONObject requestToSearchEngine(SearchParams params){ URI uri = UriComponentsBuilder.fromHttpUrl(engineUrl) .path("/search5") .queryParam("select", "*") .queryParam("from", params.getForm()) .queryParam("where", "text_idx = '"+params.getKeyword()+"' allword synonym order by $relevance desc") - .queryParam("offset", params.getOffset()) - .queryParam("limit", params.getLimit()) +// .queryParam("offset", params.getOffset()) +// .queryParam("limit", params.getLimit()) .queryParam("charset", "UTF-8") .queryParam("hilite-keywords", params.getKeyword()) .encode() @@ -60,14 +71,30 @@ public class SearchEngineService { } catch (ParseException e) { e.printStackTrace(); } - /*이 근처에서 한번 분리할까...?*/ + return jsonObj; + } + + private SearchResult convertJSONObjectToSearchResult(JSONObject jsonObj, Class rowClass){ JSONObject resultJSON = (JSONObject) jsonObj.get("result"); SearchResult result = new SearchResult(); result.setTotalCount((Long) resultJSON.get("total_count")); - result.setRows((JSONArray) resultJSON.get("rows")); + List rowList = (List)resultJSON.get("rows"); + List convertList = new ArrayList<>(); + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.INDENT_OUTPUT); + mapper.registerModule(new JavaTimeModule()); + try { + for(JSONObject row : rowList){ + JSONObject fields = (JSONObject)row.get("fields"); + Object rowObj = mapper.readValue(fields.toJSONString(), rowClass); + convertList.add(rowObj); + } + }catch (JsonProcessingException e) { + e.printStackTrace(); + } + result.setRowList(convertList); return result; } - } \ No newline at end of file diff --git a/src/main/resources/static/css/searchEngine/search.css b/src/main/resources/static/css/searchEngine/search.css index c47b281e..cbb4a7fe 100644 --- a/src/main/resources/static/css/searchEngine/search.css +++ b/src/main/resources/static/css/searchEngine/search.css @@ -56,7 +56,7 @@ input::-moz-placeholder { color: #aaa; } .searchWideBox > li p{position:absolute; top:13px; left:15px; font-size:16px; line-height:30px; font-weight:bold;} .searchWideBox > li label{margin-right:14px; font-size:15px; line-height:32px; vertical-align:middle; color:#666;} .searchWideBox > li ul:after{content:''; display:block; visibility:hidden; clear:both;} -.searchWideBox > li ul{width:331px; border:1px solid #ddd; border-left:none; box-sizing:border-box; float:left;} +.searchWideBox > li ul{padding-left:0; width:331px; border:1px solid #ddd; border-left:none; box-sizing:border-box; float:left;} .searchWideBox > li > span{float:left; margin-left:8px;} .searchWideBox > li ul li{float:left; width:55px; border-left:1px solid #ddd; box-sizing:border-box;} .searchWideBox > li ul li a{display:block; text-align:center; font-size:14px; line-height:30px; background-color:#fff;} diff --git a/src/main/resources/templates/fragments/header.html b/src/main/resources/templates/fragments/header.html index e389f4b6..196b73f5 100644 --- a/src/main/resources/templates/fragments/header.html +++ b/src/main/resources/templates/fragments/header.html @@ -47,61 +47,73 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/searchEngine/search.html b/src/main/resources/templates/searchEngine/search.html index ff8311cf..f275abe7 100644 --- a/src/main/resources/templates/searchEngine/search.html +++ b/src/main/resources/templates/searchEngine/search.html @@ -15,13 +15,14 @@
-
+