package domain; import utility.robot_exceptions.ExceptionStorage; import utility.robot_exceptions.RobotException; import utility.robot_exceptions.robotExceptions; public class C3PO extends Robot { public C3PO(int id, String name){ super(id, name, RobotType.C3PO); } //returns the sorted list as String with the delimiter ';' @Override public String speak(int[] input) throws RobotException { if(isPowerOn()){ try{ return output(input, ";"); }catch(RobotException re){ return re.toString(); } }else{ RobotException robotException = new RobotException(robotExceptions.ILLEGALSTATE, getName()); this.exceptions = new ExceptionStorage(robotException); throw robotException; } } /** * Sorts any given array of integers with the insertion Sort algorithm. * @param input int [ ] * @return input int [ ] (sorted) * @throws RobotException */ public int[] insertionSort(int[] input) throws RobotException { if (checkArray(input)) { for (int i = 1; i < input.length; i++) { int b = i - 1; int key = input[i]; while (b >= 0 && input[b] > key) input[b + 1] = input[b--]; input[b + 1] = key; } return input; }else{ RobotException robotexception = new RobotException(robotExceptions.MAGICVALUE, getName()); this.exceptions = new ExceptionStorage(robotexception); throw robotexception; } } //Sorting then returning the input arr with insertion Sort @Override public int[] think(int[] input) throws RobotException { if(isPowerOn()){ return insertionSort(input); }else{ RobotException robotException = new RobotException(robotExceptions.ILLEGALSTATE, getName()); this.exceptions = new ExceptionStorage(robotException); throw robotException; } } }