1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.app.web.base;
17
18 import java.util.Map;
19 import java.util.function.Consumer;
20
21 import javax.annotation.Resource;
22
23 import org.apache.logging.log4j.LogManager;
24 import org.apache.logging.log4j.Logger;
25 import org.codelibs.core.beans.util.BeanUtil;
26 import org.codelibs.core.beans.util.CopyOptions;
27 import org.codelibs.fess.Constants;
28 import org.codelibs.fess.app.web.base.login.FessLoginAssist;
29 import org.codelibs.fess.helper.AccessTokenHelper;
30 import org.codelibs.fess.helper.ActivityHelper;
31 import org.codelibs.fess.helper.SystemHelper;
32 import org.codelibs.fess.helper.ViewHelper;
33 import org.codelibs.fess.mylasta.action.FessHtmlPath;
34 import org.codelibs.fess.mylasta.action.FessMessages;
35 import org.codelibs.fess.mylasta.action.FessUserBean;
36 import org.codelibs.fess.mylasta.direction.FessConfig;
37 import org.dbflute.hook.AccessContext;
38 import org.dbflute.optional.OptionalThing;
39 import org.lastaflute.core.message.MessageManager;
40 import org.lastaflute.core.time.TimeManager;
41 import org.lastaflute.db.dbflute.accesscontext.AccessContextArranger;
42 import org.lastaflute.web.TypicalAction;
43 import org.lastaflute.web.response.ActionResponse;
44 import org.lastaflute.web.ruts.process.ActionRuntime;
45 import org.lastaflute.web.servlet.request.RequestManager;
46 import org.lastaflute.web.servlet.request.ResponseManager;
47 import org.lastaflute.web.servlet.session.SessionManager;
48 import org.lastaflute.web.validation.ActionValidator;
49 import org.lastaflute.web.validation.LaValidatable;
50 import org.lastaflute.web.validation.VaMessenger;
51
52
53
54
55 public abstract class FessBaseAction extends TypicalAction
56 implements LaValidatable<FessMessages>, FessHtmlPath {
57
58
59
60
61 private static final Logger logger = LogManager.getLogger(FessBaseAction.class);
62
63
64 protected static final String APP_TYPE = "FES";
65
66
67 protected static final String USER_TYPE = "A";
68
69
70
71
72 @Resource
73 protected FessLoginAssist fessLoginAssist;
74
75 @Resource
76 protected SessionManager sessionManager;
77
78 @Resource
79 protected FessConfig fessConfig;
80
81 @Resource
82 protected ActivityHelper activityHelper;
83
84 @Resource
85 protected ResponseManager responseManager;
86
87 @Resource
88 protected TimeManager timeManager;
89
90 @Resource
91 protected SystemHelper systemHelper;
92
93 @Resource
94 protected AccessTokenHelper accessTokenHelper;
95
96 @Resource
97 protected ViewHelper viewHelper;
98
99 @Resource
100 private MessageManager messageManager;
101
102 @Resource
103 private RequestManager requestManager;
104
105
106
107
108
109
110 @Override
111 public ActionResponse godHandPrologue(final ActionRuntime runtime) {
112 fessLoginAssist.getSavedUserBean().ifPresent(u -> {
113 final boolean result = u.getFessUser().refresh();
114 if (logger.isDebugEnabled()) {
115 logger.debug("refresh user info: {}", result);
116 }
117 });
118 return viewHelper.getActionHook().godHandPrologue(runtime, super::godHandPrologue);
119 }
120
121 @Override
122 public final ActionResponse godHandMonologue(final ActionRuntime runtime) {
123 return viewHelper.getActionHook().godHandMonologue(runtime, super::godHandMonologue);
124 }
125
126 @Override
127 public final void godHandEpilogue(final ActionRuntime runtime) {
128 viewHelper.getActionHook().godHandEpilogue(runtime, super::godHandEpilogue);
129 }
130
131
132 @Override
133 public ActionResponse hookBefore(final ActionRuntime runtime) {
134 return viewHelper.getActionHook().hookBefore(runtime, super::hookBefore);
135 }
136
137 @Override
138 public void hookFinally(final ActionRuntime runtime) {
139 viewHelper.getActionHook().hookFinally(runtime, super::hookFinally);
140 }
141
142
143
144
145 @Override
146 protected AccessContextArranger newAccessContextArranger() {
147
148 return resource -> {
149 final AccessContext context = new AccessContext();
150 context.setAccessLocalDateTimeProvider(() -> timeManager.currentDateTime());
151 context.setAccessUserProvider(() -> "unused");
152 return context;
153 };
154 }
155
156
157
158
159 @Override
160 protected OptionalThing<FessUserBean> getUserBean() {
161 return fessLoginAssist.getSavedUserBean();
162 }
163
164 @Override
165 protected String myAppType() {
166 return APP_TYPE;
167 }
168
169 @Override
170 protected OptionalThing<String> myUserType() {
171 return OptionalThing.of(USER_TYPE);
172 }
173
174
175
176
177 @SuppressWarnings("unchecked")
178 @Override
179 public ActionValidator<FessMessages> createValidator() {
180 return systemHelper.createValidator(requestManager, this::createMessages, myValidationGroups());
181 }
182
183 @Override
184 public FessMessages createMessages() {
185 return new FessMessages();
186 }
187
188
189
190
191
192 protected void saveInfo(final VaMessenger<FessMessages> validationMessagesLambda) {
193 final FessMessages messages = createMessages();
194 validationMessagesLambda.message(messages);
195 sessionManager.info().saveMessages(messages);
196 }
197
198 protected void saveError(final VaMessenger<FessMessages> validationMessagesLambda) {
199 final FessMessages messages = createMessages();
200 validationMessagesLambda.message(messages);
201 sessionManager.errors().saveMessages(messages);
202 }
203
204 protected static void copyBeanToBean(final Object src, final Object dest, final Consumer<CopyOptions> option) {
205 BeanUtil.copyBeanToBean(src, dest, option);
206 }
207
208 protected static void copyMapToBean(final Map<String, ? extends Object> src, final Object dest, final Consumer<CopyOptions> option) {
209 BeanUtil.copyMapToBean(src, dest, option);
210 }
211
212 protected static <T> T copyBeanToNewBean(final Object src, final Class<T> destClass) {
213 return BeanUtil.copyBeanToNewBean(src, destClass);
214 }
215
216 protected String buildThrowableMessage(final Throwable t) {
217 final StringBuilder buf = new StringBuilder(100);
218 Throwable current = t;
219 while (current != null) {
220 buf.append(current.getLocalizedMessage()).append(' ');
221 current = current.getCause();
222 }
223 return buf.toString();
224 }
225
226 public static boolean isCheckboxEnabled(final String value) {
227 if (value == null) {
228 return false;
229 }
230 return Constants.ON.equalsIgnoreCase(value) || Constants.TRUE.equalsIgnoreCase(value);
231 }
232 }