1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.app.web.api.admin.role;
17
18 import static org.codelibs.fess.app.web.admin.role.AdminRoleAction.getRole;
19
20 import java.util.List;
21 import java.util.stream.Collectors;
22
23 import org.apache.logging.log4j.LogManager;
24 import org.apache.logging.log4j.Logger;
25 import org.codelibs.fess.app.pager.RolePager;
26 import org.codelibs.fess.app.service.RoleService;
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.admin.FessApiAdminAction;
30 import org.codelibs.fess.opensearch.user.exentity.Role;
31 import org.lastaflute.web.Execute;
32 import org.lastaflute.web.response.JsonResponse;
33
34 import jakarta.annotation.Resource;
35
36
37
38
39 public class ApiAdminRoleAction extends FessApiAdminAction {
40
41
42 private static final Logger logger = LogManager.getLogger(ApiAdminRoleAction.class);
43
44
45
46
47
48
49
50 public ApiAdminRoleAction() {
51 super();
52 }
53
54
55
56
57
58
59 @Resource
60 private RoleService roleService;
61
62
63
64
65
66
67
68
69
70 @Execute
71 public JsonResponse<ApiResult> settings(final SearchBody body) {
72 validateApi(body, messages -> {});
73 final RolePager pager = copyBeanToNewBean(body, RolePager.class);
74 final List<Role> list = roleService.getRoleList(pager);
75 return asJson(
76 new ApiResult.ApiConfigsResponse<EditBody>().settings(list.stream().map(this::createEditBody).collect(Collectors.toList()))
77 .total(pager.getAllRecordCount())
78 .status(ApiResult.Status.OK)
79 .result());
80 }
81
82
83
84
85
86
87
88
89 @Execute
90 public JsonResponse<ApiResult> get$setting(final String id) {
91 return asJson(new ApiResult.ApiConfigResponse().setting(roleService.getRole(id).map(this::createEditBody).orElseGet(() -> {
92 throwValidationErrorApi(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id));
93 return null;
94 })).status(ApiResult.Status.OK).result());
95 }
96
97
98
99
100
101
102
103
104 @Execute
105 public JsonResponse<ApiResult> post$setting(final CreateBody body) {
106 validateApi(body, messages -> {});
107 body.crudMode = CrudMode.CREATE;
108 final Role entity = getRole(body).orElseGet(() -> {
109 throwValidationErrorApi(messages -> {
110 messages.addErrorsCrudFailedToCreateInstance(GLOBAL);
111 });
112 return null;
113 });
114 try {
115 roleService.store(entity);
116 } catch (final Exception e) {
117 logger.warn("Failed to process a request.", e);
118 throwValidationErrorApi(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL, buildThrowableMessage(e)));
119 }
120 return asJson(new ApiResult.ApiUpdateResponse().id(entity.getId()).created(true).status(ApiResult.Status.OK).result());
121 }
122
123
124
125
126
127
128
129
130 @Execute
131 public JsonResponse<ApiResult> put$setting(final EditBody body) {
132 validateApi(body, messages -> {});
133 body.crudMode = CrudMode.EDIT;
134 final Role entity = getRole(body).orElseGet(() -> {
135 throwValidationErrorApi(messages -> {
136 messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, body.id);
137 });
138 return null;
139 });
140 try {
141 roleService.store(entity);
142 } catch (final Exception e) {
143 logger.warn("Failed to process a request.", e);
144 throwValidationErrorApi(messages -> messages.addErrorsCrudFailedToUpdateCrudTable(GLOBAL, buildThrowableMessage(e)));
145 }
146 return asJson(new ApiResult.ApiUpdateResponse().id(entity.getId()).created(false).status(ApiResult.Status.OK).result());
147 }
148
149
150
151
152
153
154
155
156 @Execute
157 public JsonResponse<ApiResult> delete$setting(final String id) {
158 final Role entity = roleService.getRole(id).orElseGet(() -> {
159 throwValidationErrorApi(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id));
160 return null;
161 });
162 try {
163 roleService.delete(entity);
164 } catch (final Exception e) {
165 logger.warn("Failed to process a request.", e);
166 throwValidationErrorApi(messages -> messages.addErrorsCrudFailedToDeleteCrudTable(GLOBAL, buildThrowableMessage(e)));
167 }
168 return asJson(new ApiResult.ApiUpdateResponse().id(id).created(false).status(ApiResult.Status.OK).result());
169 }
170
171
172
173
174
175
176
177 protected EditBody createEditBody(final Role entity) {
178 final EditBody body = new EditBody();
179 copyBeanToBean(entity, body, copyOp -> {
180 copyOp.excludeNull();
181 });
182 return body;
183 }
184 }