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/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