1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.app.web.admin.duplicatehost;
17
18 import javax.annotation.Resource;
19
20 import org.codelibs.fess.Constants;
21 import org.codelibs.fess.app.pager.DuplicateHostPager;
22 import org.codelibs.fess.app.service.DuplicateHostService;
23 import org.codelibs.fess.app.web.CrudMode;
24 import org.codelibs.fess.app.web.base.FessAdminAction;
25 import org.codelibs.fess.es.config.exentity.DuplicateHost;
26 import org.codelibs.fess.helper.SystemHelper;
27 import org.codelibs.fess.util.ComponentUtil;
28 import org.codelibs.fess.util.RenderDataUtil;
29 import org.dbflute.optional.OptionalEntity;
30 import org.dbflute.optional.OptionalThing;
31 import org.lastaflute.web.Execute;
32 import org.lastaflute.web.response.HtmlResponse;
33 import org.lastaflute.web.response.render.RenderData;
34 import org.lastaflute.web.ruts.process.ActionRuntime;
35
36
37
38
39
40 public class AdminDuplicatehostAction extends FessAdminAction {
41
42
43
44
45 @Resource
46 private DuplicateHostService duplicateHostService;
47 @Resource
48 private DuplicateHostPager duplicateHostPager;
49
50
51
52
53 @Override
54 protected void setupHtmlData(final ActionRuntime runtime) {
55 super.setupHtmlData(runtime);
56 runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameDuplicatehost()));
57 }
58
59
60
61
62 @Execute
63 public HtmlResponse index(final SearchForm form) {
64 return asListHtml();
65 }
66
67 @Execute
68 public HtmlResponse list(final OptionalThing<Integer> pageNumber, final SearchForm form) {
69 pageNumber.ifPresent(num -> {
70 duplicateHostPager.setCurrentPageNumber(pageNumber.get());
71 }).orElse(() -> {
72 duplicateHostPager.setCurrentPageNumber(0);
73 });
74 return asHtml(path_AdminDuplicatehost_AdminDuplicatehostJsp).renderWith(data -> {
75 searchPaging(data, form);
76 });
77 }
78
79 @Execute
80 public HtmlResponse search(final SearchForm form) {
81 copyBeanToBean(form, duplicateHostPager, op -> op.exclude(Constants.PAGER_CONVERSION_RULE));
82 return asHtml(path_AdminDuplicatehost_AdminDuplicatehostJsp).renderWith(data -> {
83 searchPaging(data, form);
84 });
85 }
86
87 @Execute
88 public HtmlResponse reset(final SearchForm form) {
89 duplicateHostPager.clear();
90 return asHtml(path_AdminDuplicatehost_AdminDuplicatehostJsp).renderWith(data -> {
91 searchPaging(data, form);
92 });
93 }
94
95 protected void searchPaging(final RenderData data, final SearchForm form) {
96 RenderDataUtil.register(data, "duplicateHostItems", duplicateHostService.getDuplicateHostList(duplicateHostPager));
97
98
99 copyBeanToBean(duplicateHostPager, form, op -> op.include("id"));
100 }
101
102
103
104
105
106
107
108 @Execute
109 public HtmlResponse createnew() {
110 saveToken();
111 return asHtml(path_AdminDuplicatehost_AdminDuplicatehostEditJsp).useForm(CreateForm.class, op -> {
112 op.setup(form -> {
113 form.initialize();
114 form.crudMode = CrudMode.CREATE;
115 });
116 });
117 }
118
119 @Execute
120 public HtmlResponse edit(final EditForm form) {
121 validate(form, messages -> {}, () -> asListHtml());
122 final String id = form.id;
123 duplicateHostService.getDuplicateHost(id).ifPresent(entity -> {
124 copyBeanToBean(entity, form, op -> {});
125 }).orElse(() -> {
126 throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
127 });
128 saveToken();
129 if (form.crudMode.intValue() == CrudMode.EDIT) {
130
131 form.crudMode = CrudMode.DETAILS;
132 return asDetailsHtml();
133 } else {
134 form.crudMode = CrudMode.EDIT;
135 return asEditHtml();
136 }
137 }
138
139
140
141
142 @Execute
143 public HtmlResponse details(final int crudMode, final String id) {
144 verifyCrudMode(crudMode, CrudMode.DETAILS);
145 saveToken();
146 return asHtml(path_AdminDuplicatehost_AdminDuplicatehostDetailsJsp).useForm(EditForm.class, op -> {
147 op.setup(form -> {
148 duplicateHostService.getDuplicateHost(id).ifPresent(entity -> {
149 copyBeanToBean(entity, form, copyOp -> {
150 copyOp.excludeNull();
151 });
152 form.crudMode = crudMode;
153 }).orElse(() -> {
154 throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
155 });
156 });
157 });
158 }
159
160
161
162
163 @Execute
164 public HtmlResponse create(final CreateForm form) {
165 verifyCrudMode(form.crudMode, CrudMode.CREATE);
166 validate(form, messages -> {}, () -> asEditHtml());
167 verifyToken(() -> asEditHtml());
168 getDuplicateHost(form).ifPresent(
169 entity -> {
170 try {
171 duplicateHostService.store(entity);
172 saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
173 } catch (final Exception e) {
174 throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL, buildThrowableMessage(e)),
175 () -> asEditHtml());
176 }
177 }).orElse(() -> {
178 throwValidationError(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL), () -> asEditHtml());
179 });
180 return redirect(getClass());
181 }
182
183 @Execute
184 public HtmlResponse update(final EditForm form) {
185 verifyCrudMode(form.crudMode, CrudMode.EDIT);
186 validate(form, messages -> {}, () -> asEditHtml());
187 verifyToken(() -> asEditHtml());
188 getDuplicateHost(form).ifPresent(
189 entity -> {
190 try {
191 duplicateHostService.store(entity);
192 saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL));
193 } catch (final Exception e) {
194 throwValidationError(messages -> messages.addErrorsCrudFailedToUpdateCrudTable(GLOBAL, buildThrowableMessage(e)),
195 () -> asEditHtml());
196 }
197 }).orElse(() -> {
198 throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), () -> asEditHtml());
199 });
200 return redirect(getClass());
201 }
202
203 @Execute
204 public HtmlResponse delete(final EditForm form) {
205 verifyCrudMode(form.crudMode, CrudMode.DETAILS);
206 validate(form, messages -> {}, () -> asDetailsHtml());
207 verifyToken(() -> asDetailsHtml());
208 final String id = form.id;
209 duplicateHostService
210 .getDuplicateHost(id)
211 .ifPresent(
212 entity -> {
213 try {
214 duplicateHostService.delete(entity);
215 saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL));
216 } catch (final Exception e) {
217 throwValidationError(
218 messages -> messages.addErrorsCrudFailedToDeleteCrudTable(GLOBAL, buildThrowableMessage(e)),
219 () -> asEditHtml());
220 }
221 }).orElse(() -> {
222 throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asDetailsHtml());
223 });
224 return redirect(getClass());
225 }
226
227
228
229
230 public static OptionalEntity<DuplicateHost> getEntity(final CreateForm form, final String username, final long currentTime) {
231 switch (form.crudMode) {
232 case CrudMode.CREATE:
233 return OptionalEntity.of(new DuplicateHost()).map(entity -> {
234 entity.setCreatedBy(username);
235 entity.setCreatedTime(currentTime);
236 return entity;
237 });
238 case CrudMode.EDIT:
239 if (form instanceof EditForm) {
240 return ComponentUtil.getComponent(DuplicateHostService.class).getDuplicateHost(((EditForm) form).id);
241 }
242 break;
243 default:
244 break;
245 }
246 return OptionalEntity.empty();
247 }
248
249 public static OptionalEntity<DuplicateHost> getDuplicateHost(final CreateForm form) {
250 final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
251 final String username = systemHelper.getUsername();
252 final long currentTime = systemHelper.getCurrentTimeAsLong();
253 return getEntity(form, username, currentTime).map(entity -> {
254 entity.setUpdatedBy(username);
255 entity.setUpdatedTime(currentTime);
256 copyBeanToBean(form, entity, op -> op.exclude(Constants.COMMON_CONVERSION_RULE));
257 return entity;
258 });
259 }
260
261
262
263
264 protected void verifyCrudMode(final int crudMode, final int expectedMode) {
265 if (crudMode != expectedMode) {
266 throwValidationError(messages -> {
267 messages.addErrorsCrudInvalidMode(GLOBAL, String.valueOf(expectedMode), String.valueOf(crudMode));
268 }, () -> asListHtml());
269 }
270 }
271
272
273
274
275
276 private HtmlResponse asListHtml() {
277 return asHtml(path_AdminDuplicatehost_AdminDuplicatehostJsp).renderWith(data -> {
278 RenderDataUtil.register(data, "duplicateHostItems", duplicateHostService.getDuplicateHostList(duplicateHostPager));
279 }).useForm(SearchForm.class, setup -> {
280 setup.setup(form -> {
281 copyBeanToBean(duplicateHostPager, form, op -> op.include("id"));
282 });
283 });
284 }
285
286 private HtmlResponse asEditHtml() {
287 return asHtml(path_AdminDuplicatehost_AdminDuplicatehostEditJsp);
288 }
289
290 private HtmlResponse asDetailsHtml() {
291 return asHtml(path_AdminDuplicatehost_AdminDuplicatehostDetailsJsp);
292 }
293 }