diff --git a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java index cb10cb8..227fb9f 100644 --- a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java +++ b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java @@ -46,6 +46,12 @@ public class Axel { //? User input for a program command or a position + + /** + * Prompts the user to input a command for the program or a position. + * May be called multiple times, if the input is faulty. + * @return The user inputted position or command as a string. + */ public static String userCommandPositionInput() { System.out.println(); System.out.println("Input a command for the program or a position"); @@ -56,6 +62,14 @@ public class Axel { return userCommandPositionComputation(userCommandPositionInput); } + /** + * First method in the error check chain for the user input for a command or a position. + * This method may call userCommandPositionInput() again, if the input is faulty. + * Checks if the input is empty and if not decides if the input is a command or a position. + * Calls different methods to check for different errors. + * @param userCommandPositionInput The user inputted position or command as a string. + * @return The user inputted position or command as a string. + */ public static String userCommandPositionComputation(String userCommandPositionInput) { if (userCommandPositionInput.isEmpty()) { @@ -86,6 +100,13 @@ public class Axel { return userCommandPositionInput; } + /** + * Checks if the user inputted command is valid. + * Simply checks if the input equals one of the program commands. + * Case does not matter. + * @param CommandToCheck The user inputted command as a string. + * @return true if the command is valid, false otherwise. + */ public static boolean userCommandErrorCheck(String CommandToCheck) { //? true if valid //? valid inputs are: *clear, *exit, *save, *load, *help (and all upper case variants) @@ -97,6 +118,14 @@ public class Axel { return false; } + /** + * Checks if the user inputted position is valid. + * Checks if the input is the right length and if it is in the right format. + * Case does not matter. + * @param positionToCheck The user inputted position as a string. + * @param spr The spreadsheet object. (This input is needed for tests) + * @return true if the position is valid, false otherwise. + */ public static boolean userPositionErrorCheck(String positionToCheck, Spreadsheet spr) { //? true if valid //? valid inputs are: A1, B14, C79, E99, F1, G99, J1, M98, ... (and all lower case variants) @@ -122,6 +151,13 @@ public class Axel { return true; } + /** + * Checks if the user inputted position is in the bounds of the spreadsheet. + * Case does not matter. + * @param positionToCheck The user inputted position as a string. + * @param spr The spreadsheet object. (This input is needed for tests) + * @return true if the position is in the bounds, false otherwise. + */ public static boolean userPositionBoundsErrorCheck(String positionToCheck, Spreadsheet spr) { //? true if valid @@ -136,6 +172,13 @@ public class Axel { //? User input for a value or a formula + + /** + * Prompts the user to input a value or a formula for the selected position. + * May be called multiple times, if the input is faulty. + * @param currentPos The position the user is currently inputting a value or a formula for. + * @return The user inputted value or formula as a string. + */ public static String userValueFormulaInput(String currentPos) { System.out.println(); System.out.printf("Input a value of a formula for the selected position: %s.%n", currentPos); @@ -146,6 +189,15 @@ public class Axel { return userValueFormulaComputation(userCommandInput, currentPos); } + /** + * First method in the error check chain for the user input for a value or a formula. + * This method may call userValueFormulaInput() again, if the input is faulty. + * Checks if the input is empty and if not decides if the input is a value or a formula. + * Calls different methods to check for different errors. + * @param userValueFormulaInput The user inputted value or formula as a string. + * @param currentPos The position the user is currently inputting a value or a formula for. + * @return The user inputted value or formula as a string. + */ public static String userValueFormulaComputation(String userValueFormulaInput, String currentPos) { if (userValueFormulaInput.isEmpty()) { System.out.println("Input is empty!"); @@ -170,6 +222,15 @@ public class Axel { return userValueFormulaInput; } + /** + * Checks if the user inputted formula is a function or expression. + * Removes the '=' at the beginning. + * To decide if a formula is a function, it simply checks if the formula starts with one of the function names. + * Calls different methods to check for different errors. + * Case does not matter. + * @param formulaToCheck The user inputted formula as a string. + * @return true if the formula is valid, false otherwise. + */ public static boolean userFormulaErrorCheck(String formulaToCheck) { //? true if valid //? valid inputs are: =7*6, =SUM(A1:A3), =A1, =A1+A2, =A1-A2, ... (and all lower case variants) @@ -184,6 +245,13 @@ public class Axel { return userFormulaExpressionErrorCheck(formulaToCheck); } + /** + * Checks a function formula for errors. + * Checks if the formula is in the right format and if the cells in the formula are in the bounds of the spreadsheet. + * Checks for some special cases for different functions. + * @param functionToCheck The user inputted formula as a string. + * @return true if the formula is valid, false otherwise. + */ public static boolean userFormulaFunctionErrorCheck(String functionToCheck) { String[] functionCorners = spr.isolateFunctionCorners(functionToCheck); @@ -227,11 +295,23 @@ public class Axel { return true; } + /** + * Checks an expression formula for errors. + * To be done in the future. + * @param expressionToCheck The user inputted expression formula as a string. + * @return true if the formula is valid, false otherwise. + */ public static boolean userFormulaExpressionErrorCheck(String expressionToCheck) { - //TODO ME: Maybe not worth the time + //TODO ME return true; } + /** + * Checks if the user inputted value is valid. + * Checks if the input is a positive or negative integer. + * @param valueToCheck The user inputted value as a string. + * @return true if the value is valid, false otherwise. + */ public static boolean userValueErrorCheck(String valueToCheck) { //? true if valid //? valid inputs are: 7, 1337, 0, , -213,... @@ -246,7 +326,12 @@ public class Axel { return true; } - + /** + * Executes a program command. + * @param command The user inputted command as a string. + * @return Nothing. + * @throws FileNotFoundException If the file to load or save to is not found. + */ public static void executeCommand(String command) throws FileNotFoundException { switch (command) { case "*clear": @@ -267,6 +352,10 @@ public class Axel { } } + /** + * Executes the program command to clear the table. + * @return Nothing. + */ private static void progClear(){ System.out.println("Are you sure you want to clear the table? (yes/no)"); System.out.print("Input: "); @@ -278,17 +367,33 @@ public class Axel { } } + /** + * Executes the program command to load a table from a csv file. + * @return Nothing. + * @throws FileNotFoundException If the file to load is not found. + */ private static void progLoad() throws FileNotFoundException { spr.readCsv(saveFilePath, ",", "Amogus"); System.out.println("File loaded!"); } + /** + * Executes the program command to save the table to a csv file. + * @return Nothing. + * @throws FileNotFoundException If the file to save to is not found. + */ private static void progSave() throws FileNotFoundException { String savePath = saveFilePath; spr.saveCsv(savePath); System.out.println("File saved"); } + /** + * Executes the program command to exit the program and asks the user to save the table. + * Case does not matter. + * @return Nothing. + * @throws FileNotFoundException If the file to save to is not found. + */ private static void progExit() throws FileNotFoundException { System.out.println("Do you want to save befor you exit? (yes/no)"); System.out.print("Input: ");