1 /*
2 * Copyright 2007-2008 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 edu.sampleu.travel.workflow;
17
18 import java.util.ArrayList;
19 import java.util.HashMap;
20 import java.util.List;
21 import java.util.Map;
22
23 import org.kuali.rice.kew.rule.GenericWorkflowAttribute;
24 import org.kuali.rice.kew.rule.WorkflowAttributeValidationError;
25 import org.kuali.rice.kns.web.ui.Field;
26 import org.kuali.rice.kns.web.ui.Row;
27
28 public class DestinationRuleAttribute extends GenericWorkflowAttribute {
29
30 private static final String DEST_LABEL = "Destination";
31 private static final String DEST_FIELD_KEY = "destination";
32
33 private final List<Row> rows = new ArrayList<Row>();
34
35 private String destination;
36
37 public DestinationRuleAttribute() {
38 super("destination");
39 }
40
41 public DestinationRuleAttribute(String destination) {
42 super("destination");
43 this.destination = destination;
44 }
45
46 /*
47 public boolean isMatch(DocumentContent docContent, List<RuleExtension> ruleExtensions) {
48 try {
49 boolean foundDestRule = false;
50 for (Iterator extensionsIterator = ruleExtensions.iterator(); extensionsIterator.hasNext();) {
51 RuleExtension extension = (RuleExtension) extensionsIterator.next();
52 if (extension.getRuleTemplateAttribute().getRuleAttribute().getClassName().equals(getClass().getName())) {
53 for (Iterator valuesIterator = extension.getExtensionValues().iterator(); valuesIterator.hasNext();) {
54 RuleExtensionValue extensionValue = (RuleExtensionValue) valuesIterator.next();
55 String key = extensionValue.getKey();
56 String value = extensionValue.getValue();
57 if (key.equals(DEST_FIELD_KEY)) {
58 destination = value;
59 foundDestRule = true;
60 }
61 }
62 }
63 }
64 if (! foundDestRule) {
65 return false;
66 }
67
68 Element element = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
69 new InputSource(new BufferedReader(new StringReader(docContent.getDocContent())))).getDocumentElement();
70 XPath xpath = XPathFactory.newInstance().newXPath();
71 String docContentDest = xpath.evaluate("//destination", element);
72 return destination.equals(docContentDest);
73 } catch (Exception e) {
74 throw new RuntimeException(e);
75 }
76 }*/
77
78 public List<Row> getRuleRows() {
79 return getRows();
80 }
81
82 public List<Row> getRoutingDataRows() {
83 return getRows();
84 }
85
86 private List<Row> getRows() {
87 log.info("Returning rows: " + rows);
88 List<Field> fields = new ArrayList<Field>();
89 fields.add(new Field(DEST_LABEL, "", Field.TEXT, false, DEST_FIELD_KEY, "", false, false, null, null));
90 List<Row> rows = new ArrayList<Row>();
91 rows.add(new Row(fields));
92 return rows;
93 }
94
95 /* setter for edoclite field */
96 public void setDestination(String destination) {
97 this.destination = destination;
98 }
99
100 public Map<String, String> getProperties() {
101 Map<String, String> props = new HashMap<String, String>();
102 props.put("destination", destination);
103 return props;
104 }
105
106 public List validateRoutingData(Map paramMap) {
107 return validateInputMap(paramMap);
108 }
109
110 public List validateRuleData(Map paramMap) {
111 return validateInputMap(paramMap);
112 }
113
114 private List validateInputMap(Map paramMap) {
115 List errors = new ArrayList();
116 this.destination = (String) paramMap.get(DEST_FIELD_KEY);
117 if (this.destination == null && required) {
118 errors.add(new WorkflowAttributeValidationError(DEST_FIELD_KEY, "Destination is required."));
119 }
120 return errors;
121 }
122 }