RoboterFabrik/Roboter/tpe/exceptions/roboter/RobotFactory.java

98 lines
2.2 KiB
Java

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<Integer,Robots> 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);
}
}