diff --git a/src/main/java/org/codelibs/fess/app/service/FailureUrlService.java b/src/main/java/org/codelibs/fess/app/service/FailureUrlService.java index 9c7b0548c..457ada328 100644 --- a/src/main/java/org/codelibs/fess/app/service/FailureUrlService.java +++ b/src/main/java/org/codelibs/fess/app/service/FailureUrlService.java @@ -39,6 +39,7 @@ import org.codelibs.fess.helper.SystemHelper; import org.codelibs.fess.util.ComponentUtil; import org.dbflute.cbean.result.ListResultBean; import org.dbflute.cbean.result.PagingResultBean; +import org.dbflute.optional.OptionalEntity; import org.lastaflute.di.core.SingletonLaContainer; public class FailureUrlService implements Serializable { @@ -71,17 +72,8 @@ public class FailureUrlService implements Serializable { return failureUrlList; } - public FailureUrl getFailureUrl(final Map keys) { - final FailureUrl failureUrl = failureUrlBhv.selectEntity(cb -> { - cb.query().docMeta().setId_Equal(keys.get("id")); - setupEntityCondition(cb, keys); - }).orElse(null); - if (failureUrl == null) { - // TODO exception? - return null; - } - - return failureUrl; + public OptionalEntity getFailureUrl(final String id) { + return failureUrlBhv.selectByPK(id); } public void store(final FailureUrl failureUrl) { diff --git a/src/main/java/org/codelibs/fess/app/web/admin/failureurl/AdminFailureurlAction.java b/src/main/java/org/codelibs/fess/app/web/admin/failureurl/AdminFailureurlAction.java index 913bd587a..00c2705db 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/failureurl/AdminFailureurlAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/failureurl/AdminFailureurlAction.java @@ -15,21 +15,19 @@ */ package org.codelibs.fess.app.web.admin.failureurl; -import java.util.HashMap; -import java.util.Map; - import javax.annotation.Resource; import org.codelibs.fess.Constants; import org.codelibs.fess.app.pager.FailureUrlPager; import org.codelibs.fess.app.service.FailureUrlService; +import org.codelibs.fess.app.web.CrudMode; import org.codelibs.fess.app.web.base.FessAdminAction; -import org.codelibs.fess.es.config.exentity.FailureUrl; import org.codelibs.fess.helper.SystemHelper; 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 codelibs @@ -60,14 +58,14 @@ public class AdminFailureurlAction extends FessAdminAction { // Search Execute // ============== @Execute - public HtmlResponse index(final FailureUrlSearchForm form) { + public HtmlResponse index(final SearchForm form) { return asHtml(path_AdminFailureurl_IndexJsp).renderWith(data -> { searchPaging(data, form); }); } @Execute - public HtmlResponse list(final Integer pageNumber, final FailureUrlSearchForm form) { + public HtmlResponse list(final Integer pageNumber, final SearchForm form) { failureUrlPager.setCurrentPageNumber(pageNumber); return asHtml(path_AdminFailureurl_IndexJsp).renderWith(data -> { searchPaging(data, form); @@ -75,15 +73,15 @@ public class AdminFailureurlAction extends FessAdminAction { } @Execute - public HtmlResponse search(final FailureUrlSearchForm form) { - copyBeanToBean(form.searchParams, failureUrlPager, op -> op.exclude(Constants.PAGER_CONVERSION_RULE)); + public HtmlResponse search(final SearchForm form) { + copyBeanToBean(form, failureUrlPager, op -> op.exclude(Constants.PAGER_CONVERSION_RULE)); return asHtml(path_AdminFailureurl_IndexJsp).renderWith(data -> { searchPaging(data, form); }); } @Execute - public HtmlResponse reset(final FailureUrlSearchForm form) { + public HtmlResponse reset(final SearchForm form) { failureUrlPager.clear(); return asHtml(path_AdminFailureurl_IndexJsp).renderWith(data -> { searchPaging(data, form); @@ -91,30 +89,37 @@ public class AdminFailureurlAction extends FessAdminAction { } @Execute - public HtmlResponse back(final FailureUrlSearchForm form) { + public HtmlResponse back(final SearchForm form) { return asHtml(path_AdminFailureurl_IndexJsp).renderWith(data -> { searchPaging(data, form); }); } - protected void searchPaging(final RenderData data, final FailureUrlSearchForm form) { + protected void searchPaging(final RenderData data, final SearchForm form) { data.register("failureUrlItems", failureUrlService.getFailureUrlList(failureUrlPager)); // page navi // restore from pager - copyBeanToBean(failureUrlPager, form.searchParams, op -> op.exclude(Constants.PAGER_CONVERSION_RULE)); + copyBeanToBean(failureUrlPager, form, op -> op.include("id")); } // ----------------------------------------------------- // Details // ------- @Execute - public HtmlResponse details(final int crudMode, final String id, final FailureUrlEditForm form) { - // TODO - // form.crudMode = crudMode; - // form.id = id; - // verifyCrudMode(form, CrudMode.CONFIRM); - loadFailureUrl(form); - return asHtml(path_AdminFailureurl_DetailsJsp); + public HtmlResponse details(final int crudMode, final String id) { + verifyCrudMode(crudMode, CrudMode.DETAILS); + return asHtml(path_AdminFailureurl_DetailsJsp).useForm(EditForm.class, op -> { + op.setup(form -> { + failureUrlService.getFailureUrl(id).ifPresent(entity -> { + copyBeanToBean(entity, form, copyOp -> { + copyOp.excludeNull(); + }); + form.crudMode = crudMode; + }).orElse(() -> { + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toIndexHtml()); + }); + }); + }); } // ----------------------------------------------------- @@ -122,40 +127,39 @@ public class AdminFailureurlAction extends FessAdminAction { // ------------- @Execute - public HtmlResponse delete(final FailureUrlEditForm form) { - // TODO verifyCrudMode(form, CrudMode.DELETE); - failureUrlService.delete(getFailureUrl(form)); - saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL)); + public HtmlResponse delete(final EditForm form) { + verifyCrudMode(form.crudMode, CrudMode.DELETE); + validate(form, messages -> {}, toIndexHtml()); + String id = form.id; + failureUrlService.getFailureUrl(id).alwaysPresent(entity -> { + failureUrlService.delete(entity); + saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL)); + }); return redirect(getClass()); } @Execute - public HtmlResponse deleteall(final FailureUrlEditForm form) { + public HtmlResponse deleteall(final EditForm form) { + validate(form, messages -> {}, toIndexHtml()); failureUrlService.deleteAll(failureUrlPager); saveInfo(messages -> messages.addSuccessFailureUrlDeleteAll(GLOBAL)); return redirect(getClass()); } // =================================================================================== - // Assist Logic + // Small Helper // ============ - - protected void loadFailureUrl(final FailureUrlEditForm form) { - copyBeanToBean(getFailureUrl(form), form, op -> op.exclude("crudMode")); - } - - protected FailureUrl getFailureUrl(final FailureUrlEditForm form) { - final FailureUrl failureUrl = failureUrlService.getFailureUrl(createKeyMap(form)); - if (failureUrl == null) { - // TODO + protected void verifyCrudMode(final int crudMode, final int expectedMode) { + if (crudMode != expectedMode) { + throwValidationError(messages -> { + messages.addErrorsCrudInvalidMode(GLOBAL, String.valueOf(expectedMode), String.valueOf(crudMode)); + }, toIndexHtml()); } - return failureUrl; } - protected Map createKeyMap(final FailureUrlEditForm form) { - final Map keys = new HashMap(); - keys.put("id", form.id); - return keys; + protected VaErrorHook toIndexHtml() { + return () -> { + return asHtml(path_AdminJoblog_IndexJsp); + }; } - } diff --git a/src/main/java/org/codelibs/fess/app/web/admin/failureurl/FailureUrlEditForm.java b/src/main/java/org/codelibs/fess/app/web/admin/failureurl/EditForm.java similarity index 69% rename from src/main/java/org/codelibs/fess/app/web/admin/failureurl/FailureUrlEditForm.java rename to src/main/java/org/codelibs/fess/app/web/admin/failureurl/EditForm.java index 647568f4a..a236dc545 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/failureurl/FailureUrlEditForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/failureurl/EditForm.java @@ -19,11 +19,16 @@ import java.io.Serializable; import java.util.HashMap; import java.util.Map; +import javax.validation.constraints.Digits; +import javax.validation.constraints.Size; + +import org.lastaflute.web.validation.Required; + /** * @author codelibs * @author Keiichi Watanabe */ -public class FailureUrlEditForm implements Serializable { +public class EditForm implements Serializable { private static final long serialVersionUID = 1L; @@ -31,12 +36,12 @@ public class FailureUrlEditForm implements Serializable { public String fileConfigName; - //@Digits(integer=10, fraction=0) + @Digits(integer = 10, fraction = 0) public String pageNumber; public Map searchParams = new HashMap(); - //@Digits(integer=10, fraction=0) + @Digits(integer = 10, fraction = 0) // TODO necessary? public int crudMode; @@ -44,29 +49,28 @@ public class FailureUrlEditForm implements Serializable { return pageNumber; } - //@Required(target = "confirmfromupdate,update,delete") - //@Maxbytelength(maxbytelength = 1000) + @Required + @Size(max = 1000) public String id; - //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") + @Required public String url; - //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") + @Required public String threadName; public String errorName; public String errorLog; - //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") - //@Digits(integer=10, fraction=0) + @Required + @Digits(integer = 10, fraction = 0) public String errorCount; - //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") - //@DateType(datePattern = Constants.DEFAULT_DATETIME_FORMAT) + @Required public String lastAccessTime; - //@Maxbytelength(maxbytelength = 1000) + @Size(max = 1000) public String configId; public void initialize() { @@ -80,4 +84,4 @@ public class FailureUrlEditForm implements Serializable { configId = null; } -} +} \ No newline at end of file diff --git a/src/main/java/org/codelibs/fess/app/web/admin/failureurl/FailureUrlSearchForm.java b/src/main/java/org/codelibs/fess/app/web/admin/failureurl/SearchForm.java similarity index 81% rename from src/main/java/org/codelibs/fess/app/web/admin/failureurl/FailureUrlSearchForm.java rename to src/main/java/org/codelibs/fess/app/web/admin/failureurl/SearchForm.java index 5e56c924b..997d194bd 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/failureurl/FailureUrlSearchForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/failureurl/SearchForm.java @@ -16,16 +16,14 @@ package org.codelibs.fess.app.web.admin.failureurl; import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; /** * @author codelibs * @author Keiichi Watanabe */ -public class FailureUrlSearchForm implements Serializable { +public class SearchForm implements Serializable { private static final long serialVersionUID = 1L; - public Map searchParams = new HashMap(); -} + public String id; +} \ No newline at end of file