1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kew.api.preferences;
17
18 import java.io.Serializable;
19 import java.util.Collection;
20 import java.util.Collections;
21 import java.util.HashMap;
22 import java.util.Map;
23
24 import javax.xml.bind.annotation.XmlAccessType;
25 import javax.xml.bind.annotation.XmlAccessorType;
26 import javax.xml.bind.annotation.XmlAnyElement;
27 import javax.xml.bind.annotation.XmlElement;
28 import javax.xml.bind.annotation.XmlRootElement;
29 import javax.xml.bind.annotation.XmlType;
30 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
31
32 import org.apache.commons.lang.StringUtils;
33 import org.kuali.rice.core.api.CoreConstants;
34 import org.kuali.rice.core.api.mo.AbstractDataTransferObject;
35 import org.kuali.rice.core.api.mo.ModelBuilder;
36 import org.kuali.rice.core.api.util.jaxb.MapStringStringAdapter;
37 import org.kuali.rice.core.api.util.jaxb.MultiValuedStringMapAdapter;
38 import org.kuali.rice.kew.api.KewApiConstants;
39 import org.w3c.dom.Element;
40
41
42
43
44
45
46
47
48
49
50
51 @XmlRootElement(name = Preferences.Constants.ROOT_ELEMENT_NAME)
52 @XmlAccessorType(XmlAccessType.NONE)
53 @XmlType(name = Preferences.Constants.TYPE_NAME, propOrder = {
54 Preferences.Elements.REQUIRES_SAVE,
55 Preferences.Elements.EMAIL_NOTIFICATION,
56 Preferences.Elements.NOTIFY_PRIMARY_DELEGATION,
57 Preferences.Elements.NOTIFY_SECONDARY_DELEGATION,
58 Preferences.Elements.OPEN_NEW_WINDOW,
59 Preferences.Elements.SHOW_ACTION_REQUESTED,
60 Preferences.Elements.SHOW_DATE_CREATED,
61 Preferences.Elements.SHOW_DOCUMENT_STATUS,
62 Preferences.Elements.SHOW_APP_DOC_STATUS,
63 Preferences.Elements.SHOW_DOC_TYPE,
64 Preferences.Elements.SHOW_INITIATOR,
65 Preferences.Elements.SHOW_DOC_TITLE,
66 Preferences.Elements.SHOW_WORKGROUP_REQUEST,
67 Preferences.Elements.SHOW_DELEGATOR,
68 Preferences.Elements.SHOW_CLEAR_FYI,
69 Preferences.Elements.PAGE_SIZE,
70 Preferences.Elements.REFRESH_RATE,
71 Preferences.Elements.COLOR_SAVED,
72 Preferences.Elements.COLOR_INITIATED,
73 Preferences.Elements.COLOR_DISAPPROVED,
74 Preferences.Elements.COLOR_ENROUTE,
75 Preferences.Elements.COLOR_APPROVED,
76 Preferences.Elements.COLOR_FINAL,
77 Preferences.Elements.COLOR_DISAPPROVE_CANCEL,
78 Preferences.Elements.COLOR_PROCESSED,
79 Preferences.Elements.COLOR_EXCEPTION,
80 Preferences.Elements.COLOR_CANCELED,
81 Preferences.Elements.DELEGATOR_FILTER,
82 Preferences.Elements.USE_OUTBOX,
83 Preferences.Elements.SHOW_DATE_APPROVED,
84 Preferences.Elements.SHOW_CURRENT_NODE,
85 Preferences.Elements.PRIMARY_DELEGATE_FILTER,
86 Preferences.Elements.NOTIFY_ACKNOWLEDGE,
87 Preferences.Elements.NOTIFY_APPROVE,
88 Preferences.Elements.NOTIFY_COMPLETE,
89 Preferences.Elements.NOTIFY_FYI,
90 Preferences.Elements.DOCUMENT_TYPE_NOTIFICATION_PREFERENCES,
91 Preferences.Elements.DOCUMENT_TYPE_NOTIFICATION_PREFERENCE_MAP,
92 CoreConstants.CommonElements.FUTURE_ELEMENTS
93 })
94 public final class Preferences extends AbstractDataTransferObject implements PreferencesContract {
95
96 private static final long serialVersionUID = 642820621349964439L;
97
98 @XmlElement(name = Elements.REQUIRES_SAVE)
99 private final boolean requiresSave;
100 @XmlElement(name = Elements.EMAIL_NOTIFICATION)
101 private final String emailNotification;
102 @XmlElement(name = Elements.NOTIFY_PRIMARY_DELEGATION)
103 private final String notifyPrimaryDelegation;
104 @XmlElement(name = Elements.NOTIFY_SECONDARY_DELEGATION)
105 private final String notifySecondaryDelegation;
106 @XmlElement(name = Elements.OPEN_NEW_WINDOW)
107 private final String openNewWindow;
108 @XmlElement(name = Elements.SHOW_ACTION_REQUESTED)
109 private final String showActionRequested;
110 @XmlElement(name = Elements.SHOW_DATE_CREATED)
111 private final String showDateCreated;
112 @XmlElement(name = Elements.SHOW_DOCUMENT_STATUS)
113 private final String showDocumentStatus;
114 @XmlElement(name = Elements.SHOW_APP_DOC_STATUS)
115 private final String showAppDocStatus;
116 @XmlElement(name = Elements.SHOW_DOC_TYPE)
117 private final String showDocType;
118 @XmlElement(name = Elements.SHOW_INITIATOR)
119 private final String showInitiator;
120 @XmlElement(name = Elements.SHOW_DOC_TITLE)
121 private final String showDocTitle;
122 @XmlElement(name = Elements.SHOW_WORKGROUP_REQUEST)
123 private final String showWorkgroupRequest;
124 @XmlElement(name = Elements.SHOW_DELEGATOR)
125 private final String showDelegator;
126 @XmlElement(name = Elements.SHOW_CLEAR_FYI)
127 private final String showClearFyi;
128 @XmlElement(name = Elements.PAGE_SIZE)
129 private final String pageSize;
130 @XmlElement(name = Elements.REFRESH_RATE)
131 private final String refreshRate;
132 @XmlElement(name = Elements.COLOR_SAVED)
133 private final String colorSaved;
134 @XmlElement(name = Elements.COLOR_INITIATED)
135 private final String colorInitiated;
136 @XmlElement(name = Elements.COLOR_DISAPPROVED)
137 private final String colorDisapproved;
138 @XmlElement(name = Elements.COLOR_ENROUTE)
139 private final String colorEnroute;
140 @XmlElement(name = Elements.COLOR_APPROVED)
141 private final String colorApproved;
142 @XmlElement(name = Elements.COLOR_FINAL)
143 private final String colorFinal;
144 @XmlElement(name = Elements.COLOR_DISAPPROVE_CANCEL)
145 private final String colorDisapproveCancel;
146 @XmlElement(name = Elements.COLOR_PROCESSED)
147 private final String colorProcessed;
148 @XmlElement(name = Elements.COLOR_EXCEPTION)
149 private final String colorException;
150 @XmlElement(name = Elements.COLOR_CANCELED)
151 private final String colorCanceled;
152 @XmlElement(name = Elements.DELEGATOR_FILTER)
153 private final String delegatorFilter;
154 @XmlElement(name = Elements.USE_OUTBOX)
155 private final String useOutbox;
156 @XmlElement(name = Elements.SHOW_DATE_APPROVED)
157 private final String showDateApproved;
158 @XmlElement(name = Elements.SHOW_CURRENT_NODE)
159 private final String showCurrentNode;
160 @XmlElement(name = Elements.PRIMARY_DELEGATE_FILTER)
161 private final String primaryDelegateFilter;
162 @XmlElement(name = Elements.NOTIFY_ACKNOWLEDGE)
163 private final String notifyAcknowledge;
164 @XmlElement(name = Elements.NOTIFY_APPROVE)
165 private final String notifyApprove;
166
167
168 @XmlElement(name = Elements.NOTIFY_COMPLETE)
169 private final String notifyCompelte;
170 @XmlElement(name = Elements.NOTIFY_FYI)
171 private final String notifyFYI;
172
173
174
175
176 @XmlElement(name = Elements.DOCUMENT_TYPE_NOTIFICATION_PREFERENCES)
177 @XmlJavaTypeAdapter(MultiValuedStringMapAdapter.class)
178 @Deprecated
179 private Map<String, String> documentTypeNotificationPreferences;
180
181 @XmlElement(name = Elements.DOCUMENT_TYPE_NOTIFICATION_PREFERENCE_MAP)
182 @XmlJavaTypeAdapter(MapStringStringAdapter.class)
183 private Map<String, String> documentTypeNotificationPreferenceMap;
184
185 @SuppressWarnings("unused")
186 @XmlAnyElement
187 private final Collection<Element> _futureElements = null;
188
189 private Preferences() {
190 this.emailNotification = null;
191 this.notifyPrimaryDelegation = null;
192 this.notifySecondaryDelegation = null;
193 this.openNewWindow = null;
194 this.showActionRequested = null;
195 this.showDateCreated = null;
196 this.showDocumentStatus = null;
197 this.showAppDocStatus = null;
198 this.showDocType = null;
199 this.showInitiator = null;
200 this.showDocTitle = null;
201 this.showWorkgroupRequest = null;
202 this.showDelegator = null;
203 this.showClearFyi = null;
204 this.pageSize = null;
205 this.refreshRate = null;
206 this.colorSaved = null;
207 this.colorInitiated = null;
208 this.colorDisapproved = null;
209 this.colorEnroute = null;
210 this.colorApproved = null;
211 this.colorFinal = null;
212 this.colorDisapproveCancel = null;
213 this.colorProcessed = null;
214 this.colorException = null;
215 this.colorCanceled = null;
216 this.delegatorFilter = null;
217 this.useOutbox = null;
218 this.showDateApproved = null;
219 this.showCurrentNode = null;
220 this.primaryDelegateFilter = null;
221 this.notifyAcknowledge = null;
222 this.notifyApprove = null;
223 this.notifyCompelte = null;
224 this.notifyFYI = null;
225 this.documentTypeNotificationPreferences = null;
226 this.documentTypeNotificationPreferenceMap = Collections.emptyMap();
227
228 this.requiresSave = false;
229 }
230
231 public Preferences(Builder builder) {
232 this.emailNotification = builder.getEmailNotification();
233 this.notifyPrimaryDelegation = builder.getNotifyPrimaryDelegation();
234 this.notifySecondaryDelegation = builder.getNotifySecondaryDelegation();
235 this.openNewWindow = builder.getOpenNewWindow();
236 this.showActionRequested = builder.getShowActionRequested();
237 this.showDateCreated = builder.getShowDateCreated();
238 this.showDocumentStatus = builder.getShowDocumentStatus();
239 this.showAppDocStatus = builder.getShowAppDocStatus();
240 this.showDocType = builder.getShowDocType();
241 this.showInitiator = builder.getShowInitiator();
242 this.showDocTitle = builder.getShowDocTitle();
243 this.showWorkgroupRequest = builder.getShowWorkgroupRequest();
244 this.showDelegator = builder.getShowDelegator();
245 this.showClearFyi = builder.getShowClearFyi();
246 this.pageSize = builder.getPageSize();
247 this.refreshRate = builder.getRefreshRate();
248 this.colorSaved = builder.getColorSaved();
249 this.colorInitiated = builder.getColorInitiated();
250 this.colorDisapproved = builder.getColorDisapproved();
251 this.colorEnroute = builder.getColorEnroute();
252 this.colorApproved = builder.getColorApproved();
253 this.colorFinal = builder.getColorFinal();
254 this.colorDisapproveCancel = builder.getColorDisapproveCancel();
255 this.colorProcessed = builder.getColorProcessed();
256 this.colorException = builder.getColorException();
257 this.colorCanceled = builder.getColorCanceled();
258 this.delegatorFilter = builder.getDelegatorFilter();
259 this.useOutbox = builder.getUseOutbox();
260 this.showDateApproved = builder.getShowDateApproved();
261 this.showCurrentNode = builder.getShowCurrentNode();
262 this.primaryDelegateFilter = builder.getPrimaryDelegateFilter();
263 this.requiresSave = builder.isRequiresSave();
264 this.notifyAcknowledge = builder.getNotifyAcknowledge();
265 this.notifyApprove = builder.getNotifyApprove();
266 this.notifyCompelte = builder.getNotifyComplete();
267 this.notifyFYI = builder.getNotifyFYI();
268 this.documentTypeNotificationPreferences = null;
269 this.documentTypeNotificationPreferenceMap = builder.getDocumentTypeNotificationPreferences();
270 }
271
272 @Override
273 public boolean isRequiresSave() {
274 return requiresSave;
275 }
276
277 @Override
278 public String getEmailNotification() {
279 return emailNotification;
280 }
281
282 @Override
283 public String getNotifyPrimaryDelegation() {
284 return notifyPrimaryDelegation;
285 }
286
287 @Override
288 public String getNotifySecondaryDelegation() {
289 return notifySecondaryDelegation;
290 }
291
292 @Override
293 public String getOpenNewWindow() {
294 return openNewWindow;
295 }
296
297 @Override
298 public String getShowActionRequested() {
299 return showActionRequested;
300 }
301
302 @Override
303 public String getShowDateCreated() {
304 return showDateCreated;
305 }
306
307 @Override
308 public String getShowDocumentStatus() {
309 return showDocumentStatus;
310 }
311
312 @Override
313 public String getShowAppDocStatus() {
314 return showAppDocStatus;
315 }
316
317 @Override
318 public String getShowDocType() {
319 return showDocType;
320 }
321
322 @Override
323 public String getShowInitiator() {
324 return showInitiator;
325 }
326
327 @Override
328 public String getShowDocTitle() {
329 return showDocTitle;
330 }
331
332 @Override
333 public String getShowWorkgroupRequest() {
334 return showWorkgroupRequest;
335 }
336
337 @Override
338 public String getShowDelegator() {
339 return showDelegator;
340 }
341
342 @Override
343 public String getShowClearFyi() {
344 return showClearFyi;
345 }
346
347 @Override
348 public String getPageSize() {
349 return pageSize;
350 }
351
352 @Override
353 public String getRefreshRate() {
354 return refreshRate;
355 }
356
357 @Override
358 public String getColorSaved() {
359 return colorSaved;
360 }
361
362 @Override
363 public String getColorInitiated() {
364 return colorInitiated;
365 }
366
367 @Override
368 public String getColorDisapproved() {
369 return colorDisapproved;
370 }
371
372 @Override
373 public String getColorEnroute() {
374 return colorEnroute;
375 }
376
377 @Override
378 public String getColorApproved() {
379 return colorApproved;
380 }
381
382 @Override
383 public String getColorFinal() {
384 return colorFinal;
385 }
386
387 @Override
388 public String getColorDisapproveCancel() {
389 return colorDisapproveCancel;
390 }
391
392 @Override
393 public String getColorProcessed() {
394 return colorProcessed;
395 }
396
397 @Override
398 public String getColorException() {
399 return colorException;
400 }
401
402 @Override
403 public String getColorCanceled() {
404 return colorCanceled;
405 }
406
407 @Override
408 public String getDelegatorFilter() {
409 return delegatorFilter;
410 }
411
412 @Override
413 public String getUseOutbox() {
414 return useOutbox;
415 }
416
417 @Override
418 public String getShowDateApproved() {
419 return showDateApproved;
420 }
421
422 @Override
423 public String getShowCurrentNode() {
424 return showCurrentNode;
425 }
426
427 @Override
428 public String getPrimaryDelegateFilter() {
429 return primaryDelegateFilter;
430 }
431
432 @Override
433 public String getNotifyComplete() {
434 return this.notifyCompelte;
435 }
436
437 @Override
438 public String getNotifyApprove() {
439 return this.notifyApprove;
440 }
441
442 @Override
443 public String getNotifyAcknowledge() {
444 return this.notifyAcknowledge;
445 }
446
447 @Override
448 public String getNotifyFYI() {
449 return this.notifyFYI;
450 }
451
452 public String getDocumentTypeNotificationPreference(String documentType) {
453 String preferenceName = documentType.replace(KewApiConstants.DOCUMENT_TYPE_NOTIFICATION_DELIMITER, ".");
454 String preferenceValue = this.getDocumentTypeNotificationPreferences().get(preferenceName);
455 if(StringUtils.isNotBlank(preferenceValue)) {
456 return preferenceValue;
457 }
458 return null;
459 }
460
461 @Override
462 public Map<String, String> getDocumentTypeNotificationPreferences() {
463 return this.documentTypeNotificationPreferenceMap == null ? this.documentTypeNotificationPreferences : this.documentTypeNotificationPreferenceMap ;
464 }
465
466 public boolean isUsingOutbox() {
467 if (this.getUseOutbox() != null && this.getUseOutbox().equals(Constants.PREFERENCES_YES_VAL)) {
468 return true;
469 }
470 return false;
471 }
472
473 public final static class Builder
474 implements Serializable, ModelBuilder, PreferencesContract
475 {
476
477 private boolean requiresSave = false;
478
479 private String emailNotification;
480 private String notifyPrimaryDelegation;
481 private String notifySecondaryDelegation;
482 private String openNewWindow;
483 private String showActionRequested;
484 private String showDateCreated;
485 private String showDocumentStatus;
486 private String showAppDocStatus;
487 private String showDocType;
488 private String showInitiator;
489 private String showDocTitle;
490 private String showWorkgroupRequest;
491 private String showDelegator;
492 private String showClearFyi;
493 private String pageSize;
494 private String refreshRate;
495 private String colorSaved;
496 private String colorInitiated;
497 private String colorDisapproved;
498 private String colorEnroute;
499 private String colorApproved;
500 private String colorFinal;
501 private String colorDissapproveCancel;
502 private String colorProcessed;
503 private String colorException;
504 private String colorCanceled;
505 private String delegatorFilter;
506 private String useOutbox;
507 private String showDateApproved;
508 private String showCurrentNode;
509 private String primaryDelegateFilter;
510 private String notifyAcknowledge;
511 private String notifyApprove;
512 private String notifyComplete;
513 private String notifyFYI;
514 private Map<String, String> documentTypeNotificationPreferences;
515
516 private Builder() {
517 this.documentTypeNotificationPreferences = new HashMap<String, String>();
518 }
519
520 private Builder(String emailNotification, String notifyPrimaryDelegation, String notifySecondaryDelegation,
521 String openNewWindow, String showActionRequested, String showDateCreated, String showDocumentStatus,
522 String showAppDocStatus, String showDocType, String showInitiator, String showDocTitle,
523 String showWorkgroupRequest, String showDelegator, String showClearFyi, String pageSize, String refreshRate,
524 String colorSaved, String colorInitiated, String colorDisapproved, String colorEnroute,
525 String colorApproved, String colorFinal, String colorDissapproveCancel, String colorProcessed,
526 String colorException, String colorCanceled, String delegatorFilter, String useOutbox,
527 String showDateApproved, String showCurrentNode, String primaryDelegateFilter, String notifyAcknowledge,
528 String notifyApprove, String notifyComplete, String notifyFYI, Map<String, String> documentTypeNotificationPreferences,
529 boolean requiresSave) {
530 this.emailNotification = emailNotification;
531 this.notifyPrimaryDelegation = notifyPrimaryDelegation;
532 this.notifySecondaryDelegation = notifySecondaryDelegation;
533 this.openNewWindow = openNewWindow;
534 this.showActionRequested = showActionRequested;
535 this.showDateCreated = showDateCreated;
536 this.showDocumentStatus = showDocumentStatus;
537 this.showAppDocStatus = showAppDocStatus;
538 this.showDocType = showDocType;
539 this.showInitiator = showInitiator;
540 this.showDocTitle = showDocTitle;
541 this.showWorkgroupRequest = showWorkgroupRequest;
542 this.showDelegator = showDelegator;
543 this.showClearFyi = showClearFyi;
544 this.pageSize = pageSize;
545 this.refreshRate = refreshRate;
546 this.colorSaved = colorSaved;
547 this.colorInitiated = colorInitiated;
548 this.colorDisapproved = colorDisapproved;
549 this.colorEnroute = colorEnroute;
550 this.colorApproved = colorApproved;
551 this.colorFinal = colorFinal;
552 this.colorDissapproveCancel = colorDissapproveCancel;
553 this.colorProcessed = colorProcessed;
554 this.colorException = colorException;
555 this.colorCanceled = colorCanceled;
556 this.delegatorFilter = delegatorFilter;
557 this.useOutbox = useOutbox;
558 this.showDateApproved = showDateApproved;
559 this.showCurrentNode = showCurrentNode;
560 this.primaryDelegateFilter = primaryDelegateFilter;
561 this.requiresSave = requiresSave;
562 this.notifyAcknowledge = notifyAcknowledge;
563 this.notifyApprove = notifyApprove;
564 this.notifyComplete = notifyComplete;
565 this.notifyFYI = notifyFYI;
566 this.documentTypeNotificationPreferences = documentTypeNotificationPreferences;
567 }
568
569 public Preferences build() {
570 return new Preferences(this);
571 }
572
573 public static Builder create() {
574 return new Builder();
575 }
576
577 public static Builder create(String emailNotification, String notifyPrimaryDelegation, String notifySecondaryDelegation,
578 String openNewWindow, String showActionRequested, String showDateCreated, String showDocumentStatus,
579 String showAppDocStatus, String showDocType, String showInitiator, String showDocTitle,
580 String showWorkgroupRequest, String showDelegator, String showClearFyi, String pageSize, String refreshRate,
581 String colorSaved, String colorInitiated, String colorDisapproved, String colorEnroute,
582 String colorApproved, String colorFinal, String colorDissapproveCancel, String colorProcessed,
583 String colorException, String colorCanceled, String delegatorFilter, String useOutbox,
584 String showDateApproved, String showCurrentNode, String primaryDelegateFilter, String notifyAcknowledge,
585 String notifyApprove, String notifyComplete, String notifyFYI, Map<String, String> documentTypeNotificationPreferences,
586 boolean requiresSave) {
587 return new Builder(emailNotification, notifyPrimaryDelegation, notifySecondaryDelegation, openNewWindow, showActionRequested, showDateCreated,
588 showDocumentStatus, showAppDocStatus, showDocType, showInitiator, showDocTitle, showWorkgroupRequest, showDelegator, showClearFyi,
589 pageSize, refreshRate, colorSaved, colorInitiated, colorDisapproved, colorEnroute, colorApproved, colorFinal, colorDissapproveCancel,
590 colorProcessed, colorException, colorCanceled, delegatorFilter, useOutbox, showDateApproved, showCurrentNode, primaryDelegateFilter,
591 notifyAcknowledge, notifyApprove, notifyComplete, notifyFYI, documentTypeNotificationPreferences, requiresSave);
592 }
593
594 public static Builder create(PreferencesContract contract) {
595 if (contract == null) {
596 throw new IllegalArgumentException("contract was null");
597 }
598 Builder builder = create(contract.getEmailNotification(), contract.getNotifyPrimaryDelegation(), contract.getNotifySecondaryDelegation(), contract.getOpenNewWindow(),
599 contract.getShowActionRequested(), contract.getShowDateCreated(), contract.getShowDocumentStatus(), contract.getShowAppDocStatus(), contract.getShowDocType(),
600 contract.getShowInitiator(), contract.getShowDocTitle(), contract.getShowWorkgroupRequest(), contract.getShowDelegator(), contract.getShowClearFyi(),
601 contract.getPageSize(), contract.getRefreshRate(), contract.getColorSaved(), contract.getColorInitiated(), contract.getColorDisapproved(),
602 contract.getColorEnroute(), contract.getColorApproved(), contract.getColorFinal(), contract.getColorDisapproveCancel(), contract.getColorProcessed(),
603 contract.getColorException(), contract.getColorCanceled(), contract.getDelegatorFilter(), contract.getUseOutbox(), contract.getShowDateApproved(),
604 contract.getShowCurrentNode(), contract.getPrimaryDelegateFilter(), contract.getNotifyAcknowledge(), contract.getNotifyApprove(), contract.getNotifyComplete(),
605 contract.getNotifyFYI(), contract.getDocumentTypeNotificationPreferences(), contract.isRequiresSave());
606 return builder;
607 }
608
609 public static Builder create(Map<String, String> map, Map<String, String> documentTypeNotificationPreferences, boolean requiresSave) {
610 Builder builder = create(map.get(KEYS.EMAIL_NOTIFICATION), map.get(KEYS.NOTIFY_PRIMARY_DELEGATION), map.get(KEYS.NOTIFY_SECONDARY_DELEGATION), map.get(KEYS.OPEN_NEW_WINDOW),
611 map.get(KEYS.SHOW_ACTION_REQUESTED), map.get(KEYS.SHOW_DATE_CREATED), map.get(KEYS.SHOW_DOCUMENT_STATUS), map.get(KEYS.SHOW_APP_DOC_STATUS), map.get(KEYS.SHOW_DOC_TYPE),
612 map.get(KEYS.SHOW_INITIATOR), map.get(KEYS.SHOW_DOC_TITLE), map.get(KEYS.SHOW_GROUP_REQUEST), map.get(KEYS.SHOW_DELEGATOR), map.get(KEYS.SHOW_CLEAR_FYI),
613 map.get(KEYS.PAGE_SIZE), map.get(KEYS.REFRESH_RATE), map.get(KEYS.COLOR_SAVED), map.get(KEYS.COLOR_INITIATED), map.get(KEYS.COLOR_DISAPPROVED),
614 map.get(KEYS.COLOR_ENROUTE), map.get(KEYS.COLOR_APPROVED), map.get(KEYS.COLOR_FINAL), map.get(KEYS.COLOR_DISAPPROVE_CANCEL), map.get(KEYS.COLOR_PROCESSED),
615 map.get(KEYS.COLOR_EXCEPTION), map.get(KEYS.COLOR_CANCELED), map.get(KEYS.DELEGATOR_FILTER), map.get(KEYS.USE_OUT_BOX), map.get(KEYS.SHOW_DATE_APPROVED),
616 map.get(KEYS.SHOW_CURRENT_NODE), map.get(KEYS.PRIMARY_DELEGATE_FILTER), map.get(KEYS.NOTIFY_ACKNOWLEDGE), map.get(KEYS.NOTIFY_APPROVE), map.get(KEYS.NOTIFY_COMPLETE),
617 map.get(KEYS.NOTIFY_FYI), documentTypeNotificationPreferences, requiresSave);
618 return builder;
619 }
620
621 public synchronized boolean isRequiresSave() {
622 return requiresSave;
623 }
624
625 public synchronized void setRequiresSave(boolean requiresSave) {
626 this.requiresSave = requiresSave;
627 }
628
629 public synchronized String getEmailNotification() {
630 return emailNotification;
631 }
632
633 public synchronized void setEmailNotification(String emailNotification) {
634 this.emailNotification = emailNotification;
635 }
636
637 public synchronized String getNotifyPrimaryDelegation() {
638 return notifyPrimaryDelegation;
639 }
640
641 public synchronized void setNotifyPrimaryDelegation(String notifyPrimaryDelegation) {
642 this.notifyPrimaryDelegation = notifyPrimaryDelegation;
643 }
644
645 public synchronized String getNotifySecondaryDelegation() {
646 return notifySecondaryDelegation;
647 }
648
649 public synchronized void setNotifySecondaryDelegation(String notifySecondaryDelegation) {
650 this.notifySecondaryDelegation = notifySecondaryDelegation;
651 }
652
653 public synchronized String getOpenNewWindow() {
654 return openNewWindow;
655 }
656
657 public synchronized void setOpenNewWindow(String openNewWindow) {
658 this.openNewWindow = openNewWindow;
659 }
660
661 public synchronized String getShowActionRequested() {
662 return showActionRequested;
663 }
664
665 public synchronized void setShowActionRequested(String showActionRequested) {
666 this.showActionRequested = showActionRequested;
667 }
668
669 public synchronized String getShowDateCreated() {
670 return showDateCreated;
671 }
672
673 public synchronized void setShowDateCreated(String showDateCreated) {
674 this.showDateCreated = showDateCreated;
675 }
676
677 public synchronized String getShowDocumentStatus() {
678 return showDocumentStatus;
679 }
680
681 public synchronized void setShowDocumentStatus(String showDocumentStatus) {
682 this.showDocumentStatus = showDocumentStatus;
683 }
684
685 public synchronized String getShowAppDocStatus() {
686 return showAppDocStatus;
687 }
688
689 public synchronized void setShowAppDocStatus(String showAppDocStatus) {
690 this.showAppDocStatus = showAppDocStatus;
691 }
692
693 public synchronized String getShowDocType() {
694 return showDocType;
695 }
696
697 public synchronized void setShowDocType(String showDocType) {
698 this.showDocType = showDocType;
699 }
700
701 public synchronized String getShowInitiator() {
702 return showInitiator;
703 }
704
705 public synchronized void setShowInitiator(String showInitiator) {
706 this.showInitiator = showInitiator;
707 }
708
709 public synchronized String getShowDocTitle() {
710 return showDocTitle;
711 }
712
713 public synchronized void setShowDocTitle(String showDocTitle) {
714 this.showDocTitle = showDocTitle;
715 }
716
717 public synchronized String getShowWorkgroupRequest() {
718 return showWorkgroupRequest;
719 }
720
721 public synchronized void setShowWorkgroupRequest(String showWorkgroupRequest) {
722 this.showWorkgroupRequest = showWorkgroupRequest;
723 }
724
725 public synchronized String getShowDelegator() {
726 return showDelegator;
727 }
728
729 public synchronized void setShowDelegator(String showDelegator) {
730 this.showDelegator = showDelegator;
731 }
732
733 public synchronized String getShowClearFyi() {
734 return showClearFyi;
735 }
736
737 public synchronized void setShowClearFyi(String showClearFyi) {
738 this.showClearFyi = showClearFyi;
739 }
740
741 public synchronized String getPageSize() {
742 return pageSize;
743 }
744
745 public synchronized void setPageSize(String pageSize) {
746 this.pageSize = pageSize;
747 }
748
749 public synchronized String getRefreshRate() {
750 return refreshRate;
751 }
752
753 public synchronized void setRefreshRate(String refreshRate) {
754 this.refreshRate = refreshRate;
755 }
756
757 public synchronized String getColorSaved() {
758 return colorSaved;
759 }
760
761 public synchronized void setColorSaved(String colorSaved) {
762 this.colorSaved = colorSaved;
763 }
764
765 public synchronized String getColorInitiated() {
766 return colorInitiated;
767 }
768
769 public synchronized void setColorInitiated(String colorInitiated) {
770 this.colorInitiated = colorInitiated;
771 }
772
773 public synchronized String getColorDisapproved() {
774 return colorDisapproved;
775 }
776
777 public synchronized void setColorDisapproved(String colorDisapproved) {
778 this.colorDisapproved = colorDisapproved;
779 }
780
781 public synchronized String getColorEnroute() {
782 return colorEnroute;
783 }
784
785 public synchronized void setColorEnroute(String colorEnroute) {
786 this.colorEnroute = colorEnroute;
787 }
788
789 public synchronized String getColorApproved() {
790 return colorApproved;
791 }
792
793 public synchronized void setColorApproved(String colorApproved) {
794 this.colorApproved = colorApproved;
795 }
796
797 public synchronized String getColorFinal() {
798 return colorFinal;
799 }
800
801 public synchronized void setColorFinal(String colorFinal) {
802 this.colorFinal = colorFinal;
803 }
804
805 public synchronized String getColorDisapproveCancel() {
806 return colorDissapproveCancel;
807 }
808
809 public synchronized void setColorDissapproveCancel(String colorDissapproveCancel) {
810 this.colorDissapproveCancel = colorDissapproveCancel;
811 }
812
813 public synchronized String getColorProcessed() {
814 return colorProcessed;
815 }
816
817 public synchronized void setColorProcessed(String colorProcessed) {
818 this.colorProcessed = colorProcessed;
819 }
820
821 public synchronized String getColorException() {
822 return colorException;
823 }
824
825 public synchronized void setColorException(String colorException) {
826 this.colorException = colorException;
827 }
828
829 public synchronized String getColorCanceled() {
830 return colorCanceled;
831 }
832
833 public synchronized void setColorCanceled(String colorCanceled) {
834 this.colorCanceled = colorCanceled;
835 }
836
837 public synchronized String getDelegatorFilter() {
838 return delegatorFilter;
839 }
840
841 public synchronized void setDelegatorFilter(String delegatorFilter) {
842 this.delegatorFilter = delegatorFilter;
843 }
844
845 public synchronized String getUseOutbox() {
846 return useOutbox;
847 }
848
849 public synchronized void setUseOutbox(String useOutbox) {
850 this.useOutbox = useOutbox;
851 }
852
853 public synchronized String getShowDateApproved() {
854 return showDateApproved;
855 }
856
857 public synchronized void setShowDateApproved(String showDateApproved) {
858 this.showDateApproved = showDateApproved;
859 }
860
861 public synchronized String getShowCurrentNode() {
862 return showCurrentNode;
863 }
864
865 public synchronized void setShowCurrentNode(String showCurrentNode) {
866 this.showCurrentNode = showCurrentNode;
867 }
868
869 public synchronized String getPrimaryDelegateFilter() {
870 return primaryDelegateFilter;
871 }
872
873 public synchronized void setPrimaryDelegateFilter(String primaryDelegateFilter) {
874 this.primaryDelegateFilter = primaryDelegateFilter;
875 }
876
877 public synchronized String getNotifyAcknowledge() {
878 return this.notifyAcknowledge;
879 }
880
881 public synchronized void setNotifyAcknowledge(String notifyAcknowledge) {
882 this.notifyAcknowledge = notifyAcknowledge;
883 }
884
885 public synchronized String getNotifyApprove() {
886 return this.notifyApprove;
887 }
888
889 public synchronized void setNotifyApprove(String notifyApprove) {
890 this.notifyApprove = notifyApprove;
891 }
892
893 public synchronized String getNotifyComplete() {
894 return this.notifyComplete;
895 }
896
897 public synchronized void setNotifyComplete(String notifyComplete) {
898 this.notifyComplete = notifyComplete;
899 }
900
901 public synchronized String getNotifyFYI() {
902 return this.notifyFYI;
903 }
904
905 public synchronized void setNotifyFYI(String notifyFYI) {
906 this.notifyFYI = notifyFYI;
907 }
908
909 public synchronized String getDocumentTypeNotificationPreference(String documentType) {
910 String preferenceName = documentType.replace(KewApiConstants.DOCUMENT_TYPE_NOTIFICATION_DELIMITER, ".");
911 String preferenceValue = this.documentTypeNotificationPreferences.get(preferenceName);
912 if(StringUtils.isNotBlank(preferenceValue)) {
913 return preferenceValue;
914 }
915 return null;
916 }
917
918 public synchronized void setDocumentTypeNotificationPreference(String documentType, String preference) {
919 documentType = documentType.replace(KewApiConstants.DOCUMENT_TYPE_NOTIFICATION_DELIMITER, ".");
920 this.documentTypeNotificationPreferences.put(documentType, preference);
921 }
922
923 public synchronized Map<String, String> getDocumentTypeNotificationPreferences() {
924 if(this.documentTypeNotificationPreferences == null) {
925 this.documentTypeNotificationPreferences = new HashMap<String, String>();
926 }
927 return this.documentTypeNotificationPreferences;
928 }
929
930 public synchronized void setDocumentTypeNotificationPreferences(Map<String, String> documentTypeNotificationPreferences) {
931 this.documentTypeNotificationPreferences = documentTypeNotificationPreferences;
932 }
933
934 public synchronized void addDocumentTypeNotificationPreference(String documentType, String preference) {
935 this.getDocumentTypeNotificationPreferences().put(documentType, preference);
936 }
937
938 public synchronized void removeDocumentTypeNotificationPreference(String documentType) {
939 this.getDocumentTypeNotificationPreferences().remove(documentType);
940 }
941 }
942
943 static class Constants {
944 static final String ROOT_ELEMENT_NAME = "preferences";
945 static final String TYPE_NAME = "PreferencesType";
946 static final String PREFERENCES_YES_VAL = "yes";
947 }
948
949
950
951
952
953 static class Elements {
954
955 static final String REQUIRES_SAVE = "requiresSave";
956 static final String EMAIL_NOTIFICATION = "emailNotification";
957 static final String NOTIFY_PRIMARY_DELEGATION = "notifyPrimaryDelegation";
958 static final String NOTIFY_SECONDARY_DELEGATION = "notifySecondaryDelegation";
959 static final String OPEN_NEW_WINDOW = "openNewWindow";
960 static final String SHOW_ACTION_REQUESTED = "showActionRequested";
961 static final String SHOW_DATE_CREATED = "showDateCreated";
962 static final String SHOW_DOCUMENT_STATUS = "showDocumentStatus";
963 static final String SHOW_APP_DOC_STATUS = "showAppDocStatus";
964 static final String SHOW_DOC_TYPE = "showDocType";
965 static final String SHOW_INITIATOR = "showInitiator";
966 static final String SHOW_DOC_TITLE = "showDocTitle";
967 static final String SHOW_WORKGROUP_REQUEST = "showWorkgroupRequest";
968 static final String SHOW_DELEGATOR = "showDelegator";
969 static final String SHOW_CLEAR_FYI = "showClearFyi";
970 static final String PAGE_SIZE = "pageSize";
971 static final String REFRESH_RATE = "refreshRate";
972 static final String COLOR_SAVED = "colorSaved";
973 static final String COLOR_INITIATED = "colorInitiated";
974 static final String COLOR_DISAPPROVED = "colorDisapproved";
975 static final String COLOR_ENROUTE = "colorEnroute";
976 static final String COLOR_APPROVED = "colorApproved";
977 static final String COLOR_FINAL = "colorFinal";
978 static final String COLOR_DISAPPROVE_CANCEL = "colorDisapproveCancel";
979 static final String COLOR_PROCESSED = "colorProcessed";
980 static final String COLOR_EXCEPTION = "colorException";
981 static final String COLOR_CANCELED = "colorCanceled";
982 static final String DELEGATOR_FILTER = "delegatorFilter";
983 static final String USE_OUTBOX = "useOutbox";
984 static final String SHOW_DATE_APPROVED = "showDateApproved";
985 static final String SHOW_CURRENT_NODE = "showCurrentNode";
986 static final String PRIMARY_DELEGATE_FILTER = "primaryDelegateFilter";
987 static final String NOTIFY_ACKNOWLEDGE = "notifyAcknowledge";
988 static final String NOTIFY_APPROVE = "notifyApprove";
989 static final String NOTIFY_COMPLETE = "notifyCompelte";
990 static final String NOTIFY_FYI = "notifyFYI";
991 static final String DOCUMENT_TYPE_NOTIFICATION_PREFERENCES = "documentTypeNotificationPreferences";
992 static final String DOCUMENT_TYPE_NOTIFICATION_PREFERENCE_MAP = "documentTypeNotificationPreferenceMap";
993 }
994
995 public static class KEYS {
996 public static final String COLOR_DISAPPROVED = "DOCUMENT_STATUS_COLOR_D";
997 public static final String COLOR_DISAPPROVE_CANCEL = "DOCUMENT_STATUS_COLOR_C";
998 public static final String COLOR_APPROVED = "DOCUMENT_STATUS_COLOR_A";
999 public static final String COLOR_CANCELED = "DOCUMENT_STATUS_COLOR_X";
1000 public static final String COLOR_SAVED = "DOCUMENT_STATUS_COLOR_S";
1001 public static final String COLOR_ENROUTE = "DOCUMENT_STATUS_COLOR_R";
1002 public static final String COLOR_PROCESSED = "DOCUMENT_STATUS_COLOR_P";
1003 public static final String COLOR_INITIATED = "DOCUMENT_STATUS_COLOR_I";
1004 public static final String COLOR_FINAL = "DOCUMENT_STATUS_COLOR_F";
1005 public static final String COLOR_EXCEPTION = "DOCUMENT_STATUS_COLOR_E";
1006 public static final String REFRESH_RATE = "REFRESH_RATE";
1007 public static final String OPEN_NEW_WINDOW = "OPEN_ITEMS_NEW_WINDOW";
1008 public static final String SHOW_DOC_TYPE = "DOC_TYPE_COL_SHOW_NEW";
1009 public static final String SHOW_DOC_TITLE = "TITLE_COL_SHOW_NEW";
1010 public static final String SHOW_ACTION_REQUESTED = "ACTION_REQUESTED_COL_SHOW_NEW";
1011 public static final String SHOW_INITIATOR = "INITIATOR_COL_SHOW_NEW";
1012 public static final String SHOW_DELEGATOR = "DELEGATOR_COL_SHOW_NEW";
1013 public static final String SHOW_DATE_CREATED = "DATE_CREATED_COL_SHOW_NEW";
1014 public static final String SHOW_DOCUMENT_STATUS = "DOCUMENT_STATUS_COL_SHOW_NEW";
1015 public static final String SHOW_APP_DOC_STATUS = "APP_DOC_STATUS_COL_SHOW_NEW";
1016 public static final String SHOW_GROUP_REQUEST = "WORKGROUP_REQUEST_COL_SHOW_NEW";
1017 public static final String SHOW_CLEAR_FYI = "CLEAR_FYI_COL_SHOW_NEW";
1018 public static final String PAGE_SIZE = "ACTION_LIST_SIZE_NEW";
1019 public static final String EMAIL_NOTIFICATION = "EMAIL_NOTIFICATION";
1020 public static final String NOTIFY_PRIMARY_DELEGATION = "EMAIL_NOTIFY_PRIMARY";
1021 public static final String NOTIFY_SECONDARY_DELEGATION = "EMAIL_NOTIFY_SECONDARY";
1022 public static final String DEFAULT_COLOR = "white";
1023 public static final String DEFAULT_ACTION_LIST_SIZE = "10";
1024 public static final String DEFAULT_REFRESH_RATE = "15";
1025 public static final String ERR_KEY_REFRESH_RATE_WHOLE_NUM = "preferences.refreshRate";
1026 public static final String ERR_KEY_ACTION_LIST_PAGE_SIZE_WHOLE_NUM = "preferences.pageSize";
1027 public static final String DELEGATOR_FILTER = "DELEGATOR_FILTER";
1028 public static final String PRIMARY_DELEGATE_FILTER = "PRIMARY_DELEGATE_FILTER";
1029 public static final String USE_OUT_BOX = "USE_OUT_BOX";
1030 public static final String SHOW_DATE_APPROVED = "LAST_APPROVED_DATE_COL_SHOW_NEW";
1031 public static final String SHOW_CURRENT_NODE = "CURRENT_NODE_COL_SHOW_NEW";
1032 public static final String NOTIFY_ACKNOWLEDGE = "NOTIFY_ACKNOWLEDGE";
1033 public static final String NOTIFY_APPROVE = "NOTIFY_APPROVE";
1034 public static final String NOTIFY_COMPLETE = "NOTIFY_COMPLETE";
1035 public static final String NOTIFY_FYI = "NOTIFY_FYI";
1036 public static final String DOCUMENT_TYPE_NOTIFICATION_PREFERENCES = "DOCUMENT_TYPE_NOTIFICATION_PREFERENCES";
1037 }
1038
1039 public static class Cache {
1040 public static final String NAME = KewApiConstants.Namespaces.KEW_NAMESPACE_2_0 + "/" + Preferences.Constants.TYPE_NAME;
1041 }
1042
1043 }