From ca78d26fd2c1809b98cc3e9c385a009c5cd92d3f Mon Sep 17 00:00:00 2001 From: Nathan Hutcheson Date: Sat, 17 Nov 2012 18:55:35 -0700 Subject: [PATCH] Moved crappy check from InputValidator to individual menu options so I don't have to mess with the Validator every time I add a menu option --- resources/cliOutput.properties | 2 +- .../budgetboss/app/BudgetBoss.java | 2 +- .../budgetboss/budget/Budget.java | 2 +- .../budgetboss/cli/InputValidator.java | 40 ++++++------ .../budgetboss/cli/Printer.java | 2 +- .../budgetboss/fileops/Opener.java | 18 +++--- .../budgetboss/fileops/Salvation.java | 6 +- .../budgetboss/fileops/TheCreator.java | 2 +- .../budgetboss/menu/EditorMenu.java | 17 +++-- .../budgetboss/menu/MainMenu.java | 63 +++++++++++++------ .../budgetboss/menu/MasterMenu.java | 2 +- 11 files changed, 89 insertions(+), 67 deletions(-) diff --git a/resources/cliOutput.properties b/resources/cliOutput.properties index 52b511a..4011586 100644 --- a/resources/cliOutput.properties +++ b/resources/cliOutput.properties @@ -41,4 +41,4 @@ newNameOption = Edit budget name newStartOption = Edit budget start date newEndOption = Edit budget end date toMainOption = Return to Main Menu -dateNotSet = You haven't set that date yet! Better get on it. \ No newline at end of file +dateNotSet = You haven't set this date yet! Better get on it. \ No newline at end of file diff --git a/src/com/visionarysoftwaresolutions/budgetboss/app/BudgetBoss.java b/src/com/visionarysoftwaresolutions/budgetboss/app/BudgetBoss.java index 553f589..4bdafdd 100644 --- a/src/com/visionarysoftwaresolutions/budgetboss/app/BudgetBoss.java +++ b/src/com/visionarysoftwaresolutions/budgetboss/app/BudgetBoss.java @@ -61,7 +61,7 @@ public static void main(String args[]){ String currentUser = System.getProperty("user.name"); defaultDirectory = "/home/" + currentUser + "/Documents/"; mainMenu = new MainMenu(currentBudget); - Printer.printPrompt("welcome"); + Printer.print("welcome"); Listener.getInput(); while (stillUsingBudgetBoss){ diff --git a/src/com/visionarysoftwaresolutions/budgetboss/budget/Budget.java b/src/com/visionarysoftwaresolutions/budgetboss/budget/Budget.java index d0cb5eb..de9632c 100644 --- a/src/com/visionarysoftwaresolutions/budgetboss/budget/Budget.java +++ b/src/com/visionarysoftwaresolutions/budgetboss/budget/Budget.java @@ -61,7 +61,7 @@ public void setEndDate(String newDate) { public String toString(){ - return ("\nBudget name: " + getName() + "\nBudget start: " + getStartDate() + + return ("\nBudget Name: " + getName() + "\nBudget Start: " + getStartDate() + "\nBudget End: " + getEndDate() + "\n"); } diff --git a/src/com/visionarysoftwaresolutions/budgetboss/cli/InputValidator.java b/src/com/visionarysoftwaresolutions/budgetboss/cli/InputValidator.java index 31631f3..2bd0228 100644 --- a/src/com/visionarysoftwaresolutions/budgetboss/cli/InputValidator.java +++ b/src/com/visionarysoftwaresolutions/budgetboss/cli/InputValidator.java @@ -14,7 +14,7 @@ public boolean inputNotAnInteger(String toCheck){ try{ Integer.parseInt(toCheck); }catch(NumberFormatException e){ - Printer.printPrompt("notEvenANumberGenius"); + Printer.print("notEvenANumberGenius"); return true; } return false; @@ -31,16 +31,16 @@ public boolean pathIsInvalid(String toCheck){ return false; } if(toCheck.contains(" ")){ - Printer.printPrompt("whitespaceGenius"); + Printer.print("whitespaceGenius"); System.out.println("The default is: " + BudgetBoss.getDefaultDirectory()); return true; } if(!toCheck.endsWith("/")){ - Printer.printPrompt("endsInSlash"); + Printer.print("endsInSlash"); System.out.println("The default is: " + BudgetBoss.getDefaultDirectory()); return true; }else{ - Printer.printPrompt("badPathInput"); + Printer.print("badPathInput"); System.out.println("The default is: " + BudgetBoss.getDefaultDirectory()); return true; } @@ -52,12 +52,12 @@ public boolean inputNotABudget(String toCheck, int highestChoice){ if(inputNotAnInteger(toCheck)) return true; if(Integer.valueOf(toCheck).equals(0)){ - Printer.printPrompt("youreAZero"); + Printer.print("youreAZero"); return true; } int userChoice = Integer.valueOf(toCheck); if(userChoice > highestChoice){ - Printer.printPrompt("thatsNotAChoice"); + Printer.print("thatsNotAChoice"); return true; } else @@ -70,16 +70,12 @@ public boolean menuChoiceIsInvalid(String toCheck, MasterMenu menu){ if(inputNotAnInteger(toCheck)) return true; int userChoice = Integer.valueOf(toCheck); - if(BudgetBoss.getCurrentBudget().equals("No budget loaded") && ((userChoice < 5))){ - Printer.printPrompt("noBudgetLoaded"); - return true; - } if(Integer.valueOf(toCheck).equals(0)){ - Printer.printPrompt("youreAZero"); + Printer.print("youreAZero"); return true; } if(userChoice > menu.getNumberOfOptions()){ - Printer.printPrompt("thatsNotAChoice"); + Printer.print("thatsNotAChoice"); return true; } else @@ -90,24 +86,24 @@ public boolean dateIsInvalid(String toCheck){ if(itsTimeToExit(toCheck)) return false; if(!toCheck.contains("/")){ - Printer.printPrompt("wrongDateFormat"); + Printer.print("wrongDateFormat"); return true; } if(toCheck.contains(" ")){ - Printer.printPrompt("wrongDateFormat"); + Printer.print("wrongDateFormat"); return true; } String delimiter = "/"; String[] date = toCheck.split(delimiter); if(!(date.length == 3)){ - Printer.printPrompt("wrongDateFormat"); + Printer.print("wrongDateFormat"); return true; } for(int i = 0; i < 3; i++){ try{ Integer.parseInt(date[i]); }catch(NumberFormatException e){ - Printer.printPrompt("lessLettersPorFavor"); + Printer.print("lessLettersPorFavor"); return true; } } @@ -115,33 +111,33 @@ public boolean dateIsInvalid(String toCheck){ int day = Integer.valueOf(date[1].toString()); int year = Integer.valueOf(date[2].toString()); if((month < 1) || (month > 12)){ - Printer.printPrompt("notAMonth"); + Printer.print("notAMonth"); return true; } if((month == 4) || (month == 6) || (month == 9) || (month == 11)){ if((day < 1) || (day > 30)){ - Printer.printPrompt("notADay"); + Printer.print("notADay"); return true; } }else if(month == 2){ if((day == 29)){ - Printer.printPrompt("dontBeASmartass"); + Printer.print("dontBeASmartass"); return true; } if((day < 1) || (day > 28)){ - Printer.printPrompt("notADay"); + Printer.print("notADay"); return true; } }else{ if((day < 1) || (day > 31)){ - Printer.printPrompt("notADay"); + Printer.print("notADay"); return true; } } DateTime timeNow = new DateTime(); int currentYear = timeNow.getYear(); if(year < currentYear){ - Printer.printPrompt("backToTheFuture"); + Printer.print("backToTheFuture"); return true; }else return false; diff --git a/src/com/visionarysoftwaresolutions/budgetboss/cli/Printer.java b/src/com/visionarysoftwaresolutions/budgetboss/cli/Printer.java index e040bd6..f87e03a 100644 --- a/src/com/visionarysoftwaresolutions/budgetboss/cli/Printer.java +++ b/src/com/visionarysoftwaresolutions/budgetboss/cli/Printer.java @@ -13,7 +13,7 @@ public static String getPrintout(String toGet){ return cliOutput.getString(toGet); } - public static void printPrompt(String toGet){ + public static void print(String toGet){ System.out.println(cliOutput.getString(toGet)); } diff --git a/src/com/visionarysoftwaresolutions/budgetboss/fileops/Opener.java b/src/com/visionarysoftwaresolutions/budgetboss/fileops/Opener.java index 48fecf4..9feb3c6 100644 --- a/src/com/visionarysoftwaresolutions/budgetboss/fileops/Opener.java +++ b/src/com/visionarysoftwaresolutions/budgetboss/fileops/Opener.java @@ -10,9 +10,9 @@ public class Opener { InputValidator validator = new InputValidator(); public void loadFromDirectory(){ - Printer.printPrompt("savedInDefault"); + Printer.print("savedInDefault"); System.out.println(BudgetBoss.getDefaultDirectory()); - Printer.printPrompt("whereSaved"); + Printer.print("whereSaved"); String toCheck = Listener.getInput(); while(validator.pathIsInvalid(toCheck)) toCheck = Listener.getInput(); @@ -25,18 +25,18 @@ public void loadFromDirectory(){ } private void searchDirectory(String directoryToSearch){ - Printer.printPrompt("searchingDirectory"); + Printer.print("searchingDirectory"); File [] foundBudgets = Finder.findBudgets(directoryToSearch); if(foundBudgets.length > 0){ selectBudget(foundBudgets); BudgetBoss.setDefaultDirectory(directoryToSearch); }else - Printer.printPrompt("noBudgetFound"); + Printer.print("noBudgetFound"); } private void selectBudget(File[] foundBudgets){ Printer.printFoundBudgets(foundBudgets); - Printer.printPrompt("openBudget"); + Printer.print("openBudget"); int index = getNumberToOpen(foundBudgets); if(!(index == -5)){ System.out.println("Opening " + foundBudgets[index].getName() + "...\n"); @@ -63,25 +63,25 @@ private Budget loadBudget(int index, File[] foundBudgets){ try { newBudget = new FileInputStream(foundBudgets[index].toString()); } catch (FileNotFoundException e) { - Printer.printPrompt("wTF"); + Printer.print("wTF"); System.out.println("Error making the FileInputStream"); } try { toLoad = new ObjectInputStream(newBudget); } catch (IOException e) { - Printer.printPrompt("wTF"); + Printer.print("wTF"); System.out.println("Error making the ObjectInputStream"); } try { loadedBudget = toLoad.readObject(); } catch (ClassNotFoundException | IOException e) { - Printer.printPrompt("wTF"); + Printer.print("wTF"); System.out.println("IO exception, maybe the file is bad?"); } try { toLoad.close(); } catch (IOException e) { - Printer.printPrompt("wTF"); + Printer.print("wTF"); System.out.println("Couldn't close the Object/File input streams."); } BudgetBoss.endLoadSavedBudget(); diff --git a/src/com/visionarysoftwaresolutions/budgetboss/fileops/Salvation.java b/src/com/visionarysoftwaresolutions/budgetboss/fileops/Salvation.java index ca32ef3..b68654b 100644 --- a/src/com/visionarysoftwaresolutions/budgetboss/fileops/Salvation.java +++ b/src/com/visionarysoftwaresolutions/budgetboss/fileops/Salvation.java @@ -11,7 +11,7 @@ public class Salvation { InputValidator validator = new InputValidator(); private String getSaveDirectory(){ - Printer.printPrompt("getSaveDirectoryPath"); + Printer.print("getSaveDirectoryPath"); System.out.println("The default is: " + BudgetBoss.getDefaultDirectory()); String toCheck = Listener.getInput(); while(validator.pathIsInvalid(toCheck)) @@ -33,7 +33,7 @@ public void writeBudgetToDisk(String fileName, Budget budget){ ObjectOutputStream saveOutput = new ObjectOutputStream(saveFile); saveOutput.writeObject(budget); saveOutput.close(); - Printer.printPrompt("budgetSaved"); + Printer.print("budgetSaved"); BudgetBoss.setDefaultDirectory(pathToSalvation); }catch(Exception ex){ ex.printStackTrace(); @@ -48,7 +48,7 @@ public void writeBudgetToText(String fileName, Budget budget){ PrintStream budgetToText = new PrintStream(new FileOutputStream(pathToSalvation + fileName + ".txt")); budgetToText.println(budget.toString()); budgetToText.close(); - Printer.printPrompt("budgetSaved"); + Printer.print("budgetSaved"); BudgetBoss.setDefaultDirectory(pathToSalvation); } catch (FileNotFoundException e) { System.out.println("Rethink this son"); diff --git a/src/com/visionarysoftwaresolutions/budgetboss/fileops/TheCreator.java b/src/com/visionarysoftwaresolutions/budgetboss/fileops/TheCreator.java index 956bc50..c8a6f72 100644 --- a/src/com/visionarysoftwaresolutions/budgetboss/fileops/TheCreator.java +++ b/src/com/visionarysoftwaresolutions/budgetboss/fileops/TheCreator.java @@ -7,7 +7,7 @@ public class TheCreator { public void createBudget(){ - Printer.printPrompt("getBudgetName"); + Printer.print("getBudgetName"); String desiredName = Listener.getInput(); if(!(desiredName.equals("exit"))){ System.out.println("Creating budget " + desiredName + "...\n"); diff --git a/src/com/visionarysoftwaresolutions/budgetboss/menu/EditorMenu.java b/src/com/visionarysoftwaresolutions/budgetboss/menu/EditorMenu.java index 23d2aa5..fdbc417 100644 --- a/src/com/visionarysoftwaresolutions/budgetboss/menu/EditorMenu.java +++ b/src/com/visionarysoftwaresolutions/budgetboss/menu/EditorMenu.java @@ -11,7 +11,6 @@ public class EditorMenu implements MasterMenu{ private Budget toEdit; - private int currentMenuChoice; private boolean stillEditing = true; private InputValidator validator = new InputValidator(); @@ -50,7 +49,7 @@ public int getNumberOfOptions() { public void displayMenu(){ AnsiConsole.out.println(ansi().eraseScreen()); - Printer.printPrompt("editorMenuHeader"); + Printer.print("editorMenuHeader"); System.out.println("Working with budget: " + toEdit.getName() + "\n"); Printer.printMenuOptions(menuOptions); InputValidator validator = new InputValidator(); @@ -58,8 +57,8 @@ public void displayMenu(){ while(validator.menuChoiceIsInvalid(userInput, this)) userInput = Listener.getInput(); if(!(userInput.equals("exit"))){ - currentMenuChoice = Integer.valueOf(userInput); - chooseOption(); + int optionChose = Integer.valueOf(userInput); + chooseOption(optionChose); }else stillEditing = false; } @@ -70,7 +69,7 @@ private void choseToSaveText(){ } private void getNewName(){ - Printer.printPrompt("getNewName"); + Printer.print("getNewName"); String userInput = Listener.getInput(); if(!(userInput.equals("exit"))) toEdit.setName(userInput); @@ -83,7 +82,7 @@ private void getNewName(){ } private void getNewStartDate(){ - Printer.printPrompt("getNewStartDate"); + Printer.print("getNewStartDate"); String userInput = Listener.getInput(); while(validator.dateIsInvalid(userInput)) userInput = Listener.getInput(); @@ -92,7 +91,7 @@ private void getNewStartDate(){ } private void getNewEndDate(){ - Printer.printPrompt("getNewEndDate"); + Printer.print("getNewEndDate"); String userInput = Listener.getInput(); while(validator.dateIsInvalid(userInput)) userInput = Listener.getInput(); @@ -100,8 +99,8 @@ private void getNewEndDate(){ toEdit.setEndDate(userInput); } - public void chooseOption(){ - int index = (currentMenuChoice -1); + public void chooseOption(int optionChose){ + int index = (optionChose - 1); menuOptions[index].optionMethod(); } } diff --git a/src/com/visionarysoftwaresolutions/budgetboss/menu/MainMenu.java b/src/com/visionarysoftwaresolutions/budgetboss/menu/MainMenu.java index 96ce513..63899ac 100644 --- a/src/com/visionarysoftwaresolutions/budgetboss/menu/MainMenu.java +++ b/src/com/visionarysoftwaresolutions/budgetboss/menu/MainMenu.java @@ -12,7 +12,6 @@ public class MainMenu implements MasterMenu { private Budget currentBudget; - private int currentMenuChoice; public MainMenu(Budget currentBudget){ this.currentBudget = currentBudget; @@ -20,7 +19,7 @@ public MainMenu(Budget currentBudget){ private MasterOption[] menuOptions = new MasterOption[]{ new MasterOption(){String optionPrintout = Printer.getPrintout("toConsoleOption"); - public void optionMethod() {System.out.println(currentBudget.toString());} + public void optionMethod() {choseToPrintText();} public String printOption(){return optionPrintout;}}, new MasterOption(){String optionPrintout = Printer.getPrintout("toTextOption"); public void optionMethod() {choseToSaveText();} @@ -44,37 +43,65 @@ public MainMenu(Budget currentBudget){ public void displayMenu(){ AnsiConsole.out.println(ansi().eraseScreen()); - Printer.printPrompt("mainMenuHeader"); + Printer.print("mainMenuHeader"); System.out.println("Working with budget: " + currentBudget.getName() + "\n"); Printer.printMenuOptions(menuOptions); + getOption(this); + } + + public int getNumberOfOptions(){ + return menuOptions.length; + } + + private void getOption(MasterMenu menu){ InputValidator validator = new InputValidator(); String userInput = Listener.getInput(); - while(validator.menuChoiceIsInvalid(userInput, this)) + while (validator.menuChoiceIsInvalid(userInput, menu)) userInput = Listener.getInput(); - if(!(userInput.equals("exit"))){ - currentMenuChoice = Integer.valueOf(userInput); - chooseOption(); + if(!(userInput.equalsIgnoreCase("exit"))){ + int optionChose = Integer.valueOf(userInput); + chooseOption(optionChose); } } - public int getNumberOfOptions(){ - return menuOptions.length; + private void choseToPrintText(){ + if(!(currentBudget.getName().equals("No budget loaded"))){ + System.out.println(currentBudget.toString()); + }else { + Printer.print("noBudgetLoaded"); + getOption(this); + } } private void choseToSaveText(){ - Salvation savior = new Salvation(); - savior.writeBudgetToText(currentBudget.getName(), currentBudget); + if(!(currentBudget.getName().equals("No budget loaded"))){ + Salvation savior = new Salvation(); + savior.writeBudgetToText(currentBudget.getName(), currentBudget); + }else{ + Printer.print("noBudgetLoaded"); + getOption(this); + } } private void startEditor(){ - EditorMenu editor = new EditorMenu(currentBudget); - while(editor.stillEditingBudget()) - editor.displayMenu(); + if(!(currentBudget.getName().equals("No budget loaded"))){ + EditorMenu editor = new EditorMenu(currentBudget); + while(editor.stillEditingBudget()) + editor.displayMenu(); + }else{ + Printer.print("noBudgetLoaded"); + getOption(this); + } } private void choseToSave(){ - Salvation savior = new Salvation(); - savior.writeBudgetToDisk(currentBudget.getName(), currentBudget); + if(!(currentBudget.getName().equals("No budget loaded"))){ + Salvation savior = new Salvation(); + savior.writeBudgetToDisk(currentBudget.getName(), currentBudget); + }else{ + Printer.print("noBudgetLoaded"); + getOption(this); + } } private void choseToOpen(){ @@ -93,8 +120,8 @@ private void choseToClose(){ BudgetBoss.endNeedNewBudget(); } - public void chooseOption(){ - int index = (currentMenuChoice -1); + public void chooseOption(int optionChose){ + int index = (optionChose -1); menuOptions[index].optionMethod(); } } \ No newline at end of file diff --git a/src/com/visionarysoftwaresolutions/budgetboss/menu/MasterMenu.java b/src/com/visionarysoftwaresolutions/budgetboss/menu/MasterMenu.java index 1137296..882272e 100644 --- a/src/com/visionarysoftwaresolutions/budgetboss/menu/MasterMenu.java +++ b/src/com/visionarysoftwaresolutions/budgetboss/menu/MasterMenu.java @@ -4,7 +4,7 @@ public interface MasterMenu { public int getNumberOfOptions(); - public void chooseOption(); + public void chooseOption(int optionChose); public void displayMenu();