/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aufgabe06;

import java.util.List;
import java.util.Scanner;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author skleuker
 */
public class Main {

  private EntityManagerFactory emf = Persistence.createEntityManagerFactory("Aufgabe08sose10PU");
  private EntityManager em;
  private Scanner sc = new Scanner(System.in);

  private void startEm() {
    if (em != null && em.isOpen()) {
      em.close();
    }
    em = emf.createEntityManager();
    em.getTransaction().begin();
  }

  private void endeEm() {
    if (em != null && em.isOpen()) {
      if (em.getTransaction().isActive()) {
        em.getTransaction().commit();
      }
      //em.flush();
      em.close();
    }
  }

  public void neuesDing() {
    //startEm();
    System.out.print("Name: ");
    Ding d = new Ding(sc.next());
    em.persist(d);
  }

  public void zeigeDinge() {
    //startEm();
    for (Ding d : (List<Ding>) em.createQuery("SELECT d FROM Ding d").
            getResultList()) {
      System.out.println(d);
    }
    //endeEm();
  }

  public void aendereName() {
    //startEm();
    System.out.print("Nummer: ");
    int id = sc.nextInt();
    Ding d = (Ding) em.find(Ding.class, id);
    if (d == null) {
      System.out.println("Gibbet nich");
      return;
    }
    System.out.print("neuer Name: ");
    d.setName(sc.next());
    em.persist(d);
  }

  public void dialog() {
    int ein = -1;
    startEm();
    while (ein != 0) {
      System.out.println("(0) Ende\n" + "(1) neues Ding\n" + "(2) Dinge zeigen\n" + "(3) Dingname ändern: ");
      ein = sc.nextInt();
      switch (ein) {
        case 1:
          neuesDing();
          break;
        case 2:
          zeigeDinge();
          break;
        case 3:
          aendereName();
          break;
      }
    }
    endeEm();
  }

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