/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package beans.artikelManager; import beans.*; import entities.Artikel; import exceptions.IdBereitsVergebenException; import exceptions.UnbekanntesEntityException; import java.util.List; import javax.ejb.Stateless; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; /** * * @author Jan */ @WebService @Stateless(mappedName="ArtikelManagerBean") public class ArtikelManagerBean implements ArtikelManagerRemote { @PersistenceContext private EntityManager em; /** * erstellt einen Artikel und liefert die Artikel-Id zurueck * @param artikel * @return Artikel-Id */ @WebMethod public @WebResult(name="newArtikelId") long createArtikel( @WebParam(name="artikel") Artikel artikel) throws IdBereitsVergebenException { try { em.persist(artikel); return artikel.getId(); } catch(Exception e){ throw new IdBereitsVergebenException("Artikel-Id bereits vergeben: [id="+ artikel.getId()+"]"); } } /** * Gibt einen Artikel anhand seiner Id zurueck * @param artikelId * @return */ @WebMethod public @WebResult(name="artikel") Artikel readArtikel( @WebParam(name="artikelId") long artikelId) throws UnbekanntesEntityException{ Artikel artikel = em.find(Artikel.class, artikelId ); if (artikel == null) throw new UnbekanntesEntityException("Artikel", artikelId); return artikel; } /** * gibt alle Artikel zurueck * @return */ @WebMethod public @WebResult(name="allArtikel") List readAllArtikel(){ return (List)em.createQuery("SELECT a FROM Artikel a ORDER BY a.id").getResultList(); } /** * Schreibt die Änderungen eines Artikels in die Datenbank * @param artikel */ @WebMethod public void updateArtikel( @WebParam(name="artikel") Artikel artikel){ em.merge(artikel); } /** * Entfernt einen Artikel mit der angegebenen Artikel-Id * @param artikelId */ @WebMethod public void deleteArtikel( @WebParam(name="artikelId") long artikelId){ Artikel artikel = em.find(Artikel.class, artikelId ); em.remove(artikel); } /** * entfernt alle Artikel */ @WebMethod public void deleteAllArtikel(){ for(Artikel artikel : readAllArtikel()){ deleteArtikel( artikel.getId() ); } } /** * Prüft ob es einen Artikel mit angegebener Artikel-Id gibt * @param artikelId * @return */ @WebMethod public @WebResult(name="existiert") boolean existsArtikel( @WebParam(name="artikelId") long artikelId){ Artikel artikel = em.find(Artikel.class, artikelId ); if(artikel != null) return true; return false; } }