@TransactionAttribute(REQUIRED) public String update() { auth.preserveLogin(); if (!geaendertArtikel || artikel == null) { return JSF_INDEX; } LOGGER.tracef("Aktualisierter artikel: %s", artikel); try { artikel = as.updateArtikel(artikel); } catch (BezeichnungExistsException | InvalidArtikelException | OptimisticLockException e) { final String outcome = updateErrorMsg(e, artikel.getClass()); return outcome; } // Push-Event fuer Webbrowser updateArtikelEvent.fire(String.valueOf(artikel.getAId())); // ValueChangeListener zuruecksetzen geaendertArtikel = false; // Aufbereitung fuer viewKunde.xhtml artikelId = artikel.getAId(); artikel = null; return JSF_LIST_ARTIKEL + JSF_REDIRECT_SUFFIX; }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final Bestellposition other = (Bestellposition) obj; // Bei persistenten Bestellpositionen koennen zu verschiedenen Bestellungen gehoeren // und deshalb den gleichen Artikel (s.u.) referenzieren, deshalb wird Id hier beruecksichtigt if (id == null) { if (other.id != null) { return false; } } else if (!id.equals(other.id)) { return false; } // Wenn eine neue Bestellung angelegt wird, dann wird jeder zu bestellende Artikel // genau 1x referenziert (nicht zu verwechseln mit der "anzahl") if (artikel == null) { if (other.artikel != null) { return false; } } else if (!artikel.equals(other.artikel)) { return false; } return true; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + anzahl; result = prime * result + ((artikel == null) ? 0 : artikel.hashCode()); return result; }
public <T extends Artikel> T createArtikel(T artikel) { if (artikel == null) { return artikel; } // Pruefung, ob ein solcher Artikel schon existiert final List<Artikel> tmp = findArtikelByBezeichnung(artikel.getBezeichnung()); for (Artikel a : tmp) { if (a.getBezeichnung().equals(artikel.getBezeichnung())) throw new BezeichnungExistsException(artikel.getBezeichnung()); } em.persist(artikel); event.fire(artikel); return artikel; }
public URI getUriArtikel(Artikel artikel, UriInfo uriInfo) { final UriBuilder ub = uriInfo .getBaseUriBuilder() .path(ArtikelResource.class) .path(ArtikelResource.class, "findArtikelById"); final URI uri = ub.build(artikel.getId()); return uri; }
public <T extends Artikel> T updateArtikel(T artikel) { if (artikel == null) { return null; } // kunde vom EntityManager trennen, weil anschliessend z.B. nach Id und Email gesucht wird em.detach(artikel); // Gibt es ein anderes Objekt mit gleicher Email-Adresse? final List<Artikel> tmp = findArtikelByBezeichnung(artikel.getBezeichnung()); for (Artikel a : tmp) { em.detach(a); if (a.getId().longValue() != artikel.getId().longValue()) throw new BezeichnungExistsException(artikel.getBezeichnung()); } artikel = em.merge(artikel); // OptimisticLockException return artikel; }
@TransactionAttribute(REQUIRED) public String update() { if (!geaendertArtikel || alterArtikel == null) { return JSF_INDEX; } alterArtikel = as.updateArtikel(alterArtikel, locale); // Push-Event fuer Webbrowser updateArtikelEvent.fire(String.valueOf(alterArtikel.getId())); // ValueChangeListener zuruecksetzen geaendertArtikel = false; // Aufbereitung fuer viewKunde.xhtml id = alterArtikel.getId(); return JSF_UPDATE_ARTIKEL + JSF_REDIRECT_SUFFIX; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final Posten other = (Posten) obj; if (anzahl != other.anzahl) return false; if (artikel == null) { if (other.artikel != null) return false; } else if (!artikel.equals(other.artikel)) return false; return true; }
@Override public String toString() { final Long artikelId = artikel == null ? null : artikel.getId(); return "Bestellposition [id=" + id + ", artikel=" + artikelId + ", artikelUri=" + artikelUri + ", anzahl=" + anzahl + "]"; }
@TransactionAttribute(REQUIRED) public String createArtikel() { try { neuerArtikel = as.createArtikel(neuerArtikel); } catch (BezeichnungExistsException | InvalidArtikelException | OptimisticLockException | ConcurrentDeletedException e) { final String outcome = updateErrorMsg(e, artikel.getClass()); return outcome; } // Push-Event fuer Webbrowser neuerArtikelEvent.fire(String.valueOf(neuerArtikel.getAId())); // Aufbereitung fuer viewKunde.xhtml artikelId = neuerArtikel.getAId(); artikel = neuerArtikel; neuerArtikel = null; // zuruecksetzen return JSF_LIST_ARTIKEL + JSF_REDIRECT_SUFFIX; }
@TransactionAttribute(REQUIRED) public String createArtikel() { neuerArtikel = (Artikel) as.createArtikel(neuerArtikel, locale); // Push-Event fuer Webbrowser // neuerArtikelEvent.fire(String.valueOf(neuerArtikel.getId())); // Aufbereitung fuer viewKunde.xhtml id = neuerArtikel.getId(); alterArtikel = neuerArtikel; neuerArtikel = null; // zuruecksetzen return JSF_LIST_ARTIKEL + JSF_REDIRECT_SUFFIX; }