From 3d904202d8d01bbed29608add168cc8a53ee7079 Mon Sep 17 00:00:00 2001
From: Ryo Kuramoto <kuramoto@n2sm.net>
Date: Wed, 11 Dec 2019 21:58:52 +0900
Subject: [PATCH] #813: Add search option for webconfig (#2326)

* Impl search webconfig by name

* Add search params urls/description

* simplify labels & delete id
---
 .../fess/app/pager/WebConfigPager.java        |  3 ++
 .../fess/app/service/WebConfigService.java    | 11 +++++-
 .../admin/webconfig/AdminWebconfigAction.java |  4 +-
 .../app/web/admin/webconfig/SearchForm.java   |  7 +++-
 .../web/api/admin/webconfig/SearchBody.java   |  5 ++-
 .../view/admin/webconfig/admin_webconfig.jsp  | 38 +++++++++++++++++++
 6 files changed, 62 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/codelibs/fess/app/pager/WebConfigPager.java b/src/main/java/org/codelibs/fess/app/pager/WebConfigPager.java
index 848537f6f..4d341c984 100644
--- a/src/main/java/org/codelibs/fess/app/pager/WebConfigPager.java
+++ b/src/main/java/org/codelibs/fess/app/pager/WebConfigPager.java
@@ -66,6 +66,8 @@ public class WebConfigPager implements Serializable {
 
     public String versionNo;
 
+    public String description;
+
     public void clear() {
         allRecordCount = 0;
         allPageCount = 0;
@@ -86,6 +88,7 @@ public class WebConfigPager implements Serializable {
         createdBy = null;
         createdTime = null;
         versionNo = null;
+        description = null;
 
     }
 
diff --git a/src/main/java/org/codelibs/fess/app/service/WebConfigService.java b/src/main/java/org/codelibs/fess/app/service/WebConfigService.java
index 0279f15f0..279288f72 100644
--- a/src/main/java/org/codelibs/fess/app/service/WebConfigService.java
+++ b/src/main/java/org/codelibs/fess/app/service/WebConfigService.java
@@ -20,6 +20,7 @@ import java.util.List;
 import javax.annotation.Resource;
 
 import org.codelibs.core.beans.util.BeanUtil;
+import org.codelibs.core.lang.StringUtil;
 import org.codelibs.fess.Constants;
 import org.codelibs.fess.app.pager.WebConfigPager;
 import org.codelibs.fess.es.config.cbean.WebConfigCB;
@@ -91,8 +92,14 @@ public class WebConfigService {
     }
 
     protected void setupListCondition(final WebConfigCB cb, final WebConfigPager webConfigPager) {
-        if (webConfigPager.id != null) {
-            cb.query().docMeta().setId_Equal(webConfigPager.id);
+        if (StringUtil.isNotBlank(webConfigPager.name)) {
+            cb.query().setName_Wildcard(webConfigPager.name);
+        }
+        if (StringUtil.isNotBlank(webConfigPager.urls)) {
+            cb.query().setUrls_Wildcard(webConfigPager.urls);
+        }
+        if (StringUtil.isNotBlank(webConfigPager.description)) {
+            cb.query().setDescription_Wildcard(webConfigPager.description);
         }
         // TODO Long, Integer, String supported only.
 
diff --git a/src/main/java/org/codelibs/fess/app/web/admin/webconfig/AdminWebconfigAction.java b/src/main/java/org/codelibs/fess/app/web/admin/webconfig/AdminWebconfigAction.java
index f6c54d0de..c0340c87d 100644
--- a/src/main/java/org/codelibs/fess/app/web/admin/webconfig/AdminWebconfigAction.java
+++ b/src/main/java/org/codelibs/fess/app/web/admin/webconfig/AdminWebconfigAction.java
@@ -114,7 +114,7 @@ public class AdminWebconfigAction extends FessAdminAction {
         RenderDataUtil.register(data, "webConfigItems", webConfigService.getWebConfigList(webConfigPager)); // page navi
 
         // restore from webConfigPager
-        copyBeanToBean(webConfigPager, form, op -> op.include("id"));
+        copyBeanToBean(webConfigPager, form, op -> op.include("id", "name", "urls", "description"));
     }
 
     // ===================================================================================
@@ -346,7 +346,7 @@ public class AdminWebconfigAction extends FessAdminAction {
             RenderDataUtil.register(data, "webConfigItems", webConfigService.getWebConfigList(webConfigPager)); // page navi
             }).useForm(SearchForm.class, setup -> {
             setup.setup(form -> {
-                copyBeanToBean(webConfigPager, form, op -> op.include("id"));
+                copyBeanToBean(webConfigPager, form, op -> op.include("id", "name", "urls", "description"));
             });
         });
     }
diff --git a/src/main/java/org/codelibs/fess/app/web/admin/webconfig/SearchForm.java b/src/main/java/org/codelibs/fess/app/web/admin/webconfig/SearchForm.java
index b4171978e..a757683a2 100644
--- a/src/main/java/org/codelibs/fess/app/web/admin/webconfig/SearchForm.java
+++ b/src/main/java/org/codelibs/fess/app/web/admin/webconfig/SearchForm.java
@@ -22,5 +22,10 @@ package org.codelibs.fess.app.web.admin.webconfig;
  */
 public class SearchForm {
 
-    public String id;
+    public String name;
+
+    public String urls;
+
+    public String description;
+
 }
diff --git a/src/main/java/org/codelibs/fess/app/web/api/admin/webconfig/SearchBody.java b/src/main/java/org/codelibs/fess/app/web/api/admin/webconfig/SearchBody.java
index 9e26575c0..92830d2c2 100644
--- a/src/main/java/org/codelibs/fess/app/web/api/admin/webconfig/SearchBody.java
+++ b/src/main/java/org/codelibs/fess/app/web/api/admin/webconfig/SearchBody.java
@@ -18,6 +18,9 @@ package org.codelibs.fess.app.web.api.admin.webconfig;
 import org.codelibs.fess.app.web.api.admin.BaseSearchBody;
 
 public class SearchBody extends BaseSearchBody {
-    public String id;
+    public String name;
 
+    public String urls;
+
+    public String description;
 }
diff --git a/src/main/webapp/WEB-INF/view/admin/webconfig/admin_webconfig.jsp b/src/main/webapp/WEB-INF/view/admin/webconfig/admin_webconfig.jsp
index 5880b0f5c..5f51d30d3 100644
--- a/src/main/webapp/WEB-INF/view/admin/webconfig/admin_webconfig.jsp
+++ b/src/main/webapp/WEB-INF/view/admin/webconfig/admin_webconfig.jsp
@@ -36,6 +36,44 @@
 									</la:info>
 									<la:errors />
 								</div>
+								<la:form action="/admin/webconfig/"
+									styleClass="form-horizontal">
+									<div class="form-group">
+										<label for="name" class="col-sm-2 control-label"><la:message
+												key="labels.name" /></label>
+										<div class="col-sm-10">
+											<la:text styleId="name" property="name" styleClass="form-control" />
+										</div>
+									</div>
+									<div class="form-group">
+										<label for="urls" class="col-sm-2 control-label"><la:message
+												key="labels.urls" /></label>
+										<div class="col-sm-10">
+											<la:text styleId="urls" property="urls" styleClass="form-control" />
+										</div>
+									</div>
+									<div class="form-group">
+										<label for="description" class="col-sm-2 control-label"><la:message
+												key="labels.description" /></label>
+										<div class="col-sm-10">
+											<la:text styleId="description" property="description" styleClass="form-control" />
+										</div>
+									</div>
+									<div class="form-group">
+										<div class="col-sm-offset-2 col-sm-10">
+											<button type="submit" class="btn btn-primary" id="submit"
+												name="search"
+												value="<la:message key="labels.crud_button_search" />">
+												<em class="fa fa-search"></em>
+												<la:message key="labels.crud_button_search" />
+											</button>
+											<button type="submit" class="btn btn-default" name="reset"
+												value="<la:message key="labels.crud_button_reset" />">
+												<la:message key="labels.crud_button_reset" />
+											</button>
+										</div>
+									</div>
+								</la:form>
 								<%-- List --%>
 								<c:if test="${webConfigPager.allRecordCount == 0}">
 									<div class="row top10">
-- 
GitLab