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.uif.view;
17
18 import org.kuali.rice.krad.uif.container.CollectionGroup;
19 import org.kuali.rice.krad.uif.container.Group;
20 import org.kuali.rice.krad.uif.element.Action;
21 import org.kuali.rice.krad.uif.field.Field;
22 import org.kuali.rice.krad.uif.widget.Widget;
23 import org.kuali.rice.krad.web.form.UifFormBase;
24
25 import java.util.Set;
26
27 /**
28 * Configured for a <code>View</code> instance to provide conditional authorization logic
29 * based on any variable (view configuration, system parameters, ...) that does
30 * not depend on the current user
31 *
32 * @author Kuali Rice Team (rice.collab@kuali.org)
33 */
34 public interface ViewPresentationController {
35
36 public Set<String> getActionFlags(View view, UifFormBase model);
37
38 public Set<String> getEditModes(View view, UifFormBase model);
39
40 /**
41 * Determines if the the given view and data is allowed to be edited
42 *
43 * @param view - view instance to check whether editing is allowed
44 * @param model - object containing the view data
45 * @return boolean true if editing on the view is allowed, false otherwise
46 */
47 public boolean canEditView(View view, ViewModel model);
48
49 /**
50 * Determines if the given field within the view is allowed to be edited
51 *
52 * @param view - view instance the field belongs to
53 * @param model - object containing the view data
54 * @param field - field instance to determine edit authorization for
55 * @param propertyName - name of the property that field corresponds with (if field is data binding)
56 * @return boolean true if editing on the field is allowed, false otherwise
57 */
58 public boolean canEditField(View view, ViewModel model, Field field, String propertyName);
59
60 /**
61 * Determines if the given field within the view is allowed to be viewed
62 *
63 * @param view - view instance the field belongs to
64 * @param model - object containing the view data
65 * @param field - field instance to determine view authorization for
66 * @param propertyName - name of the property that field corresponds with (if field is data binding)
67 * @return boolean true if viewing of the field is allowed, false otherwise
68 */
69 public boolean canViewField(View view, ViewModel model, Field field, String propertyName);
70
71 /**
72 * Determines if a value is required to be present for the given field (used to indicate in the client the
73 * field must be completed)
74 *
75 * @param view - view instance the field belongs to
76 * @param model - object containing the view data
77 * @param field - field instance to determine required state for
78 * @param propertyName - name of the property that field corresponds with (if field is data binding)
79 * @return boolean true if field is required, false otherwise
80 */
81 public boolean fieldIsRequired(View view, ViewModel model, Field field, String propertyName);
82
83 public boolean canEditGroup(View view, ViewModel model, Group group, String groupId);
84
85 public boolean canViewGroup(View view, ViewModel model, Group group, String groupId);
86
87 public boolean canEditWidget(View view, ViewModel model, Widget widget, String widgetId);
88
89 public boolean canViewWidget(View view, ViewModel model, Widget widget, String widgetId);
90
91 public boolean canPerformAction(View view, ViewModel model, Action action, String actionEvent,
92 String actionId);
93
94 public boolean canEditLine(View view, ViewModel model, CollectionGroup collectionGroup,
95 String collectionPropertyName, Object line);
96
97 public boolean canViewLine(View view, ViewModel model, CollectionGroup collectionGroup,
98 String collectionPropertyName, Object line);
99
100 public boolean canEditLineField(View view, ViewModel model, CollectionGroup collectionGroup,
101 String collectionPropertyName, Object line, Field field, String propertyName);
102
103 public boolean canViewLineField(View view, ViewModel model, CollectionGroup collectionGroup,
104 String collectionPropertyName, Object line, Field field, String propertyName);
105
106 public boolean canPerformLineAction(View view, ViewModel model, CollectionGroup collectionGroup,
107 String collectionPropertyName, Object line, Action action, String actionEvent, String actionId);
108
109 void setRequestAuthorizationCache(RequestAuthorizationCache requestAuthorizationCache);
110
111 }