1 package org.enhydra.shark.xpdl.elements; 2 3 import java.util.ArrayList ; 4 import java.util.Iterator ; 5 6 import org.enhydra.shark.xpdl.XMLCollectionElement; 7 8 13 public class ActivitySet extends XMLCollectionElement { 14 15 protected transient ArrayList startingActivities; 16 protected transient ArrayList 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 it=getActivities().toElements().iterator(); 35 while (it.hasNext()) { 36 Activity act=(Activity)it.next(); 37 ArrayList trsI=act.getIncomingTransitions(); 38 ArrayList trsNEO=act.getNonExceptionalOutgoingTransitions(); 39 if (trsI.size()==0) { 41 startingActivities.add(act); 42 } 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 (); 62 endingActivities=new ArrayList (); 63 super.clearCaches(); 64 } 65 66 public ArrayList getStartingActivities () { 67 if (!isReadOnly) { 68 throw new RuntimeException ("This method can be used only in read-only mode!"); 69 } 70 return startingActivities; 71 } 72 73 public ArrayList getEndingActivities () { 74 if (!isReadOnly) { 75 throw new RuntimeException ("This method can be used only in read-only mode!"); 76 } 77 return endingActivities; 78 } 79 80 public Activity getActivity (String Id) { 81 return getActivities().getActivity(Id); 82 } 83 84 public Transition getTransition (String 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 |