KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > enhydra > shark > xpdl > elements > ActivitySet


1 package org.enhydra.shark.xpdl.elements;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.Iterator JavaDoc;
5
6 import org.enhydra.shark.xpdl.XMLCollectionElement;
7
8 /**
9  * Represents coresponding element from XPDL schema.
10  *
11  * @author Sasa Bojanic
12  */

13 public class ActivitySet extends XMLCollectionElement {
14
15    protected transient ArrayList JavaDoc startingActivities;
16    protected transient ArrayList JavaDoc endingActivities;
17    
18    public ActivitySet (ActivitySets parent) {
19       super (parent, true);
20    }
21
22    protected void fillStructure () {
23       Activities refActivities=new Activities(this);
24       Transitions refTransitions=new Transitions(this);
25
26       super.fillStructure();
27       add(refActivities);
28       add(refTransitions);
29       
30    }
31
32    public void initCaches () {
33       super.initCaches();
34       Iterator JavaDoc it=getActivities().toElements().iterator();
35       while (it.hasNext()) {
36          Activity act=(Activity)it.next();
37          ArrayList JavaDoc trsI=act.getIncomingTransitions();
38          ArrayList JavaDoc trsNEO=act.getNonExceptionalOutgoingTransitions();
39          // the activity is starting one if it has no input transitions ...
40
if (trsI.size()==0) {
41             startingActivities.add(act);
42             // or there is a one input transition, but it is a selfreference
43
} else if (trsI.size()==1) {
44             Transition t=(Transition)trsI.get(0);
45             if (t.getFrom().equals(t.getTo())) {
46                startingActivities.add(act);
47             }
48          }
49          if (trsNEO.size()==0) {
50             endingActivities.add(act);
51          } else if (trsNEO.size()==1) {
52             Transition t=(Transition)trsNEO.get(0);
53             if (t.getFrom().equals(t.getTo())) {
54                endingActivities.add(act);
55             }
56          }
57       }
58    }
59
60    public void clearCaches () {
61       startingActivities=new ArrayList JavaDoc();
62       endingActivities=new ArrayList JavaDoc();
63       super.clearCaches();
64    }
65
66    public ArrayList JavaDoc getStartingActivities () {
67       if (!isReadOnly) {
68          throw new RuntimeException JavaDoc("This method can be used only in read-only mode!");
69       }
70       return startingActivities;
71    }
72
73    public ArrayList JavaDoc getEndingActivities () {
74       if (!isReadOnly) {
75          throw new RuntimeException JavaDoc("This method can be used only in read-only mode!");
76       }
77       return endingActivities;
78    }
79
80    public Activity getActivity (String JavaDoc Id) {
81       return getActivities().getActivity(Id);
82    }
83
84    public Transition getTransition (String JavaDoc Id) {
85       return getTransitions().getTransition(Id);
86    }
87    
88    public Activities getActivities() {
89       return (Activities)get("Activities");
90    }
91    public Transitions getTransitions() {
92       return (Transitions)get("Transitions");
93    }
94 }
95
Popular Tags