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