1
2
3
4
5 package edu.internet2.middleware.grouper.grouperUi.beans.api;
6
7 import java.util.ArrayList;
8 import java.util.List;
9
10 import edu.internet2.middleware.grouper.ui.GrouperUiFilter;
11 import org.apache.commons.lang.StringUtils;
12
13 import edu.internet2.middleware.grouper.Group;
14 import edu.internet2.middleware.grouper.GroupFinder;
15 import edu.internet2.middleware.grouper.GrouperSession;
16 import edu.internet2.middleware.grouper.app.loader.GrouperLoaderStatus;
17 import edu.internet2.middleware.grouper.app.loader.db.Hib3GrouperLoaderLog;
18 import edu.internet2.middleware.grouper.grouperUi.beans.ui.GrouperLoaderContainer;
19 import edu.internet2.middleware.grouper.ui.util.GrouperUiConfig;
20 import edu.internet2.middleware.grouper.util.GrouperUtil;
21 import java.util.Locale;
22
23
24
25
26 public class GuiHib3GrouperLoaderLog {
27
28
29
30
31
32
33 public static List<GuiHib3GrouperLoaderLog> convertFromHib3GrouperLoaderLogs(List<Hib3GrouperLoaderLog> hib3GrouperLoaderLogs) {
34 return convertFromHib3GrouperLoaderLogs(hib3GrouperLoaderLogs, null, -1);
35 }
36
37
38
39
40 private GuiGroup loadedGuiGroup;
41
42
43
44
45
46 public GuiGroup getLoadedGuiGroup() {
47
48 if (this.loadedGuiGroup == null) {
49
50 String jobName = null;
51
52
53 if (!StringUtils.isBlank(this.hib3GrouperLoaderLog.getParentJobId())) {
54
55 jobName = this.hib3GrouperLoaderLog.getJobName();
56
57 } else {
58
59
60
61
62
63
64
65
66
67
68
69
70
71 if (this.hib3GrouperLoaderLog.getJobName() != null &&
72 this.hib3GrouperLoaderLog.getJobName().startsWith("SQL_SIMPLE__") || this.hib3GrouperLoaderLog.getJobName().startsWith("LDAP_SIMPLE__")) {
73 jobName = this.hib3GrouperLoaderLog.getJobName();
74 }
75
76 }
77
78 if (jobName == null) {
79 return null;
80 }
81
82 String groupName = GrouperLoaderContainer.retrieveGroupNameFromJobName(jobName);
83
84
85 if (StringUtils.isBlank(groupName)) {
86
87 return null;
88
89 }
90
91 Group group = GroupFinder.findByName(GrouperSession.staticGrouperSession(), groupName, false);
92
93 if (group == null) {
94 return null;
95 }
96 this.loadedGuiGroup = new GuiGroup(group);
97 }
98
99 return this.loadedGuiGroup;
100 }
101
102
103
104
105 public boolean isLoadedGroupJob() {
106 String jobName = this.hib3GrouperLoaderLog.getJobName();
107
108 if (jobName == null) {
109 return false;
110 }
111
112 if (jobName.startsWith("SQL_SIMPLE__") || jobName.startsWith("LDAP_SIMPLE__") ||
113 jobName.startsWith("SQL_GROUP_LIST__") || jobName.startsWith("LDAP_GROUP_LIST") ||
114 jobName.startsWith("LDAP_GROUPS_FROM_ATTRIBUTES")) {
115 return true;
116 }
117
118 return false;
119 }
120
121
122
123
124
125 public String getStatusBackgroundColor() {
126
127 GrouperLoaderStatus grouperLoaderStatus = GrouperLoaderStatus.ERROR;
128
129 if (!StringUtils.isBlank(this.hib3GrouperLoaderLog.getStatus())) {
130
131 grouperLoaderStatus = GrouperLoaderStatus.valueOfIgnoreCase(this.hib3GrouperLoaderLog.getStatus(), false);
132
133 }
134
135 if (grouperLoaderStatus == null) {
136
137 grouperLoaderStatus = GrouperLoaderStatus.ERROR;
138
139 }
140
141 switch(grouperLoaderStatus) {
142 case ERROR:
143 case CONFIG_ERROR:
144 return "red";
145 case SUBJECT_PROBLEMS:
146 case WARNING:
147 return "orange";
148 case RUNNING:
149 case STARTED:
150 return "yellow";
151 case SUCCESS:
152 return "green";
153 }
154 return "red";
155 }
156
157
158
159
160
161 public String getStatusTextColor() {
162
163 GrouperLoaderStatus grouperLoaderStatus = GrouperLoaderStatus.ERROR;
164
165 if (!StringUtils.isBlank(this.hib3GrouperLoaderLog.getStatus())) {
166
167 grouperLoaderStatus = GrouperLoaderStatus.valueOfIgnoreCase(this.hib3GrouperLoaderLog.getStatus(), false);
168
169 }
170
171 if (grouperLoaderStatus == null) {
172
173 grouperLoaderStatus = GrouperLoaderStatus.ERROR;
174
175 }
176
177 switch(grouperLoaderStatus) {
178 case ERROR:
179 case CONFIG_ERROR:
180 return "white";
181 case SUBJECT_PROBLEMS:
182 case WARNING:
183 return "black";
184 case RUNNING:
185 case STARTED:
186 return "black";
187 case SUCCESS:
188 return "white";
189 }
190 return "white";
191 }
192
193
194
195
196
197
198
199
200 public static List<GuiHib3GrouperLoaderLog> convertFromHib3GrouperLoaderLogs(List<Hib3GrouperLoaderLog> hib3GrouperLoaderLogs, String configMax, int defaultMax) {
201 List<GuiHib3GrouperLoaderLog> tempHib3LoaderLogs = new ArrayList<GuiHib3GrouperLoaderLog>();
202
203 Integer max = null;
204
205 if (!StringUtils.isBlank(configMax)) {
206 max = GrouperUiConfig.retrieveConfig().propertyValueInt(configMax, defaultMax);
207 }
208
209 int count = 0;
210 for (Hib3GrouperLoaderLog hib3GrouperLoaderLog : GrouperUtil.nonNull(hib3GrouperLoaderLogs)) {
211 tempHib3LoaderLogs.add(new GuiHib3GrouperLoaderLog(hib3GrouperLoaderLog));
212 if (max != null && ++count >= max) {
213 break;
214 }
215 }
216
217 return tempHib3LoaderLogs;
218
219 }
220
221
222
223
224 public GuiHib3GrouperLoaderLog(Hib3GrouperLoaderLog hib3GrouperLoaderLog1) {
225 super();
226 this.hib3GrouperLoaderLog = hib3GrouperLoaderLog1;
227 }
228
229
230
231
232
233 public Hib3GrouperLoaderLog getHib3GrouperLoaderLog() {
234 return this.hib3GrouperLoaderLog;
235 }
236
237
238
239
240 private Hib3GrouperLoaderLog hib3GrouperLoaderLog;
241
242
243
244
245 public GuiHib3GrouperLoaderLog() {
246 }
247
248 private String convertMillisToTime(Integer millis) {
249 String unit = GrouperUiConfig.retrieveConfig().propertyValueString("uiV2.admin.daemonJob.elapsedTimeUnit", "milliseconds");
250
251 if (millis == null) {
252 return null;
253 }
254
255 if (millis == 0) {
256 return "0";
257 }
258
259 Locale locale = GrouperUiFilter.retrieveLocale();
260 String result;
261
262 switch (unit) {
263 case "seconds":
264 result = String.format(locale, "%.2f", millis / 1000f);
265 break;
266 case "minutes":
267 result = String.format(locale, "%.2f", millis/60000f);
268 break;
269 case "h:m:s":
270 long millis2 = millis;
271 long hours2 = millis2 / (1000 * 60 * 60);
272 millis2 %= (1000 * 60 * 60);
273 long minutes2 = millis2 / (1000 * 60);
274 millis2 %= (1000 * 60);
275 long seconds2 = millis2 / 1000;
276 long ms2 = millis2 % 1000;
277
278 result = String.format("%d:%02d:%02d.%03d", hours2, minutes2, seconds2, ms2);
279 break;
280 case "hms":
281 long millis3 = millis;
282 long hours3 = millis3 / (1000 * 60 * 60);
283 millis3 %= (1000 * 60 * 60);
284 long minutes3 = millis3 / (1000 * 60);
285 millis3 %= (1000 * 60);
286 float seconds3 = millis3 / 1000f;
287
288 StringBuffer buffer = new StringBuffer();
289 if (hours3 > 0) {
290 buffer.append(hours3 + "h");
291 }
292 if (hours3 > 0 || minutes3 > 0) {
293 buffer.append(minutes3 + "m");
294 }
295 if (hours3 > 0 || minutes3 > 0 || seconds3 > 0) {
296 buffer.append(String.format(locale, "%.2f", seconds3) + "s");
297 } else {
298 buffer.append(millis3 + "ms");
299 }
300
301 result = buffer.toString();
302 break;
303 case "milliseconds":
304 default:
305 result = millis.toString();
306 }
307
308 return result;
309 }
310
311 public String getTotalElapsedFormatted() {
312 return convertMillisToTime(hib3GrouperLoaderLog.getMillis());
313 }
314
315 public String getGetDataElapsedFormatted() {
316 return convertMillisToTime(hib3GrouperLoaderLog.getMillisGetData());
317 }
318
319 public String getLoadDataElapsedFormatted() {
320 return convertMillisToTime(hib3GrouperLoaderLog.getMillisLoadData());
321 }
322 }