View Javadoc
1   /**
2    * Copyright 2005-2016 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.krad.document;
17  
18  import org.kuali.rice.kew.api.action.ActionRequest;
19  import org.kuali.rice.kew.api.exception.WorkflowException;
20  import org.kuali.rice.krad.rules.rule.event.DocumentEvent;
21  import org.kuali.rice.krad.rules.rule.event.SaveDocumentEvent;
22  import org.kuali.rice.krad.uif.UifConstants;
23  import org.kuali.rice.krad.web.form.DocumentFormBase;
24  import org.kuali.rice.krad.web.service.ControllerService;
25  import org.springframework.web.servlet.ModelAndView;
26  
27  import javax.servlet.http.HttpServletResponse;
28  
29  /**
30   * Controller service that handles document specific actions (such as workflow actions).
31   *
32   * @author Kuali Rice Team (rice.collab@kuali.org)
33   */
34  public interface DocumentControllerService extends ControllerService {
35  
36      /**
37       * Handles all requests for a new document instance or to load an existing document based on the
38       * given form parameters.
39       *
40       * @param form form instance containing the document data
41       * @return ModelAndView instance for rendering the document view
42       * @throws WorkflowException if a document cannot be created or loaded
43       */
44      ModelAndView docHandler(DocumentFormBase form) throws WorkflowException;
45  
46      /**
47       * Reloads from the database the document with the doc id on the given form.
48       *
49       * @param form form instance containing the document id that will be reloaded
50       * @return ModelAndView instance for rendering the reloaded document view
51       * @throws WorkflowException if the document cannot be reloaded
52       */
53      ModelAndView reload(DocumentFormBase form) throws WorkflowException;
54  
55      /**
56       * Recalls the document with the given id on the form from workflow.
57       *
58       * @param form form instance containing the document id that will be recalled
59       * @return ModelAndView instance for rendering the document view
60       */
61      ModelAndView recall(DocumentFormBase form);
62  
63      /**
64       * Saves the document instance contained on the given form.
65       *
66       * @param form form instance containing the document that will be saved
67       * @return ModelAndView instance for rendering the document view
68       */
69      ModelAndView save(DocumentFormBase form);
70  
71      /**
72       * Saves the document instance contained on the given form and passes the given event for rule
73       * evaluation.
74       *
75       * @param form form instance containing the document that will be saved
76       * @param saveDocumentEvent rule event that will be processed with the save operation
77       * @return ModelAndView instance for rendering the document view
78       */
79      ModelAndView save(DocumentFormBase form, SaveDocumentEvent saveDocumentEvent);
80  
81      /**
82       * Sends a complete workflow action for the document contained on the form.
83       *
84       * @param form form instance containing the document the complete request will be generated for
85       * @return ModelAndView instance for rendering the document view
86       */
87      ModelAndView complete(DocumentFormBase form);
88  
89      /**
90       * Sends a route workflow action for the document contained on the form.
91       *
92       * @param form form instance containing the document the route request will be generated for
93       * @return ModelAndView instance for rendering the document view
94       */
95      ModelAndView route(DocumentFormBase form);
96  
97      /**
98       * Sends a blanket approve workflow action for the document contained on the form.
99       *
100      * @param form form instance containing the document the blanket approve request will be generated for
101      * @return ModelAndView instance for rendering the document view
102      */
103     ModelAndView blanketApprove(DocumentFormBase form);
104 
105     /**
106      * Sends a approve workflow action for the document contained on the form.
107      *
108      * @param form form instance containing the document the approve request will be generated for
109      * @return ModelAndView instance for rendering the document view
110      */
111     ModelAndView approve(DocumentFormBase form);
112 
113     /**
114      * Sends a disapprove workflow action for the document contained on the form.
115      *
116      * @param form form instance containing the document the disapprove request will be generated for
117      * @return ModelAndView instance for rendering the document view
118      */
119     ModelAndView disapprove(DocumentFormBase form);
120 
121     /**
122      * Sends a fyi workflow action for the document contained on the form.
123      *
124      * @param form form instance containing the document the fyi request will be generated for
125      * @return ModelAndView instance for rendering the document view
126      */
127     ModelAndView fyi(DocumentFormBase form);
128 
129     /**
130      * Sends a acknowledge workflow action for the document contained on the form.
131      *
132      * @param form form instance containing the document the acknowledge request will be generated for
133      * @return ModelAndView instance for rendering the document view
134      */
135     ModelAndView acknowledge(DocumentFormBase form);
136 
137     /**
138      * Sends AdHoc workflow Requests for the document instance contained on the form to the AdHoc recipients
139      * contained on the form.
140      *
141      * @param form form instance containing the document and recipients the requests will be generated for
142      * @return ModelAndView instance for rendering the document view
143      */
144     ModelAndView sendAdHocRequests(DocumentFormBase form);
145 
146     /**
147      * Redirects to the supervisor workflow view.
148      *
149      * @param form form instance containing the document instance
150      * @return ModelAndView instance for rendering the supervisor workflow view
151      */
152     ModelAndView supervisorFunctions(DocumentFormBase form);
153 
154     /**
155      * Closes the document and returns to the hub.
156      *
157      * @param form form instance containing the document instance
158      * @return ModelAndView instance for rendering the document view
159      */
160     ModelAndView close(DocumentFormBase form);
161 
162     /**
163      * Invoked by the add note action to adding the note instance contained of the given form.
164      *
165      * @param form form instance containing the note instance
166      * @return ModelAndView instance for rendering the document view
167      */
168     ModelAndView insertNote(DocumentFormBase form);
169 
170     /**
171      * Invoked by the delete note action to delete a note instance contained on document (within the form).
172      *
173      * @param form form instance containing the note instance
174      * @return ModelAndView instance for rendering the document view
175      */
176     ModelAndView deleteNote(DocumentFormBase form);
177 
178     /**
179      * Invoked to download an attachment that has been uploaded for a note.
180      *
181      * @param form form instance containing the note (and attachment) instance
182      * @param response http servlet response instance for sending back the attachment contents
183      * @return ModelAndView instance for rendering the document view, or null if the response has been
184      * finished
185      */
186     ModelAndView downloadAttachment(DocumentFormBase form, HttpServletResponse response);
187 
188     /**
189      * Invoked to remove an attachment that was uploaded for the add note instance.
190      *
191      * @param form form instance containing the attachment.
192      * @return ModelAndView instance for rendering the document view
193      */
194     ModelAndView cancelAttachment(DocumentFormBase form);
195 
196     /**
197      * Invoked to take super user actions on a document.
198      *
199      * @param form form instance containing the actions.
200      * @return ModelAndView instance for rendering the document view
201      */
202     ModelAndView superUserTakeActions(DocumentFormBase form);
203 
204     /**
205      * Sends a super user approve workflow action for the document contained on the form.
206      *
207      * @param form form instance containing the document the super user approve request will be generated for
208      * @return ModelAndView instance for rendering the document view
209      */
210     ModelAndView superUserApprove(DocumentFormBase form);
211 
212     /**
213      * Sends a super user disapprove workflow action for the document contained on the form.
214      *
215      * @param form form instance containing the document the super user disapprove request will be generated for
216      * @return ModelAndView instance for rendering the document view
217      */
218     ModelAndView superUserDisapprove(DocumentFormBase form);
219 
220     /**
221      * Invokes the {@link org.kuali.rice.krad.service.DocumentService} to carry out a request workflow action and adds a
222      * success message, if requested a check for sensitive data is also performed.
223      *
224      * @param form document form instance containing the document for which the action will be taken on
225      * @param action {@link org.kuali.rice.krad.uif.UifConstants.WorkflowAction} enum indicating what workflow action
226      * to take
227      */
228     void performWorkflowAction(DocumentFormBase form, UifConstants.WorkflowAction action);
229 
230     /**
231      * Invokes the {@link org.kuali.rice.krad.service.DocumentService} to carry out a request workflow action and adds a
232      * success message, if requested a check for sensitive data is also performed.
233      *
234      * @param form document form instance containing the document for which the action will be taken on
235      * @param action {@link org.kuali.rice.krad.uif.UifConstants.WorkflowAction} enum indicating what workflow action
236      * to take
237      * @param documentEvent rule event instance that will be evaluated with the workflow action, only currently
238      * supported for the save action
239      */
240     void performWorkflowAction(DocumentFormBase form, UifConstants.WorkflowAction action, DocumentEvent documentEvent);
241 
242     /**
243      * Invokes the {@link org.kuali.rice.krad.service.DocumentService} to carry out a super user request workflow action
244      * and adds a success message.
245      *
246      * @param form document form instance containing the document for which the super user action will be taken on
247      * @param action {@link org.kuali.rice.krad.uif.UifConstants.SuperUserWorkflowAction} enum indicating what super
248      * user workflow action to take
249      */
250     void performSuperUserWorkflowAction(DocumentFormBase form, UifConstants.SuperUserWorkflowAction action);
251 
252     /**
253      * Invokes the {@link org.kuali.rice.krad.service.DocumentService} to carry out a super user request workflow action
254      * and adds a success message.
255      *
256      * @param form document form instance containing the document for which the super user action will be taken on
257      * @param action {@link org.kuali.rice.krad.uif.UifConstants.SuperUserWorkflowAction} enum indicating what super
258      * user workflow action to take
259      * @param actionRequest the requested action to take, currenly only available for take action
260      */
261     void performSuperUserWorkflowAction(DocumentFormBase form, UifConstants.SuperUserWorkflowAction action, ActionRequest actionRequest);
262 
263 }