Sie sind auf Seite 1von 3

/* * (c) Bernd Mller, www.jsfpraxis.de */ package de.

jsfpraxis; import import import import import import import import import import import import import java.io.Serializable; java.util.GregorianCalendar; java.util.logging.Level; java.util.logging.Logger; javax.annotation.PostConstruct; javax.annotation.Resource; javax.faces.bean.ManagedBean; javax.faces.bean.SessionScoped; javax.faces.model.DataModel; javax.faces.model.ListDataModel; javax.persistence.EntityManager; javax.persistence.PersistenceContext; javax.transaction.UserTransaction;

/** * Einfache Managed-Bean zur Verwaltung von Comedians */ @ManagedBean @SessionScoped public class ComedianHandler implements Serializable { @PersistenceContext private EntityManager em; @Resource private UserTransaction utx; private DataModel<Comedian> comedians; private Comedian aktuellerComedian = new Comedian();

public ComedianHandler() { Logger.getAnonymousLogger().log(Level.INFO, "Konstruktor Comedia nHandler() aufgerufen"); } public String speichern() { Logger.getAnonymousLogger().log(Level.INFO, "speichern() [1] mit " + aktuellerComedian + "' aufgerufen"); try { utx.begin(); aktuellerComedian = em.merge(aktuellerComedian); Logger.getAnonymousLogger().log(Level.INFO, "speichern() [2] mit " + aktuellerComedian+ "' aufgerufen"); em.persist(aktuellerComedian); comedians.setWrappedData(em.createNamedQuery("SelectCome dians").getResultList()); utx.commit();

} catch (Exception e) { Logger.getAnonymousLogger().log(Level.SEVERE, "'speicher n()' nicht geklappt", e.getMessage()); } return "/anzeige-comedians.xhtml"; } public String aendern() { aktuellerComedian = comedians.getRowData(); Logger.getAnonymousLogger().log(Level.INFO, "aendern() mit " + a ktuellerComedian); return "/comedian.xhtml"; } public String neuanlage() { aktuellerComedian = new Comedian(); Logger.getAnonymousLogger().log(Level.INFO, "neuanlage()"); return "/comedian.xhtml"; } public String loeschen() { aktuellerComedian = comedians.getRowData(); Logger.getAnonymousLogger().log(Level.INFO, "loeschen() mit " + aktuellerComedian); try { utx.begin(); aktuellerComedian = em.merge(aktuellerComedian); em.remove(aktuellerComedian); comedians.setWrappedData(em.createNamedQuery("SelectCome dians").getResultList()); utx.commit(); } catch (Exception e) { Logger.getAnonymousLogger().log(Level.SEVERE, "'loeschen ()' nicht geklappt", e.getMessage()); } return null; } /* * Bekannter Fehler: Methode wird pro Session aufgerufen, d.h. Daten wer den * fr JEDE Session in die DB geschrieben. * Mgliche Abhilfe: In MB mit Application-Scope auslagern. */ @PostConstruct public void init() { Logger.getAnonymousLogger().log(Level.INFO, "'init()' aufgerufen "); try { utx.begin(); em.persist(new alendar(1972, 10, 1).getTime())); em.persist(new lendar(1965, 8, 27).getTime())); em.persist(new alendar(1960, 9, 29).getTime())); em.persist(new Calendar(1965, 11, 21).getTime())); Comedian("Mario", "Barth", new GregorianC Comedian("Atze", "Schrder", new GregorianCa Comedian("Dieter", "Nuhr", new GregorianC Comedian("Anke", "Engelke", new Gregorian

em.persist(new Comedian("Kaya", "Yanar", new GregorianCa lendar(1973, 4, 20).getTime())); comedians = new ListDataModel<Comedian>(); comedians.setWrappedData(em.createNamedQuery("SelectCome dians").getResultList()); utx.commit(); } catch (Exception e) { Logger.getAnonymousLogger().log(Level.SEVERE, "'init()' nicht geklappt", e.getMessage()); } } public DataModel<Comedian> getComedians() { return comedians; } public Comedian getAktuellerComedian() { return aktuellerComedian; } public void setAktuellerComedian(Comedian aktuellerComedian) { this.aktuellerComedian = aktuellerComedian; } }