blob: 4c3c36ccfe91c6177dc6aae766b83c067857d976 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ats.util.widgets.dialog;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.util.GUID;
import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinition;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkRuleDefinition;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
/**
* @author Donald G. Dunne
*/
public class TaskResolutionOptionRule extends WorkRuleDefinition {
private final List<TaskResOptionDefinition> options = new ArrayList<TaskResOptionDefinition>();
public static String ATS_TASK_OPTIONS_TAG = "AtsTaskOptions";
public static String WORK_TYPE = "AtsTaskResolutionOptions";
public static List<TaskResOptionDefinition> EMPTY_TASK_RESOLUTION_OPTIONS = new ArrayList<TaskResOptionDefinition>();
public TaskResolutionOptionRule(String name, String id, String value) {
super(name, id, null, WORK_TYPE);
addWorkDataKeyValue(ATS_TASK_OPTIONS_TAG, value);
}
public TaskResolutionOptionRule(Artifact artifact) throws OseeCoreException {
super(artifact);
fromXml(artifact.getSoleAttributeValue(CoreAttributeTypes.WorkParentId, ""));
}
public static List<TaskResOptionDefinition> getTaskResolutionOptions(WorkPageDefinition workPageDefinition) throws OseeCoreException {
TaskResolutionOptionRule taskResolutionOptionRule = getTaskResolutionOptionRule(workPageDefinition);
if (taskResolutionOptionRule != null) {
return taskResolutionOptionRule.getOptions();
}
return EMPTY_TASK_RESOLUTION_OPTIONS;
}
public static TaskResolutionOptionRule getTaskResolutionOptionRule(WorkPageDefinition workPageDefinition) throws OseeCoreException {
List<WorkItemDefinition> wids =
workPageDefinition.getWorkItemDefinitionsByType(TaskResolutionOptionRule.WORK_TYPE);
if (wids.isEmpty()) {
return null;
}
WorkItemDefinition workItemDefinition = wids.iterator().next();
if (workItemDefinition != null) {
TaskResolutionOptionRule taskResolutionOptionRule = new TaskResolutionOptionRule(null, GUID.create(), null);
taskResolutionOptionRule.fromXml(workItemDefinition.getWorkDataValue(ATS_TASK_OPTIONS_TAG));
return taskResolutionOptionRule;
}
return null;
}
public void setFromDoc(Document doc) throws OseeCoreException {
NodeList nodes = doc.getElementsByTagName(TaskResOptionDefinition.ATS_TASK_OPTION_TAG);
if (nodes.getLength() > 0) {
for (int x = 0; x < nodes.getLength(); x++) {
Element element = (Element) nodes.item(x);
TaskResOptionDefinition trd = new TaskResOptionDefinition();
trd.setFromElement(element);
options.add(trd);
}
}
}
public void fromXml(String xmlStr) throws OseeCoreException {
try {
setFromDoc(Jaxp.readXmlDocument(xmlStr));
} catch (Exception ex) {
throw new OseeCoreException(ex);
}
}
public String toXml() throws OseeCoreException {
StringBuffer sb = new StringBuffer();
sb.append("<" + TaskResOptionDefinition.ATS_TASK_OPTION_TAG + ">\n");
for (TaskResOptionDefinition def : options) {
sb.append(def.toXml() + "\n");
}
sb.append("</" + TaskResOptionDefinition.ATS_TASK_OPTION_TAG + ">\n");
return sb.toString();
}
public List<TaskResOptionDefinition> getOptions() {
return options;
}
/**
* Return the order index number of the given option name. Used for comparisons of resolutions like < and > by
* getting both indexes and doing a mathmatical comparison.
*
* @param name
* @return index number (starting at 1) or null if not found
*/
public Integer getResolutionOptionOrderIndex(String name) {
int x = 1;
for (TaskResOptionDefinition option : options) {
if (option.getName().equals(name)) {
return x;
}
x++;
}
return null;
}
}
|