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
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;
......@@ -366,7 +366,7 @@ public class ModularMovementModel implements MovementModel, EventHandler, Attrac
* === GETTER AND SETTER FUNCTIONS
* =====================================================================================================
*/
public Set<SimLocationActuator> getAllLocationActuators() {
public LinkedHashSet<SimLocationActuator> getAllLocationActuators() {
return moveableHosts;
}
......
......@@ -20,9 +20,8 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm;
import java.util.LinkedHashMap;
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.topology.Topology;
......@@ -55,7 +54,7 @@ public class SocialGroupMovementModel extends ModularMovementModel {
protected IGroupFormingBehavior groupFormingBehavior;
protected IGroupEncounterBehavior groupEncounterBehavior;
private Set<SimLocationActuator> singleHosts = new LinkedHashSet<SimLocationActuator>();
private LinkedHashSet<SimLocationActuator> singleHosts = new LinkedHashSet<SimLocationActuator>();
private int numberOfSingleHosts;
......@@ -380,11 +379,11 @@ public class SocialGroupMovementModel extends ModularMovementModel {
this.numberOfSingleHosts = numberOfSingleHosts;
}
public Set<SimLocationActuator> getSingleHosts(){
public LinkedHashSet<SimLocationActuator> getSingleHosts(){
return singleHosts;
}
public Map<SimLocationActuator, PositionVector> getCurrentTargets(){
public LinkedHashMap<SimLocationActuator, PositionVector> getCurrentTargets(){
return currentTargets;
}
}
......@@ -40,7 +40,7 @@ public class AbstractAttractionProvider implements IAttractionProvider {
this.worldDimension = Binder.getComponentOrNull(Topology.class).getWorldDimensions();
}
public List<AttractionPoint> getAttractionPoints() {
public LinkedList<AttractionPoint> getAttractionPoints() {
return new LinkedList<AttractionPoint>(attractionPoints);
}
......
......@@ -21,7 +21,6 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction;
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.util.PositionVector;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
......@@ -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.
*/
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 pauseTimeMax = -1;
......@@ -141,6 +140,10 @@ public class AttractionPoint extends BasicAttractionPoint {
@Override
public void setRadius(double radius) {
this.radius = radius;
if(radius > 0) {
this.area = Math.PI * Math.pow(radius, 2);
}
}
@Override
......
......@@ -64,7 +64,7 @@ public class CsvAttractionGenerator extends AbstractAttractionProvider {
}
@Override
public List<AttractionPoint> getAttractionPoints() {
public LinkedList<AttractionPoint> getAttractionPoints() {
if (super.getAttractionPoints().isEmpty()) {
readData();
}
......
......@@ -20,6 +20,7 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction;
import java.util.LinkedList;
import java.util.List;
import de.tud.kom.p2psim.impl.topology.util.PositionVector;
import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor;
......@@ -42,7 +43,7 @@ public class EquidistantSquareAttractionGenerator extends AbstractAttractionProv
}
@Override
public List<AttractionPoint> getAttractionPoints() {
public LinkedList<AttractionPoint> getAttractionPoints() {
if(super.getAttractionPoints().isEmpty())
createAttractionPoints();
......
......@@ -23,6 +23,7 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import org.apache.commons.io.IOUtils;
import org.json.JSONArray;
......@@ -70,7 +71,7 @@ public class JSONAttractionGenerator extends AbstractAttractionProvider {
}
@Override
public List<AttractionPoint> getAttractionPoints() {
public LinkedList<AttractionPoint> getAttractionPoints() {
if(super.getAttractionPoints().size() == 0) {
createAttractionPoints();
}
......
......@@ -75,7 +75,7 @@ public class RandomAttractionGenerator extends AbstractAttractionProvider {
}
@Override
public List<AttractionPoint> getAttractionPoints() {
public LinkedList<AttractionPoint> getAttractionPoints() {
if (!numberOfAPsSet) {
throw new ConfigurationException(
"Number of Attraction Points is not set in RandomAttractionGenerator!");
......@@ -88,7 +88,7 @@ public class RandomAttractionGenerator extends AbstractAttractionProvider {
}
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.
int c = 0;
......
......@@ -65,7 +65,7 @@ public class HostAtAttractionPointCounter {
* @param IAttractionPoint The {@link IAttractionPoint} to be checked.
* @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();
}
......@@ -75,9 +75,9 @@ public class HostAtAttractionPointCounter {
* @param IAttractionPoint The {@link IAttractionPoint} to be checked.
* @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) {
if(isHostInAttractionPointArea(h, attractionPoint)) {
......
......@@ -22,13 +22,8 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups;
import java.util.LinkedHashMap;
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.impl.topology.movement.modularosm.ISocialGroupMovementAnalyzer;
import de.tud.kom.p2psim.impl.util.Tuple;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Time;
/**
......@@ -40,15 +35,15 @@ import de.tudarmstadt.maki.simonstrator.api.Time;
public class MovementGroupContainer {
private static MovementGroupContainer instance;
private Set<SocialMovementGroup> groups;
private LinkedHashSet<SocialMovementGroup> groups;
// Mappings
private Map<SimLocationActuator, Long> leftGroupAtTime;
private Map<SimLocationActuator, Boolean> hasMerged;
private Map<SimLocationActuator, Long> mergedAtTime;
private LinkedHashMap<SimLocationActuator, Long> leftGroupAtTime;
private LinkedHashMap<SimLocationActuator, Boolean> hasMerged;
private LinkedHashMap<SimLocationActuator, Long> mergedAtTime;
// 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() {
groups = new LinkedHashSet<>();
......@@ -282,15 +277,15 @@ public class MovementGroupContainer {
*
* @author Marcel Verst
*/
public Set<SimLocationActuator> getGroupMembers(SimLocationActuator host){
public LinkedHashSet<SimLocationActuator> getGroupMembers(SimLocationActuator host){
return getGroupOfHost(host).getMembers();
}
public Set<SocialMovementGroup> getGroups() {
public LinkedHashSet<SocialMovementGroup> getGroups() {
return groups;
}
public void setGroups(Set<SocialMovementGroup> groups) {
public void setGroups(LinkedHashSet<SocialMovementGroup> groups) {
this.groups = groups;
}
......@@ -307,23 +302,23 @@ public class MovementGroupContainer {
}
}
public void setLeftGroupAtTime(Map<SimLocationActuator, Long> leftGroupAtTime) {
public void setLeftGroupAtTime(LinkedHashMap<SimLocationActuator, Long> leftGroupAtTime) {
this.leftGroupAtTime = leftGroupAtTime;
}
public Map<SimLocationActuator, Boolean> getHasMerged() {
public LinkedHashMap<SimLocationActuator, Boolean> getHasMerged() {
return hasMerged;
}
public void setHasMerged(Map<SimLocationActuator, Boolean> hasMerged) {
public void setHasMerged(LinkedHashMap<SimLocationActuator, Boolean> hasMerged) {
this.hasMerged = hasMerged;
}
public Map<SimLocationActuator, Long> getMergedAtTime() {
public LinkedHashMap<SimLocationActuator, Long> getMergedAtTime() {
return mergedAtTime;
}
public void setMergedAtTime(Map<SimLocationActuator, Long> mergedAtTime) {
public void setMergedAtTime(LinkedHashMap<SimLocationActuator, Long> mergedAtTime) {
this.mergedAtTime = mergedAtTime;
}
}
\ No newline at end of file
......@@ -22,7 +22,6 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups;
import java.util.LinkedHashSet;
import java.util.Random;
import java.util.Set;
import java.util.UUID;
import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator;
......@@ -39,6 +38,7 @@ public class SocialMovementGroup {
public final UUID groupID;
private Random rand = Randoms.getRandom(SocialMovementGroup.class);
private SimLocationActuator leader;
private LinkedHashSet<SimLocationActuator> members;
......@@ -67,7 +67,7 @@ public class SocialMovementGroup {
* @param Set<SimLocationActuator> All participants of the group.
* @param int The ID of the group.
*/
public SocialMovementGroup(Set<SimLocationActuator> participants) {
public SocialMovementGroup(LinkedHashSet<SimLocationActuator> participants) {
this.groupID = UUID.randomUUID();
......@@ -115,8 +115,7 @@ public class SocialMovementGroup {
*/
public SimLocationActuator getRandomMember() {
if(members.size() > 1) {
Random rand = Randoms.getRandom(SocialMovementGroup.class);
if(members.size() > 1) {
int item = rand.nextInt(members.size() - 1);
int i = 0;
......@@ -170,11 +169,11 @@ public class SocialMovementGroup {
return members.size();
}
public Set<SimLocationActuator> getMembers() {
public LinkedHashSet<SimLocationActuator> getMembers() {
return members;
}
public void setMembers(Set<SimLocationActuator> participants) {
public void setMembers(LinkedHashSet<SimLocationActuator> participants) {
this.members = new LinkedHashSet<>(participants);
}
......
......@@ -22,8 +22,6 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.groupencounte
import java.util.LinkedHashSet;
import java.util.Random;
import java.util.Set;
import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.ISocialGroupMovementAnalyzer;
......@@ -100,14 +98,14 @@ public abstract class AbstractGroupEncounter implements IGroupEncounterBehavior
*
* @return
*/
private Set<Pair<SocialMovementGroup>> getEncounteringGroups() {
private LinkedHashSet<Pair<SocialMovementGroup>> getEncounteringGroups() {
if(!enableGroupEncounters)
return null;
Set<Pair<SocialMovementGroup>> encounteringGroups = new LinkedHashSet<>();
Set<SocialMovementGroup> alreadyProcessed = new LinkedHashSet<>();
LinkedHashSet<Pair<SocialMovementGroup>> encounteringGroups = new LinkedHashSet<>();
LinkedHashSet<SocialMovementGroup> alreadyProcessed = new LinkedHashSet<>();
Set<SocialMovementGroup> allGroups = groupCon.getGroups();
LinkedHashSet<SocialMovementGroup> allGroups = groupCon.getGroups();
for(SocialMovementGroup group1 : allGroups) {
for(SocialMovementGroup group2 : allGroups) {
......@@ -148,7 +146,7 @@ public abstract class AbstractGroupEncounter implements IGroupEncounterBehavior
if(!enableGroupEncounters)
return;
Set<Pair<SocialMovementGroup>> encounteringGroups = getEncounteringGroups();
LinkedHashSet<Pair<SocialMovementGroup>> encounteringGroups = getEncounteringGroups();
if(encounteringGroups == null || encounteringGroups.isEmpty()) {
return;
......@@ -269,7 +267,7 @@ public abstract class AbstractGroupEncounter implements IGroupEncounterBehavior
SocialMovementGroup large = getLargerGroup(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) {
small.removeHostFromGroup(participant);
......
......@@ -20,11 +20,9 @@
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.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.
......
......@@ -21,6 +21,7 @@
package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.groupforming;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Random;
import java.util.Set;
......@@ -199,7 +200,7 @@ public abstract class AbstractGroupForming implements IGroupFormingBehavior {
*
* @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);
// force a new attraction point assignment on the leader
......
......@@ -23,12 +23,9 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.groups.groupforming;
import java.util.Collections;
import java.util.LinkedHashSet;
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.local.LocalMovementStrategy;
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.groups.SocialMovementGroup;
import de.tud.kom.p2psim.impl.topology.movement.modularosm.transition.IAttractionAssigmentStrategy;
......@@ -97,12 +94,12 @@ public class DefaultGroupForming extends AbstractGroupForming {
return;
}
Set<SimLocationActuator> hostsAtAttractionPoint = HostAtAttractionPointCounter.getHostsOfAttractionPoint(apCandidate, movementModel.getAllLocationActuators());
LinkedHashSet<SimLocationActuator> hostsAtAttractionPoint = HostAtAttractionPointCounter.getHostsOfAttractionPoint(apCandidate, movementModel.getAllLocationActuators());
int numberOfHostsInAttractionPoint = hostsAtAttractionPoint.size();
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!)
LinkedList<SimLocationActuator> randomShuffledHostsAtAttractionPoint = new LinkedList<>(hostsAtAttractionPoint);
......@@ -169,9 +166,9 @@ public class DefaultGroupForming extends AbstractGroupForming {
LocalMovementStrategy movementStrategy = movementModel.getMovementStrategy();
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) {
SimLocationActuator leader = group.getLeader();
......
......@@ -22,8 +22,6 @@ package de.tud.kom.p2psim.impl.topology.movement.modularosm.transition;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import de.tud.kom.p2psim.api.topology.movement.SimLocationActuator;
......@@ -45,10 +43,10 @@ public abstract class AbstractAttractionBasedAssignmentStrategy implements IAttr
protected IAttractionProvider attractionProvider;
protected Map<SimLocationActuator, IAttractionPoint> assignments = new LinkedHashMap<>();
protected Map<SimLocationActuator, IAttractionPoint> lastAssignments = new LinkedHashMap<>();
protected LinkedHashMap<SimLocationActuator, IAttractionPoint> assignments = 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 defaultPauseTimeMax = 0;
......@@ -141,7 +139,7 @@ public abstract class AbstractAttractionBasedAssignmentStrategy implements IAttr
protected IAttractionPoint getNewAttractionPointAssignment(SimLocationActuator host) {
double score = rnd.nextDouble();
List<IAttractionPoint> candidates = new LinkedList<>();
LinkedList<IAttractionPoint> candidates = new LinkedList<>();
for (IAttractionPoint ap : attractionProvider.getAttractionPoints()) {
// skip null values (should never occur!)
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