package tpe.exceptions.roboter; import java.util.HashMap; import tpe.exceptions.RobotException; public class RobotFactory { private Robots nexus6=Nexus6.getInstance(); private String factoryName; private HashMap robotStock=new HashMap<>(); public RobotFactory(String factoryName) { this.factoryName=factoryName; robotStock.put(nexus6.getId(), nexus6); } public int constructRobot(RobotType robotType, String name) { Robots robot; if(RobotType.R2D2==robotType) { robot=new R2D2(name, createIDR2D2(0,9999)); robotStock.put(robot.getId(), robot); return robot.getId(); } else if(RobotType.C3PO==robotType) { robot=new C3PO(name, createIDC3PO(10000, 19999)); robotStock.put(robot.getId(), robot); return robot.getId(); } else return 0; // Müsste hier nicht noch was für den Nexus stehen? } private int createIDR2D2(int minValue, int maxValue) { int randomID = (int) (Math.random()*(maxValue)) ; if(robotStock.containsKey(randomID)) { createIDR2D2(minValue,maxValue); } return randomID; } private int createIDC3PO(int minValue, int maxValue) { int randomID = (int) (Math.random()*(maxValue))+minValue ; if(robotStock.containsKey(randomID)) { createIDC3PO(minValue,maxValue); } return randomID; } public String getFactoryName() { return factoryName; } public Robots getRobot(int id) { return robotStock.get(id); } public boolean triggerPower(int id) { Robots robot=getRobot(id); robot.triggerPowerSwitch(); return robot.powerStatus; } public boolean powerStatus(int id) { Robots robot=getRobot(id); return robot.powerStatus; } public String robotInfo(int id) { Robots robot=getRobot(id); return robot.toString(); } public Robots dismantleRobot(int id) { return robotStock.remove(id); } public RobotException robotBlackbox(int id) { Robots robot=getRobot(id); return robot.getLastException(); } public String robotInstructions(int id, int[]zahlen) throws RobotException { Robots robot=getRobot(id); return robot.speak(robot.think(zahlen)); } public int robotStockSize() { return robotStock.size(); } public boolean containsRobot(int id) { return robotStock.containsKey(id); } }