Reintroduced default values the proper way

Signed-off-by: Jim Martens <github@2martens.de>
This commit is contained in:
Jim Martens 2017-05-03 16:25:07 +02:00
parent 9a6146002c
commit 596c9677f2
4 changed files with 259 additions and 219 deletions

View File

@ -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."); 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 //Neue Daten abfragen
String newOrt = FormUtil.readString("Ort ("+h.getOrt()+")"); String newOrt = FormUtil.readString("Ort", h.getOrt());
int newPlz = FormUtil.readInt("PLZ ("+h.getPlz()+")"); int newPlz = FormUtil.readInt("PLZ", h.getPlz());
String newStrasse = FormUtil.readString("Straße ("+h.getStrasse()+")"); String newStrasse = FormUtil.readString("Straße", h.getStrasse());
String newHausNummer = FormUtil.readString("Hausnummer ("+h.getHausnummer()+")"); String newHausNummer = FormUtil.readString("Hausnummer", h.getHausnummer());
int newFlaeche = FormUtil.readInt("Fläche ("+h.getFlaeche()+")"); int newFlaeche = FormUtil.readInt("Fläche", h.getFlaeche());
int newStockwerke = FormUtil.readInt("Stockwerke ("+h.getStockwerke()+")"); int newStockwerke = FormUtil.readInt("Stockwerke", h.getStockwerke());
int newKaufpreis = FormUtil.readInt("Kaufpreis ("+h.getKaufpreis()+")"); int newKaufpreis = FormUtil.readInt("Kaufpreis", h.getKaufpreis());
boolean newGarten = FormUtil.readBoolean("Garten ("+(h.isGarten() ? "j" : "n")+")"); boolean newGarten = FormUtil.readBoolean("Garten", h.isGarten());
//Neue Daten setzen //Neue Daten setzen
if(!newOrt.equals(""))
h.setOrt(newOrt); h.setOrt(newOrt);
if(!newStrasse.equals(""))
h.setStrasse(newStrasse); h.setStrasse(newStrasse);
if(!newHausNummer.equals(""))
h.setHausnummer(newHausNummer); h.setHausnummer(newHausNummer);
if(newPlz != 0)
h.setPlz(newPlz); h.setPlz(newPlz);
if(newFlaeche != 0)
h.setFlaeche(newFlaeche); h.setFlaeche(newFlaeche);
if(newStockwerke != 0)
h.setStockwerke(newStockwerke); h.setStockwerke(newStockwerke);
if(newKaufpreis != 0)
h.setKaufpreis(newKaufpreis); h.setKaufpreis(newKaufpreis);
h.setGarten(newGarten); h.setGarten(newGarten);
service.editHaus(h); 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."); 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 //Neue Daten abfragen
String newOrt = FormUtil.readString("Ort ("+w.getOrt()+")"); String newOrt = FormUtil.readString("Ort", w.getOrt());
int newPlz = FormUtil.readInt("PLZ ("+w.getPlz()+")"); int newPlz = FormUtil.readInt("PLZ", w.getPlz());
String newStrasse = FormUtil.readString("Straße ("+w.getStrasse()+")"); String newStrasse = FormUtil.readString("Straße", w.getStrasse());
String newHausNummer = FormUtil.readString("Hausnummer ("+w.getHausnummer()+")"); String newHausNummer = FormUtil.readString("Hausnummer", w.getHausnummer());
int newFlaeche = FormUtil.readInt("Fläche ("+w.getFlaeche()+")"); int newFlaeche = FormUtil.readInt("Fläche", w.getFlaeche());
int newStockwerk = FormUtil.readInt("Stockwerk ("+w.getStockwerk()+")"); int newStockwerk = FormUtil.readInt("Stockwerk", w.getStockwerk());
int newMietpreis = FormUtil.readInt("Mietpreis ("+w.getMietpreis()+")"); int newMietpreis = FormUtil.readInt("Mietpreis", w.getMietpreis());
boolean newEbk = FormUtil.readBoolean("EBK ("+(w.isEbk() ? "j" : "n")+")"); boolean newEbk = FormUtil.readBoolean("EBK", w.isEbk());
boolean newBalkon = FormUtil.readBoolean("Balkon ("+(w.isBalkon() ? "j" : "n")+")"); boolean newBalkon = FormUtil.readBoolean("Balkon", w.isBalkon());
//Neue Daten setzen //Neue Daten setzen
if(!newOrt.equals(""))
w.setOrt(newOrt); w.setOrt(newOrt);
if(!newStrasse.equals(""))
w.setStrasse(newStrasse); w.setStrasse(newStrasse);
if(!newHausNummer.equals(""))
w.setHausnummer(newHausNummer); w.setHausnummer(newHausNummer);
if(newPlz != 0)
w.setPlz(newPlz); w.setPlz(newPlz);
if(newFlaeche != 0)
w.setFlaeche(newFlaeche); w.setFlaeche(newFlaeche);
if(newStockwerk != 0)
w.setStockwerk(newStockwerk); w.setStockwerk(newStockwerk);
if(newMietpreis != 0)
w.setMietpreis(newMietpreis); w.setMietpreis(newMietpreis);
w.setEbk(newEbk); w.setEbk(newEbk);
w.setBalkon(newBalkon); w.setBalkon(newBalkon);
service.editWohnung(w); service.editWohnung(w);

View File

@ -85,19 +85,15 @@ public class MaklerEditor {
System.out.println("Makler "+m.getName()+" wird bearbeitet. Leere Felder bleiben unverändert."); System.out.println("Makler "+m.getName()+" wird bearbeitet. Leere Felder bleiben unverändert.");
//Neue Daten abfragen //Neue Daten abfragen
String new_name = FormUtil.readString("Name ("+m.getName()+")"); String new_name = FormUtil.readString("Name", m.getName());
String new_address = FormUtil.readString("Adresse ("+m.getAdresse()+")"); String new_address = FormUtil.readString("Adresse", m.getAdresse());
String new_login = FormUtil.readString("Login ("+m.getLogin()+")"); String new_login = FormUtil.readString("Login", m.getLogin());
String new_password = FormUtil.readString("Passwort ("+m.getPasswort()+")"); String new_password = FormUtil.readString("Passwort", m.getPasswort());
//Neue Daten setzen //Neue Daten setzen
if(!new_name.equals(""))
m.setName(new_name); m.setName(new_name);
if(!new_address.equals(""))
m.setAdresse(new_address); m.setAdresse(new_address);
if(!new_login.equals(""))
m.setLogin(new_login); m.setLogin(new_login);
if(!new_password.equals(""))
m.setPasswort(new_password); m.setPasswort(new_password);
service.editEstateAgent(m); service.editEstateAgent(m);

View File

@ -84,16 +84,13 @@ public class PersonEditor {
System.out.println("Person "+p.getVorname()+" "+p.getNachname()+" wird bearbeitet. Leere Felder bleiben unverändert."); System.out.println("Person "+p.getVorname()+" "+p.getNachname()+" wird bearbeitet. Leere Felder bleiben unverändert.");
//Neue Daten einlesen //Neue Daten einlesen
String newVorname = FormUtil.readString("Vorname ("+p.getVorname()+")"); String newVorname = FormUtil.readString("Vorname", p.getVorname());
String newNachname = FormUtil.readString("Nachname ("+p.getNachname()+")"); String newNachname = FormUtil.readString("Nachname", p.getNachname());
String newAddress = FormUtil.readString("Adresse ("+p.getAdresse()+")"); String newAddress = FormUtil.readString("Adresse", p.getAdresse());
//Neue Daten setzen //Neue Daten setzen
if(!newVorname.equals(""))
p.setVorname(newVorname); p.setVorname(newVorname);
if(!newNachname.equals(""))
p.setNachname(newNachname); p.setNachname(newNachname);
if(!newAddress.equals(""))
p.setAdresse(newAddress); p.setAdresse(newAddress);
service.editPerson(p); service.editPerson(p);
} }

View File

@ -8,53 +8,47 @@ import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
/** /**
* Kleine Helferklasse zum Einlesen von Formulardaten * Small helper class for forms.
*/ */
public class FormUtil { public class FormUtil {
/** /**
* Liest einen String vom standard input ein * Reads a string from the console.
* @param label Zeile, die vor der Eingabe gezeigt wird *
* @return eingelesene Zeile * @param label
* Label that is shown before the input
* @return read string
*/ */
public static String readString(String label) { public static String readString(String label) {
String ret = null; return readString(label, "");
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 * Reads a string from the console.
* @param label Zeile, die vor der Eingabe gezeigt wird *
* @return eingelesene Zeile * @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 readPassword(String label) { public static String readString(String label, String defaultValue) {
String ret = null; String ret = null;
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
try { try {
System.out.print(label+": "); System.out.print(label + (!defaultValue.isEmpty() ? "[" + defaultValue + "]" : "") + ": ");
if (System.console() != null) {
ret = String.valueOf(System.console().readPassword());
}
else {
ret = stdin.readLine(); ret = stdin.readLine();
} ret = ret.isEmpty() ? defaultValue : ret;
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
return ret; return ret;
} }
/** /**
* Zeigt eine Nachricht an und wartet auf Bestätigung des Benutzers * Zeigt eine Nachricht an und wartet auf Bestätigung des Benutzers
*
* @param msg Nachricht * @param msg Nachricht
*/ */
public static void showMessage(String msg) { public static void showMessage(String msg) {
@ -69,26 +63,38 @@ public class FormUtil {
} }
/** /**
* Liest einen Integer vom standard input ein * Reads a password from the console.
* @param label Zeile, die vor der Eingabe gezeigt wird *
* @return eingelesener Integer * @param label the label shown before the input
* @return the entered password
*/ */
public static int readInt(String label) { public static String readPassword(String label) {
int ret = 0; String password = "";
boolean finished = false; System.out.print(label + ": ");
if (System.console() != null) {
while(!finished) { password = String.valueOf(System.console().readPassword());
String line = readString(label); } else {
try { try {
ret = Integer.parseInt(line); BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
finished = true; password = stdin.readLine();
} catch (NumberFormatException e) { } catch (IOException e) {
System.err.println("Ungültige Eingabe: Bitte geben Sie eine Zahl an!"); e.printStackTrace();
} }
} }
return ret; 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;
} }
/** /**
@ -104,8 +110,6 @@ public class FormUtil {
while(!finished) { while(!finished) {
String line = readString(label); String line = readString(label);
try { try {
ret = parser.parse(line); ret = parser.parse(line);
finished = true; finished = true;
@ -117,31 +121,102 @@ public class FormUtil {
return ret; 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 * Stellt eine Ja/Nein-Frage und gibt das Ergebnis zurück
*
* @param label Zeile, die vor der Eingabe gezeigt wird * @param label Zeile, die vor der Eingabe gezeigt wird
* @return true, falls ja, false, falls nein * @return true, falls ja, false, falls nein
*/ */
public static boolean readBoolean(String label) { public static boolean readBoolean(String label) {
String line = null; 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; boolean finished = false;
String line;
boolean ret = false; boolean ret = false;
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
try { try {
while(!finished) { while(!finished) {
System.out.print(label+" [j/n]: "); System.out.print(label+": ");
line = stdin.readLine().toLowerCase(); line = stdin.readLine().toLowerCase();
switch (line) {
if(line.equals("j") || line.equals("ja")) { case "j":
case "ja":
ret = true; ret = true;
finished = true; finished = true;
} else if(line.equals("n") || line.equals("nein")) { break;
case "n":
case "nein":
ret = false; ret = false;
finished = true; finished = true;
} else { break;
case "":
if (withDefault) {
ret = defaultValue;
finished = true;
}
else {
System.err.println("Bitte geben Sie ja oder nein bzw. j oder n ein!"); 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) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();