From c4bce00924933b7fa28d2ca98c298917b582183f Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Wed, 12 Apr 2017 15:36:44 +0200 Subject: [PATCH] [02] Added files from example project Signed-off-by: Jim Martens --- 02/src/db2.properties | 3 + 02/src/de/dis2011/FormUtil.java | 52 ++++++ 02/src/de/dis2011/Main.java | 85 ++++++++++ 02/src/de/dis2011/Menu.java | 85 ++++++++++ .../de/dis2011/data/DB2ConnectionManager.java | 75 +++++++++ 02/src/de/dis2011/data/Makler.java | 155 ++++++++++++++++++ 6 files changed, 455 insertions(+) create mode 100644 02/src/db2.properties create mode 100644 02/src/de/dis2011/FormUtil.java create mode 100644 02/src/de/dis2011/Main.java create mode 100644 02/src/de/dis2011/Menu.java create mode 100644 02/src/de/dis2011/data/DB2ConnectionManager.java create mode 100644 02/src/de/dis2011/data/Makler.java diff --git a/02/src/db2.properties b/02/src/db2.properties new file mode 100644 index 0000000..06ce727 --- /dev/null +++ b/02/src/db2.properties @@ -0,0 +1,3 @@ +jdbc_user=vsisp12 +jdbc_pass=h9QE2Vxc +jdbc_url=jdbc:db2://vsisls4.informatik.uni-hamburg.de:50001/VSISP \ No newline at end of file diff --git a/02/src/de/dis2011/FormUtil.java b/02/src/de/dis2011/FormUtil.java new file mode 100644 index 0000000..7cfa5e3 --- /dev/null +++ b/02/src/de/dis2011/FormUtil.java @@ -0,0 +1,52 @@ +package de.dis2011; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +/** + * Kleine Helferklasse zum Einlesen von Formulardaten + */ +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 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; + } +} diff --git a/02/src/de/dis2011/Main.java b/02/src/de/dis2011/Main.java new file mode 100644 index 0000000..fc663aa --- /dev/null +++ b/02/src/de/dis2011/Main.java @@ -0,0 +1,85 @@ +package de.dis2011; + +import de.dis2011.data.Makler; + +/** + * Hauptklasse + */ +public class Main { + /** + * Startet die Anwendung + */ + public static void main(String[] args) { + showMainMenu(); + } + + /** + * Zeigt das Hauptmenü + */ + public static void showMainMenu() { + //Menüoptionen + final int MENU_MAKLER = 0; + final int QUIT = 1; + + //Erzeuge Menü + Menu mainMenu = new Menu("Hauptmenü"); + mainMenu.addEntry("Makler-Verwaltung", MENU_MAKLER); + mainMenu.addEntry("Beenden", QUIT); + + //Verarbeite Eingabe + while(true) { + int response = mainMenu.show(); + + switch(response) { + case MENU_MAKLER: + showMaklerMenu(); + break; + case QUIT: + return; + } + } + } + + /** + * Zeigt die Maklerverwaltung + */ + public static void showMaklerMenu() { + //Menüoptionen + final int NEW_MAKLER = 0; + final int BACK = 1; + + //Maklerverwaltungsmenü + Menu maklerMenu = new Menu("Makler-Verwaltung"); + maklerMenu.addEntry("Neuer Makler", NEW_MAKLER); + maklerMenu.addEntry("Zurück zum Hauptmenü", BACK); + + //Verarbeite Eingabe + while(true) { + int response = maklerMenu.show(); + + switch(response) { + case NEW_MAKLER: + newMakler(); + break; + case BACK: + return; + } + } + } + + /** + * Legt einen neuen Makler an, nachdem der Benutzer + * die entprechenden Daten eingegeben hat. + */ + public static void newMakler() { + Makler m = new Makler(); + + m.setName(FormUtil.readString("Name")); + m.setAddress(FormUtil.readString("Adresse")); + m.setLogin(FormUtil.readString("Login")); + m.setPassword(FormUtil.readString("Passwort")); + m.save(); + + System.out.println("Makler mit der ID "+m.getId()+" wurde erzeugt."); + } +} diff --git a/02/src/de/dis2011/Menu.java b/02/src/de/dis2011/Menu.java new file mode 100644 index 0000000..2e9117a --- /dev/null +++ b/02/src/de/dis2011/Menu.java @@ -0,0 +1,85 @@ +package de.dis2011; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; + +/** + * Kleine Helferklasse für Menüs + * Zuvor müssen mit addEntry Menüoptionen hinzugefügt werden. Mit + * der Methode show() wird das Menü angezeigt und die mit der Option + * angegebene Konstante zurückgeliefert. + * + * Beispiel: + * Menu m = new Menu("Hauptmenü"); + * m.addEntry("Hart arbeiten", 0); + * m.addEntry("Ausruhen", 1); + * m.addEntry("Nach Hause gehen", 2); + * int wahl = m.show(); + * + * Angezeigt wird dann das Menü: + * Hauptmenü: + * [1] Hart arbeiten + * [2] Ausruhen + * [3] Nach Hause gehen + * -- + */ +public class Menu { + private String title; + private ArrayList labels = new ArrayList(); + private ArrayList returnValues = new ArrayList(); + + /** + * Konstruktor. + * @param title Titel des Menüs z.B. "Hauptmenü" + */ + public Menu(String title) { + super(); + this.title = title; + } + + /** + * Fügt einen Menüeintrag zum Menü hinzu + * @param label Name des Eintrags + * @param returnValue Konstante, die bei Wahl dieses Eintrags zurückgegeben wird + */ + public void addEntry(String label, int returnValue) { + this.labels.add(label); + this.returnValues.add(new Integer(returnValue)); + } + + /** + * Zeigt das Menü an + * @return Die Konstante des ausgewählten Menüeintrags + */ + public int show() { + int selection = -1; + + BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); + + while(selection == -1) { + System.out.println(title+":"); + + for(int i = 0; i < labels.size(); ++i) { + System.out.println("["+(i+1)+"] "+labels.get(i)); + } + + System.out.print("-- "); + try { + selection = Integer.parseInt(stdin.readLine()); + } catch (NumberFormatException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + if(selection < 1 || selection > returnValues.size()) { + System.err.println("Ungültige Eingabe!"); + selection = -1; + } + } + + return returnValues.get(selection-1); + } +} diff --git a/02/src/de/dis2011/data/DB2ConnectionManager.java b/02/src/de/dis2011/data/DB2ConnectionManager.java new file mode 100644 index 0000000..b13ae93 --- /dev/null +++ b/02/src/de/dis2011/data/DB2ConnectionManager.java @@ -0,0 +1,75 @@ +package de.dis2011.data; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Properties; + +/** + * Einfaches Singleton zur Verwaltung von Datenbank-Verbindungen. + * + * @author Michael von Riegen + * @version April 2009 + */ +class DB2ConnectionManager { + + // instance of Driver Manager + private static DB2ConnectionManager _instance = null; + + // DB2 connection + private Connection _con; + + /** + * Erzeugt eine Datenbank-Verbindung + */ + private DB2ConnectionManager() { + try { + // Holen der Einstellungen aus der db2.properties Datei + Properties properties = new Properties(); + URL url = ClassLoader.getSystemResource("db2.properties"); + FileInputStream stream = new FileInputStream(new File(url.toURI())); + properties.load(stream); + stream.close(); + + String jdbcUser = properties.getProperty("jdbc_user"); + String jdbcPass = properties.getProperty("jdbc_pass"); + String jdbcUrl = properties.getProperty("jdbc_url"); + + // Verbindung zur DB2 herstellen + Class.forName("com.ibm.db2.jcc.DB2Driver"); + _con = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPass); + + } catch (IOException | ClassNotFoundException | SQLException | URISyntaxException e){ + e.printStackTrace(); + } + + } + + /** + * Liefert Instanz des Managers + * + * @return DB2ConnectionManager + */ + static DB2ConnectionManager getInstance() { + if (_instance == null) { + _instance = new DB2ConnectionManager(); + } + return _instance; + } + + /** + * Liefert eine Verbindung zur DB2 zurC