diff --git a/03/src/de/dis2013/editor/ImmobilienEditor.java b/03/src/de/dis2013/editor/ImmobilienEditor.java index 77a6da4..9e19963 100644 --- a/03/src/de/dis2013/editor/ImmobilienEditor.java +++ b/03/src/de/dis2013/editor/ImmobilienEditor.java @@ -119,37 +119,23 @@ public class ImmobilienEditor { System.out.println("Haus "+h.getStrasse()+" "+h.getHausnummer()+", "+h.getPlz()+" "+h.getOrt()+" wird bearbeitet. Leere Felder bzw. Eingabe von 0 lässt Feld unverändert."); //Neue Daten abfragen - String newOrt = FormUtil.readString("Ort ("+h.getOrt()+")"); - int newPlz = FormUtil.readInt("PLZ ("+h.getPlz()+")"); - String newStrasse = FormUtil.readString("Straße ("+h.getStrasse()+")"); - String newHausNummer = FormUtil.readString("Hausnummer ("+h.getHausnummer()+")"); - int newFlaeche = FormUtil.readInt("Fläche ("+h.getFlaeche()+")"); - int newStockwerke = FormUtil.readInt("Stockwerke ("+h.getStockwerke()+")"); - int newKaufpreis = FormUtil.readInt("Kaufpreis ("+h.getKaufpreis()+")"); - boolean newGarten = FormUtil.readBoolean("Garten ("+(h.isGarten() ? "j" : "n")+")"); + String newOrt = FormUtil.readString("Ort", h.getOrt()); + int newPlz = FormUtil.readInt("PLZ", h.getPlz()); + String newStrasse = FormUtil.readString("Straße", h.getStrasse()); + String newHausNummer = FormUtil.readString("Hausnummer", h.getHausnummer()); + int newFlaeche = FormUtil.readInt("Fläche", h.getFlaeche()); + int newStockwerke = FormUtil.readInt("Stockwerke", h.getStockwerke()); + int newKaufpreis = FormUtil.readInt("Kaufpreis", h.getKaufpreis()); + boolean newGarten = FormUtil.readBoolean("Garten", h.isGarten()); //Neue Daten setzen - if(!newOrt.equals("")) - h.setOrt(newOrt); - - if(!newStrasse.equals("")) - h.setStrasse(newStrasse); - - if(!newHausNummer.equals("")) - h.setHausnummer(newHausNummer); - - if(newPlz != 0) - h.setPlz(newPlz); - - if(newFlaeche != 0) - h.setFlaeche(newFlaeche); - - if(newStockwerke != 0) - h.setStockwerke(newStockwerke); - - if(newKaufpreis != 0) - h.setKaufpreis(newKaufpreis); - + h.setOrt(newOrt); + h.setStrasse(newStrasse); + h.setHausnummer(newHausNummer); + h.setPlz(newPlz); + h.setFlaeche(newFlaeche); + h.setStockwerke(newStockwerke); + h.setKaufpreis(newKaufpreis); h.setGarten(newGarten); service.editHaus(h); @@ -215,38 +201,24 @@ public class ImmobilienEditor { System.out.println("Haus "+w.getStrasse()+" "+w.getHausnummer()+", "+w.getPlz()+" "+w.getOrt()+" wird bearbeitet. Leere Felder bzw. Eingabe von 0 lässt Feld unverändert."); //Neue Daten abfragen - String newOrt = FormUtil.readString("Ort ("+w.getOrt()+")"); - int newPlz = FormUtil.readInt("PLZ ("+w.getPlz()+")"); - String newStrasse = FormUtil.readString("Straße ("+w.getStrasse()+")"); - String newHausNummer = FormUtil.readString("Hausnummer ("+w.getHausnummer()+")"); - int newFlaeche = FormUtil.readInt("Fläche ("+w.getFlaeche()+")"); - int newStockwerk = FormUtil.readInt("Stockwerk ("+w.getStockwerk()+")"); - int newMietpreis = FormUtil.readInt("Mietpreis ("+w.getMietpreis()+")"); - boolean newEbk = FormUtil.readBoolean("EBK ("+(w.isEbk() ? "j" : "n")+")"); - boolean newBalkon = FormUtil.readBoolean("Balkon ("+(w.isBalkon() ? "j" : "n")+")"); + String newOrt = FormUtil.readString("Ort", w.getOrt()); + int newPlz = FormUtil.readInt("PLZ", w.getPlz()); + String newStrasse = FormUtil.readString("Straße", w.getStrasse()); + String newHausNummer = FormUtil.readString("Hausnummer", w.getHausnummer()); + int newFlaeche = FormUtil.readInt("Fläche", w.getFlaeche()); + int newStockwerk = FormUtil.readInt("Stockwerk", w.getStockwerk()); + int newMietpreis = FormUtil.readInt("Mietpreis", w.getMietpreis()); + boolean newEbk = FormUtil.readBoolean("EBK", w.isEbk()); + boolean newBalkon = FormUtil.readBoolean("Balkon", w.isBalkon()); //Neue Daten setzen - if(!newOrt.equals("")) - w.setOrt(newOrt); - - if(!newStrasse.equals("")) - w.setStrasse(newStrasse); - - if(!newHausNummer.equals("")) - w.setHausnummer(newHausNummer); - - if(newPlz != 0) - w.setPlz(newPlz); - - if(newFlaeche != 0) - w.setFlaeche(newFlaeche); - - if(newStockwerk != 0) - w.setStockwerk(newStockwerk); - - if(newMietpreis != 0) - w.setMietpreis(newMietpreis); - + w.setOrt(newOrt); + w.setStrasse(newStrasse); + w.setHausnummer(newHausNummer); + w.setPlz(newPlz); + w.setFlaeche(newFlaeche); + w.setStockwerk(newStockwerk); + w.setMietpreis(newMietpreis); w.setEbk(newEbk); w.setBalkon(newBalkon); service.editWohnung(w); diff --git a/03/src/de/dis2013/editor/MaklerEditor.java b/03/src/de/dis2013/editor/MaklerEditor.java index 235245b..854e6f4 100644 --- a/03/src/de/dis2013/editor/MaklerEditor.java +++ b/03/src/de/dis2013/editor/MaklerEditor.java @@ -85,20 +85,16 @@ public class MaklerEditor { System.out.println("Makler "+m.getName()+" wird bearbeitet. Leere Felder bleiben unverändert."); //Neue Daten abfragen - String new_name = FormUtil.readString("Name ("+m.getName()+")"); - String new_address = FormUtil.readString("Adresse ("+m.getAdresse()+")"); - String new_login = FormUtil.readString("Login ("+m.getLogin()+")"); - String new_password = FormUtil.readString("Passwort ("+m.getPasswort()+")"); + String new_name = FormUtil.readString("Name", m.getName()); + String new_address = FormUtil.readString("Adresse", m.getAdresse()); + String new_login = FormUtil.readString("Login", m.getLogin()); + String new_password = FormUtil.readString("Passwort", m.getPasswort()); //Neue Daten setzen - if(!new_name.equals("")) - m.setName(new_name); - if(!new_address.equals("")) - m.setAdresse(new_address); - if(!new_login.equals("")) - m.setLogin(new_login); - if(!new_password.equals("")) - m.setPasswort(new_password); + m.setName(new_name); + m.setAdresse(new_address); + m.setLogin(new_login); + m.setPasswort(new_password); service.editEstateAgent(m); } diff --git a/03/src/de/dis2013/editor/PersonEditor.java b/03/src/de/dis2013/editor/PersonEditor.java index 4290e83..c3fcd67 100644 --- a/03/src/de/dis2013/editor/PersonEditor.java +++ b/03/src/de/dis2013/editor/PersonEditor.java @@ -84,17 +84,14 @@ public class PersonEditor { System.out.println("Person "+p.getVorname()+" "+p.getNachname()+" wird bearbeitet. Leere Felder bleiben unverändert."); //Neue Daten einlesen - String newVorname = FormUtil.readString("Vorname ("+p.getVorname()+")"); - String newNachname = FormUtil.readString("Nachname ("+p.getNachname()+")"); - String newAddress = FormUtil.readString("Adresse ("+p.getAdresse()+")"); + String newVorname = FormUtil.readString("Vorname", p.getVorname()); + String newNachname = FormUtil.readString("Nachname", p.getNachname()); + String newAddress = FormUtil.readString("Adresse", p.getAdresse()); //Neue Daten setzen - if(!newVorname.equals("")) - p.setVorname(newVorname); - if(!newNachname.equals("")) - p.setNachname(newNachname); - if(!newAddress.equals("")) - p.setAdresse(newAddress); + p.setVorname(newVorname); + p.setNachname(newNachname); + p.setAdresse(newAddress); service.editPerson(p); } } diff --git a/03/src/de/dis2013/util/FormUtil.java b/03/src/de/dis2013/util/FormUtil.java index 95ed6f8..207ca61 100644 --- a/03/src/de/dis2013/util/FormUtil.java +++ b/03/src/de/dis2013/util/FormUtil.java @@ -8,145 +8,220 @@ import java.text.SimpleDateFormat; import java.util.Date; /** - * Kleine Helferklasse zum Einlesen von Formulardaten + * Small helper class for forms. */ public class FormUtil { - /** - * Liest einen String vom standard input ein - * @param label Zeile, die vor der Eingabe gezeigt wird - * @return eingelesene Zeile - */ - public static String readString(String label) { - String ret = null; - BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); - - try { - System.out.print(label+": "); - ret = stdin.readLine(); - } catch (IOException e) { - e.printStackTrace(); - } - - return ret; - } - - /** - * Liest ein Passwort vom standard input ein - * @param label Zeile, die vor der Eingabe gezeigt wird - * @return eingelesene Zeile - */ - public static String readPassword(String label) { - String ret = null; - BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); - - try { - System.out.print(label+": "); - if (System.console() != null) { - ret = String.valueOf(System.console().readPassword()); - } - else { - ret = stdin.readLine(); - } - } catch (IOException e) { - e.printStackTrace(); - } - return ret; - } - - /** - * Zeigt eine Nachricht an und wartet auf Bestätigung des Benutzers - * @param msg Nachricht - */ - public static void showMessage(String msg) { - BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); - - try { - System.out.print(msg); - stdin.readLine(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Liest einen Integer vom standard input ein - * @param label Zeile, die vor der Eingabe gezeigt wird - * @return eingelesener Integer - */ - public static int readInt(String label) { - int ret = 0; - boolean finished = false; - - while(!finished) { - String line = readString(label); - - try { - ret = Integer.parseInt(line); - finished = true; - } catch (NumberFormatException e) { - System.err.println("Ungültige Eingabe: Bitte geben Sie eine Zahl an!"); - } - } - - return ret; - } - - /** - * Liest ein Datum vom standard input im Format dd.MM.yyyy ein - * @param label Zeile, die vor der Eingabe gezeigt wird - * @return eingelesenes Datum - */ - public static Date readDate(String label) { - SimpleDateFormat parser = new SimpleDateFormat("dd.MM.yyyy"); - Date ret = null; - boolean finished = false; - - while(!finished) { - String line = readString(label); - - - - try { - ret = parser.parse(line); - finished = true; - } catch (ParseException e) { - System.err.println("Ungültige Eingabe: Bitte geben Sie ein Datum im Format dd.MM.yyyy an!"); - } - } - - return ret; - } - - /** - * Stellt eine Ja/Nein-Frage und gibt das Ergebnis zurück - * @param label Zeile, die vor der Eingabe gezeigt wird - * @return true, falls ja, false, falls nein - */ - public static boolean readBoolean(String label) { - String line = null; - boolean finished = false; - boolean ret = false; - BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); - - try { - while(!finished) { - System.out.print(label+" [j/n]: "); - line = stdin.readLine().toLowerCase(); - - if(line.equals("j") || line.equals("ja")) { - ret = true; - finished = true; - } else if(line.equals("n") || line.equals("nein")) { - ret = false; - finished = true; - } else { - System.err.println("Bitte geben Sie ja oder nein bzw. j oder n ein!"); - } - } - } catch (IOException e) { - e.printStackTrace(); - } - - return ret; - } + /** + * Reads a string from the console. + * + * @param label + * Label that is shown before the input + * @return read string + */ + public static String readString(String label) { + return readString(label, ""); + } + + /** + * Reads a string from the console. + * + * @param label + * Label that is shown before the input + * @param defaultValue + * the default value in case an empty input is provided + * @return read string + */ + public static String readString(String label, String defaultValue) { + String ret = null; + BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); + + try { + System.out.print(label + (!defaultValue.isEmpty() ? "[" + defaultValue + "]" : "") + ": "); + ret = stdin.readLine(); + ret = ret.isEmpty() ? defaultValue : ret; + } catch (IOException e) { + e.printStackTrace(); + } + + return ret; + } + + /** + * Zeigt eine Nachricht an und wartet auf Bestätigung des Benutzers + * + * @param msg Nachricht + */ + public static void showMessage(String msg) { + BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); + + try { + System.out.print(msg); + stdin.readLine(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Reads a password from the console. + * + * @param label the label shown before the input + * @return the entered password + */ + public static String readPassword(String label) { + String password = ""; + System.out.print(label + ": "); + if (System.console() != null) { + password = String.valueOf(System.console().readPassword()); + } else { + try { + BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); + password = stdin.readLine(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + return password; + } + + /** + * Reads a password from the console. + * + * @param label the label shown before the input + * @param oldPassword the old password + * @return the entered password + */ + public static String readPassword(String label, String oldPassword) { + String password = readPassword(label); + return password.isEmpty() ? oldPassword : password; + } + + /** + * Liest ein Datum vom standard input im Format dd.MM.yyyy ein + * @param label Zeile, die vor der Eingabe gezeigt wird + * @return eingelesenes Datum + */ + public static Date readDate(String label) { + SimpleDateFormat parser = new SimpleDateFormat("dd.MM.yyyy"); + Date ret = null; + boolean finished = false; + + while(!finished) { + String line = readString(label); + + try { + ret = parser.parse(line); + finished = true; + } catch (ParseException e) { + System.err.println("Ungültige Eingabe: Bitte geben Sie ein Datum im Format dd.MM.yyyy an!"); + } + } + + return ret; + } + + /** + * Reads an integer from the console. + * + * @param label + * Label that is shown before the input + * @return read integer + */ + public static int readInt(String label) { + return readInt(label, -1); + } + + /** + * Reads an integer from the console. + * + * @param label + * Label that is shown before the input + * @param defaultValue + * the default value + * @return read integer + */ + public static int readInt(String label, int defaultValue) { + int ret = 0; + boolean finished = false; + String defaultValueStr = defaultValue == -1 ? "" : String.valueOf(defaultValue); + + while (!finished) { + String line = readString(label, defaultValueStr); + + try { + ret = Integer.parseInt(line); + finished = true; + } catch (NumberFormatException e) { + System.err.println("Invalid input: Please insert a valid number!"); + } + } + + return ret; + } + + /** + * Stellt eine Ja/Nein-Frage und gibt das Ergebnis zurück + * + * @param label Zeile, die vor der Eingabe gezeigt wird + * @return true, falls ja, false, falls nein + */ + public static boolean readBoolean(String label) { + label = label + "(j/n)"; + return readBooleanIntern(label, false, false); + } + + /** + * Stellt eine Ja/Nein-Frage und gibt das Ergebnis zurück + * + * @param label Zeile, die vor der Eingabe gezeigt wird + * @param defaultValue der Standardwert + * @return true, falls ja, false, falls nein + */ + public static boolean readBoolean(String label, boolean defaultValue) { + label = label + "(j/n) [" + (defaultValue ? "j" : "n") + "]"; + return readBooleanIntern(label, true, defaultValue); + } + + private static boolean readBooleanIntern(String label, boolean withDefault, boolean defaultValue) { + boolean finished = false; + String line; + boolean ret = false; + BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); + + try { + while(!finished) { + System.out.print(label+": "); + line = stdin.readLine().toLowerCase(); + switch (line) { + case "j": + case "ja": + ret = true; + finished = true; + break; + case "n": + case "nein": + ret = false; + finished = true; + break; + case "": + if (withDefault) { + ret = defaultValue; + finished = true; + } + else { + System.err.println("Bitte geben Sie ja oder nein bzw. j oder n ein!"); + } + break; + default: + System.err.println("Bitte geben Sie ja oder nein bzw. j oder n ein!"); + break; + } + } + } catch (IOException e) { + e.printStackTrace(); + } + + return ret; + } }