source: trunk/autoquest-plugin-usability2/src/main/java/de/ugoe/cs/autoquest/plugin/usability2/rules/operator/wrapper/TaskWrapper.java @ 1326

Last change on this file since 1326 was 1326, checked in by khartmann, 10 years ago

Moved alexanders code into a new plugin project.
First commit of my experimental code (needs a lot of cleanup).

File size: 3.2 KB
Line 
1
2package de.ugoe.cs.autoquest.plugin.usability2.rules.operator.wrapper;
3
4import java.util.ArrayList;
5import java.util.Arrays;
6import java.util.Collection;
7import java.util.Collections;
8import java.util.List;
9
10import de.ugoe.cs.autoquest.tasktrees.treeifc.IMarkingTemporalRelationship;
11import de.ugoe.cs.autoquest.tasktrees.treeifc.IStructuringTemporalRelationship;
12import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask;
13import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance;
14import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskVisitor;
15
16public class TaskWrapper extends AbstractTaskWrapper {
17    /**  */
18    private static final long serialVersionUID = 1L;
19
20    private static final List<ITaskEntry> EMPTY_LIST = Collections.<ITaskEntry> emptyList();
21
22    final ITask value;
23    final ITaskWrapper parent;
24    final List<ITaskEntry> children;
25    final List<ITaskEntry> next;
26
27    public TaskWrapper(ITask value) {
28        this(value, null);
29    }
30
31    public TaskWrapper(ITask value, ITaskWrapper parent) {
32        this(value, parent, EMPTY_LIST);
33    }
34
35    public TaskWrapper(ITask value, ITaskWrapper parent, ITaskEntry next) {
36        this(value, parent, Arrays.asList(next));
37    }
38
39    public TaskWrapper(ITask value, ITaskWrapper parent, List<ITaskEntry> optional) {
40        this.value = value;
41        this.children = new ArrayList<ITaskEntry>(getChildrenCount(value));
42        this.parent = parent;
43        this.next = new ArrayList<ITaskEntry>(optional);
44    }
45
46    @Override
47    public void addChild(ITaskWrapper child) {
48        this.children.add(child);
49    }
50
51    @Override
52    public void addChildren(List<ITaskWrapper> children) {
53        this.children.addAll(children);
54    }
55
56    /**
57     * <p>
58     * Return the number of children the Task has. Sequences and Selections >= 0 Optional and
59     * Iteration = 1 EventTask = 0
60     * </p>
61     *
62     * @param value
63     * @return
64     */
65    private int getChildrenCount(ITask value) {
66        if (value instanceof IStructuringTemporalRelationship) {
67            return ((IStructuringTemporalRelationship) value).getChildren().size();
68        }
69        else if (value instanceof IMarkingTemporalRelationship)
70            return 1;
71        return 0;
72    }
73
74    @Override
75    public List<ITaskEntry> getNext() {
76        return Collections.unmodifiableList(next);
77    }
78
79    @Override
80    public ITask getReference() {
81        return value;
82    }
83
84    @Override
85    public List<ITaskEntry> getChildren() {
86        return Collections.unmodifiableList(children);
87    }
88
89    @Override
90    public ITaskWrapper getParent() {
91        return parent;
92    }
93   
94    // ITask implementation
95   
96    @Override
97    public String toString() {
98        return value.toString();
99    }
100
101    @Override
102    public int getId() {
103        return value.getId();
104    }
105
106    @Override
107    public String getDescription() {
108        return value.getDescription();
109    }
110
111    @Override
112    public Collection<ITaskInstance> getInstances() {
113        return value.getInstances();
114    }
115
116    @Override
117    public boolean equals(ITask task) {
118        return value.equals(task);
119    }
120
121    @Override
122    public void accept(ITaskVisitor visitor) {
123        value.accept(visitor);
124    }
125   
126    @Override
127    public ITask clone() {
128        return super.clone();
129    }
130}
Note: See TracBrowser for help on using the repository browser.