001/**
002 * Copyright 2005-2015 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.kew.rule.web;
017
018import org.apache.commons.lang.StringUtils;
019import org.apache.struts.action.ActionErrors;
020import org.apache.struts.action.ActionMapping;
021import org.apache.struts.action.ActionMessage;
022import org.apache.struts.action.ActionMessages;
023import org.kuali.rice.core.api.util.ConcreteKeyValue;
024import org.kuali.rice.core.api.util.KeyValue;
025import org.kuali.rice.kew.doctype.bo.DocumentType;
026import org.kuali.rice.kew.doctype.service.DocumentTypeService;
027import org.kuali.rice.kew.service.KEWServiceLocator;
028import org.kuali.rice.kew.api.KewApiConstants;
029import org.kuali.rice.kns.web.struts.form.KualiForm;
030import org.kuali.rice.kns.web.ui.Row;
031
032import javax.servlet.http.HttpServletRequest;
033import java.util.ArrayList;
034import java.util.HashMap;
035import java.util.List;
036import java.util.Map;
037
038
039/**
040 * Struts ActionForm for the {@link RoutingReportAction}.
041 *
042 * @author Kuali Rice Team (rice.collab@kuali.org)
043 */
044public class RoutingReportForm extends KualiForm {
045
046        private static final long serialVersionUID = 509542372934250061L;
047
048    private String ruleTemplateId;
049    private String lookupableImplServiceName;
050    private String documentType;
051    private String reportType;
052
053    // fields below used for document type report URL
054    private String documentTypeParam;
055    private String initiatorPrincipalId;
056    private String documentContent;
057    private String backUrl;
058    private String showCloseButton;
059
060    private String dateRef;
061    private String effectiveHour;
062    private String effectiveMinute;
063    private String amPm;
064
065    private List ruleTemplates;
066    private List actionRequests;
067    private Map fields;
068
069    /*chb: 15Jan2009
070    ruleTemplateAttributes is set by RoutingReportAction.loadRuleTemplateOnForm(...)
071    */
072    private List<Row> ruleTemplateAttributes;
073    private List attributes;
074
075    private boolean showFields;
076    private boolean showViewResults;
077
078    public RoutingReportForm() {
079        attributes = new ArrayList();
080        ruleTemplates = new ArrayList();
081        actionRequests = new ArrayList();
082        fields = new HashMap();
083        ruleTemplateAttributes = new ArrayList();
084    }
085
086    @Override
087        public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
088
089        ActionErrors errors = new ActionErrors();
090        if (getReportType() != null && getReportType().equals(RoutingReportAction.DOC_TYPE_REPORTING)) {
091            if (!org.apache.commons.lang.StringUtils.isEmpty(getDocumentType())) {
092                DocumentType docType = getDocumentTypeService().findByName(getDocumentType());
093                if (docType == null) {
094                    ActionMessage error = new ActionMessage("routereport.documenttype.invalid");
095                    errors.add(ActionMessages.GLOBAL_MESSAGE, error);
096                }
097            }
098        }
099        return errors;
100    }
101
102    public String getLookupableImplServiceName() {
103        return lookupableImplServiceName;
104    }
105
106    public void setLookupableImplServiceName(String lookupableImplServiceName) {
107        this.lookupableImplServiceName = lookupableImplServiceName;
108    }
109
110    public List<Row> getRuleTemplateAttributes() {
111        return ruleTemplateAttributes;
112    }
113
114    //chb: 15Jan2009 set in RoutingReportAction.loadRuleTemplateOnForm(...)
115    public void setRuleTemplateAttributes(List<Row> ruleTemplateAttributes) {
116        this.ruleTemplateAttributes = ruleTemplateAttributes;
117    }
118
119    public Map getFields() {
120        return fields;
121    }
122
123    public void setFields(Map fields) {
124        this.fields = fields;
125    }
126
127    public List getRuleTemplates() {
128        return ruleTemplates;
129    }
130
131    public void setRuleTemplates(List ruleTemplates) {
132        this.ruleTemplates = ruleTemplates;
133    }
134
135    public List<KeyValue> getHours() {
136        List<KeyValue> hours = new ArrayList<KeyValue>();
137        hours.add(new ConcreteKeyValue("0", "12"));
138        for (int i = 1; i < 12; i++) {
139            hours.add(new ConcreteKeyValue(i + "", i + ""));
140        }
141        return hours;
142    }
143    public List<KeyValue> getMinutes() {
144        List<KeyValue> mins = new ArrayList<KeyValue>();
145        for (int i = 0; i < 60; i++) {
146            mins.add(new ConcreteKeyValue(i + "", ":" + (i < 10 ? "0" : "") + i + ""));
147        }
148        return mins;
149    }
150
151    public String getRuleTemplateId() {
152        return ruleTemplateId;
153    }
154
155    public void setRuleTemplateId(String ruleTemplateId) {
156        this.ruleTemplateId = ruleTemplateId;
157    }
158
159    public List getActionRequests() {
160        return actionRequests;
161    }
162
163    public void setActionRequests(List actionRequests) {
164        this.actionRequests = actionRequests;
165    }
166
167    public void setDocTypeFullName(String documentType) {
168        this.documentType = documentType;
169    }
170
171    public void setDocTypeGroupName(String docTypeGroupName) {
172        this.documentType = docTypeGroupName;
173    }
174
175    public String getDocumentType() {
176        return documentType;
177    }
178
179    public void setDocumentType(String documentType) {
180        this.documentType = documentType;
181    }
182
183    public List getAttributes() {
184        return attributes;
185    }
186
187    public void setAttributes(List attributes) {
188        this.attributes = attributes;
189    }
190
191    public String getReportType() {
192        return reportType;
193    }
194
195    public void setReportType(String reportType) {
196        this.reportType = reportType;
197    }
198
199    public boolean isShowFields() {
200        return showFields;
201    }
202
203    public void setShowFields(boolean showFields) {
204        this.showFields = showFields;
205    }
206
207    public boolean isShowViewResults() {
208        return showViewResults;
209    }
210
211    public void setShowViewResults(boolean showViewResults) {
212        this.showViewResults = showViewResults;
213    }
214
215    private DocumentTypeService getDocumentTypeService() {
216        return (DocumentTypeService) KEWServiceLocator.getService(KEWServiceLocator.DOCUMENT_TYPE_SERVICE);
217    }
218
219    public String getDateRef() {
220        return dateRef;
221    }
222
223    public void setDateRef(String dateRef) {
224        this.dateRef = dateRef;
225    }
226
227    public String getEffectiveHour() {
228        return effectiveHour;
229    }
230
231    public void setEffectiveHour(String effectiveHour) {
232        this.effectiveHour = effectiveHour;
233    }
234
235    public String getEffectiveMinute() {
236        return effectiveMinute;
237    }
238
239    public void setEffectiveMinute(String effectiveMinute) {
240        this.effectiveMinute = effectiveMinute;
241    }
242
243    public String getAmPm() {
244        return amPm;
245    }
246
247    public void setAmPm(String amPm) {
248        this.amPm = amPm;
249    }
250
251    public String getDocumentContent() {
252        return documentContent;
253    }
254
255    public void setDocumentContent(String documentContent) {
256        this.documentContent = documentContent;
257    }
258
259    public String getInitiatorPrincipalId() {
260        return initiatorPrincipalId;
261    }
262
263    public void setInitiatorPrincipalId(String initiatorNetworkId) {
264        this.initiatorPrincipalId = initiatorNetworkId;
265    }
266
267    public String getBackUrl() {
268        if (StringUtils.isBlank(backUrl)) {
269            return null;
270        }
271        return backUrl;
272    }
273
274    public void setBackUrl(String backUrl) {
275        this.backUrl = backUrl;
276    }
277
278    public boolean isDisplayCloseButton() {
279        return (KewApiConstants.DISPLAY_CLOSE_BUTTON_TRUE_VALUE.equals(getShowCloseButton()));
280    }
281
282    public String getShowCloseButton() {
283        return showCloseButton;
284    }
285
286    public void setShowCloseButton(String showCloseButton) {
287        this.showCloseButton = showCloseButton;
288    }
289
290    public String getDocumentTypeParam() {
291        return documentTypeParam;
292    }
293
294    public void setDocumentTypeParam(String documentTypeParam) {
295        this.documentTypeParam = documentTypeParam;
296        this.documentType = documentTypeParam;
297    }
298
299}