diff --git a/src/main/java/org/codelibs/fess/app/web/admin/searchlist/AdminSearchlistAction.java b/src/main/java/org/codelibs/fess/app/web/admin/searchlist/AdminSearchlistAction.java index 0571080cb..96c387750 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/searchlist/AdminSearchlistAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/searchlist/AdminSearchlistAction.java @@ -279,7 +279,11 @@ public class AdminSearchlistAction extends FessAdminAction { verifyToken(() -> asEditHtml()); getDoc(form).ifPresent(entity -> { try { - // TODO save + for (Map.Entry entry : form.doc.entrySet()) { + entity.put(entry.getKey(), entry.getValue()); + } + // TODO store does not work + fessEsClient.store(fessConfig.getIndexDocumentUpdateIndex(), fessConfig.getIndexDocumentType(), entity); saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL)); } catch (final Exception e) { logger.error("Failed to update " + entity, e); @@ -304,7 +308,28 @@ public class AdminSearchlistAction extends FessAdminAction { } protected OptionalEntity> getDoc(final CreateForm form) { - // TODO + switch (form.crudMode) { + case CrudMode.CREATE: + // TODO + return OptionalEntity.empty(); + case CrudMode.EDIT: + if (form instanceof EditForm) { + final String docId = ((EditForm) form).id; + if (processHelper.isProcessRunning()) { + break; + } + try { + final QueryBuilder query = QueryBuilders.termQuery(fessConfig.getIndexFieldDocId(), docId); + return fessEsClient.getDocumentByQuery(fessConfig.getIndexDocumentUpdateIndex(), fessConfig.getIndexDocumentType(), + query); + } catch (final Exception e) { + break; + } + } + break; + default: + break; + } return OptionalEntity.empty(); } diff --git a/src/main/java/org/codelibs/fess/es/client/FessEsClient.java b/src/main/java/org/codelibs/fess/es/client/FessEsClient.java index 5a374900b..e8d6be724 100644 --- a/src/main/java/org/codelibs/fess/es/client/FessEsClient.java +++ b/src/main/java/org/codelibs/fess/es/client/FessEsClient.java @@ -674,6 +674,17 @@ public class FessEsClient implements Client { }); } + public OptionalEntity> getDocumentByQuery(final String index, final String type, final QueryBuilder queryBuilder) { + + final FessConfig fessConfig = ComponentUtil.getFessConfig(); + SearchResponse response = + client.prepareSearch(index).setTypes(type).setSize(sizeForDelete).setQuery(queryBuilder) + .setPreference(Constants.SEARCH_PREFERENCE_PRIMARY).execute() + .actionGet(fessConfig.getIndexScrollSearchTimeoutTimeout()); + return OptionalEntity.of(response.getHits().getAt(0).getSource()); + + } + public List> getDocumentList(final String index, final String type, final SearchCondition condition) { return getDocumentList( diff --git a/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist.jsp b/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist.jsp index defc32b5c..393edd9bf 100644 --- a/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist.jsp +++ b/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist.jsp @@ -94,6 +94,16 @@ + + + + + + diff --git a/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist_edit.jsp b/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist_edit.jsp index 27f863f29..b048d015c 100644 --- a/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist_edit.jsp +++ b/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist_edit.jsp @@ -56,6 +56,7 @@