Commit 3adb58bf authored by Björn Richerzhagen's avatar Björn Richerzhagen
Browse files

Fixed NPE when using the AttractionPoint-API

parent 8b84112a
...@@ -180,6 +180,12 @@ public class ModularMovementModel implements MovementModel, EventHandler { ...@@ -180,6 +180,12 @@ public class ModularMovementModel implements MovementModel, EventHandler {
public AttractionPoint getTargetLocation(SimLocationActuator actuator) { public AttractionPoint getTargetLocation(SimLocationActuator actuator) {
return transition.getAssignments().get(actuator); return transition.getAssignments().get(actuator);
} }
@Override
public Set<AttractionPoint> getAllAttractionPoints()
throws UnsupportedOperationException {
return transition.getAllAttractionPoints();
}
private void checkConfiguration() { private void checkConfiguration() {
if (localMovementStrategy == null) { if (localMovementStrategy == null) {
......
...@@ -20,11 +20,14 @@ ...@@ -20,11 +20,14 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm.transition; package de.tud.kom.p2psim.impl.topology.movement.modularosm.transition;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import de.tud.kom.p2psim.api.common.SimHost; import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.common.SimHostComponent; import de.tud.kom.p2psim.api.common.SimHostComponent;
...@@ -43,7 +46,7 @@ public class FixedAssignmentStrategy implements ITransitionStrategy { ...@@ -43,7 +46,7 @@ public class FixedAssignmentStrategy implements ITransitionStrategy {
private List<SimLocationActuator> comps = new LinkedList<SimLocationActuator>(); private List<SimLocationActuator> comps = new LinkedList<SimLocationActuator>();
private List<AttractionPoint> aPoints = new LinkedList<AttractionPoint>(); private LinkedHashSet<AttractionPoint> aPoints = new LinkedHashSet<AttractionPoint>();
private Map<SimLocationActuator, AttractionPoint> assignments = new LinkedHashMap<SimLocationActuator, AttractionPoint>(); private Map<SimLocationActuator, AttractionPoint> assignments = new LinkedHashMap<SimLocationActuator, AttractionPoint>();
...@@ -61,12 +64,12 @@ public class FixedAssignmentStrategy implements ITransitionStrategy { ...@@ -61,12 +64,12 @@ public class FixedAssignmentStrategy implements ITransitionStrategy {
} }
@Override @Override
public void setAttractionPoints(List<AttractionPoint> attractionPoints) { public void setAttractionPoints(Collection<AttractionPoint> attractionPoints) {
aPoints.addAll(attractionPoints); aPoints.addAll(attractionPoints);
} }
@Override @Override
public List<AttractionPoint> getAllAttractionPoints() { public Set<AttractionPoint> getAllAttractionPoints() {
return aPoints; return aPoints;
} }
......
...@@ -20,8 +20,10 @@ ...@@ -20,8 +20,10 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm.transition; package de.tud.kom.p2psim.impl.topology.movement.modularosm.transition;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator; import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator;
import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.AttractionPoint; import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.AttractionPoint;
...@@ -46,13 +48,13 @@ public interface ITransitionStrategy { ...@@ -46,13 +48,13 @@ public interface ITransitionStrategy {
* *
* @param attractionPoints * @param attractionPoints
*/ */
public void setAttractionPoints(List<AttractionPoint> attractionPoints); public void setAttractionPoints(Collection<AttractionPoint> attractionPoints);
/** /**
* Return a list of all attraction points * Return a set of all attraction points
* @return * @return
*/ */
public List<AttractionPoint> getAllAttractionPoints(); public Set<AttractionPoint> getAllAttractionPoints();
/** /**
* Add the object and assign the MS to an {@link AttractionPoint}. * Add the object and assign the MS to an {@link AttractionPoint}.
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm.transition; package de.tud.kom.p2psim.impl.topology.movement.modularosm.transition;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
...@@ -86,7 +87,7 @@ public class SocialTransitionStrategy ...@@ -86,7 +87,7 @@ public class SocialTransitionStrategy
private List<SimLocationActuator> comps = new Vector<SimLocationActuator>(); private List<SimLocationActuator> comps = new Vector<SimLocationActuator>();
private List<AttractionPoint> aPoints = new Vector<AttractionPoint>(); private LinkedHashSet<AttractionPoint> aPoints = new LinkedHashSet<AttractionPoint>();
private Map<SimLocationActuator, AttractionPoint> assignments = new HashMap<SimLocationActuator, AttractionPoint>(); private Map<SimLocationActuator, AttractionPoint> assignments = new HashMap<SimLocationActuator, AttractionPoint>();
...@@ -154,13 +155,13 @@ public class SocialTransitionStrategy ...@@ -154,13 +155,13 @@ public class SocialTransitionStrategy
} }
@Override @Override
public void setAttractionPoints(List<AttractionPoint> attractionPoints) { public void setAttractionPoints(Collection<AttractionPoint> attractionPoints) {
init(); init();
aPoints.addAll(attractionPoints); aPoints.addAll(attractionPoints);
} }
@Override @Override
public List<AttractionPoint> getAllAttractionPoints() { public Set<AttractionPoint> getAllAttractionPoints() {
return aPoints; return aPoints;
} }
...@@ -323,14 +324,9 @@ public class SocialTransitionStrategy ...@@ -323,14 +324,9 @@ public class SocialTransitionStrategy
private List<AttractionPoint> getRandomPlaces(SimLocationActuator ms, private List<AttractionPoint> getRandomPlaces(SimLocationActuator ms,
int number) { int number) {
Collections.shuffle(aPoints, rand); List<AttractionPoint> result = new Vector<AttractionPoint>(aPoints);
List<AttractionPoint> result = new Vector<AttractionPoint>(); Collections.shuffle(result, rand);
Iterator<AttractionPoint> iAP = aPoints.iterator(); return result.subList(0, Math.min(result.size(), number));
for (int i = 0; i < number && iAP.hasNext(); i++) {
result.add(iAP.next());
}
return result;
} }
private List<AttractionPoint> getClusterPlaces(SimLocationActuator ms) { private List<AttractionPoint> getClusterPlaces(SimLocationActuator ms) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment