001 /**
002 * Copyright 2005-2012 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 */
016 package org.kuali.rice.krad.document;
017
018 import org.kuali.rice.krad.uif.view.View;
019 import org.kuali.rice.krad.uif.view.ViewModel;
020 import org.kuali.rice.krad.uif.view.ViewPresentationControllerBase;
021 import org.kuali.rice.krad.util.KRADConstants;
022 import org.kuali.rice.krad.util.ObjectUtils;
023 import org.kuali.rice.krad.web.form.DocumentFormBase;
024 import org.kuali.rice.krad.web.form.UifFormBase;
025
026 import java.util.HashSet;
027 import java.util.Set;
028
029 /**
030 * Implementation of {@link org.kuali.rice.krad.uif.view.ViewPresentationController} for
031 * {@link org.kuali.rice.krad.uif.view.DocumentView} instances
032 *
033 * <p>
034 * Adds flags for various document actions like save, route, cancel
035 * </p>
036 *
037 * <p>
038 * By default delegates to the {@link DocumentPresentationController} configured for the document in the data dictionary
039 * </p>
040 *
041 * @author Kuali Rice Team (rice.collab@kuali.org)
042 */
043 public class DocumentViewPresentationControllerBase extends ViewPresentationControllerBase implements DocumentPresentationController {
044 private static final long serialVersionUID = 1461173145806477758L;
045
046 private DocumentPresentationController documentPresentationController;
047
048 @Override
049 public Set<String> getActionFlags(View view, UifFormBase model) {
050 Set<String> documentActions = new HashSet<String>();
051
052 Document document = ((DocumentFormBase) model).getDocument();
053
054 if (canEdit(document)) {
055 documentActions.add(KRADConstants.KUALI_ACTION_CAN_EDIT);
056 }
057
058 if (canAnnotate(document)) {
059 documentActions.add(KRADConstants.KUALI_ACTION_CAN_ANNOTATE);
060 }
061
062 if (canClose(document)) {
063 documentActions.add(KRADConstants.KUALI_ACTION_CAN_CLOSE);
064 }
065
066 if (canSave(document)) {
067 documentActions.add(KRADConstants.KUALI_ACTION_CAN_SAVE);
068 }
069
070 if (canRoute(document)) {
071 documentActions.add(KRADConstants.KUALI_ACTION_CAN_ROUTE);
072 }
073
074 if (canCancel(document)) {
075 documentActions.add(KRADConstants.KUALI_ACTION_CAN_CANCEL);
076 }
077
078 if (canReload(document)) {
079 documentActions.add(KRADConstants.KUALI_ACTION_CAN_RELOAD);
080 }
081
082 if (canCopy(document)) {
083 documentActions.add(KRADConstants.KUALI_ACTION_CAN_COPY);
084 }
085
086 if (canPerformRouteReport(document)) {
087 documentActions.add(KRADConstants.KUALI_ACTION_PERFORM_ROUTE_REPORT);
088 }
089
090 if (canAddAdhocRequests(document)) {
091 documentActions.add(KRADConstants.KUALI_ACTION_CAN_ADD_ADHOC_REQUESTS);
092 }
093
094 if (canBlanketApprove(document)) {
095 documentActions.add(KRADConstants.KUALI_ACTION_CAN_BLANKET_APPROVE);
096 }
097
098 if (canApprove(document)) {
099 documentActions.add(KRADConstants.KUALI_ACTION_CAN_APPROVE);
100 }
101
102 if (canDisapprove(document)) {
103 documentActions.add(KRADConstants.KUALI_ACTION_CAN_DISAPPROVE);
104 }
105
106 if (canSendAdhocRequests(document)) {
107 documentActions.add(KRADConstants.KUALI_ACTION_CAN_SEND_ADHOC_REQUESTS);
108 }
109
110 if (canSendNoteFyi(document)) {
111 documentActions.add(KRADConstants.KUALI_ACTION_CAN_SEND_NOTE_FYI);
112 }
113
114 if (this.canEditDocumentOverview(document)) {
115 documentActions.add(KRADConstants.KUALI_ACTION_CAN_EDIT_DOCUMENT_OVERVIEW);
116 }
117
118 if (canFyi(document)) {
119 documentActions.add(KRADConstants.KUALI_ACTION_CAN_FYI);
120 }
121
122 if (canAcknowledge(document)) {
123 documentActions.add(KRADConstants.KUALI_ACTION_CAN_ACKNOWLEDGE);
124 }
125
126 if (canComplete(document)) {
127 documentActions.add(KRADConstants.KUALI_ACTION_CAN_COMPLETE);
128 }
129
130 return documentActions;
131 }
132
133 public boolean canInitiate(String documentTypeName) {
134 return getDocumentPresentationController().canInitiate(documentTypeName);
135 }
136
137 public boolean canEdit(Document document) {
138 return getDocumentPresentationController().canEdit(document);
139 }
140
141 /**
142 * Verify the document can be edited in addition to the view
143 */
144 @Override
145 public boolean canEditView(View view, ViewModel model) {
146 DocumentFormBase documentForm = (DocumentFormBase) model;
147
148 return super.canEditView(view, model) && canEdit(documentForm.getDocument());
149 }
150
151 public boolean canAnnotate(Document document) {
152 return getDocumentPresentationController().canAnnotate(document);
153 }
154
155 public boolean canReload(Document document) {
156 return getDocumentPresentationController().canReload(document);
157 }
158
159 public boolean canClose(Document document) {
160 return getDocumentPresentationController().canClose(document);
161 }
162
163 public boolean canSave(Document document) {
164 return getDocumentPresentationController().canSave(document);
165 }
166
167 public boolean canRoute(Document document) {
168 return getDocumentPresentationController().canRoute(document);
169 }
170
171 public boolean canCancel(Document document) {
172 return getDocumentPresentationController().canEdit(document);
173 }
174
175 public boolean canRecall(Document document) {
176 return getDocumentPresentationController().canRecall(document);
177 }
178
179 public boolean canCopy(Document document) {
180 return getDocumentPresentationController().canCopy(document);
181 }
182
183 public boolean canPerformRouteReport(Document document) {
184 return getDocumentPresentationController().canPerformRouteReport(document);
185 }
186
187 public boolean canAddAdhocRequests(Document document) {
188 return getDocumentPresentationController().canAddAdhocRequests(document);
189 }
190
191 public boolean canBlanketApprove(Document document) {
192 return getDocumentPresentationController().canBlanketApprove(document);
193 }
194
195 public boolean canApprove(Document document) {
196 return getDocumentPresentationController().canApprove(document);
197 }
198
199 public boolean canDisapprove(Document document) {
200 return getDocumentPresentationController().canDisapprove(document);
201 }
202
203 public boolean canSendAdhocRequests(Document document) {
204 return getDocumentPresentationController().canSendAdhocRequests(document);
205 }
206
207 public boolean canSendNoteFyi(Document document) {
208 return getDocumentPresentationController().canSendNoteFyi(document);
209 }
210
211 public boolean canEditDocumentOverview(Document document) {
212 return getDocumentPresentationController().canEditDocumentOverview(document);
213 }
214
215 public boolean canFyi(Document document) {
216 return getDocumentPresentationController().canFyi(document);
217 }
218
219 public boolean canAcknowledge(Document document) {
220 return getDocumentPresentationController().canAcknowledge(document);
221 }
222
223 public boolean canComplete(Document document) {
224 return getDocumentPresentationController().canComplete(document);
225 }
226
227 public DocumentPresentationController getDocumentPresentationController() {
228 return documentPresentationController;
229 }
230
231 public void setDocumentPresentationController(DocumentPresentationController documentPresentationController) {
232 this.documentPresentationController = documentPresentationController;
233 }
234
235 public void setDocumentPresentationControllerClass(
236 Class<? extends DocumentPresentationController> documentPresentationControllerClass) {
237 this.documentPresentationController = ObjectUtils.newInstance(documentPresentationControllerClass);
238 }
239 }