001/**
002 * Copyright 2005-2018 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.krad.document;
017
018import org.kuali.rice.krad.rules.rule.event.SaveDocumentEvent;
019import org.kuali.rice.krad.web.controller.UifControllerBase;
020import org.kuali.rice.krad.web.form.DocumentFormBase;
021import org.kuali.rice.krad.web.form.UifFormBase;
022import org.kuali.rice.krad.web.service.ControllerService;
023import org.springframework.beans.factory.annotation.Autowired;
024import org.springframework.beans.factory.annotation.Qualifier;
025import org.springframework.web.bind.annotation.RequestMapping;
026import org.springframework.web.bind.annotation.RequestMethod;
027import org.springframework.web.servlet.ModelAndView;
028
029import javax.servlet.http.HttpServletResponse;
030
031/**
032 * Base controller class for all KRAD document view screens working with document models.
033 *
034 * <p>Provides default controller implementations for the standard document actions including: doc handler
035 * (retrieve from doc search and action list), save, route (and other KEW actions)</p>
036 *
037 * @author Kuali Rice Team (rice.collab@kuali.org)
038 */
039public abstract class DocumentControllerBase extends UifControllerBase {
040
041    /**
042     * {@inheritDoc}
043     */
044    @Override
045    protected abstract DocumentFormBase createInitialForm();
046
047    /**
048     * @see DocumentControllerService#docHandler(org.kuali.rice.krad.web.form.DocumentFormBase)
049     */
050    @RequestMapping(params = "methodToCall=docHandler")
051    public ModelAndView docHandler(DocumentFormBase form) throws Exception {
052        return getControllerService().docHandler(form);
053    }
054
055    /**
056     * @see DocumentControllerService#reload(org.kuali.rice.krad.web.form.DocumentFormBase)
057     */
058    @RequestMapping(params = "methodToCall=reload")
059    public ModelAndView reload(DocumentFormBase form) throws Exception {
060        return getControllerService().reload(form);
061    }
062
063    /**
064     * @see DocumentControllerService#recall(org.kuali.rice.krad.web.form.DocumentFormBase)
065     */
066    @RequestMapping(params = "methodToCall=recall")
067    public ModelAndView recall(DocumentFormBase form) {
068        return getControllerService().recall(form);
069    }
070
071    /**
072     * @see DocumentControllerService#save(org.kuali.rice.krad.web.form.DocumentFormBase)
073     */
074    @Override
075    @RequestMapping(params = "methodToCall=save")
076    public ModelAndView save(UifFormBase form) {
077        return getControllerService().save((DocumentFormBase) form);
078    }
079
080    /**
081     * @see DocumentControllerService#save(org.kuali.rice.krad.web.form.DocumentFormBase,
082     * org.kuali.rice.krad.rules.rule.event.SaveDocumentEvent)
083     */
084    protected ModelAndView save(DocumentFormBase form, SaveDocumentEvent saveDocumentEvent) {
085        return getControllerService().save(form, saveDocumentEvent);
086    }
087
088    /**
089     * @see DocumentControllerService#complete(org.kuali.rice.krad.web.form.DocumentFormBase)
090     */
091    @RequestMapping(params = "methodToCall=complete")
092    public ModelAndView complete(DocumentFormBase form) {
093        return getControllerService().complete(form);
094    }
095
096    /**
097     * @see DocumentControllerService#route(org.kuali.rice.krad.web.form.DocumentFormBase)
098     */
099    @RequestMapping(params = "methodToCall=route")
100    public ModelAndView route(DocumentFormBase form) {
101        return getControllerService().route(form);
102    }
103
104    /**
105     * @see DocumentControllerService#blanketApprove(org.kuali.rice.krad.web.form.DocumentFormBase)
106     */
107    @RequestMapping(params = "methodToCall=blanketApprove")
108    public ModelAndView blanketApprove(DocumentFormBase form) {
109        return getControllerService().blanketApprove(form);
110    }
111
112    /**
113     * @see DocumentControllerService#approve(org.kuali.rice.krad.web.form.DocumentFormBase)
114     */
115    @RequestMapping(params = "methodToCall=approve")
116    public ModelAndView approve(DocumentFormBase form) {
117        return getControllerService().approve(form);
118    }
119
120    /**
121     * @see DocumentControllerService#disapprove(org.kuali.rice.krad.web.form.DocumentFormBase)
122     */
123    @RequestMapping(params = "methodToCall=disapprove")
124    public ModelAndView disapprove(DocumentFormBase form) {
125        return getControllerService().disapprove(form);
126    }
127
128    /**
129     * @see DocumentControllerService#fyi(org.kuali.rice.krad.web.form.DocumentFormBase)
130     */
131    @RequestMapping(params = "methodToCall=fyi")
132    public ModelAndView fyi(DocumentFormBase form) {
133        return getControllerService().fyi(form);
134    }
135
136    /**
137     * @see DocumentControllerService#acknowledge(org.kuali.rice.krad.web.form.DocumentFormBase)
138     */
139    @RequestMapping(params = "methodToCall=acknowledge")
140    public ModelAndView acknowledge(DocumentFormBase form) {
141        return getControllerService().acknowledge(form);
142    }
143
144    /**
145     * @see DocumentControllerService#sendAdHocRequests(org.kuali.rice.krad.web.form.DocumentFormBase)
146     */
147    @RequestMapping(params = "methodToCall=sendAdHocRequests")
148    public ModelAndView sendAdHocRequests(DocumentFormBase form) {
149        return getControllerService().sendAdHocRequests(form);
150    }
151
152    /**
153     * @see DocumentControllerService#supervisorFunctions(org.kuali.rice.krad.web.form.DocumentFormBase)
154     */
155    @RequestMapping(params = "methodToCall=supervisorFunctions")
156    public ModelAndView supervisorFunctions(DocumentFormBase form) {
157        return getControllerService().supervisorFunctions(form);
158    }
159
160    /**
161     * {@inheritDoc}
162     *
163     * @see DocumentControllerService#close(org.kuali.rice.krad.web.form.DocumentFormBase)
164     */
165    @RequestMapping(params = "methodToCall=close")
166    public ModelAndView close(DocumentFormBase form) {
167        return getControllerService().close(form);
168    }
169
170    /**
171     * @see DocumentControllerService#insertNote(org.kuali.rice.krad.web.form.DocumentFormBase)
172     */
173    @RequestMapping(method = RequestMethod.POST, params = "methodToCall=insertNote")
174    public ModelAndView insertNote(DocumentFormBase form) {
175        return getControllerService().insertNote(form);
176    }
177
178    /**
179     * @see DocumentControllerService#deleteNote(org.kuali.rice.krad.web.form.DocumentFormBase)
180     */
181    @RequestMapping(method = RequestMethod.POST, params = "methodToCall=deleteNote")
182    public ModelAndView deleteNote(DocumentFormBase form) {
183        return getControllerService().deleteNote(form);
184    }
185
186    /**
187     * {@inheritDoc}
188     *
189     * @see DocumentControllerService#superUserTakeActions(org.kuali.rice.krad.web.form.DocumentFormBase)
190     */
191    @RequestMapping(params = "methodToCall=superUserTakeActions")
192    public ModelAndView superUserTakeActions(DocumentFormBase form) {
193        return getControllerService().superUserTakeActions(form);
194    }
195
196    /**
197     * {@inheritDoc}
198     *
199     * @see DocumentControllerService#superUserApprove(org.kuali.rice.krad.web.form.DocumentFormBase)
200     */
201    @RequestMapping(params = "methodToCall=superUserApprove")
202    public ModelAndView superUserApprove(DocumentFormBase form) {
203        return getControllerService().superUserApprove(form);
204    }
205
206    /**
207     * {@inheritDoc}
208     *
209     * @see DocumentControllerService#superUserDisapprove(org.kuali.rice.krad.web.form.DocumentFormBase)
210     */
211    @RequestMapping(params = "methodToCall=superUserDisapprove")
212    public ModelAndView superUserDisapprove(DocumentFormBase form) {
213        return getControllerService().superUserDisapprove(form);
214    }
215
216    /**
217     * @see DocumentControllerService#downloadAttachment(org.kuali.rice.krad.web.form.DocumentFormBase,
218     * javax.servlet.http.HttpServletResponse)
219     */
220    @RequestMapping(method = RequestMethod.POST, params = "methodToCall=downloadAttachment")
221    public ModelAndView downloadAttachment(DocumentFormBase form, HttpServletResponse response) {
222        return getControllerService().downloadAttachment(form, response);
223    }
224
225    /**
226     * @see DocumentControllerService#cancelAttachment(org.kuali.rice.krad.web.form.DocumentFormBase)
227     */
228    @RequestMapping(method = RequestMethod.POST, params = "methodToCall=cancelAttachment")
229    public ModelAndView cancelAttachment(DocumentFormBase form) {
230        return getControllerService().cancelAttachment(form);
231    }
232
233    @Override
234    protected DocumentControllerService getControllerService() {
235        return (DocumentControllerService) super.getControllerService();
236    }
237
238    @Override
239    @Autowired
240    @Qualifier("documentControllerService")
241    public void setControllerService(ControllerService controllerService) {
242        super.setControllerService(controllerService);
243    }
244
245}