1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.app.service;
17
18 import java.util.List;
19
20 import org.codelibs.core.beans.util.BeanUtil;
21 import org.codelibs.core.lang.StringUtil;
22 import org.codelibs.fess.Constants;
23 import org.codelibs.fess.app.pager.WebConfigPager;
24 import org.codelibs.fess.mylasta.direction.FessConfig;
25 import org.codelibs.fess.opensearch.config.cbean.WebConfigCB;
26 import org.codelibs.fess.opensearch.config.exbhv.RequestHeaderBhv;
27 import org.codelibs.fess.opensearch.config.exbhv.WebAuthenticationBhv;
28 import org.codelibs.fess.opensearch.config.exbhv.WebConfigBhv;
29 import org.codelibs.fess.opensearch.config.exentity.WebConfig;
30 import org.codelibs.fess.util.ParameterUtil;
31 import org.dbflute.cbean.result.ListResultBean;
32 import org.dbflute.cbean.result.PagingResultBean;
33 import org.dbflute.optional.OptionalEntity;
34
35 import jakarta.annotation.Resource;
36
37
38
39
40
41
42 public class WebConfigService extends FessAppService {
43
44
45
46
47 public WebConfigService() {
48 super();
49 }
50
51
52
53
54 @Resource
55 protected WebConfigBhv webConfigBhv;
56
57
58
59
60 @Resource
61 protected WebAuthenticationBhv webAuthenticationBhv;
62
63
64
65
66 @Resource
67 protected RequestHeaderBhv requestHeaderBhv;
68
69
70
71
72 @Resource
73 protected FessConfig fessConfig;
74
75
76
77
78
79
80
81 public List<WebConfig> getWebConfigList(final WebConfigPager webConfigPager) {
82
83 final PagingResultBean<WebConfig> webConfigList = webConfigBhv.selectPage(cb -> {
84 cb.paging(webConfigPager.getPageSize(), webConfigPager.getCurrentPageNumber());
85 setupListCondition(cb, webConfigPager);
86 });
87
88
89 BeanUtil.copyBeanToBean(webConfigList, webConfigPager, option -> option.include(Constants.PAGER_CONVERSION_RULE));
90 webConfigPager.setPageNumberList(webConfigList.pageRange(op -> {
91 op.rangeSize(fessConfig.getPagingPageRangeSizeAsInteger());
92 }).createPageNumberList());
93
94 return webConfigList;
95 }
96
97
98
99
100
101
102
103 public void delete(final WebConfig webConfig) {
104
105 final String webConfigId = webConfig.getId();
106
107 webConfigBhv.delete(webConfig, op -> {
108 op.setRefreshPolicy(Constants.TRUE);
109 });
110
111 webAuthenticationBhv.queryDelete(cb -> {
112 cb.query().setWebConfigId_Equal(webConfigId);
113 });
114
115 requestHeaderBhv.queryDelete(cb -> {
116 cb.query().setWebConfigId_Equal(webConfigId);
117 });
118 }
119
120
121
122
123
124
125
126 public OptionalEntity<WebConfig> getWebConfig(final String id) {
127 return webConfigBhv.selectByPK(id);
128 }
129
130
131
132
133
134
135
136
137 public OptionalEntity<WebConfig> getWebConfigByName(final String name) {
138 final ListResultBean<WebConfig> list = webConfigBhv.selectList(cb -> {
139 cb.query().setName_Equal(name);
140 cb.query().addOrderBy_SortOrder_Asc();
141 });
142 if (list.isEmpty()) {
143 return OptionalEntity.empty();
144 }
145 return OptionalEntity.of(list.get(0));
146 }
147
148
149
150
151
152
153
154 public void store(final WebConfig webConfig) {
155 webConfig.setConfigParameter(ParameterUtil.encrypt(webConfig.getConfigParameter()));
156 webConfigBhv.insertOrUpdate(webConfig, op -> {
157 op.setRefreshPolicy(Constants.TRUE);
158 });
159 }
160
161
162
163
164
165
166
167
168 protected void setupListCondition(final WebConfigCB cb, final WebConfigPager webConfigPager) {
169 if (StringUtil.isNotBlank(webConfigPager.name)) {
170 cb.query().setName_Wildcard(wrapQuery(webConfigPager.name));
171 }
172 if (StringUtil.isNotBlank(webConfigPager.urls)) {
173 cb.query().setUrls_Wildcard(wrapQuery(webConfigPager.urls));
174 }
175 if (StringUtil.isNotBlank(webConfigPager.description)) {
176 if (webConfigPager.description.startsWith("*")) {
177 cb.query().setDescription_Wildcard(webConfigPager.description);
178 } else if (webConfigPager.description.endsWith("*")) {
179 cb.query().setDescription_Prefix(webConfigPager.description.replaceAll("\\*$", StringUtil.EMPTY));
180 } else {
181 cb.query().setDescription_MatchPhrase(webConfigPager.description);
182 }
183 }
184
185
186
187 cb.query().addOrderBy_SortOrder_Asc();
188 cb.query().addOrderBy_Name_Asc();
189
190
191
192 }
193
194 }