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/service/JobLogService.java b/src/main/java/org/codelibs/fess/app/service/JobLogService.java index d4183f39b..064d9915b 100644 --- a/src/main/java/org/codelibs/fess/app/service/JobLogService.java +++ b/src/main/java/org/codelibs/fess/app/service/JobLogService.java @@ -29,6 +29,7 @@ import org.codelibs.fess.es.config.exbhv.JobLogBhv; import org.codelibs.fess.es.config.exentity.JobLog; import org.codelibs.fess.util.ComponentUtil; import org.dbflute.cbean.result.PagingResultBean; +import org.dbflute.optional.OptionalEntity; public class JobLogService implements Serializable { @@ -57,17 +58,8 @@ public class JobLogService implements Serializable { return jobLogList; } - public JobLog getJobLog(final Map keys) { - final JobLog jobLog = jobLogBhv.selectEntity(cb -> { - cb.query().docMeta().setId_Equal(keys.get("id")); - setupEntityCondition(cb, keys); - }).orElse(null);//TODO - if (jobLog == null) { - // TODO exception? - return null; - } - - return jobLog; + public OptionalEntity getJobLog(final String id) { + return jobLogBhv.selectByPK(id); } public void store(final JobLog jobLog) { 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 diff --git a/src/main/java/org/codelibs/fess/app/web/admin/joblog/AdminJoblogAction.java b/src/main/java/org/codelibs/fess/app/web/admin/joblog/AdminJoblogAction.java index b22ddcd98..0c7f06e19 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/joblog/AdminJoblogAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/joblog/AdminJoblogAction.java @@ -15,9 +15,6 @@ */ package org.codelibs.fess.app.web.admin.joblog; -import java.util.HashMap; -import java.util.Map; - import javax.annotation.Resource; import org.codelibs.fess.Constants; @@ -25,7 +22,6 @@ import org.codelibs.fess.app.pager.JobLogPager; import org.codelibs.fess.app.service.JobLogService; import org.codelibs.fess.app.web.CrudMode; import org.codelibs.fess.app.web.base.FessAdminAction; -import org.codelibs.fess.es.config.exentity.JobLog; import org.codelibs.fess.helper.SystemHelper; import org.lastaflute.web.Execute; import org.lastaflute.web.callback.ActionRuntime; @@ -63,14 +59,14 @@ public class AdminJoblogAction extends FessAdminAction { // Search Execute // ============== @Execute - public HtmlResponse index(final JobLogSearchForm form) { + public HtmlResponse index(final SearchForm form) { return asHtml(path_AdminJoblog_IndexJsp).renderWith(data -> { searchPaging(data, form); }); } @Execute - public HtmlResponse list(final Integer pageNumber, final JobLogSearchForm form) { + public HtmlResponse list(final Integer pageNumber, final SearchForm form) { jobLogPager.setCurrentPageNumber(pageNumber); return asHtml(path_AdminJoblog_IndexJsp).renderWith(data -> { searchPaging(data, form); @@ -78,15 +74,15 @@ public class AdminJoblogAction extends FessAdminAction { } @Execute - public HtmlResponse search(final JobLogSearchForm form) { - copyBeanToBean(form.searchParams, jobLogPager, op -> op.exclude(Constants.PAGER_CONVERSION_RULE)); + public HtmlResponse search(final SearchForm form) { + copyBeanToBean(form, jobLogPager, op -> op.exclude(Constants.PAGER_CONVERSION_RULE)); return asHtml(path_AdminJoblog_IndexJsp).renderWith(data -> { searchPaging(data, form); }); } @Execute - public HtmlResponse reset(final JobLogSearchForm form) { + public HtmlResponse reset(final SearchForm form) { jobLogPager.clear(); return asHtml(path_AdminJoblog_IndexJsp).renderWith(data -> { searchPaging(data, form); @@ -94,17 +90,17 @@ public class AdminJoblogAction extends FessAdminAction { } @Execute - public HtmlResponse back(final JobLogSearchForm form) { + public HtmlResponse back(final SearchForm form) { return asHtml(path_AdminJoblog_IndexJsp).renderWith(data -> { searchPaging(data, form); }); } - protected void searchPaging(final RenderData data, final JobLogSearchForm form) { + protected void searchPaging(final RenderData data, final SearchForm form) { data.register("jobLogItems", jobLogService.getJobLogList(jobLogPager)); // page navi // restore from pager - copyBeanToBean(jobLogPager, form.searchParams, op -> op.exclude(Constants.PAGER_CONVERSION_RULE)); + copyBeanToBean(jobLogPager, form, op -> op.include("id")); } // =================================================================================== @@ -114,18 +110,32 @@ public class AdminJoblogAction extends FessAdminAction { // Entry Page // ---------- @Execute(token = TxToken.SAVE) - public HtmlResponse deletepage(final int crudMode, final String id, final JobLogEditForm form) { - form.crudMode = crudMode; - form.id = id; - verifyCrudMode(form, CrudMode.DELETE); - loadJobLog(form); - return asHtml(path_AdminJoblog_DetailsJsp); + public HtmlResponse deletepage(final int crudMode, final String id) { + verifyCrudMode(crudMode, CrudMode.DELETE); + return asHtml(path_AdminJoblog_DetailsJsp).useForm(EditForm.class, op -> { + op.setup(form -> { + jobLogService.getJobLog(id).ifPresent(entity -> { + copyBeanToBean(entity, form, copyOp -> { + copyOp.excludeNull(); + }); + }).orElse(() -> { + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toIndexHtml()); + }); + form.crudMode = crudMode; + }); + }); } @Execute(token = TxToken.SAVE) - public HtmlResponse deletefromconfirm(final JobLogEditForm form) { + public HtmlResponse deletefromconfirm(final EditForm form) { form.crudMode = CrudMode.DELETE; - loadJobLog(form); + validate(form, messages -> {}, toIndexHtml()); + String id = form.id; + jobLogService.getJobLog(id).ifPresent(entity -> { + copyBeanToBean(entity, form, op -> {}); + }).orElse(() -> { + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toIndexHtml()); + }); return asHtml(path_AdminJoblog_DetailsJsp); } @@ -133,50 +143,48 @@ public class AdminJoblogAction extends FessAdminAction { // Details // ------- @Execute - public HtmlResponse details(final int crudMode, final String id, final JobLogEditForm form) { - form.crudMode = crudMode; - form.id = id; - verifyCrudMode(form, CrudMode.DETAILS); - loadJobLog(form); - return asHtml(path_AdminJoblog_DetailsJsp); + public HtmlResponse details(final int crudMode, final String id) { + verifyCrudMode(crudMode, CrudMode.DETAILS); + return asHtml(path_AdminJoblog_DetailsJsp).useForm(EditForm.class, op -> { + op.setup(form -> { + jobLogService.getJobLog(id).ifPresent(entity -> { + copyBeanToBean(entity, form, copyOp -> { + copyOp.excludeNull(); + }); + form.crudMode = crudMode; + }).orElse(() -> { + throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toIndexHtml()); + }); + }); + }); } // ----------------------------------------------------- // Actually Crud // ------------- @Execute - public HtmlResponse delete(final JobLogEditForm form) { - verifyCrudMode(form, CrudMode.DELETE); - jobLogService.delete(getJobLog(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; + jobLogService.getJobLog(id).alwaysPresent(entity -> { + jobLogService.delete(entity); + saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL)); + }); return redirect(getClass()); } // =================================================================================== // Assist Logic // ============ - protected void loadJobLog(final JobLogEditForm form) { - copyBeanToBean(getJobLog(form), form, op -> op.exclude("crudMode")); - } - - protected JobLog getJobLog(final JobLogEditForm form) { - final JobLog jobLog = jobLogService.getJobLog(createKeyMap(form)); - return jobLog; - } - - protected Map createKeyMap(final JobLogEditForm form) { - final Map keys = new HashMap(); - keys.put("id", form.id); - return keys; - } // =================================================================================== // Small Helper // ============ - protected void verifyCrudMode(final JobLogEditForm form, final int expectedMode) { - if (form.crudMode != expectedMode) { + protected void verifyCrudMode(final int crudMode, final int expectedMode) { + if (crudMode != expectedMode) { throwValidationError(messages -> { - messages.addErrorsCrudInvalidMode(GLOBAL, String.valueOf(expectedMode), String.valueOf(form.crudMode)); + messages.addErrorsCrudInvalidMode(GLOBAL, String.valueOf(expectedMode), String.valueOf(crudMode)); }, toIndexHtml()); } } diff --git a/src/main/java/org/codelibs/fess/app/web/admin/joblog/JobLogEditForm.java b/src/main/java/org/codelibs/fess/app/web/admin/joblog/EditForm.java similarity index 64% rename from src/main/java/org/codelibs/fess/app/web/admin/joblog/JobLogEditForm.java rename to src/main/java/org/codelibs/fess/app/web/admin/joblog/EditForm.java index 8e85056cd..abcf405c9 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/joblog/JobLogEditForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/joblog/EditForm.java @@ -17,42 +17,45 @@ package org.codelibs.fess.app.web.admin.joblog; import java.io.Serializable; +import javax.validation.constraints.Digits; +import javax.validation.constraints.Size; + +import org.lastaflute.web.validation.Required; + /** * @author codelibs * @author Shunji Makino */ -public class JobLogEditForm implements Serializable { +public class EditForm implements Serializable { private static final long serialVersionUID = 1L; - //@Digits(integer=10, fraction=0) + @Digits(integer = 10, fraction = 0) public int crudMode; - //@Required(target = "confirmfromupdate,update,delete") - //@Digits(integer=19, fraction=0) + @Required + @Digits(integer = 19, fraction = 0) public String id; - //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") + @Required public String jobName; - //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") + @Required public String jobStatus; - //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") + @Required public String target; - //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") + @Required public String scriptType; public String scriptData; public String scriptResult; - //@Required(target = "confirmfromcreate,create,confirmfromupdate,update,delete") - //@DateType(datePattern = Constants.DEFAULT_DATETIME_FORMAT) + @Required public String startTime; - //@DateType(datePattern = Constants.DEFAULT_DATETIME_FORMAT) public String endTime; public void initialize() { @@ -66,4 +69,4 @@ public class JobLogEditForm implements Serializable { startTime = null; endTime = null; } -} +} \ No newline at end of file diff --git a/src/main/java/org/codelibs/fess/app/web/admin/joblog/JobLogSearchForm.java b/src/main/java/org/codelibs/fess/app/web/admin/joblog/SearchForm.java similarity index 81% rename from src/main/java/org/codelibs/fess/app/web/admin/joblog/JobLogSearchForm.java rename to src/main/java/org/codelibs/fess/app/web/admin/joblog/SearchForm.java index 7af1729c6..9c84e4eac 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/joblog/JobLogSearchForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/joblog/SearchForm.java @@ -16,16 +16,14 @@ package org.codelibs.fess.app.web.admin.joblog; import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; /** * @author codelibs * @author Shunji Makino */ -public class JobLogSearchForm 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