diff --git a/src/de/tud/kom/p2psim/impl/topology/movement/modularosm/attraction/ConfigDynamicAttractionGenerator.java b/src/de/tud/kom/p2psim/impl/topology/movement/modularosm/attraction/ConfigDynamicAttractionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..ba1292edabe0162d24d4ed12900a7afa79ff0059 --- /dev/null +++ b/src/de/tud/kom/p2psim/impl/topology/movement/modularosm/attraction/ConfigDynamicAttractionGenerator.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2005-2010 KOM – Multimedia Communications Lab + * + * This file is part of PeerfactSim.KOM. + * + * PeerfactSim.KOM is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * PeerfactSim.KOM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with PeerfactSim.KOM. If not, see . + * + */ + +package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction; + +import java.util.LinkedList; +import java.util.List; +import java.util.Random; +import de.tud.kom.p2psim.api.scenario.ConfigurationException; +import de.tud.kom.p2psim.api.topology.Topology; +import de.tud.kom.p2psim.impl.topology.util.PositionVector; +import de.tudarmstadt.maki.simonstrator.api.Binder; +import de.tudarmstadt.maki.simonstrator.api.Event; +import de.tudarmstadt.maki.simonstrator.api.EventHandler; +import de.tudarmstadt.maki.simonstrator.api.Randoms; +import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.AttractionPoint; +import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor; + +/** + * Implementation of the interface {@link AttractionGenerator}. + * + + * @author Julian Zobel + * @version 1.0, April 2019 + */ +public class ConfigDynamicAttractionGenerator implements IAttractionGenerator { + + private LinkedList allAPs = new LinkedList<>(); + + @Override + public List getAttractionPoints() { + return attractionPoints; + } + + + + public void setAttractionPoint(TemporalAttractionPoint ap) { + allAPs.add(ap); + + Event.scheduleWithDelay(ap.getPlacementTime(), new EventHandler() { + @Override + public void eventOccurred(Object content, int type) { + placeAP(ap); + } + }, null, 0); + } + + private void placeAP(TemporalAttractionPoint ap) { + attractionPoints.add(ap); + + + Event.scheduleWithDelay(ap.getRemovalTime(), new EventHandler() { + @Override + public void eventOccurred(Object content, int type) { + removeAP(ap); + } + }, null, 0); + } + + private void removeAP(TemporalAttractionPoint ap) { + attractionPoints.remove(ap); + } + + +} diff --git a/src/de/tud/kom/p2psim/impl/topology/movement/modularosm/attraction/TemporalAttractionPoint.java b/src/de/tud/kom/p2psim/impl/topology/movement/modularosm/attraction/TemporalAttractionPoint.java new file mode 100644 index 0000000000000000000000000000000000000000..1dd32902c8e772e6ea759edd21d540850559ad81 --- /dev/null +++ b/src/de/tud/kom/p2psim/impl/topology/movement/modularosm/attraction/TemporalAttractionPoint.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2005-2010 KOM – Multimedia Communications Lab + * + * This file is part of PeerfactSim.KOM. + * + * PeerfactSim.KOM is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * PeerfactSim.KOM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with PeerfactSim.KOM. If not, see . + * + */ + +package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction; + +import de.tud.kom.p2psim.impl.topology.util.PositionVector; +import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor; + +public class TemporalAttractionPoint extends BasicAttractionPoint { + + private long placementTime; + private long removalTime; + + @XMLConfigurableConstructor({"name", "x", "y", "radius", "weight", "placementTime", "removalTime" }) + public TemporalAttractionPoint(String name, double x, double y, double radius, double weight, long placementTime, long removalTime) { + this(name, new PositionVector(x,y), radius, weight, placementTime, removalTime); + } + + public TemporalAttractionPoint(String name, PositionVector pos, double radius, double weight, long placementTime, long removalTime) { + super(name, pos); + setWeight(weight); + setRadius(radius); + + this.placementTime = placementTime; + this.removalTime = removalTime; + } + + public long getPlacementTime() { + return placementTime; + } + + public long getRemovalTime() { + return removalTime; + } + +}