View Javadoc
1   /*
2    * Copyright 2012-2017 CodeLibs Project and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
15   */
16  package org.codelibs.fess.app.web.admin.failureurl;
17  
18  import javax.annotation.Resource;
19  
20  import org.codelibs.fess.Constants;
21  import org.codelibs.fess.app.pager.FailureUrlPager;
22  import org.codelibs.fess.app.service.FailureUrlService;
23  import org.codelibs.fess.app.web.CrudMode;
24  import org.codelibs.fess.app.web.base.FessAdminAction;
25  import org.codelibs.fess.util.RenderDataUtil;
26  import org.lastaflute.web.Execute;
27  import org.lastaflute.web.response.HtmlResponse;
28  import org.lastaflute.web.response.render.RenderData;
29  import org.lastaflute.web.ruts.process.ActionRuntime;
30  
31  /**
32   * @author shinsuke
33   * @author Keiichi Watanabe
34   */
35  public class AdminFailureurlAction extends FessAdminAction {
36  
37      // ===================================================================================
38      //                                                                           Attribute
39      //                                                                           =========
40      @Resource
41      private FailureUrlService failureUrlService;
42      @Resource
43      private FailureUrlPager failureUrlPager;
44  
45      // ===================================================================================
46      //                                                                               Hook
47      //                                                                              ======
48      @Override
49      protected void setupHtmlData(final ActionRuntime runtime) {
50          super.setupHtmlData(runtime);
51          runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameFailureurl()));
52      }
53  
54      // ===================================================================================
55      //                                                                      Search Execute
56      //                                                                      ==============
57      @Execute
58      public HtmlResponse index() {
59          saveToken();
60          return asListHtml();
61      }
62  
63      @Execute
64      public HtmlResponse list(final Integer pageNumber, final SearchForm form) {
65          failureUrlPager.setCurrentPageNumber(pageNumber);
66          return asHtml(path_AdminFailureurl_AdminFailureurlJsp).renderWith(data -> {
67              searchPaging(data, form);
68          });
69      }
70  
71      @Execute
72      public HtmlResponse search(final SearchForm form) {
73          copyBeanToBean(form, failureUrlPager, op -> op.exclude(Constants.PAGER_CONVERSION_RULE));
74          return asHtml(path_AdminFailureurl_AdminFailureurlJsp).renderWith(data -> {
75              searchPaging(data, form);
76          });
77      }
78  
79      @Execute
80      public HtmlResponse reset(final SearchForm form) {
81          failureUrlPager.clear();
82          return asHtml(path_AdminFailureurl_AdminFailureurlJsp).renderWith(data -> {
83              searchPaging(data, form);
84          });
85      }
86  
87      @Execute
88      public HtmlResponse back(final SearchForm form) {
89          return asHtml(path_AdminFailureurl_AdminFailureurlJsp).renderWith(data -> {
90              searchPaging(data, form);
91          });
92      }
93  
94      protected void searchPaging(final RenderData data, final SearchForm form) {
95          RenderDataUtil.register(data, "failureUrlItems", failureUrlService.getFailureUrlList(failureUrlPager)); // page navi
96  
97          // restore from pager
98          copyBeanToBean(failureUrlPager, form, op -> op.include("url", "errorCountMin", "errorCountMax", "errorName"));
99      }
100 
101     // -----------------------------------------------------
102     //                                               Details
103     //                                               -------
104     @Execute
105     public HtmlResponse details(final int crudMode, final String id) {
106         verifyCrudMode(crudMode, CrudMode.DETAILS);
107         return asHtml(path_AdminFailureurl_AdminFailureurlDetailsJsp).useForm(EditForm.class, op -> {
108             op.setup(form -> {
109                 failureUrlService.getFailureUrl(id).ifPresent(entity -> {
110                     copyBeanToBean(entity, form, copyOp -> {
111                         copyOp.excludeNull();
112                     });
113                     form.crudMode = crudMode;
114                 }).orElse(() -> {
115                     throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
116                 });
117             });
118         });
119     }
120 
121     // -----------------------------------------------------
122     //                            Actually Crud (only Delete)
123     //                                         -------------
124 
125     @Execute
126     public HtmlResponse delete(final EditForm form) {
127         verifyCrudMode(form.crudMode, CrudMode.DETAILS);
128         validate(form, messages -> {}, () -> asDetailsHtml());
129         verifyToken(() -> asDetailsHtml());
130         final String id = form.id;
131         failureUrlService.getFailureUrl(id).alwaysPresent(entity -> {
132             failureUrlService.delete(entity);
133             saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL));
134         });
135         return redirect(getClass());
136     }
137 
138     @Execute
139     public HtmlResponse deleteall() {
140         verifyToken(() -> asListHtml());
141         failureUrlService.deleteAll(failureUrlPager);
142         failureUrlPager.clear();
143         saveInfo(messages -> messages.addSuccessFailureUrlDeleteAll(GLOBAL));
144         return redirect(getClass());
145     }
146 
147     // ===================================================================================
148     //                                                                        Small Helper
149     //                                                                        ============
150     protected void verifyCrudMode(final int crudMode, final int expectedMode) {
151         if (crudMode != expectedMode) {
152             throwValidationError(messages -> {
153                 messages.addErrorsCrudInvalidMode(GLOBAL, String.valueOf(expectedMode), String.valueOf(crudMode));
154             }, () -> asListHtml());
155         }
156     }
157 
158     // ===================================================================================
159     //                                                                              JSP
160     //                                                                           =========
161 
162     private HtmlResponse asListHtml() {
163         return asHtml(path_AdminFailureurl_AdminFailureurlJsp).renderWith(data -> {
164             RenderDataUtil.register(data, "failureUrlItems", failureUrlService.getFailureUrlList(failureUrlPager)); // page navi
165             }).useForm(SearchForm.class, setup -> {
166             setup.setup(form -> {
167                 copyBeanToBean(failureUrlPager, form, op -> op.include("url", "errorCountMin", "errorCountMax", "errorName"));
168             });
169         });
170     }
171 
172     private HtmlResponse asDetailsHtml() {
173         return asHtml(path_AdminFailureurl_AdminFailureurlDetailsJsp);
174     }
175 }