/* * 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.placement; import java.util.LinkedList; import de.tud.kom.p2psim.api.topology.TopologyComponent; import de.tud.kom.p2psim.api.topology.placement.PlacementModel; import de.tud.kom.p2psim.impl.topology.component.BaseTopologyComponent; import de.tud.kom.p2psim.impl.topology.component.UAVTopologyComponent; import de.tud.kom.p2psim.impl.topology.util.PositionVector; public class UAVBasePlacement implements PlacementModel { private static LinkedList uavs = new LinkedList<>(); private static BaseTopologyComponent base; private static double baseX, baseY; private void addComponent(BaseTopologyComponent comp) { if(base == null) { base = comp; } else throw new UnsupportedOperationException("Received second base topology, only one supported!"); } private void addComponent(UAVTopologyComponent comp) { uavs.add(comp); } @Override public PositionVector place(TopologyComponent comp) { PositionVector pos = new PositionVector(baseX, baseY, 0); return pos; } @Override public void addComponent(TopologyComponent comp) { if(comp instanceof BaseTopologyComponent) { this.addComponent((BaseTopologyComponent)comp); } else if(comp instanceof UAVTopologyComponent) { this.addComponent((UAVTopologyComponent)comp); } else { throw new UnsupportedOperationException("UAVBasePlacement received wrong type of topology component!"); } } public void setBaseX(double X) { this.baseX = X; } public void setBaseY(double Y) { this.baseY = Y; } }