my changes

main
Philipp3107 2023-01-09 23:32:30 +01:00
commit 8c4da3be22
19 changed files with 83 additions and 100 deletions

View File

@ -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);

View File

@ -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);
} }
} }

View File

@ -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());

View File

@ -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);

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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);
} }

View File

@ -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");

View File

@ -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;}
}*/
} }

View File

@ -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);
} }