my changes
commit
8c4da3be22
|
@ -6,25 +6,15 @@ import utility.robot_exceptions.robotExceptions;
|
||||||
|
|
||||||
public class C3PO extends Robot {
|
public class C3PO extends Robot {
|
||||||
public C3PO(int id, String name){
|
public C3PO(int id, String name){
|
||||||
super(id, name, "C3PO");
|
super(id, name, RobotType.C3PO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//returns the sorted list as String with the delimiter ';'
|
||||||
/* public String ausgabe(int[] input) throws RobotException{
|
|
||||||
if(input.length != 0 && !checkArray(input)){
|
|
||||||
return Arrays.stream(input)
|
|
||||||
.mapToObj(Integer::toString)
|
|
||||||
.collect(Collectors.joining("; "));
|
|
||||||
}else{
|
|
||||||
throw new RobotException(robotExceptions.MAGICVALUE, getName());
|
|
||||||
// throw new RobotMagicValueException(getName() + " has an unknown Error. Code 42.");
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
@Override
|
@Override
|
||||||
public String speak(int[] input) throws RobotException {
|
public String speak(int[] input) throws RobotException {
|
||||||
if(isPowerOn()){
|
if(isPowerOn()){
|
||||||
try{
|
try{
|
||||||
return ausgabe(input, ";");
|
return output(input, ";");
|
||||||
}catch(RobotException re){
|
}catch(RobotException re){
|
||||||
return re.toString();
|
return re.toString();
|
||||||
}
|
}
|
||||||
|
@ -33,18 +23,8 @@ public class C3PO extends Robot {
|
||||||
this.exceptions = new ExceptionStorage(robotException);
|
this.exceptions = new ExceptionStorage(robotException);
|
||||||
throw robotException;
|
throw robotException;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int[] sorting(int[] input) throws RobotException{
|
|
||||||
if(checkArray(input)){
|
|
||||||
return insertionSort(input);
|
|
||||||
}else{
|
|
||||||
throw new RobotException(robotExceptions.MAGICVALUE, getName());
|
|
||||||
//throw new RobotMagicValueException(getName() + " has an unknown error. Code 42");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sorts any given array of integers with the insertion Sort algorithm.
|
* Sorts any given array of integers with the insertion Sort algorithm.
|
||||||
* @param input int [ ]
|
* @param input int [ ]
|
||||||
|
@ -67,12 +47,11 @@ public class C3PO extends Robot {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//Sorting then returning the input arr with insertion Sort
|
||||||
@Override
|
@Override
|
||||||
public int[] think(int[] input) throws RobotException {
|
public int[] think(int[] input) throws RobotException {
|
||||||
//Insertionsort
|
|
||||||
if(isPowerOn()){
|
if(isPowerOn()){
|
||||||
return sorting(input);
|
return insertionSort(input);
|
||||||
}else{
|
}else{
|
||||||
RobotException robotException = new RobotException(robotExceptions.ILLEGALSTATE, getName());
|
RobotException robotException = new RobotException(robotExceptions.ILLEGALSTATE, getName());
|
||||||
this.exceptions = new ExceptionStorage(robotException);
|
this.exceptions = new ExceptionStorage(robotException);
|
||||||
|
|
|
@ -5,6 +5,7 @@ import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class Factory implements Serializable {
|
public class Factory implements Serializable {
|
||||||
|
|
||||||
private HashMap<Integer, Robot> robots = new HashMap<>();
|
private HashMap<Integer, Robot> robots = new HashMap<>();
|
||||||
private int c3poID = 0;
|
private int c3poID = 0;
|
||||||
private int r2d2ID = 10000;
|
private int r2d2ID = 10000;
|
||||||
|
@ -14,25 +15,36 @@ public class Factory implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
//Has to return Collection<Robot>
|
//Has to return Collection<Robot>
|
||||||
public Collection<Robot> getRobotList(){
|
public Collection<Robot> robotListToCollection(){
|
||||||
return robots.values();
|
return robots.values();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean buildNewRobot(String name, int type){
|
//return a String arr with robot attributes
|
||||||
|
public String[] getRobotList() {
|
||||||
|
Collection<Robot> collect = robotListToCollection();
|
||||||
|
String[] list = new String[collect.size()];
|
||||||
|
int i = 0;
|
||||||
|
for(Robot r: collect){
|
||||||
|
list[i++] = r.toString();
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
//creates a new robot
|
||||||
|
public boolean buildNewRobot(String name, int type){
|
||||||
Robot r ;
|
Robot r ;
|
||||||
if(type == 0){
|
if(type == 0) {
|
||||||
r = new R2D2(r2d2ID++, name);
|
r = new R2D2(r2d2ID++, name);
|
||||||
}else if(type == 1){
|
} else if(type == 1) {
|
||||||
r = new C3PO(c3poID++, name);
|
r = new C3PO(c3poID++, name);
|
||||||
}else{
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
robots.put(r.getId(), r);
|
robots.put(r.getId(), r);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
//returns a specific robot via id
|
||||||
public Robot getRobotOfList(int id){
|
public Robot getRobotOfList(int id){
|
||||||
return robots.get(id);
|
return robots.get(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,13 +16,14 @@ public final class Nexus6 extends Robot {
|
||||||
return INSTANCE;
|
return INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//This method always throws an Illegalstate exception
|
||||||
@Override
|
@Override
|
||||||
public String speak(int[] numbers) throws RobotException {
|
public String speak(int[] numbers) throws RobotException {
|
||||||
RobotException e = new RobotException(robotExceptions.ILLEGALSTATE, getName());
|
RobotException e = new RobotException(robotExceptions.ILLEGALSTATE, getName());
|
||||||
this.exceptions = new ExceptionStorage(e);
|
this.exceptions = new ExceptionStorage(e);
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
//This method always throws an Illegalstate exception
|
||||||
@Override
|
@Override
|
||||||
public int[] think(int[] numbers) throws RobotException {
|
public int[] think(int[] numbers) throws RobotException {
|
||||||
RobotException e = new RobotException(robotExceptions.ILLEGALSTATE, getName());
|
RobotException e = new RobotException(robotExceptions.ILLEGALSTATE, getName());
|
||||||
|
|
|
@ -7,18 +7,16 @@ import utility.robot_exceptions.robotExceptions;
|
||||||
|
|
||||||
public class R2D2 extends Robot {
|
public class R2D2 extends Robot {
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @param id> int
|
* @param id> int
|
||||||
* @param name> String
|
* @param name> String
|
||||||
*/
|
*/
|
||||||
public R2D2(int id, String name){
|
public R2D2(int id, String name){
|
||||||
super(id, name, "R2D2");
|
super(id, name, RobotType.R2D2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see utility.interfaces.RobotInstructions
|
* @see utility.interfaces.RobotInstructions
|
||||||
|
* Sorting then returning the input arr with selection sort
|
||||||
*/
|
*/
|
||||||
public int[] think(int[] input) throws RobotException {
|
public int[] think(int[] input) throws RobotException {
|
||||||
if(isPowerOn()){
|
if(isPowerOn()){
|
||||||
|
@ -44,7 +42,6 @@ public class R2D2 extends Robot {
|
||||||
for(int j = i + 1; j < input.length; j++){
|
for(int j = i + 1; j < input.length; j++){
|
||||||
if(input[j] < input[small]){
|
if(input[j] < input[small]){
|
||||||
small = j;
|
small = j;
|
||||||
// System.out.println(small);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int temp = input[i];
|
int temp = input[i];
|
||||||
|
@ -57,17 +54,16 @@ public class R2D2 extends Robot {
|
||||||
this.exceptions = new ExceptionStorage(robotexception);
|
this.exceptions = new ExceptionStorage(robotexception);
|
||||||
throw robotexception;
|
throw robotexception;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see utility.interfaces.RobotInstructions
|
* @see utility.interfaces.RobotInstructions
|
||||||
|
* returns the sorted list as String with the delimiter ','
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String speak(int[] input) throws RobotException {
|
public String speak(int[] input) throws RobotException {
|
||||||
if (isPowerOn()) {
|
if (isPowerOn()) {
|
||||||
return ausgabe(input, ";");
|
return output(input, ",");
|
||||||
} else {
|
} else {
|
||||||
RobotException robotexception = new RobotException(robotExceptions.ILLEGALSTATE, getName());
|
RobotException robotexception = new RobotException(robotExceptions.ILLEGALSTATE, getName());
|
||||||
this.exceptions = new ExceptionStorage(robotexception);
|
this.exceptions = new ExceptionStorage(robotexception);
|
||||||
|
|
|
@ -10,14 +10,18 @@ import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
public abstract class Robot implements utility.interfaces.Robot, Serializable {
|
public abstract class Robot implements utility.interfaces.Robot, Serializable {
|
||||||
|
// ENUMS für Robot Type
|
||||||
|
static enum RobotType {
|
||||||
|
C3PO, R2D2, Nexus6;
|
||||||
|
}
|
||||||
protected ExceptionStorage exceptions;
|
protected ExceptionStorage exceptions;
|
||||||
private int id;
|
private int id;
|
||||||
private final String name;
|
private final String name;
|
||||||
private boolean power;
|
private boolean power;
|
||||||
|
|
||||||
private String type;
|
private RobotType type;
|
||||||
|
|
||||||
public Robot(int id, String name, String type){
|
public Robot(int id, String name, RobotType type){
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.power = false;
|
this.power = false;
|
||||||
|
@ -46,11 +50,7 @@ public abstract class Robot implements utility.interfaces.Robot, Serializable {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void triggerPowerSwitch() {
|
public void triggerPowerSwitch() {
|
||||||
if(power){
|
power = !power;
|
||||||
power = false;
|
|
||||||
}else{
|
|
||||||
power = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -79,6 +79,8 @@ public abstract class Robot implements utility.interfaces.Robot, Serializable {
|
||||||
* @return boolean
|
* @return boolean
|
||||||
* @throws RobotException EMPTYARRAY Exception
|
* @throws RobotException EMPTYARRAY Exception
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Check lists for the forbidden Number 42
|
||||||
public boolean checkArray(int[] input) throws RobotException{
|
public boolean checkArray(int[] input) throws RobotException{
|
||||||
if(input.length != 0){
|
if(input.length != 0){
|
||||||
for(int x: input){
|
for(int x: input){
|
||||||
|
@ -89,11 +91,8 @@ public abstract class Robot implements utility.interfaces.Robot, Serializable {
|
||||||
RobotException robotexception = new RobotException(robotExceptions.EMPTYARRAY, getName());
|
RobotException robotexception = new RobotException(robotExceptions.EMPTYARRAY, getName());
|
||||||
this.exceptions = new ExceptionStorage(robotexception);
|
this.exceptions = new ExceptionStorage(robotexception);
|
||||||
throw robotexception;
|
throw robotexception;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method uses Streams to join any given array to a String.
|
* This method uses Streams to join any given array to a String.
|
||||||
* @param input int [ ]
|
* @param input int [ ]
|
||||||
|
@ -101,7 +100,9 @@ public abstract class Robot implements utility.interfaces.Robot, Serializable {
|
||||||
* @return String (array as String)
|
* @return String (array as String)
|
||||||
* @throws RobotException
|
* @throws RobotException
|
||||||
*/
|
*/
|
||||||
public String ausgabe(int[] input, String delemiter)throws RobotException{
|
|
||||||
|
// Write an array with a delimiter to the command line
|
||||||
|
public String output(int[] input, String delemiter)throws RobotException{
|
||||||
if(checkArray(input)) {
|
if(checkArray(input)) {
|
||||||
return Arrays.stream(input)
|
return Arrays.stream(input)
|
||||||
.mapToObj(Integer::toString)
|
.mapToObj(Integer::toString)
|
||||||
|
@ -112,14 +113,11 @@ public abstract class Robot implements utility.interfaces.Robot, Serializable {
|
||||||
throw robotexception;
|
throw robotexception;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public String getType(){
|
public String getType(){
|
||||||
return this.type;
|
return this.type.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Override the to String method to get a clean looking outcome
|
||||||
@Override
|
@Override
|
||||||
public String toString(){
|
public String toString(){
|
||||||
return "Name: " + name + "; ID: " + id + "; Type: " + type;
|
return "Name: " + name + "; ID: " + id + "; Type: " + type;
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
package domain;
|
||||||
|
|
||||||
|
public enum RobotType {
|
||||||
|
R2D2("R2D2"),
|
||||||
|
C3PO("C3PO"),
|
||||||
|
NEXUS6("Nexus-6");
|
||||||
|
|
||||||
|
private final String type;
|
||||||
|
private RobotType(String type){
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public String toString(){
|
||||||
|
return "Type: " + type;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,8 @@
|
||||||
package facade;
|
package facade;
|
||||||
|
|
||||||
import java.util.Collection;
|
import domain.Factory;
|
||||||
import domain.*;
|
import domain.Robot;
|
||||||
|
|
||||||
import infrastructure.Persistenz;
|
import infrastructure.Persistenz;
|
||||||
|
|
||||||
public class FactorySystem {
|
public class FactorySystem {
|
||||||
|
@ -25,17 +26,12 @@ public class FactorySystem {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//provide robot attributes
|
||||||
public String[] getAllRobots(){
|
public String[] getAllRobots(){
|
||||||
Collection<Robot> robots = factory.getRobotList();
|
return factory.getRobotList();
|
||||||
String[] list = new String[robots.size()];
|
|
||||||
int i = 0;
|
|
||||||
for(Robot r: robots){
|
|
||||||
list[i++] = r.toString();
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
}
|
||||||
|
//Creating a new robot
|
||||||
public boolean buildNewRobot(String name, int type){
|
public boolean buildNewRobot(String name, int type) {
|
||||||
boolean check = factory.buildNewRobot(name, type);
|
boolean check = factory.buildNewRobot(name, type);
|
||||||
if(check) {
|
if(check) {
|
||||||
try {
|
try {
|
||||||
|
@ -46,7 +42,7 @@ public class FactorySystem {
|
||||||
}
|
}
|
||||||
return check;
|
return check;
|
||||||
}
|
}
|
||||||
|
//provides a specific robot
|
||||||
public Robot searchForRobot(int id){
|
public Robot searchForRobot(int id){
|
||||||
return factory.getRobotOfList(id);
|
return factory.getRobotOfList(id);
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
33
ui/UI.java
33
ui/UI.java
|
@ -1,13 +1,10 @@
|
||||||
package ui;
|
package ui;
|
||||||
|
|
||||||
import domain.C3PO;
|
|
||||||
import domain.Nexus6;
|
|
||||||
import domain.R2D2;
|
|
||||||
import domain.Robot;
|
import domain.Robot;
|
||||||
import facade.FactorySystem;
|
import facade.FactorySystem;
|
||||||
import infrastructure.Persistenz;
|
import infrastructure.Persistenz;
|
||||||
|
|
||||||
import java.sql.SQLOutput;
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class UI {
|
public class UI {
|
||||||
|
@ -26,14 +23,13 @@ public class UI {
|
||||||
if(Persistenz.existsSavedData(name)){
|
if(Persistenz.existsSavedData(name)){
|
||||||
try{
|
try{
|
||||||
this.fs = (FactorySystem) Persistenz.loadFactoryData(name);
|
this.fs = (FactorySystem) Persistenz.loadFactoryData(name);
|
||||||
}catch(Exception e){
|
}catch(Exception ignored){
|
||||||
|
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
this.fs = new FactorySystem(name);
|
this.fs = new FactorySystem(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//starting screen
|
||||||
private void hauptmenü() {
|
private void hauptmenü() {
|
||||||
mainloop:
|
mainloop:
|
||||||
while(true){
|
while(true){
|
||||||
|
@ -45,6 +41,7 @@ public class UI {
|
||||||
System.out.println("-3- ------- use robot ------");
|
System.out.println("-3- ------- use robot ------");
|
||||||
System.out.println("-4- --------- Exit ---------");
|
System.out.println("-4- --------- Exit ---------");
|
||||||
System.out.print(" > ");
|
System.out.print(" > ");
|
||||||
|
//User options
|
||||||
try{
|
try{
|
||||||
int input = Integer.parseInt(sc.nextLine());
|
int input = Integer.parseInt(sc.nextLine());
|
||||||
switch(input){
|
switch(input){
|
||||||
|
@ -56,15 +53,13 @@ public class UI {
|
||||||
default:
|
default:
|
||||||
System.out.println("this is an invalid option"); break;
|
System.out.println("this is an invalid option"); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}catch(NumberFormatException e){
|
}catch(NumberFormatException e){
|
||||||
System.out.println("invalid input");
|
System.out.println("invalid input");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println("Good Bye");
|
System.out.println("Good Bye");
|
||||||
}
|
}
|
||||||
|
//display all existing robots
|
||||||
private void listAllRobots(){
|
private void listAllRobots(){
|
||||||
String[] listOfAll = fs.getAllRobots();
|
String[] listOfAll = fs.getAllRobots();
|
||||||
if(listOfAll.length > 0){
|
if(listOfAll.length > 0){
|
||||||
|
@ -75,9 +70,8 @@ public class UI {
|
||||||
}else{
|
}else{
|
||||||
System.out.println("There are no robots yet.");
|
System.out.println("There are no robots yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//create a new robot
|
||||||
private void buildNewRobot(){
|
private void buildNewRobot(){
|
||||||
System.out.println("What shall the name of the robot be?");
|
System.out.println("What shall the name of the robot be?");
|
||||||
System.out.print(" > ");
|
System.out.print(" > ");
|
||||||
|
@ -85,25 +79,24 @@ public class UI {
|
||||||
System.out.println("Which type of robot do u want?");
|
System.out.println("Which type of robot do u want?");
|
||||||
System.out.println(" [0] for R2D2 and [1] for C3PO");
|
System.out.println(" [0] for R2D2 and [1] for C3PO");
|
||||||
System.out.print(" > ");
|
System.out.print(" > ");
|
||||||
|
//user enters which type of robot he wants
|
||||||
int type = Integer.parseInt(sc.nextLine());
|
int type = Integer.parseInt(sc.nextLine());
|
||||||
if(fs.buildNewRobot(name, type)){
|
if(fs.buildNewRobot(name, type)){
|
||||||
switch(type){
|
switch (type) {
|
||||||
case 0:
|
case 0 -> System.out.println("Created new Robot of type R2D2 with the name " + name);
|
||||||
//Created new Robot of type R2D2 with the name
|
case 1 -> System.out.println("Created new Robot of type C3PO with the name " + name);
|
||||||
System.out.println("Created new Robot of type R2D2 with the name " + name );break;
|
|
||||||
case 1:
|
|
||||||
System.out.println("Created new Robot of type C3PO with the name " + name );break;
|
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
System.out.println("Anlegen des Roboters fehlgeschlagen");
|
System.out.println("Anlegen des Roboters fehlgeschlagen");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//let the robots sort
|
||||||
private void useRobot(){
|
private void useRobot(){
|
||||||
System.out.println("Which robot do you want to use?");
|
System.out.println("Which robot do you want to use?");
|
||||||
listAllRobots();
|
listAllRobots();
|
||||||
System.out.print(" ID > ");
|
System.out.print(" ID > ");
|
||||||
int input = Integer.parseInt(sc.nextLine());
|
int input = Integer.parseInt(sc.nextLine());
|
||||||
|
// Change the searchForRobot Methode (safety)
|
||||||
Robot r = fs.searchForRobot(input);
|
Robot r = fs.searchForRobot(input);
|
||||||
System.out.println("You choose " + r.getName() + " of type " + r.getType());
|
System.out.println("You choose " + r.getName() + " of type " + r.getType());
|
||||||
System.out.println("Yout have following options");
|
System.out.println("Yout have following options");
|
||||||
|
|
|
@ -24,13 +24,4 @@ public class ExceptionStorage implements Serializable {
|
||||||
return this.message;
|
return this.message;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*public boolean emptyErrorStorage(){
|
|
||||||
if(this.message != ""){
|
|
||||||
this.message = "";
|
|
||||||
this.date = LocalDateTime.now();
|
|
||||||
return true;
|
|
||||||
}else{return false;}
|
|
||||||
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ public class RobotException extends Exception{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
// länge auffüllen für ebene Liste
|
||||||
public String toString(){
|
public String toString(){
|
||||||
return getMessage(this.currentType, this.name);
|
return getMessage(this.currentType, this.name);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue