package aufgabe09;

public class Main {

  private DAO dao = new DAO();

  public void dialog() throws InterruptedException {
    int eingabe = -1;
    dao.startdaten();
    while (eingabe != 0) {
      Thread.sleep(300); // gegen Netbeans-Macke
      System.out.println("Was wollen Sie?\n" +
              "  (0) Programm beenden\n" +
              "  (1) neues Produkt anlegen\n" +
              "  (2) neue Bestellung anlegen\n" +
              "  (3) Produkt zur Bestellung hinzufuegen\n" +
              "  (4) Posten aus Bestellung loeschen\n" +
              "  (5) Ausgabe der Produkte\n" +
              "  (6) Ausgabe der Bestellungen\n" +
              "  (7) Statistik: Produktbestellungshaeufigkeit\n" +
              "  (8) Statistik: Nie bestellte Produkte\n" +
              "  (9) Statistik: Mindestens n-mal in gleicher Bestellung\n" +
              " (10) Statistik: Summen der Bestellungen\n" +
              " (11) Kunden mit Namensteil\n" +
              " (12) Kunden mit mindestens N Bestellungen\n" +
              " (13) Kunde der alle Bestellungen gemacht hat\n" +
              " (14) Anfrage selbst formulieren:  ");
      eingabe = Eingabe.leseInt();
      Thread.sleep(300); // wieder fuer eine ordentliche Ausgabe
      switch (eingabe) {
        case 1:
          System.out.print("Produktname: ");
          String pname = Eingabe.leseString();
          System.out.print("Verkaufspreis: ");
          int vk = Eingabe.leseInt();
          produktAnlegen(pname, vk);
          break;
        case 2:
          System.out.print("Kunde: ");
          String kunde = Eingabe.leseString();
          bestellungAnlegen(kunde);
          break;
        case 3:
          System.out.print("Bestellungsnummer: ");
          int bst = Eingabe.leseInt();
          System.out.print("Produktnummer: ");
          int pn = Eingabe.leseInt();
          System.out.print("Anzahl: ");
          int anz = Eingabe.leseInt();
          produktInBestellungErgaenzen(bst, pn, anz);
          break;
        case 4:
          System.out.print("Bestellungsnummer: ");
          int bstnr = Eingabe.leseInt();
          System.out.print("Postennummer: ");
          int pnr = Eingabe.leseInt();
          produktAusBestellungLoeschen(bstnr, pnr);
          break;
        case 5:
          produkteAnzeigen();
          break;
        case 6:
          bestellungenAnzeigen();
          break;
        case 7:
          produktbestellungshaeufigkeiten();
          break;
        case 8:
          nieBestellteProdukte();
          break;
        case 9:
          System.out.print("Mindesthaeufigkeit: ");
          int haeufig = Eingabe.leseInt();
          paareMitHaeufigkeit(haeufig);
          break;
        case 10:
          bestellsummenBerechnen();
          break;
        case 11:
          System.out.print("Namensbestandteil: ");
          kundenMitNamensteil(Eingabe.leseString());
          break;
        case 12:
          System.out.print("Mindestbestellungsanzahl: ");
          kundenMitNBestellungen(Eingabe.leseInt());
          break;
        case 13:
          kundeAlleBestellungen();
          break;
        case 14:
          System.out.println("Anfrage:");
          String anfrage = Eingabe.leseString();
          try{
            dao.anfragen(anfrage);
          }catch(Exception e){
            System.out.println(e.getMessage());
          }
      }
    }
    dao.schliessen();
  }

  private void produktAnlegen(String pname, int vk) {
    dao.produktAnlegen(pname, vk);
  }

  private void bestellungAnlegen(String kunde) {
    dao.bestellungAnlegen(kunde);
  }

  private void produktInBestellungErgaenzen(int bst, int pn, int anz) {
    dao.produktInBestellungErgaenzen(bst, pn, anz);
  }

  private void produktAusBestellungLoeschen(int bstnr, int pnr) {
    dao.produktAusBestellungLoeschen(bstnr, pnr);
  }

  private void produkteAnzeigen() {
    dao.produkteAnzeigen();
  }

  private void bestellungenAnzeigen() {
    dao.bestellungenAnzeigen();
  }

  private void produktbestellungshaeufigkeiten() {
    dao.produktbestellungshaeufigkeiten();
  }

  private void nieBestellteProdukte() {
    dao.nieBestellteProdukte();
  }

  private void paareMitHaeufigkeit(int haeufig) {
    dao.produktpaareInBestellungen(haeufig);
  }

  private void bestellsummenBerechnen() {
    dao.bestellsummenBerechnen();
  }

  private void kundenMitNamensteil(String teil) {
    dao.kundenMitNamensteil(teil);
  }

  private void kundenMitNBestellungen(int n) {
    dao.kundenMitNBestellungen(n);
  }

  private void kundeAlleBestellungen() {
    dao.kundeAlleBestellungen();
  }

  public static void main(String[] args) throws InterruptedException {
    new Main().dialog();
  }
}
