- Timestamp:
- 07/04/13 20:29:50 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/util/dispatching/JoinableCollection.java
r88 r96 2 2 3 3 import java.util.Collections; 4 import java.util.HashMap;5 4 import java.util.HashSet; 6 5 import java.util.Iterator; 7 import java.util.Map;8 6 import java.util.Set; 9 7 10 import com.framsticks.core.Entity;11 8 import com.framsticks.params.annotations.AutoAppendAnnotation; 12 9 import com.framsticks.params.annotations.FramsClassAnnotation; … … 19 16 20 17 protected final Set<T> joinables = new HashSet<T>(); 21 protected final Map<String, T> namedJoinables = new HashMap<>();22 18 23 19 protected boolean finishIfOne; … … 34 30 35 31 @AutoAppendAnnotation 36 public void add(T joinable) { 37 assert isInState(JoinableState.INITILIAZED); 32 public synchronized void add(T joinable) { 33 if (this.state.ordinal() > JoinableState.RUNNING.ordinal()) { 34 throw new FramsticksException().msg("failed to add joinable - collection is passed running state").arg("joinable", joinable).arg("collection", this); 35 } 38 36 39 37 if (joinables.contains(joinable)) { 40 38 throw new FramsticksException().msg("joinable is already observed").arg("joinable", joinable).arg("in", this); 41 39 } 42 // if (observables.containsKey(observable.getName())) { 43 // throw new FramsticksException().msg("observable with given name already exists").arg("name", observable.getName()).arg("in", this); 44 // } 40 joinables.add(joinable); 45 41 46 if (joinable instanceof Entity) { 47 Entity e = (Entity) joinable; 48 if (!namedJoinables.containsKey(e.getName())) { 49 namedJoinables.put(e.getName(), joinable); 50 } 42 if (this.state.equals(JoinableState.RUNNING)) { 43 Dispatching.use(joinable, this); 51 44 } 52 53 joinables.add(joinable);54 45 } 55 46 … … 107 98 public void childChangedState(Joinable joinable, JoinableState state) { 108 99 proceedToState(getNextState()); 109 110 100 } 111 101 … … 129 119 130 120 public T get(String name) { 131 return namedJoinables.get(name); 121 for (T j : joinables) { 122 if (j.getName().equals(name)) { 123 return j; 124 } 125 } 126 return null; 132 127 } 133 128 129 public int size() { 130 return joinables.size(); 131 } 134 132 135 public Map<String, T> getObservables() { 136 return Collections.unmodifiableMap(namedJoinables); 133 public boolean contains(T joinable) { 134 return joinables.contains(joinable); 135 } 136 137 @Override 138 public String getName() { 139 return observableName; 137 140 } 138 141
Note: See TracChangeset
for help on using the changeset viewer.