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