Commit 26bd2c12 authored by Julian Zobel's avatar Julian Zobel
Browse files

Removed all sets and maps, set linkedhashmaps and linkedhashsets explicitly

parent c4eb36b8
...@@ -115,11 +115,11 @@ public class ModularMovementModel implements MovementModel, EventHandler, Attrac ...@@ -115,11 +115,11 @@ public class ModularMovementModel implements MovementModel, EventHandler, Attrac
protected AttractionPointViz attractionPointViz; protected AttractionPointViz attractionPointViz;
protected Set<SimLocationActuator> moveableHosts = new LinkedHashSet<SimLocationActuator>(); protected LinkedHashSet<SimLocationActuator> moveableHosts = new LinkedHashSet<SimLocationActuator>();
protected Map<SimLocationActuator, PositionVector> currentTargets = new LinkedHashMap<>(); protected LinkedHashMap<SimLocationActuator, PositionVector> currentTargets = new LinkedHashMap<>();
protected Map<SimLocationActuator, RouteSensorComponent> routeSensorComponents = new LinkedHashMap<>(); protected LinkedHashMap<SimLocationActuator, RouteSensorComponent> routeSensorComponents = new LinkedHashMap<>();
protected boolean initialized = false; protected boolean initialized = false;
...@@ -366,7 +366,7 @@ public class ModularMovementModel implements MovementModel, EventHandler, Attrac ...@@ -366,7 +366,7 @@ public class ModularMovementModel implements MovementModel, EventHandler, Attrac
* === GETTER AND SETTER FUNCTIONS * === GETTER AND SETTER FUNCTIONS
* ===================================================================================================== * =====================================================================================================
*/ */
public Set<SimLocationActuator> getAllLocationActuators() { public LinkedHashSet<SimLocationActuator> getAllLocationActuators() {
return moveableHosts; return moveableHosts;
} }
......
...@@ -20,9 +20,8 @@ ...@@ -20,9 +20,8 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm; package de.tud.kom.p2psim.impl.topology.movement.modularosm;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import de.tud.kom.p2psim.api.scenario.ConfigurationException; import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.api.topology.Topology; import de.tud.kom.p2psim.api.topology.Topology;
...@@ -55,7 +54,7 @@ public class SocialGroupMovementModel extends ModularMovementModel { ...@@ -55,7 +54,7 @@ public class SocialGroupMovementModel extends ModularMovementModel {
protected IGroupFormingBehavior groupFormingBehavior; protected IGroupFormingBehavior groupFormingBehavior;
protected IGroupEncounterBehavior groupEncounterBehavior; protected IGroupEncounterBehavior groupEncounterBehavior;
private Set<SimLocationActuator> singleHosts = new LinkedHashSet<SimLocationActuator>(); private LinkedHashSet<SimLocationActuator> singleHosts = new LinkedHashSet<SimLocationActuator>();
private int numberOfSingleHosts; private int numberOfSingleHosts;
...@@ -380,11 +379,11 @@ public class SocialGroupMovementModel extends ModularMovementModel { ...@@ -380,11 +379,11 @@ public class SocialGroupMovementModel extends ModularMovementModel {
this.numberOfSingleHosts = numberOfSingleHosts; this.numberOfSingleHosts = numberOfSingleHosts;
} }
public Set<SimLocationActuator> getSingleHosts(){ public LinkedHashSet<SimLocationActuator> getSingleHosts(){
return singleHosts; return singleHosts;
} }
public Map<SimLocationActuator, PositionVector> getCurrentTargets(){ public LinkedHashMap<SimLocationActuator, PositionVector> getCurrentTargets(){
return currentTargets; return currentTargets;
} }
} }
...@@ -40,7 +40,7 @@ public class AbstractAttractionProvider implements IAttractionProvider { ...@@ -40,7 +40,7 @@ public class AbstractAttractionProvider implements IAttractionProvider {
this.worldDimension = Binder.getComponentOrNull(Topology.class).getWorldDimensions(); this.worldDimension = Binder.getComponentOrNull(Topology.class).getWorldDimensions();
} }
public List<AttractionPoint> getAttractionPoints() { public LinkedList<AttractionPoint> getAttractionPoints() {
return new LinkedList<AttractionPoint>(attractionPoints); return new LinkedList<AttractionPoint>(attractionPoints);
} }
......
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction; package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.IAttractionBasedMovementAnalyzer; import de.tud.kom.p2psim.impl.topology.movement.modularosm.IAttractionBasedMovementAnalyzer;
import de.tud.kom.p2psim.impl.topology.util.PositionVector; import de.tud.kom.p2psim.impl.topology.util.PositionVector;
import de.tudarmstadt.maki.simonstrator.api.Monitor; import de.tudarmstadt.maki.simonstrator.api.Monitor;
...@@ -39,7 +38,7 @@ import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor; ...@@ -39,7 +38,7 @@ import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor;
* @version 1.2, 24.01.2020 - added pause time interval, weight, and radius exclusively to this class, because {@link BasicAttractionPoint} should be just a named point. * @version 1.2, 24.01.2020 - added pause time interval, weight, and radius exclusively to this class, because {@link BasicAttractionPoint} should be just a named point.
*/ */
public class AttractionPoint extends BasicAttractionPoint { public class AttractionPoint extends BasicAttractionPoint {
protected static Map<String, AttractionPoint> instances = new LinkedHashMap<>(); protected static LinkedHashMap<String, AttractionPoint> instances = new LinkedHashMap<>();
protected long pauseTimeMin = -1; protected long pauseTimeMin = -1;
protected long pauseTimeMax = -1; protected long pauseTimeMax = -1;
...@@ -141,6 +140,10 @@ public class AttractionPoint extends BasicAttractionPoint { ...@@ -141,6 +140,10 @@ public class AttractionPoint extends BasicAttractionPoint {
@Override @Override
public void setRadius(double radius) { public void setRadius(double radius) {
this.radius = radius; this.radius = radius;
if(radius > 0) {
this.area = Math.PI * Math.pow(radius, 2);
}
} }
@Override @Override
......
...@@ -64,7 +64,7 @@ public class CsvAttractionGenerator extends AbstractAttractionProvider { ...@@ -64,7 +64,7 @@ public class CsvAttractionGenerator extends AbstractAttractionProvider {
} }
@Override @Override
public List<AttractionPoint> getAttractionPoints() { public LinkedList<AttractionPoint> getAttractionPoints() {
if (super.getAttractionPoints().isEmpty()) { if (super.getAttractionPoints().isEmpty()) {
readData(); readData();
} }
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction; package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import de.tud.kom.p2psim.impl.topology.util.PositionVector; import de.tud.kom.p2psim.impl.topology.util.PositionVector;
import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor; import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor;
...@@ -42,7 +43,7 @@ public class EquidistantSquareAttractionGenerator extends AbstractAttractionProv ...@@ -42,7 +43,7 @@ public class EquidistantSquareAttractionGenerator extends AbstractAttractionProv
} }
@Override @Override
public List<AttractionPoint> getAttractionPoints() { public LinkedList<AttractionPoint> getAttractionPoints() {
if(super.getAttractionPoints().isEmpty()) if(super.getAttractionPoints().isEmpty())
createAttractionPoints(); createAttractionPoints();
......
...@@ -23,6 +23,7 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction; ...@@ -23,6 +23,7 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.json.JSONArray; import org.json.JSONArray;
...@@ -70,7 +71,7 @@ public class JSONAttractionGenerator extends AbstractAttractionProvider { ...@@ -70,7 +71,7 @@ public class JSONAttractionGenerator extends AbstractAttractionProvider {
} }
@Override @Override
public List<AttractionPoint> getAttractionPoints() { public LinkedList<AttractionPoint> getAttractionPoints() {
if(super.getAttractionPoints().size() == 0) { if(super.getAttractionPoints().size() == 0) {
createAttractionPoints(); createAttractionPoints();
} }
......
...@@ -75,7 +75,7 @@ public class RandomAttractionGenerator extends AbstractAttractionProvider { ...@@ -75,7 +75,7 @@ public class RandomAttractionGenerator extends AbstractAttractionProvider {
} }
@Override @Override
public List<AttractionPoint> getAttractionPoints() { public LinkedList<AttractionPoint> getAttractionPoints() {
if (!numberOfAPsSet) { if (!numberOfAPsSet) {
throw new ConfigurationException( throw new ConfigurationException(
"Number of Attraction Points is not set in RandomAttractionGenerator!"); "Number of Attraction Points is not set in RandomAttractionGenerator!");
...@@ -88,7 +88,7 @@ public class RandomAttractionGenerator extends AbstractAttractionProvider { ...@@ -88,7 +88,7 @@ public class RandomAttractionGenerator extends AbstractAttractionProvider {
} }
private void createAttractionPoints() { private void createAttractionPoints() {
List<AttractionPoint> result = new LinkedList<AttractionPoint>(); LinkedList<AttractionPoint> result = new LinkedList<AttractionPoint>();
// make a break counter to prevent more than 10 iterations and an infinity loop in general. // make a break counter to prevent more than 10 iterations and an infinity loop in general.
int c = 0; int c = 0;
......
...@@ -65,7 +65,7 @@ public class HostAtAttractionPointCounter { ...@@ -65,7 +65,7 @@ public class HostAtAttractionPointCounter {
* @param IAttractionPoint The {@link IAttractionPoint} to be checked. * @param IAttractionPoint The {@link IAttractionPoint} to be checked.
* @return Integer * @return Integer
*/ */
public static int getHostCountOfAttractionPoint(IAttractionPoint attractionPoint, Set<SimLocationActuator> hostsToConsider) { public static int getHostCountOfAttractionPoint(IAttractionPoint attractionPoint, LinkedHashSet<SimLocationActuator> hostsToConsider) {
return getHostsOfAttractionPoint(attractionPoint, hostsToConsider).size(); return getHostsOfAttractionPoint(attractionPoint, hostsToConsider).size();
} }
...@@ -75,9 +75,9 @@ public class HostAtAttractionPointCounter { ...@@ -75,9 +75,9 @@ public class HostAtAttractionPointCounter {
* @param IAttractionPoint The {@link IAttractionPoint} to be checked. * @param IAttractionPoint The {@link IAttractionPoint} to be checked.
* @return Set<SimLocationActuator> * @return Set<SimLocationActuator>
*/ */
public static Set<SimLocationActuator> getHostsOfAttractionPoint(IAttractionPoint attractionPoint, Set<SimLocationActuator> hostsToConsider) { public static LinkedHashSet<SimLocationActuator> getHostsOfAttractionPoint(IAttractionPoint attractionPoint, Set<SimLocationActuator> hostsToConsider) {
Set<SimLocationActuator> hosts = new LinkedHashSet<SimLocationActuator>(); LinkedHashSet<SimLocationActuator> hosts = new LinkedHashSet<SimLocationActuator>();
for(SimLocationActuator h : hostsToConsider) { for(SimLocationActuator h : hostsToConsider) {
if(isHostInAttractionPointArea(h, attractionPoint)) { if(isHostInAttractionPointArea(h, attractionPoint)) {
......
...@@ -22,13 +22,8 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups; ...@@ -22,13 +22,8 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
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.tud.kom.p2psim.impl.topology.movement.modularosm.ISocialGroupMovementAnalyzer;
import de.tud.kom.p2psim.impl.util.Tuple; import de.tud.kom.p2psim.impl.util.Tuple;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Time; import de.tudarmstadt.maki.simonstrator.api.Time;
/** /**
...@@ -40,15 +35,15 @@ import de.tudarmstadt.maki.simonstrator.api.Time; ...@@ -40,15 +35,15 @@ import de.tudarmstadt.maki.simonstrator.api.Time;
public class MovementGroupContainer { public class MovementGroupContainer {
private static MovementGroupContainer instance; private static MovementGroupContainer instance;
private Set<SocialMovementGroup> groups; private LinkedHashSet<SocialMovementGroup> groups;
// Mappings // Mappings
private Map<SimLocationActuator, Long> leftGroupAtTime; private LinkedHashMap<SimLocationActuator, Long> leftGroupAtTime;
private Map<SimLocationActuator, Boolean> hasMerged; private LinkedHashMap<SimLocationActuator, Boolean> hasMerged;
private Map<SimLocationActuator, Long> mergedAtTime; private LinkedHashMap<SimLocationActuator, Long> mergedAtTime;
// Waiting Groups, used for encounter strategy Wait. Includes remaining waiting time and last update time // Waiting Groups, used for encounter strategy Wait. Includes remaining waiting time and last update time
public Map<SocialMovementGroup, Tuple<Long, Long>> waitingGroups; public LinkedHashMap<SocialMovementGroup, Tuple<Long, Long>> waitingGroups;
private MovementGroupContainer() { private MovementGroupContainer() {
groups = new LinkedHashSet<>(); groups = new LinkedHashSet<>();
...@@ -282,15 +277,15 @@ public class MovementGroupContainer { ...@@ -282,15 +277,15 @@ public class MovementGroupContainer {
* *
* @author Marcel Verst * @author Marcel Verst
*/ */
public Set<SimLocationActuator> getGroupMembers(SimLocationActuator host){ public LinkedHashSet<SimLocationActuator> getGroupMembers(SimLocationActuator host){
return getGroupOfHost(host).getMembers(); return getGroupOfHost(host).getMembers();
} }
public Set<SocialMovementGroup> getGroups() { public LinkedHashSet<SocialMovementGroup> getGroups() {
return groups; return groups;
} }
public void setGroups(Set<SocialMovementGroup> groups) { public void setGroups(LinkedHashSet<SocialMovementGroup> groups) {
this.groups = groups; this.groups = groups;
} }
...@@ -307,23 +302,23 @@ public class MovementGroupContainer { ...@@ -307,23 +302,23 @@ public class MovementGroupContainer {
} }
} }
public void setLeftGroupAtTime(Map<SimLocationActuator, Long> leftGroupAtTime) { public void setLeftGroupAtTime(LinkedHashMap<SimLocationActuator, Long> leftGroupAtTime) {
this.leftGroupAtTime = leftGroupAtTime; this.leftGroupAtTime = leftGroupAtTime;
} }
public Map<SimLocationActuator, Boolean> getHasMerged() { public LinkedHashMap<SimLocationActuator, Boolean> getHasMerged() {
return hasMerged; return hasMerged;
} }
public void setHasMerged(Map<SimLocationActuator, Boolean> hasMerged) { public void setHasMerged(LinkedHashMap<SimLocationActuator, Boolean> hasMerged) {
this.hasMerged = hasMerged; this.hasMerged = hasMerged;
} }
public Map<SimLocationActuator, Long> getMergedAtTime() { public LinkedHashMap<SimLocationActuator, Long> getMergedAtTime() {
return mergedAtTime; return mergedAtTime;
} }
public void setMergedAtTime(Map<SimLocationActuator, Long> mergedAtTime) { public void setMergedAtTime(LinkedHashMap<SimLocationActuator, Long> mergedAtTime) {
this.mergedAtTime = mergedAtTime; this.mergedAtTime = mergedAtTime;
} }
} }
\ No newline at end of file
...@@ -22,7 +22,6 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups; ...@@ -22,7 +22,6 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Random; import java.util.Random;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator; import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator;
...@@ -39,6 +38,7 @@ public class SocialMovementGroup { ...@@ -39,6 +38,7 @@ public class SocialMovementGroup {
public final UUID groupID; public final UUID groupID;
private Random rand = Randoms.getRandom(SocialMovementGroup.class);
private SimLocationActuator leader; private SimLocationActuator leader;
private LinkedHashSet<SimLocationActuator> members; private LinkedHashSet<SimLocationActuator> members;
...@@ -67,7 +67,7 @@ public class SocialMovementGroup { ...@@ -67,7 +67,7 @@ public class SocialMovementGroup {
* @param Set<SimLocationActuator> All participants of the group. * @param Set<SimLocationActuator> All participants of the group.
* @param int The ID of the group. * @param int The ID of the group.
*/ */
public SocialMovementGroup(Set<SimLocationActuator> participants) { public SocialMovementGroup(LinkedHashSet<SimLocationActuator> participants) {
this.groupID = UUID.randomUUID(); this.groupID = UUID.randomUUID();
...@@ -115,8 +115,7 @@ public class SocialMovementGroup { ...@@ -115,8 +115,7 @@ public class SocialMovementGroup {
*/ */
public SimLocationActuator getRandomMember() { public SimLocationActuator getRandomMember() {
if(members.size() > 1) { if(members.size() > 1) {
Random rand = Randoms.getRandom(SocialMovementGroup.class);
int item = rand.nextInt(members.size() - 1); int item = rand.nextInt(members.size() - 1);
int i = 0; int i = 0;
...@@ -170,11 +169,11 @@ public class SocialMovementGroup { ...@@ -170,11 +169,11 @@ public class SocialMovementGroup {
return members.size(); return members.size();
} }
public Set<SimLocationActuator> getMembers() { public LinkedHashSet<SimLocationActuator> getMembers() {
return members; return members;
} }
public void setMembers(Set<SimLocationActuator> participants) { public void setMembers(LinkedHashSet<SimLocationActuator> participants) {
this.members = new LinkedHashSet<>(participants); this.members = new LinkedHashSet<>(participants);
} }
......
...@@ -22,8 +22,6 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.groupencounte ...@@ -22,8 +22,6 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.groupencounte
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Random; import java.util.Random;
import java.util.Set;
import de.tud.kom.p2psim.api.scenario.ConfigurationException; import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator; import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.ISocialGroupMovementAnalyzer; import de.tud.kom.p2psim.impl.topology.movement.modularosm.ISocialGroupMovementAnalyzer;
...@@ -100,14 +98,14 @@ public abstract class AbstractGroupEncounter implements IGroupEncounterBehavior ...@@ -100,14 +98,14 @@ public abstract class AbstractGroupEncounter implements IGroupEncounterBehavior
* *
* @return * @return
*/ */
private Set<Pair<SocialMovementGroup>> getEncounteringGroups() { private LinkedHashSet<Pair<SocialMovementGroup>> getEncounteringGroups() {
if(!enableGroupEncounters) if(!enableGroupEncounters)
return null; return null;
Set<Pair<SocialMovementGroup>> encounteringGroups = new LinkedHashSet<>(); LinkedHashSet<Pair<SocialMovementGroup>> encounteringGroups = new LinkedHashSet<>();
Set<SocialMovementGroup> alreadyProcessed = new LinkedHashSet<>(); LinkedHashSet<SocialMovementGroup> alreadyProcessed = new LinkedHashSet<>();
Set<SocialMovementGroup> allGroups = groupCon.getGroups(); LinkedHashSet<SocialMovementGroup> allGroups = groupCon.getGroups();
for(SocialMovementGroup group1 : allGroups) { for(SocialMovementGroup group1 : allGroups) {
for(SocialMovementGroup group2 : allGroups) { for(SocialMovementGroup group2 : allGroups) {
...@@ -148,7 +146,7 @@ public abstract class AbstractGroupEncounter implements IGroupEncounterBehavior ...@@ -148,7 +146,7 @@ public abstract class AbstractGroupEncounter implements IGroupEncounterBehavior
if(!enableGroupEncounters) if(!enableGroupEncounters)
return; return;
Set<Pair<SocialMovementGroup>> encounteringGroups = getEncounteringGroups(); LinkedHashSet<Pair<SocialMovementGroup>> encounteringGroups = getEncounteringGroups();
if(encounteringGroups == null || encounteringGroups.isEmpty()) { if(encounteringGroups == null || encounteringGroups.isEmpty()) {
return; return;
...@@ -269,7 +267,7 @@ public abstract class AbstractGroupEncounter implements IGroupEncounterBehavior ...@@ -269,7 +267,7 @@ public abstract class AbstractGroupEncounter implements IGroupEncounterBehavior
SocialMovementGroup large = getLargerGroup(group1, group2); SocialMovementGroup large = getLargerGroup(group1, group2);
SocialMovementGroup small = getSmallerGroup(group1, group2); SocialMovementGroup small = getSmallerGroup(group1, group2);
Set<SimLocationActuator> toRemove = new LinkedHashSet<>(small.getMembers()); LinkedHashSet<SimLocationActuator> toRemove = new LinkedHashSet<>(small.getMembers());
for(SimLocationActuator participant : toRemove) { for(SimLocationActuator participant : toRemove) {
small.removeHostFromGroup(participant); small.removeHostFromGroup(participant);
......
...@@ -20,11 +20,9 @@ ...@@ -20,11 +20,9 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.groupencounter; package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.groupencounter;
import java.util.Set;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.SocialGroupMovementModel; import de.tud.kom.p2psim.impl.topology.movement.modularosm.SocialGroupMovementModel;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.SocialMovementGroup; import de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.SocialMovementGroup;
import de.tudarmstadt.maki.simonstrator.api.common.datastructures.Pair;
/** /**
* Handles group encounters. Check group encounters based on the leaders location of {@link SocialMovementGroup}s. * Handles group encounters. Check group encounters based on the leaders location of {@link SocialMovementGroup}s.
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.groupforming; package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.groupforming;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map; import java.util.Map;
import java.util.Random; import java.util.Random;
import java.util.Set; import java.util.Set;
...@@ -199,7 +200,7 @@ public abstract class AbstractGroupForming implements IGroupFormingBehavior { ...@@ -199,7 +200,7 @@ public abstract class AbstractGroupForming implements IGroupFormingBehavior {
* *
* @param Set<SimLocationActuator> The members which want to form a group. * @param Set<SimLocationActuator> The members which want to form a group.
*/ */
protected void createGroup(Set<SimLocationActuator> members) { protected void createGroup(LinkedHashSet<SimLocationActuator> members) {
SocialMovementGroup group = new SocialMovementGroup(members); SocialMovementGroup group = new SocialMovementGroup(members);
// force a new attraction point assignment on the leader // force a new attraction point assignment on the leader
......
...@@ -23,12 +23,9 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.groupforming; ...@@ -23,12 +23,9 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.groupforming;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Set;
import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator; import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator;
import de.tud.kom.p2psim.api.topology.movement.local.LocalMovementStrategy; import de.tud.kom.p2psim.api.topology.movement.local.LocalMovementStrategy;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.ISocialGroupMovementAnalyzer; import de.tud.kom.p2psim.impl.topology.movement.modularosm.ISocialGroupMovementAnalyzer;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction.IAttractionProvider;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction.hostcount.HostAtAttractionPointCounter; import de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction.hostcount.HostAtAttractionPointCounter;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.SocialMovementGroup; import de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.SocialMovementGroup;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.transition.IAttractionAssigmentStrategy; import de.tud.kom.p2psim.impl.topology.movement.modularosm.transition.IAttractionAssigmentStrategy;
...@@ -97,12 +94,12 @@ public class DefaultGroupForming extends AbstractGroupForming { ...@@ -97,12 +94,12 @@ public class DefaultGroupForming extends AbstractGroupForming {
return; return;
} }
Set<SimLocationActuator> hostsAtAttractionPoint = HostAtAttractionPointCounter.getHostsOfAttractionPoint(apCandidate, movementModel.getAllLocationActuators()); LinkedHashSet<SimLocationActuator> hostsAtAttractionPoint = HostAtAttractionPointCounter.getHostsOfAttractionPoint(apCandidate, movementModel.getAllLocationActuators());
int numberOfHostsInAttractionPoint = hostsAtAttractionPoint.size(); int numberOfHostsInAttractionPoint = hostsAtAttractionPoint.size();
int groupSize = this.rndGroupSize(numberOfHostsInAttractionPoint); int groupSize = this.rndGroupSize(numberOfHostsInAttractionPoint);
Set<SimLocationActuator> groupCandidates = new LinkedHashSet<>(); LinkedHashSet<SimLocationActuator> groupCandidates = new LinkedHashSet<>();
// shuffle the hosts at the attraction point (more randomness ftw!) // shuffle the hosts at the attraction point (more randomness ftw!)
LinkedList<SimLocationActuator> randomShuffledHostsAtAttractionPoint = new LinkedList<>(hostsAtAttractionPoint); LinkedList<SimLocationActuator> randomShuffledHostsAtAttractionPoint = new LinkedList<>(hostsAtAttractionPoint);
...@@ -169,9 +166,9 @@ public class DefaultGroupForming extends AbstractGroupForming { ...@@ -169,9 +166,9 @@ public class DefaultGroupForming extends AbstractGroupForming {
LocalMovementStrategy movementStrategy = movementModel.getMovementStrategy(); LocalMovementStrategy movementStrategy = movementModel.getMovementStrategy();
IAttractionAssigmentStrategy transition = movementModel.getAttractionAssignmentStrategy(); IAttractionAssigmentStrategy transition = movementModel.getAttractionAssignmentStrategy();
Set<SocialMovementGroup> groupsToRemove = new LinkedHashSet<>(); LinkedHashSet<SocialMovementGroup> groupsToRemove = new LinkedHashSet<>();
Set<SocialMovementGroup> groups = groupCon.getGroups(); LinkedHashSet<SocialMovementGroup> groups = groupCon.getGroups();
for(SocialMovementGroup group : groups) { for(SocialMovementGroup group : groups) {
SimLocationActuator leader = group.getLeader(); SimLocationActuator leader = group.getLeader();
......
...@@ -22,8 +22,6 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.transition; ...@@ -22,8 +22,6 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.transition;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Random; import java.util.Random;
import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator; import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator;
...@@ -45,10 +43,10 @@ public abstract class AbstractAttractionBasedAssignmentStrategy implements IAttr ...@@ -45,10 +43,10 @@ public abstract class AbstractAttractionBasedAssignmentStrategy implements IAttr
protected IAttractionProvider attractionProvider; protected IAttractionProvider attractionProvider;
protected Map<SimLocationActuator, IAttractionPoint> assignments = new LinkedHashMap<>(); protected LinkedHashMap<SimLocationActuator, IAttractionPoint> assignments = new LinkedHashMap<>();
protected Map<SimLocationActuator, IAttractionPoint> lastAssignments = new LinkedHashMap<>(); protected LinkedHashMap<SimLocationActuator, IAttractionPoint> lastAssignments = new LinkedHashMap<>();
private List<AttractionAssignmentListener> listeners = new LinkedList<>(); private LinkedList<AttractionAssignmentListener> listeners = new LinkedList<>();
protected long defaultPauseTimeMin = 0; protected long defaultPauseTimeMin = 0;
protected long defaultPauseTimeMax = 0; protected long defaultPauseTimeMax = 0;
...@@ -141,7 +139,7 @@ public abstract class AbstractAttractionBasedAssignmentStrategy implements IAttr ...@@ -141,7 +139,7 @@ public abstract class AbstractAttractionBasedAssignmentStrategy implements IAttr
protected IAttractionPoint getNewAttractionPointAssignment(SimLocationActuator host) { protected IAttractionPoint getNewAttractionPointAssignment(SimLocationActuator host) {
double score = rnd.nextDouble(); double score = rnd.nextDouble();
List<IAttractionPoint> candidates = new LinkedList<>(); LinkedList<IAttractionPoint> candidates = new LinkedList<>();
for (IAttractionPoint ap : attractionProvider.getAttractionPoints()) { for (IAttractionPoint ap : attractionProvider.getAttractionPoints()) {
// skip null values (should never occur!) // skip null values (should never occur!)
if(ap == null) { if(ap == null) {
......
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