1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package org.kuali.rice.krad.document;
17  
18  import org.kuali.rice.krad.uif.view.RequestAuthorizationCache;
19  import org.kuali.rice.krad.uif.view.View;
20  import org.kuali.rice.krad.uif.view.ViewModel;
21  import org.kuali.rice.krad.uif.view.ViewPresentationControllerBase;
22  import org.kuali.rice.krad.util.KRADConstants;
23  import org.kuali.rice.krad.util.KRADUtils;
24  import org.kuali.rice.krad.web.form.DocumentFormBase;
25  import org.kuali.rice.krad.web.form.UifFormBase;
26  
27  import java.util.HashSet;
28  import java.util.Set;
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  public class DocumentViewPresentationControllerBase extends ViewPresentationControllerBase implements DocumentPresentationController {
45      private static final long serialVersionUID = 1461173145806477758L;
46  
47      private DocumentPresentationController documentPresentationController;
48  
49      @Override
50      public Set<String> getActionFlags(View view, UifFormBase model) {
51          Set<String> documentActions = new HashSet<String>();
52  
53          Document document = ((DocumentFormBase) model).getDocument();
54  
55          DocumentRequestAuthorizationCache requestAuthorizationCache =
56                  (DocumentRequestAuthorizationCache) getRequestAuthorizationCache();
57  
58          if (canEdit(document)) {
59              documentActions.add(KRADConstants.KUALI_ACTION_CAN_EDIT);
60          }
61  
62          if (canAnnotate(document)) {
63              documentActions.add(KRADConstants.KUALI_ACTION_CAN_ANNOTATE);
64          }
65  
66          if (canClose(document)) {
67              documentActions.add(KRADConstants.KUALI_ACTION_CAN_CLOSE);
68          }
69  
70          if (canSave(document)) {
71              documentActions.add(KRADConstants.KUALI_ACTION_CAN_SAVE);
72          }
73  
74          if (canRoute(document)) {
75              documentActions.add(KRADConstants.KUALI_ACTION_CAN_ROUTE);
76          }
77  
78          if (canCancel(document)) {
79              documentActions.add(KRADConstants.KUALI_ACTION_CAN_CANCEL);
80          }
81  
82          if (canReload(document)) {
83              documentActions.add(KRADConstants.KUALI_ACTION_CAN_RELOAD);
84          }
85  
86          if (canCopy(document)) {
87              documentActions.add(KRADConstants.KUALI_ACTION_CAN_COPY);
88          }
89  
90          if (canPerformRouteReport(document)) {
91              documentActions.add(KRADConstants.KUALI_ACTION_PERFORM_ROUTE_REPORT);
92          }
93  
94          if (canAddAdhocRequests(document)) {
95              documentActions.add(KRADConstants.KUALI_ACTION_CAN_ADD_ADHOC_REQUESTS);
96          }
97  
98          if (canBlanketApprove(document)) {
99              documentActions.add(KRADConstants.KUALI_ACTION_CAN_BLANKET_APPROVE);
100         }
101 
102         if (canApprove(document)) {
103             documentActions.add(KRADConstants.KUALI_ACTION_CAN_APPROVE);
104         }
105 
106         if (canDisapprove(document)) {
107             documentActions.add(KRADConstants.KUALI_ACTION_CAN_DISAPPROVE);
108         }
109 
110         if (canSendAdhocRequests(document)) {
111             documentActions.add(KRADConstants.KUALI_ACTION_CAN_SEND_ADHOC_REQUESTS);
112         }
113 
114         if (canSendNoteFyi(document)) {
115             documentActions.add(KRADConstants.KUALI_ACTION_CAN_SEND_NOTE_FYI);
116         }
117 
118         if (this.canEditDocumentOverview(document)) {
119             documentActions.add(KRADConstants.KUALI_ACTION_CAN_EDIT_DOCUMENT_OVERVIEW);
120         }
121 
122         if (canFyi(document)) {
123             documentActions.add(KRADConstants.KUALI_ACTION_CAN_FYI);
124         }
125 
126         if (canAcknowledge(document)) {
127             documentActions.add(KRADConstants.KUALI_ACTION_CAN_ACKNOWLEDGE);
128         }
129 
130         if (canComplete(document)) {
131             documentActions.add(KRADConstants.KUALI_ACTION_CAN_COMPLETE);
132         }
133 
134         if (canRecall(document)) {
135             documentActions.add(KRADConstants.KUALI_ACTION_CAN_RECALL);
136         }
137 
138         if (canSuperUserTakeAction(document)) {
139             documentActions.add(KRADConstants.KUALI_ACTION_CAN_SUPER_USER_TAKE_ACTION);
140         }
141 
142         if (canSuperUserApprove(document)) {
143             documentActions.add(KRADConstants.KUALI_ACTION_CAN_SUPER_USER_APPROVE);
144         }
145 
146         if (canSuperUserDisapprove(document)) {
147             documentActions.add(KRADConstants.KUALI_ACTION_CAN_SUPER_USER_DISAPPROVE);
148         }
149 
150         return documentActions;
151     }
152 
153     public boolean canInitiate(String documentTypeName) {
154         return getDocumentPresentationController().canInitiate(documentTypeName);
155     }
156 
157     public boolean canEdit(Document document) {
158         return getDocumentPresentationController().canEdit(document);
159     }
160 
161     
162 
163 
164     @Override
165     public boolean canEditView(View view, ViewModel model) {
166         DocumentFormBase documentForm = (DocumentFormBase) model;
167 
168         return super.canEditView(view, model) && canEdit(documentForm.getDocument());
169     }
170 
171     public boolean canAnnotate(Document document) {
172         return getDocumentPresentationController().canAnnotate(document);
173     }
174 
175     public boolean canReload(Document document) {
176         return getDocumentPresentationController().canReload(document);
177     }
178 
179     public boolean canClose(Document document) {
180         return getDocumentPresentationController().canClose(document);
181     }
182 
183     public boolean canSave(Document document) {
184         return getDocumentPresentationController().canSave(document);
185     }
186 
187     public boolean canRoute(Document document) {
188         return getDocumentPresentationController().canRoute(document);
189     }
190 
191     public boolean canCancel(Document document) {
192         return getDocumentPresentationController().canCancel(document);
193     }
194 
195     public boolean canRecall(Document document) {
196         return getDocumentPresentationController().canRecall(document);
197     }
198 
199     public boolean canCopy(Document document) {
200         return getDocumentPresentationController().canCopy(document);
201     }
202 
203     public boolean canPerformRouteReport(Document document) {
204         return getDocumentPresentationController().canPerformRouteReport(document);
205     }
206 
207     public boolean canAddAdhocRequests(Document document) {
208         return getDocumentPresentationController().canAddAdhocRequests(document);
209     }
210 
211     public boolean canBlanketApprove(Document document) {
212         return getDocumentPresentationController().canBlanketApprove(document);
213     }
214 
215     public boolean canApprove(Document document) {
216         return getDocumentPresentationController().canApprove(document);
217     }
218 
219     public boolean canDisapprove(Document document) {
220         return getDocumentPresentationController().canDisapprove(document);
221     }
222 
223     public boolean canSendAdhocRequests(Document document) {
224         return getDocumentPresentationController().canSendAdhocRequests(document);
225     }
226 
227     public boolean canSendNoteFyi(Document document) {
228         return getDocumentPresentationController().canSendNoteFyi(document);
229     }
230 
231     public boolean canEditDocumentOverview(Document document) {
232         return getDocumentPresentationController().canEditDocumentOverview(document);
233     }
234 
235     public boolean canFyi(Document document) {
236         return getDocumentPresentationController().canFyi(document);
237     }
238 
239     public boolean canAcknowledge(Document document) {
240         return getDocumentPresentationController().canAcknowledge(document);
241     }
242 
243     public boolean canComplete(Document document) {
244         return getDocumentPresentationController().canComplete(document);
245     }
246 
247     
248 
249 
250     @Override
251     public boolean canSuperUserTakeAction(Document document) {
252         return getDocumentPresentationController().canSuperUserTakeAction(document);
253     }
254 
255     
256 
257 
258     @Override
259     public boolean canSuperUserApprove(Document document) {
260         return getDocumentPresentationController().canSuperUserApprove(document);
261     }
262 
263     
264 
265 
266     @Override
267     public boolean canSuperUserDisapprove(Document document) {
268         return getDocumentPresentationController().canSuperUserDisapprove(document);
269     }
270 
271     public DocumentPresentationController getDocumentPresentationController() {
272         return documentPresentationController;
273     }
274 
275     public void setDocumentPresentationController(DocumentPresentationController documentPresentationController) {
276         this.documentPresentationController = documentPresentationController;
277     }
278 
279     public void setDocumentPresentationControllerClass(
280             Class<? extends DocumentPresentationController> documentPresentationControllerClass) {
281         this.documentPresentationController = KRADUtils.createNewObjectFromClass(documentPresentationControllerClass);
282     }
283 
284     protected DocumentRequestAuthorizationCache getDocumentRequestAuthorizationCache(Document document) {
285         if (getRequestAuthorizationCache() == null) {
286             setRequestAuthorizationCache(new DocumentRequestAuthorizationCache());
287         }
288 
289         DocumentRequestAuthorizationCache documentRequestAuthorizationCache =
290                 (DocumentRequestAuthorizationCache) getRequestAuthorizationCache();
291         if (documentRequestAuthorizationCache.getWorkflowDocumentInfo() == null) {
292             documentRequestAuthorizationCache.createWorkflowDocumentInfo(
293                     document.getDocumentHeader().getWorkflowDocument());
294         }
295 
296         return documentRequestAuthorizationCache;
297     }
298 
299     
300 
301 
302     @Override
303     public void setDocumentRequestAuthorizationCache(
304             DocumentRequestAuthorizationCache documentRequestAuthorizationCache) {
305           this.setRequestAuthorizationCache(documentRequestAuthorizationCache);
306     }
307 
308     
309 
310 
311     @Override
312     public void setRequestAuthorizationCache(RequestAuthorizationCache requestAuthorizationCache) {
313         super.setRequestAuthorizationCache(requestAuthorizationCache);
314 
315         if (!(requestAuthorizationCache instanceof DocumentRequestAuthorizationCache)) {
316             throw new RuntimeException(
317                     "Request authorization cache should be instance of " + DocumentRequestAuthorizationCache.class
318                             .getName());
319         }
320 
321         getDocumentPresentationController().setDocumentRequestAuthorizationCache(
322                 (DocumentRequestAuthorizationCache) requestAuthorizationCache);
323     }
324 }