1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.app.web.api.admin.duplicatehost;
17
18 import static org.codelibs.fess.app.web.admin.duplicatehost.AdminDuplicatehostAction.getDuplicateHost;
19
20 import java.util.List;
21 import java.util.stream.Collectors;
22
23 import javax.annotation.Resource;
24
25 import org.codelibs.fess.app.pager.DuplicateHostPager;
26 import org.codelibs.fess.app.service.DuplicateHostService;
27 import org.codelibs.fess.app.web.CrudMode;
28 import org.codelibs.fess.app.web.api.ApiResult;
29 import org.codelibs.fess.app.web.api.ApiResult.ApiConfigResponse;
30 import org.codelibs.fess.app.web.api.ApiResult.ApiResponse;
31 import org.codelibs.fess.app.web.api.ApiResult.ApiUpdateResponse;
32 import org.codelibs.fess.app.web.api.ApiResult.Status;
33 import org.codelibs.fess.app.web.api.admin.FessApiAdminAction;
34 import org.codelibs.fess.es.config.exentity.DuplicateHost;
35 import org.lastaflute.web.Execute;
36 import org.lastaflute.web.response.JsonResponse;
37
38
39
40
41 public class ApiAdminDuplicatehostAction extends FessApiAdminAction {
42
43
44
45
46 @Resource
47 private DuplicateHostService duplicateHostService;
48
49
50
51
52
53
54
55 @Execute
56 public JsonResponse<ApiResult> settings(final SearchBody body) {
57 validateApi(body, messages -> {});
58 final DuplicateHostPager pager = copyBeanToNewBean(body, DuplicateHostPager.class);
59 final List<DuplicateHost> list = duplicateHostService.getDuplicateHostList(pager);
60 return asJson(new ApiResult.ApiConfigsResponse<EditBody>()
61 .settings(list.stream().map(entity -> createEditBody(entity)).collect(Collectors.toList()))
62 .total(pager.getAllRecordCount()).status(ApiResult.Status.OK).result());
63 }
64
65
66 @Execute
67 public JsonResponse<ApiResult> get$setting(final String id) {
68 return asJson(new ApiConfigResponse()
69 .setting(duplicateHostService.getDuplicateHost(id).map(entity -> createEditBody(entity)).orElseGet(() -> {
70 throwValidationErrorApi(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id));
71 return null;
72 })).status(Status.OK).result());
73 }
74
75
76 @Execute
77 public JsonResponse<ApiResult> put$setting(final CreateBody body) {
78 validateApi(body, messages -> {});
79 body.crudMode = CrudMode.CREATE;
80 final DuplicateHost duplicateHost = getDuplicateHost(body).map(entity -> {
81 try {
82 duplicateHostService.store(entity);
83 } catch (final Exception e) {
84 throwValidationErrorApi(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL, buildThrowableMessage(e)));
85 }
86 return entity;
87 }).orElseGet(() -> {
88 throwValidationErrorApi(messages -> messages.addErrorsCrudFailedToCreateInstance(GLOBAL));
89 return null;
90 });
91
92 return asJson(new ApiUpdateResponse().id(duplicateHost.getId()).created(true).status(Status.OK).result());
93 }
94
95
96 @Execute
97 public JsonResponse<ApiResult> post$setting(final EditBody body) {
98 validateApi(body, messages -> {});
99 body.crudMode = CrudMode.EDIT;
100 final DuplicateHost duplicateHost = getDuplicateHost(body).map(entity -> {
101 try {
102 duplicateHostService.store(entity);
103 } catch (final Exception e) {
104 throwValidationErrorApi(messages -> messages.addErrorsCrudFailedToUpdateCrudTable(GLOBAL, buildThrowableMessage(e)));
105 }
106 return entity;
107 }).orElseGet(() -> {
108 throwValidationErrorApi(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, body.id));
109 return null;
110 });
111 return asJson(new ApiUpdateResponse().id(duplicateHost.getId()).created(false).status(Status.OK).result());
112 }
113
114
115 @Execute
116 public JsonResponse<ApiResult> delete$setting(final String id) {
117 duplicateHostService.getDuplicateHost(id).ifPresent(entity -> {
118 try {
119 duplicateHostService.delete(entity);
120 saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL));
121 } catch (final Exception e) {
122 throwValidationErrorApi(messages -> messages.addErrorsCrudFailedToDeleteCrudTable(GLOBAL, buildThrowableMessage(e)));
123 }
124 }).orElse(() -> {
125 throwValidationErrorApi(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id));
126 });
127 return asJson(new ApiResponse().status(Status.OK).result());
128 }
129
130 protected EditBody createEditBody(final DuplicateHost entity) {
131 final EditBody body = new EditBody();
132 copyBeanToBean(entity, body, copyOp -> {
133 copyOp.excludeNull();
134 });
135 return body;
136 }
137 }