diff --git a/src/main/java/org/codelibs/fess/app/web/admin/badword/AdminBadwordAction.java b/src/main/java/org/codelibs/fess/app/web/admin/badword/AdminBadwordAction.java index 291bfa034..97604937d 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/badword/AdminBadwordAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/badword/AdminBadwordAction.java @@ -46,10 +46,8 @@ import org.dbflute.optional.OptionalThing; import org.lastaflute.web.Execute; import org.lastaflute.web.callback.ActionRuntime; import org.lastaflute.web.response.HtmlResponse; -import org.lastaflute.web.response.next.HtmlNext; import org.lastaflute.web.response.render.RenderData; import org.lastaflute.web.util.LaResponseUtil; -import org.lastaflute.web.validation.VaErrorHook; /** * @author Keiichi Watanabe @@ -83,10 +81,8 @@ public class AdminBadwordAction extends FessAdminAction { // Search Execute // ============== @Execute - public HtmlResponse index(final SearchForm form) { - return asHtml(path_AdminBadword_AdminBadwordJsp).renderWith(data -> { - searchPaging(data, form); - }); + public HtmlResponse index() { + return asListHtml(); } @Execute @@ -131,9 +127,9 @@ public class AdminBadwordAction extends FessAdminAction { // Entry Page // ---------- @Execute - //(token = TxToken.SAVE) public HtmlResponse createnew() { - return asHtml(path_AdminBadword_AdminBadwordEditJsp).useForm(CreateForm.class, op -> { + saveToken(); + return asEditHtml().useForm(CreateForm.class, op -> { op.setup(form -> { form.initialize(); form.crudMode = CrudMode.CREATE; @@ -142,27 +138,24 @@ public class AdminBadwordAction extends FessAdminAction { } @Execute - //(token = TxToken.SAVE) + public HtmlResponse edit(final EditForm form) { - validate(form, messages -> {}, toEditHtml()); - HtmlNext next; - switch (form.crudMode) { - case CrudMode.EDIT: // back - form.crudMode = CrudMode.DETAILS; - next = path_AdminBadword_AdminBadwordDetailsJsp; - break; - default: - form.crudMode = CrudMode.EDIT; - next = path_AdminBadword_AdminBadwordEditJsp; - break; - } + validate(form, messages -> {}, () -> asListHtml()); final String id = form.id; suggestBadWordService.getSuggestBadWord(id).ifPresent(entity -> { copyBeanToBean(entity, form, op -> {}); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml()); }); - return asHtml(next); + saveToken(); + if (form.crudMode.intValue() == CrudMode.EDIT) { + // back + form.crudMode = CrudMode.DETAILS; + return asDetailsHtml(); + } else { + form.crudMode = CrudMode.EDIT; + return asEditHtml(); + } } // ----------------------------------------------------- @@ -171,7 +164,8 @@ public class AdminBadwordAction extends FessAdminAction { @Execute public HtmlResponse details(final int crudMode, final String id) { verifyCrudMode(crudMode, CrudMode.DETAILS); - return asHtml(path_AdminBadword_AdminBadwordDetailsJsp).useForm(EditForm.class, op -> { + saveToken(); + return asDetailsHtml().useForm(EditForm.class, op -> { op.setup(form -> { suggestBadWordService.getSuggestBadWord(id).ifPresent(entity -> { copyBeanToBean(entity, form, copyOp -> { @@ -179,7 +173,7 @@ public class AdminBadwordAction extends FessAdminAction { }); form.crudMode = crudMode; }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml()); }); }); }); @@ -189,14 +183,14 @@ public class AdminBadwordAction extends FessAdminAction { // Download // ------- @Execute - //(token = TxToken.SAVE) public HtmlResponse downloadpage(final SearchForm form) { - return asHtml(path_AdminBadword_AdminBadwordDownloadJsp); + saveToken(); + return asDownloadHtml(); } @Execute - //(token = TxToken.VALIDATE) public HtmlResponse download(final SearchForm form) { + verifyTokenKeep(() -> asDownloadHtml()); final HttpServletResponse response = LaResponseUtil.getResponse(); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=\"" + "badword.csv" + "\""); @@ -207,16 +201,16 @@ public class AdminBadwordAction extends FessAdminAction { } catch (final Exception e) { e.printStackTrace(); } - return asHtml(path_AdminBadword_AdminBadwordDownloadJsp); + return redirect(getClass()); } // ----------------------------------------------------- // Upload // ------- @Execute - //(token = TxToken.SAVE) public HtmlResponse uploadpage(final UploadForm form) { - return asHtml(path_AdminBadword_AdminBadwordUploadJsp); + saveToken(); + return asUploadHtml(); } // ----------------------------------------------------- @@ -225,13 +219,14 @@ public class AdminBadwordAction extends FessAdminAction { @Execute public HtmlResponse create(final CreateForm form) { verifyCrudMode(form.crudMode, CrudMode.CREATE); - validate(form, messages -> {}, toEditHtml()); + verifyToken(() -> asEditHtml()); + validate(form, messages -> {}, () -> asEditHtml()); getSuggestBadWord(form).ifPresent(entity -> { suggestBadWordService.store(entity); suggestHelper.addBadWord(entity.getSuggestWord()); saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL)); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml()); }); return redirect(getClass()); } @@ -239,13 +234,14 @@ public class AdminBadwordAction extends FessAdminAction { @Execute public HtmlResponse update(final EditForm form) { verifyCrudMode(form.crudMode, CrudMode.EDIT); - validate(form, messages -> {}, toEditHtml()); + verifyToken(() -> asEditHtml()); + validate(form, messages -> {}, () -> asEditHtml()); getSuggestBadWord(form).ifPresent(entity -> { suggestBadWordService.store(entity); suggestHelper.storeAllBadWords(); saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL)); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml()); }); return redirect(getClass()); } @@ -253,21 +249,22 @@ public class AdminBadwordAction extends FessAdminAction { @Execute public HtmlResponse delete(final EditForm form) { verifyCrudMode(form.crudMode, CrudMode.DETAILS); - validate(form, messages -> {}, toEditHtml()); + verifyToken(() -> asDetailsHtml()); + validate(form, messages -> {}, () -> asDetailsHtml()); final String id = form.id; suggestBadWordService.getSuggestBadWord(id).ifPresent(entity -> { suggestBadWordService.delete(entity); suggestHelper.deleteBadWord(entity.getSuggestWord()); saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL)); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asDetailsHtml()); }); return redirect(getClass()); } @Execute - //(token = TxToken.VALIDATE) public HtmlResponse upload(final UploadForm form) { + verifyToken(() -> asUploadHtml()); BufferedInputStream is = null; File tempFile = null; FileOutputStream fos = null; @@ -319,6 +316,7 @@ public class AdminBadwordAction extends FessAdminAction { } } saveInfo(messages -> messages.addSuccessUploadSuggestBadWord(GLOBAL)); + saveToken(); return redirect(getClass()); } @@ -365,13 +363,38 @@ public class AdminBadwordAction extends FessAdminAction { if (crudMode != expectedMode) { throwValidationError(messages -> { messages.addErrorsCrudInvalidMode(GLOBAL, String.valueOf(expectedMode), String.valueOf(crudMode)); - }, toEditHtml()); + }, () -> asListHtml()); } } - protected VaErrorHook toEditHtml() { - return () -> { - return asHtml(path_AdminBadword_AdminBadwordEditJsp); - }; + // =================================================================================== + // JSP + // ========= + private HtmlResponse asListHtml() { + return asHtml(path_AdminBadword_AdminBadwordJsp).renderWith(data -> { + data.register("suggestBadWordItems", suggestBadWordService.getSuggestBadWordList(suggestBadWordPager)); + }).useForm(SearchForm.class, setup -> { + setup.setup(form -> { + copyBeanToBean(suggestBadWordPager, form, op -> op.include("id")); + }); + }); } + + + private HtmlResponse asEditHtml() { + return asHtml(path_AdminBadword_AdminBadwordEditJsp); + } + + private HtmlResponse asDetailsHtml() { + return asHtml(path_AdminBadword_AdminBadwordDetailsJsp); + } + + private HtmlResponse asUploadHtml() { + return asHtml(path_AdminBadword_AdminBadwordUploadJsp); + } + + private HtmlResponse asDownloadHtml() { + return asHtml(path_AdminBadword_AdminBadwordDownloadJsp); + } + } diff --git a/src/main/java/org/codelibs/fess/app/web/admin/crawlinginfo/AdminCrawlinginfoAction.java b/src/main/java/org/codelibs/fess/app/web/admin/crawlinginfo/AdminCrawlinginfoAction.java index a4702d7f1..b4110988a 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/crawlinginfo/AdminCrawlinginfoAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/crawlinginfo/AdminCrawlinginfoAction.java @@ -28,7 +28,6 @@ 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.validation.VaErrorHook; /** * @author shinsuke @@ -62,17 +61,15 @@ public class AdminCrawlinginfoAction extends FessAdminAction { // ============== @Execute public HtmlResponse deleteall(final EditForm form) { - validate(form, messages -> {}, toIndexHtml()); + validate(form, messages -> {}, () -> asListHtml()); crawlingSessionService.deleteOldSessions(jobHelper.getRunningSessionIdSet()); saveInfo(messages -> messages.addSuccessCrawlingSessionDeleteAll(GLOBAL)); return redirect(getClass()); } @Execute - public HtmlResponse index(final SearchForm form) { - return asHtml(path_AdminCrawlinginfo_AdminCrawlinginfoJsp).renderWith(data -> { - searchPaging(data, form); - }); + public HtmlResponse index() { + return asListHtml(); } @Execute @@ -123,6 +120,7 @@ public class AdminCrawlinginfoAction extends FessAdminAction { @Execute public HtmlResponse details(final int crudMode, final String id) { verifyCrudMode(crudMode, CrudMode.DETAILS); + saveToken(); return asHtml(path_AdminCrawlinginfo_AdminCrawlinginfoDetailsJsp).useForm(EditForm.class, op -> { op.setup(form -> { crawlingSessionService.getCrawlingSession(id).ifPresent(entity -> { @@ -131,7 +129,7 @@ public class AdminCrawlinginfoAction extends FessAdminAction { }); form.crudMode = crudMode; }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toIndexHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml()); }); }); }).renderWith(data -> { @@ -145,7 +143,8 @@ public class AdminCrawlinginfoAction extends FessAdminAction { @Execute public HtmlResponse delete(final EditForm form) { verifyCrudMode(form.crudMode, CrudMode.DETAILS); - validate(form, messages -> {}, toIndexHtml()); + verifyToken(() -> asDetailsHtml()); + validate(form, messages -> {}, () -> asDetailsHtml()); final String id = form.id; crawlingSessionService.getCrawlingSession(id).alwaysPresent(entity -> { crawlingSessionService.delete(entity); @@ -165,13 +164,25 @@ public class AdminCrawlinginfoAction extends FessAdminAction { if (crudMode != expectedMode) { throwValidationError(messages -> { messages.addErrorsCrudInvalidMode(GLOBAL, String.valueOf(expectedMode), String.valueOf(crudMode)); - }, toIndexHtml()); + }, () -> asListHtml()); } } + + // =================================================================================== + // JSP + // ========= + + private HtmlResponse asListHtml() { + return asHtml(path_AdminCrawlinginfo_AdminCrawlinginfoJsp).renderWith(data -> { + data.register("crawlingSessionItems", crawlingSessionService.getCrawlingSessionList(crawlingSessionPager)); // page navi + }).useForm(SearchForm.class, setup -> { + setup.setup(form -> { + copyBeanToBean(crawlingSessionPager, form, op -> op.include("id")); + }); + }); + } - protected VaErrorHook toIndexHtml() { - return () -> { - return asHtml(path_AdminCrawlinginfo_AdminCrawlinginfoJsp); - }; + private HtmlResponse asDetailsHtml() { + return asHtml(path_AdminCrawlinginfo_AdminCrawlinginfoDetailsJsp); } } \ No newline at end of file diff --git a/src/main/java/org/codelibs/fess/app/web/admin/dataconfig/AdminDataconfigAction.java b/src/main/java/org/codelibs/fess/app/web/admin/dataconfig/AdminDataconfigAction.java index de199f0a7..287c4d1a0 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/dataconfig/AdminDataconfigAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/dataconfig/AdminDataconfigAction.java @@ -39,10 +39,8 @@ import org.dbflute.optional.OptionalThing; import org.lastaflute.web.Execute; import org.lastaflute.web.callback.ActionRuntime; import org.lastaflute.web.response.HtmlResponse; -import org.lastaflute.web.response.next.HtmlNext; import org.lastaflute.web.response.render.RenderData; import org.lastaflute.web.util.LaRequestUtil; -import org.lastaflute.web.validation.VaErrorHook; /** * @author codelibs @@ -79,10 +77,8 @@ public class AdminDataconfigAction extends FessAdminAction { // Search Execute // ============== @Execute - public HtmlResponse index(final SearchForm form) { - return asHtml(path_AdminDataconfig_AdminDataconfigJsp).renderWith(data -> { - searchPaging(data, form); - }); + public HtmlResponse index() { + return asListHtml(); } @Execute @@ -127,9 +123,9 @@ public class AdminDataconfigAction extends FessAdminAction { // Entry Page // ---------- @Execute - //(token = TxToken.SAVE) public HtmlResponse createnew() { - return asHtml(path_AdminDataconfig_AdminDataconfigEditJsp).useForm(CreateForm.class, op -> { + saveToken(); + return asEditHtml().useForm(CreateForm.class, op -> { op.setup(form -> { form.initialize(); form.crudMode = CrudMode.CREATE; @@ -143,36 +139,30 @@ public class AdminDataconfigAction extends FessAdminAction { @Execute //(token = TxToken.SAVE) public HtmlResponse edit(final EditForm form) { - validate(form, messages -> {}, toEditHtml()); - HtmlNext next; - switch (form.crudMode) { - case CrudMode.EDIT: // back - form.crudMode = CrudMode.DETAILS; - next = path_AdminDataconfig_AdminDataconfigDetailsJsp; - break; - default: - form.crudMode = CrudMode.EDIT; - next = path_AdminDataconfig_AdminDataconfigEditJsp; - break; - } - form.crudMode = CrudMode.EDIT; + validate(form, messages -> {}, () -> asListHtml()); final String id = form.id; dataConfigService.getDataConfig(id).ifPresent(entity -> { copyBeanToBean(entity, form, op -> {}); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toEditHtml()); - }); - return asHtml(next).renderWith(data -> { - registerRolesAndLabels(data); - registerHandlerNames(data); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml()); }); + if (form.crudMode.intValue() == CrudMode.EDIT) { + // back + form.crudMode = CrudMode.DETAILS; + return asDetailsHtml(); + } else { + form.crudMode = CrudMode.EDIT; + return asEditHtml(); + } } @Execute public HtmlResponse createnewjob(final EditForm form) { - validate(form, messages -> {}, toEditHtml()); + verifyToken(() -> asDetailsHtml()); + validate(form, messages -> {}, () -> asDetailsHtml()); final ScheduledJob scheduledJob = new ScheduledJob(); scheduledJob.setCrawler(true); + saveToken(); return asHtml(path_AdminScheduler_AdminSchedulerEditJsp).useForm( org.codelibs.fess.app.web.admin.scheduler.CreateForm.class, op -> { @@ -198,7 +188,8 @@ public class AdminDataconfigAction extends FessAdminAction { @Execute public HtmlResponse details(final int crudMode, final String id) { verifyCrudMode(crudMode, CrudMode.DETAILS); - return asHtml(path_AdminDataconfig_AdminDataconfigDetailsJsp).useForm(EditForm.class, op -> { + saveToken(); + return asDetailsHtml().useForm(EditForm.class, op -> { op.setup(form -> { dataConfigService.getDataConfig(id).ifPresent(entity -> { copyBeanToBean(entity, form, copyOp -> { @@ -206,7 +197,7 @@ public class AdminDataconfigAction extends FessAdminAction { }); form.crudMode = crudMode; }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml()); }); }); }).renderWith(data -> { @@ -221,12 +212,13 @@ public class AdminDataconfigAction extends FessAdminAction { @Execute public HtmlResponse create(final CreateForm form) { verifyCrudMode(form.crudMode, CrudMode.CREATE); - validate(form, messages -> {}, toEditHtml()); + verifyToken(() -> asEditHtml()); + validate(form, messages -> {}, () -> asEditHtml()); getDataConfig(form).ifPresent(entity -> { dataConfigService.store(entity); saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL)); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml()); }); return redirect(getClass()); } @@ -234,12 +226,13 @@ public class AdminDataconfigAction extends FessAdminAction { @Execute public HtmlResponse update(final EditForm form) { verifyCrudMode(form.crudMode, CrudMode.EDIT); - validate(form, messages -> {}, toEditHtml()); + verifyToken(() -> asEditHtml()); + validate(form, messages -> {}, () -> asEditHtml()); getDataConfig(form).ifPresent(entity -> { dataConfigService.store(entity); saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL)); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml()); }); return redirect(getClass()); } @@ -247,13 +240,14 @@ public class AdminDataconfigAction extends FessAdminAction { @Execute public HtmlResponse delete(final EditForm form) { verifyCrudMode(form.crudMode, CrudMode.DETAILS); - validate(form, messages -> {}, toEditHtml()); + verifyToken(() -> asDetailsHtml()); + validate(form, messages -> {}, () -> asDetailsHtml()); final String id = form.id; dataConfigService.getDataConfig(id).ifPresent(entity -> { dataConfigService.delete(entity); saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL)); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asDetailsHtml()); }); return redirect(getClass()); } @@ -318,16 +312,30 @@ public class AdminDataconfigAction extends FessAdminAction { if (crudMode != expectedMode) { throwValidationError(messages -> { messages.addErrorsCrudInvalidMode(GLOBAL, String.valueOf(expectedMode), String.valueOf(crudMode)); - }, toEditHtml()); + }, () -> asListHtml()); } } - protected VaErrorHook toEditHtml() { - return () -> { - return asHtml(path_AdminDataconfig_AdminDataconfigEditJsp).renderWith(data -> { - registerRolesAndLabels(data); - registerHandlerNames(data); + // =================================================================================== + // JSP + // ========= + + private HtmlResponse asListHtml() { + return asHtml(path_AdminDataconfig_AdminDataconfigJsp).renderWith(data -> { + data.register("dataConfigItems", dataConfigService.getDataConfigList(dataConfigPager)); + }).useForm(SearchForm.class, setup -> { + setup.setup(form -> { + copyBeanToBean(dataConfigPager, form, op -> op.include("id")); }); - }; + }); } + + private HtmlResponse asEditHtml() { + return asHtml(path_AdminDataconfig_AdminDataconfigEditJsp); + } + + private HtmlResponse asDetailsHtml() { + return asHtml(path_AdminDataconfig_AdminDataconfigDetailsJsp); + } + } diff --git a/src/main/java/org/codelibs/fess/app/web/admin/dict/AdminDictAction.java b/src/main/java/org/codelibs/fess/app/web/admin/dict/AdminDictAction.java index f15176387..74a5046f0 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/dict/AdminDictAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/dict/AdminDictAction.java @@ -52,7 +52,7 @@ public class AdminDictAction extends FessAdminAction { // Search Execute // ============== @Execute - public HtmlResponse index(final ListForm form) { + public HtmlResponse index() { return asHtml(path_AdminDict_AdminDictJsp).renderWith(data -> { final DictionaryFile[] dictFiles = dictionaryManager.getDictionaryFiles(); data.register("dictFiles", dictFiles); diff --git a/src/main/java/org/codelibs/fess/app/web/admin/dict/kuromoji/AdminDictKuromojiAction.java b/src/main/java/org/codelibs/fess/app/web/admin/dict/kuromoji/AdminDictKuromojiAction.java index 18475abb1..1cb438f79 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/dict/kuromoji/AdminDictKuromojiAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/dict/kuromoji/AdminDictKuromojiAction.java @@ -38,9 +38,7 @@ import org.lastaflute.web.Execute; import org.lastaflute.web.callback.ActionRuntime; import org.lastaflute.web.response.ActionResponse; import org.lastaflute.web.response.HtmlResponse; -import org.lastaflute.web.response.next.HtmlNext; import org.lastaflute.web.response.render.RenderData; -import org.lastaflute.web.validation.VaErrorHook; /** * @author shinsuke @@ -74,7 +72,7 @@ public class AdminDictKuromojiAction extends FessAdminAction { // ============== @Execute public HtmlResponse index(final SearchForm form) { - validate(form, messages -> {}, toIndexHtml()); + validate(form, messages -> {}, () -> asDictIndexHtml()); return asHtml(path_AdminDictKuromoji_AdminDictKuromojiJsp).renderWith(data -> { searchPaging(data, form); }); @@ -82,7 +80,7 @@ public class AdminDictKuromojiAction extends FessAdminAction { @Execute public HtmlResponse list(final OptionalThing pageNumber, final SearchForm form) { - validate(form, messages -> {}, toIndexHtml()); + validate(form, messages -> {}, () -> asDictIndexHtml()); pageNumber.ifPresent(num -> { kuromojiPager.setCurrentPageNumber(pageNumber.get()); }).orElse(() -> { @@ -95,7 +93,7 @@ public class AdminDictKuromojiAction extends FessAdminAction { @Execute public HtmlResponse search(final SearchForm form) { - validate(form, messages -> {}, toIndexHtml()); + validate(form, messages -> {}, () -> asDictIndexHtml()); copyBeanToBean(form, kuromojiPager, op -> op.exclude(Constants.PAGER_CONVERSION_RULE)); return asHtml(path_AdminDictKuromoji_AdminDictKuromojiJsp).renderWith(data -> { searchPaging(data, form); @@ -104,7 +102,7 @@ public class AdminDictKuromojiAction extends FessAdminAction { @Execute public HtmlResponse reset(final SearchForm form) { - validate(form, messages -> {}, toIndexHtml()); + validate(form, messages -> {}, () -> asDictIndexHtml()); kuromojiPager.clear(); return asHtml(path_AdminDictKuromoji_AdminDictKuromojiJsp).renderWith(data -> { searchPaging(data, form); @@ -128,8 +126,8 @@ public class AdminDictKuromojiAction extends FessAdminAction { // Entry Page // ---------- @Execute - //(token = TxToken.SAVE) public HtmlResponse createnew(final String dictId) { + saveToken(); return asHtml(path_AdminDictKuromoji_AdminDictKuromojiEditJsp).useForm(CreateForm.class, op -> { op.setup(form -> { form.initialize(); @@ -140,26 +138,22 @@ public class AdminDictKuromojiAction extends FessAdminAction { } @Execute - //(token = TxToken.SAVE) public HtmlResponse edit(final EditForm form) { - validate(form, messages -> {}, toEditHtml()); - HtmlNext next; - switch (form.crudMode) { - case CrudMode.EDIT: // back - form.crudMode = CrudMode.DETAILS; - next = path_AdminDictKuromoji_AdminDictKuromojiDetailsJsp; - break; - default: - form.crudMode = CrudMode.EDIT; - next = path_AdminDictKuromoji_AdminDictKuromojiEditJsp; - break; - } - kuromojiService.getKuromojiItem(form.dictId, form.id).ifPresent(entity -> { + validate(form, messages -> {}, () -> asListHtml(form.dictId)); + kuromojiService.getKuromojiItem(form.dictId, form.id).ifPresent(entity -> { copyBeanToBean(entity, form, op -> {}); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.getDisplayId()), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.getDisplayId()), () -> asListHtml(form.dictId)); }); - return asHtml(next); + saveToken(); + if (form.crudMode.intValue() == CrudMode.EDIT) { + // back + form.crudMode = CrudMode.DETAILS; + return asDetailsHtml(); + } else { + form.crudMode = CrudMode.EDIT; + return asEditHtml(); + } } // ----------------------------------------------------- @@ -167,8 +161,9 @@ public class AdminDictKuromojiAction extends FessAdminAction { // ------- @Execute public HtmlResponse details(final String dictId, final int crudMode, final long id) { - verifyCrudMode(crudMode, CrudMode.DETAILS); - return asHtml(path_AdminDictKuromoji_AdminDictKuromojiDetailsJsp).useForm(EditForm.class, op -> { + verifyCrudMode(crudMode, CrudMode.DETAILS, dictId); + saveToken(); + return asDetailsHtml().useForm(EditForm.class, op -> { op.setup(form -> { kuromojiService.getKuromojiItem(dictId, id).ifPresent(entity -> { copyBeanToBean(entity, form, copyOp -> { @@ -176,7 +171,7 @@ public class AdminDictKuromojiAction extends FessAdminAction { }); form.crudMode = crudMode; }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, dictId + ":" + id), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, dictId + ":" + id), () -> asListHtml(dictId)); }); form.dictId = dictId; }); @@ -187,8 +182,8 @@ public class AdminDictKuromojiAction extends FessAdminAction { // Download // ------- @Execute - //(token = TxToken.VALIDATE) public HtmlResponse downloadpage(final String dictId) { + saveToken(); return asHtml(path_AdminDictKuromoji_AdminDictKuromojiDownloadJsp).useForm(DownloadForm.class, op -> { op.setup(form -> { form.dictId = dictId; @@ -197,14 +192,14 @@ public class AdminDictKuromojiAction extends FessAdminAction { kuromojiService.getKuromojiFile(dictId).ifPresent(file -> { data.register("path", file.getPath()); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsFailedToDownloadKuromojiFile(GLOBAL), toIndexHtml()); + throwValidationError(messages -> messages.addErrorsFailedToDownloadKuromojiFile(GLOBAL), () -> asDictIndexHtml()); }); }); } @Execute - //(token = TxToken.VALIDATE) public ActionResponse download(final DownloadForm form) { + verifyTokenKeep(() -> downloadpage(form.dictId)); validate(form, messages -> {}, () -> downloadpage(form.dictId)); return kuromojiService.getKuromojiFile(form.dictId).map(file -> { return asStream(new File(file.getPath()).getName()).stream(out -> { @@ -222,8 +217,8 @@ public class AdminDictKuromojiAction extends FessAdminAction { // Upload // ------- @Execute - //(token = TxToken.VALIDATE) public HtmlResponse uploadpage(final String dictId) { + saveToken(); return asHtml(path_AdminDictKuromoji_AdminDictKuromojiUploadJsp).useForm(UploadForm.class, op -> { op.setup(form -> { form.dictId = dictId; @@ -232,14 +227,14 @@ public class AdminDictKuromojiAction extends FessAdminAction { kuromojiService.getKuromojiFile(dictId).ifPresent(file -> { data.register("path", file.getPath()); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsFailedToDownloadKuromojiFile(GLOBAL), toIndexHtml()); + throwValidationError(messages -> messages.addErrorsFailedToDownloadKuromojiFile(GLOBAL), () -> asDictIndexHtml()); }); }); } @Execute - //(token = TxToken.VALIDATE) public HtmlResponse upload(final UploadForm form) { + verifyToken(() -> uploadpage(form.dictId)); validate(form, messages -> {}, () -> uploadpage(form.dictId)); return kuromojiService.getKuromojiFile(form.dictId).map(file -> { try (InputStream inputStream = form.kuromojiFile.getInputStream()) { @@ -263,39 +258,42 @@ public class AdminDictKuromojiAction extends FessAdminAction { // ------------- @Execute public HtmlResponse create(final CreateForm form) { - verifyCrudMode(form.crudMode, CrudMode.CREATE); - validate(form, messages -> {}, toEditHtml()); + verifyCrudMode(form.crudMode, CrudMode.CREATE, form.dictId); + verifyToken(() -> asEditHtml()); + validate(form, messages -> {}, () -> asEditHtml()); createKuromojiItem(form).ifPresent(entity -> { kuromojiService.store(form.dictId, entity); saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL)); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), () -> asEditHtml()); }); return redirectWith(getClass(), moreUrl("list/1").params("dictId", form.dictId)); } @Execute public HtmlResponse update(final EditForm form) { - verifyCrudMode(form.crudMode, CrudMode.EDIT); - validate(form, messages -> {}, toEditHtml()); + verifyCrudMode(form.crudMode, CrudMode.EDIT, form.dictId); + verifyToken(() -> asEditHtml()); + validate(form, messages -> {}, () -> asEditHtml()); createKuromojiItem(form).ifPresent(entity -> { kuromojiService.store(form.dictId, entity); saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL)); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.getDisplayId()), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.getDisplayId()), () -> asEditHtml()); }); return redirectWith(getClass(), moreUrl("list/1").params("dictId", form.dictId)); } @Execute public HtmlResponse delete(final EditForm form) { - verifyCrudMode(form.crudMode, CrudMode.DETAILS); - validate(form, messages -> {}, toEditHtml()); + verifyCrudMode(form.crudMode, CrudMode.DETAILS, form.dictId); + verifyToken(() -> asDetailsHtml()); + validate(form, messages -> {}, () -> asDetailsHtml()); kuromojiService.getKuromojiItem(form.dictId, form.id).ifPresent(entity -> { kuromojiService.delete(form.dictId, entity); saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL)); }).orElse(() -> { - throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.getDisplayId()), toEditHtml()); + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.getDisplayId()), () -> asDetailsHtml()); }); return redirectWith(getClass(), moreUrl("list/1").params("dictId", form.dictId)); } @@ -336,23 +334,38 @@ public class AdminDictKuromojiAction extends FessAdminAction { // =================================================================================== // Small Helper // ============ - protected void verifyCrudMode(final int crudMode, final int expectedMode) { + protected void verifyCrudMode(final int crudMode, final int expectedMode, final String dictId) { if (crudMode != expectedMode) { throwValidationError(messages -> { messages.addErrorsCrudInvalidMode(GLOBAL, String.valueOf(expectedMode), String.valueOf(crudMode)); - }, toEditHtml()); + }, () -> asListHtml(dictId)); } } - protected VaErrorHook toIndexHtml() { - return () -> { - return redirect(AdminDictAction.class); - }; + // =================================================================================== + // JSP + // ========= + + protected HtmlResponse asDictIndexHtml() { + return redirect(AdminDictAction.class); + } + + private HtmlResponse asListHtml(final String dictId) { + return asHtml(path_AdminDictKuromoji_AdminDictKuromojiJsp).renderWith(data -> { + data.register("kuromojiItemItems", kuromojiService.getKuromojiList(dictId, kuromojiPager)); + }).useForm(SearchForm.class, setup -> { + setup.setup(form -> { + copyBeanToBean(kuromojiPager, form, op -> op.include("id")); + }); + }); + } + + private HtmlResponse asEditHtml() { + return asHtml(path_AdminDictKuromoji_AdminDictKuromojiEditJsp); } - protected VaErrorHook toEditHtml() { - return () -> { - return asHtml(path_AdminDictKuromoji_AdminDictKuromojiEditJsp); - }; + private HtmlResponse asDetailsHtml() { + return asHtml(path_AdminDictKuromoji_AdminDictKuromojiDetailsJsp); } + }