diff --git a/src/main/java/org/codelibs/fess/app/web/admin/SuggestElevateWordForm.java b/src/main/java/org/codelibs/fess/app/web/admin/SuggestElevateWordForm.java index 48a3aedff..333d44bf1 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/SuggestElevateWordForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/SuggestElevateWordForm.java @@ -55,7 +55,7 @@ public class SuggestElevateWordForm implements Serializable { public String targetLabel; //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") - @FloatType + //@FloatType public String boost; //@Required(target = "confirmfromupdate,update,delete") diff --git a/src/main/java/org/codelibs/fess/app/web/admin/suggestelevateword/AdminSuggestelevatewordAction.java b/src/main/java/org/codelibs/fess/app/web/admin/suggestelevateword/AdminSuggestelevatewordAction.java new file mode 100644 index 000000000..3d40d1abd --- /dev/null +++ b/src/main/java/org/codelibs/fess/app/web/admin/suggestelevateword/AdminSuggestelevatewordAction.java @@ -0,0 +1,305 @@ +/* + * Copyright 2009-2015 the CodeLibs Project and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +package org.codelibs.fess.app.web.admin.suggestelevateword; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import javax.annotation.Resource; + +import org.codelibs.fess.Constants; +import org.codelibs.fess.annotation.Token; +import org.codelibs.fess.app.pager.SuggestElevateWordPager; +import org.codelibs.fess.app.service.SuggestElevateWordService; +import org.codelibs.fess.app.web.base.FessAdminAction; +import org.codelibs.fess.crud.CommonConstants; +import org.codelibs.fess.es.exentity.SuggestElevateWord; +import org.codelibs.fess.helper.SystemHelper; +import org.codelibs.fess.util.ComponentUtil; +import org.lastaflute.web.Execute; +import org.lastaflute.web.callback.ActionRuntime; +import org.lastaflute.web.response.HtmlResponse; +import org.lastaflute.web.response.render.RenderData; +import org.lastaflute.web.util.LaRequestUtil; +import org.lastaflute.web.validation.VaErrorHook; + +/** + * @author shinsuke + */ +public class AdminSuggestelevatewordAction extends FessAdminAction { + + // =================================================================================== + // Attribute + // ========= + @Resource + private SuggestElevateWordService suggestElevateWordService; + @Resource + private SuggestElevateWordPager suggestElevateWordPager; + @Resource + private SystemHelper systemHelper; + + // =================================================================================== + // Hook + // ====== + @Override + protected void setupHtmlData(final ActionRuntime runtime) { + super.setupHtmlData(runtime); + runtime.registerData("helpLink", systemHelper.getHelpLink("suggestElevateWord")); + } + + // =================================================================================== + // Search Execute + // ============== + @Execute + public HtmlResponse index(final SuggestElevateWordSearchForm form) { + return asHtml(path_AdminSuggestelevateword_IndexJsp).renderWith(data -> { + searchPaging(data, form); + }); + } + + @Execute + public HtmlResponse list(final Integer pageNumber, final SuggestElevateWordSearchForm form) { + suggestElevateWordPager.setCurrentPageNumber(pageNumber); + return asHtml(path_AdminSuggestelevateword_IndexJsp).renderWith(data -> { + searchPaging(data, form); + }); + } + + @Execute + public HtmlResponse search(final SuggestElevateWordSearchForm form) { + copyBeanToBean(form.searchParams, suggestElevateWordPager, op -> op.exclude(CommonConstants.PAGER_CONVERSION_RULE)); + return asHtml(path_AdminSuggestelevateword_IndexJsp).renderWith(data -> { + searchPaging(data, form); + }); + } + + @Execute + public HtmlResponse reset(final SuggestElevateWordSearchForm form) { + suggestElevateWordPager.clear(); + return asHtml(path_AdminSuggestelevateword_IndexJsp).renderWith(data -> { + searchPaging(data, form); + }); + } + + @Execute + public HtmlResponse back(final SuggestElevateWordSearchForm form) { + return asHtml(path_AdminSuggestelevateword_IndexJsp).renderWith(data -> { + searchPaging(data, form); + }); + } + + protected void searchPaging(final RenderData data, final SuggestElevateWordSearchForm form) { + // TODO + data.register("suggestElevateWordItems", suggestElevateWordService.getSuggestElevateWordList(suggestElevateWordPager)); // page navi + // restore from pager + copyBeanToBean(suggestElevateWordPager, form.searchParams, op -> op.exclude(CommonConstants.PAGER_CONVERSION_RULE)); + } + + // =================================================================================== + // Edit Execute + // ============ + // ----------------------------------------------------- + // Entry Page + // ---------- + @Token(save = true, validate = false) + @Execute + public HtmlResponse createpage(final SuggestElevateWordEditForm form) { + form.initialize(); + form.crudMode = CommonConstants.CREATE_MODE; + return asHtml(path_AdminSuggestelevateword_EditJsp).renderWith(data -> { + // TODO + }); + } + + @Token(save = true, validate = false) + @Execute + public HtmlResponse editpage(final int crudMode, final String id, final SuggestElevateWordEditForm form) { + form.crudMode = crudMode; + form.id = id; + verifyCrudMode(form, CommonConstants.EDIT_MODE); + loadSuggestElevateWord(form); + return asHtml(path_AdminSuggestelevateword_EditJsp).renderWith(data -> { + // TODO + }); + } + + @Token(save = true, validate = false) + @Execute + public HtmlResponse editagain(final SuggestElevateWordEditForm form) { + return asHtml(path_AdminSuggestelevateword_EditJsp).renderWith(data -> { + // TODO + }); + } + + @Token(save = true, validate = false) + @Execute + public HtmlResponse editfromconfirm(final SuggestElevateWordEditForm form) { + form.crudMode = CommonConstants.EDIT_MODE; + loadSuggestElevateWord(form); + return asHtml(path_AdminSuggestelevateword_EditJsp).renderWith(data -> { + // TODO + }); + } + + @Token(save = true, validate = false) + @Execute + public HtmlResponse deletepage(final int crudMode, final String id, final SuggestElevateWordEditForm form) { + form.crudMode = crudMode; + form.id = id; + verifyCrudMode(form, CommonConstants.DELETE_MODE); + loadSuggestElevateWord(form); + return asHtml(path_AdminSuggestelevateword_ConfirmJsp).renderWith(data -> { + // TODO + }); + } + + @Token(save = true, validate = false) + @Execute + public HtmlResponse deletefromconfirm(final SuggestElevateWordEditForm form) { + form.crudMode = CommonConstants.DELETE_MODE; + loadSuggestElevateWord(form); + return asHtml(path_AdminSuggestelevateword_ConfirmJsp).renderWith(data -> { + // TODO + }); + } + + // ----------------------------------------------------- + // Confirm + // ------- + @Execute + public HtmlResponse confirmpage(final int crudMode, final String id, final SuggestElevateWordEditForm form) { + form.crudMode = crudMode; + form.id = id; + verifyCrudMode(form, CommonConstants.CONFIRM_MODE); + loadSuggestElevateWord(form); + return asHtml(path_AdminSuggestelevateword_ConfirmJsp).renderWith(data -> { + // TODO + }); + } + + @Token(save = false, validate = true, keep = true) + @Execute + public HtmlResponse confirmfromcreate(final SuggestElevateWordEditForm form) { + validate(form, messages -> {}, toEditHtml()); + return asHtml(path_AdminSuggestelevateword_ConfirmJsp).renderWith(data -> { + // TODO + }); + } + + @Token(save = false, validate = true, keep = true) + @Execute + public HtmlResponse confirmfromupdate(final SuggestElevateWordEditForm form) { + validate(form, messages -> {}, toEditHtml()); + return asHtml(path_AdminSuggestelevateword_ConfirmJsp).renderWith(data -> { + // TODO + }); + } + + // ----------------------------------------------------- + // Actually Crud + // ------------- + @Token(save = false, validate = true) + @Execute + public HtmlResponse create(final SuggestElevateWordEditForm form) { + validate(form, messages -> {}, toEditHtml()); + suggestElevateWordService.store(createSuggestElevateWord(form)); + saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL)); + return redirect(getClass()); + } + + @Token(save = false, validate = true) + @Execute + public HtmlResponse update(final SuggestElevateWordEditForm form) { + validate(form, messages -> {}, toEditHtml()); + suggestElevateWordService.store(createSuggestElevateWord(form)); + saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL)); + return redirect(getClass()); + } + + @Execute + public HtmlResponse delete(final SuggestElevateWordEditForm form) { + verifyCrudMode(form, CommonConstants.DELETE_MODE); + suggestElevateWordService.delete(getSuggestElevateWord(form)); + saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL)); + return redirect(getClass()); + } + + //=================================================================================== + // Assist Logic + // ============ + protected void loadSuggestElevateWord(final SuggestElevateWordEditForm form) { + copyBeanToBean(getSuggestElevateWord(form), form, op -> op.exclude("crudMode")); + } + + protected SuggestElevateWord getSuggestElevateWord(final SuggestElevateWordEditForm form) { + final SuggestElevateWord suggestElevateWord = suggestElevateWordService.getSuggestElevateWord(createKeyMap(form)); + if (suggestElevateWord == null) { + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), toEditHtml()); + } + return suggestElevateWord; + } + + protected SuggestElevateWord createSuggestElevateWord(final SuggestElevateWordEditForm form) { + SuggestElevateWord suggestElevateWord; + final String username = systemHelper.getUsername(); + final long currentTime = systemHelper.getCurrentTimeAsLong(); + if (form.crudMode == CommonConstants.EDIT_MODE) { + suggestElevateWord = getSuggestElevateWord(form); + } else { + suggestElevateWord = new SuggestElevateWord(); + suggestElevateWord.setCreatedBy(username); + suggestElevateWord.setCreatedTime(currentTime); + } + suggestElevateWord.setUpdatedBy(username); + suggestElevateWord.setUpdatedTime(currentTime); + copyBeanToBean(form, suggestElevateWord, op -> op.exclude(CommonConstants.COMMON_CONVERSION_RULE)); + return suggestElevateWord; + } + + protected Map createKeyMap(final SuggestElevateWordEditForm form) { + final Map keys = new HashMap(); + keys.put("id", form.id); + return keys; + } + + protected Map createItem(final String label, final String value) { + final Map map = new HashMap(2); + map.put(Constants.ITEM_LABEL, label); + map.put(Constants.ITEM_VALUE, value); + return map; + } + + // =================================================================================== + // Small Helper + // ============ + protected void verifyCrudMode(final SuggestElevateWordEditForm form, final int expectedMode) { + if (form.crudMode != expectedMode) { + throwValidationError(messages -> { + messages.addErrorsCrudInvalidMode(GLOBAL, String.valueOf(expectedMode), String.valueOf(form.crudMode)); + }, toEditHtml()); + } + } + + protected VaErrorHook toEditHtml() { + return () -> { + return asHtml(path_AdminSuggestelevateword_EditJsp); + }; + } +} diff --git a/src/main/java/org/codelibs/fess/app/web/admin/suggestelevateword/SuggestElevateWordEditForm.java b/src/main/java/org/codelibs/fess/app/web/admin/suggestelevateword/SuggestElevateWordEditForm.java new file mode 100644 index 000000000..321cd49b5 --- /dev/null +++ b/src/main/java/org/codelibs/fess/app/web/admin/suggestelevateword/SuggestElevateWordEditForm.java @@ -0,0 +1,97 @@ +/* + * Copyright 2009-2015 the CodeLibs Project and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +package org.codelibs.fess.app.web.admin.suggestelevateword; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import org.codelibs.fess.util.ComponentUtil; + +/** + * @author codelibs + * @author jflute + */ +public class SuggestElevateWordEditForm implements Serializable { + + private static final long serialVersionUID = 1L; + + //@Required(target = "upload") + //public FormFile suggestElevateWordFile; + + //@IntegerType + public String pageNumber; + + public Map searchParams = new HashMap(); + + //@IntegerType + public int crudMode; + + public String getCurrentPageNumber() { + return pageNumber; + } + + //@Required(target = "confirmfromupdate,update,delete") + //@Maxbytelength(maxbytelength = 1000) + public String id; + + //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") + public String suggestWord; + + public String reading; + + public String targetRole; + + public String targetLabel; + + //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") + //@FloatType + public String boost; + + //@Required(target = "confirmfromupdate,update,delete") + //@Maxbytelength(maxbytelength = 255) + public String createdBy; + + //@Required(target = "confirmfromupdate,update,delete") + //@LongType + public String createdTime; + + //@Maxbytelength(maxbytelength = 255) + public String updatedBy; + + //@LongType + public String updatedTime; + + //@Required(target = "confirmfromupdate,update,delete") + //@IntegerType + public String versionNo; + + public void initialize() { + id = null; + suggestWord = null; + reading = null; + targetRole = null; + targetLabel = null; + boost = null; + createdBy = "system"; + createdTime = Long.toString(ComponentUtil.getSystemHelper().getCurrentTimeAsLong()); + updatedBy = null; + updatedTime = null; + versionNo = null; + boost = "100"; + } +} diff --git a/src/main/java/org/codelibs/fess/app/web/admin/suggestelevateword/SuggestElevateWordSearchForm.java b/src/main/java/org/codelibs/fess/app/web/admin/suggestelevateword/SuggestElevateWordSearchForm.java new file mode 100644 index 000000000..e8dbf19ca --- /dev/null +++ b/src/main/java/org/codelibs/fess/app/web/admin/suggestelevateword/SuggestElevateWordSearchForm.java @@ -0,0 +1,32 @@ +/* + * Copyright 2009-2015 the CodeLibs Project and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +package org.codelibs.fess.app.web.admin.suggestelevateword; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +/** + * @author codelibs + * @author jflute + */ +public class SuggestElevateWordSearchForm implements Serializable { + + private static final long serialVersionUID = 1L; + + public Map searchParams = new HashMap(); +} diff --git a/src/main/webapp/WEB-INF/view/common/admin2/sidebar.jsp b/src/main/webapp/WEB-INF/view/common/admin2/sidebar.jsp index cc021cb94..ec3f10ca3 100644 --- a/src/main/webapp/WEB-INF/view/common/admin2/sidebar.jsp +++ b/src/main/webapp/WEB-INF/view/common/admin2/sidebar.jsp @@ -143,12 +143,12 @@ >
    -
  • class="active">class="active"> -
  • +
  • class="active">