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

package jpa20neuefeatures;

import entity.Polygon;
import entity.Punkt;
import java.awt.Color;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

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

  private EntityManagerFactory emf =
          Persistence.createEntityManagerFactory("JPA20NeueFeaturesPU");
  private EntityManager em = emf.createEntityManager();

  public void objekteErzeugen0(){
    Polygon xA = new Polygon();
    Polygon yA = new Polygon();
    Polygon w = new Polygon();
    for(int i=0;i<5;i++){
      xA.punkteHinzu(new Punkt(i,0));
      yA.punkteHinzu(new Punkt(0,i));
      w.punkteHinzu(new Punkt(i,i));
    }
    em.getTransaction().begin();
    em.persist(xA);
    em.persist(yA);
    em.persist(w);
    em.getTransaction().commit();
  }

  public void objekteErzeugen(){
    Punkt[] pkt={new Punkt(0,0), new Punkt(5,3), new Punkt(3,3), new Punkt(3,0)};
    em.getTransaction().begin();
    for(Punkt p:pkt)
      em.persist(p);
    em.getTransaction().commit();
    Polygon p1 = new Polygon();
    p1.punkteHinzu(pkt[0],pkt[1],pkt[2]);
    Polygon p2 = new Polygon();
    p2.punkteHinzu(pkt[3],pkt[2],pkt[1]);
    em.getTransaction().begin();
    em.persist(p1);
    em.persist(p2);
    em.getTransaction().commit();
    //pkt[1].setX(5);
    //em.getTransaction().begin();
    //em.merge(pkt[1])
    //em.persist(pkt[1]);
    //em.getTransaction().commit();
  }

  public void zeigePolygone(){
    List<Polygon> pl = em.createQuery("SELECT po FROM Polygon po", Polygon.class).getResultList();
    for(Polygon po:pl)
      System.out.println(po);
  }

    public void schliessen() {
    if (em != null && em.isOpen()) {
      em.close();
    }
    if (emf != null && emf.isOpen()) {
      emf.close();
    }
  }
    public static void main(String[] args) {
        Main m= new Main();
        m.objekteErzeugen();
        m.zeigePolygone();
        m.schliessen();
        System.out.println("----");
        m= new Main();
        m.zeigePolygone();
        m.schliessen();
    }

}
