diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src | |
| download | Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2 | |
Diffstat (limited to 'Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src')
24 files changed, 1204 insertions, 0 deletions
diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/conf/MANIFEST.MF b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/conf/MANIFEST.MF new file mode 100644 index 0000000..59499bc --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/conf/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/conf/persistence.xml b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/conf/persistence.xml new file mode 100644 index 0000000..21115af --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/conf/persistence.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> + <persistence-unit name="DSI-ejbPU" transaction-type="JTA"> + <provider>oracle.toplink.essentials.PersistenceProvider</provider> + <jta-data-source>jdbc/sample</jta-data-source> + <properties> + <property name="toplink.ddl-generation" value="create-tables"/> + </properties> + </persistence-unit> +</persistence> diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/adressen/AdressenBean.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/adressen/AdressenBean.java new file mode 100644 index 0000000..9046ed5 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/adressen/AdressenBean.java @@ -0,0 +1,43 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.adressen; + + +import beans.*; +import javax.ejb.Stateless; +import javax.jws.WebService; + +/** + * + * @author jmueller + */ +@Stateless(mappedName="AdressenBean") +public class AdressenBean implements AdressenRemote { + + + /** + * gibt zu einer Artikel-Id die Adresse des Lieferanten zurück + * @param artikel_id Die Artikel-Id + * @return Die Adresse des Lieferanten + */ + public String getLieferantenAdresseFuerArtikel( long artikel_id) { + if(artikel_id == 1) + return "Shimano, Merkelstr. 133, 12345 Dresden"; + else if (artikel_id == 2) + return "Siemens, Zumwinkelstr. 31, 123123 Berlin"; + else if (artikel_id == 3) + return "Schwalbe, Taubenweg 3, 54566 Hannover"; + else + return "Musterfirma, Musterstrasse 123, 12345 Musterstadt"; + + + } + + + // Add business logic below. (Right-click in editor and choose + // "EJB Methods > Add Business Method" or "Web Service > Add Operation") + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/adressen/AdressenRemote.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/adressen/AdressenRemote.java new file mode 100644 index 0000000..24970cf --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/adressen/AdressenRemote.java @@ -0,0 +1,19 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.adressen; + +import javax.ejb.Remote; + +/** + * + * @author jmueller + */ +@Remote +public interface AdressenRemote { + + String getLieferantenAdresseFuerArtikel(long artikel_id); + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/artikelManager/ArtikelManagerBean.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/artikelManager/ArtikelManagerBean.java new file mode 100644 index 0000000..71b10ae --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/artikelManager/ArtikelManagerBean.java @@ -0,0 +1,123 @@ +/* + * 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<Artikel> readAllArtikel(){ + return (List<Artikel>)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; + } + + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/artikelManager/ArtikelManagerRemote.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/artikelManager/ArtikelManagerRemote.java new file mode 100644 index 0000000..dba3832 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/artikelManager/ArtikelManagerRemote.java @@ -0,0 +1,29 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.artikelManager; + +import entities.Artikel; +import exceptions.IdBereitsVergebenException; +import exceptions.UnbekanntesEntityException; +import java.util.List; +import javax.ejb.Remote; + +/** + * + * @author Jan + */ +@Remote +public interface ArtikelManagerRemote { + + public long createArtikel(Artikel artikel) throws IdBereitsVergebenException; + public Artikel readArtikel(long artikelId) throws UnbekanntesEntityException; + public List<Artikel> readAllArtikel(); + public void updateArtikel(Artikel artikel); + public void deleteArtikel(long artikelId); + public void deleteAllArtikel(); + public boolean existsArtikel(long artikelId); + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/auftragsAbwicklung/AuftragsAbwicklungBean.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/auftragsAbwicklung/AuftragsAbwicklungBean.java new file mode 100644 index 0000000..625261f --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/auftragsAbwicklung/AuftragsAbwicklungBean.java @@ -0,0 +1,70 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package beans.auftragsAbwicklung; + +import beans.bestell.BestellRemote; +import beans.lieferant.LieferantRemote; +import beans.lager.LagerRemote; +import beans.*; +import beans.artikelManager.ArtikelManagerRemote; +import entities.Artikel; +import exceptions.AuftragsAbwicklungException; +import javax.ejb.EJB; +import javax.ejb.Stateless; + +/** + * Eine Klasse für das abwickeln von Aufträgen + * @author jmueller + */ +@Stateless(mappedName="AuftragsAbwicklungBean") +public class AuftragsAbwicklungBean implements AuftragsAbwicklungRemote { + @EJB + private BestellRemote bestellBean; + @EJB + private ArtikelManagerRemote artikelManagerBean; + + @EJB + private LieferantRemote lieferantBean; + @EJB + private LagerRemote lagerBean; + + + /** + * simuliert die Bestellung eines Artikels durch einen Kunden + * + * @param kundenId Id des Kunden + * @param artikelId Id des Artikels + * @param artikelAnzahl Anzahl des Artikels + * + * @return String Bericht + * @throws java.lang.Exception + */ + public String bestelleArtikel(long kundenId, long artikelId, long artikelAnzahl ) throws Exception{ + + + if( bestellBean.validiereBestellung(artikelId, artikelAnzahl, kundenId) != true){ + throw new AuftragsAbwicklungException("Bestellung nicht valide!"); + } + + Artikel artikel = artikelManagerBean.readArtikel(artikelId); + + + // falls nicht verfuegbar -> nachbestellen + if (lagerBean.pruefeVerfuegbarkeit(artikelId, artikelAnzahl) != true) { + long mindestMenge = 10L; + long imLager = artikel.getAnzahl(); + long anzahlNachbestellen = artikelAnzahl - imLager + mindestMenge; + lieferantBean.bestelleNach(artikelId, anzahlNachbestellen); + } + + lagerBean.bucheArtikelAus(artikelId, artikelAnzahl); + double preisOhneMwSt = bestellBean.berechneGesamtpreis(artikelAnzahl, artikel.getPreis()); + double MwSt = bestellBean.berechneMehrwertSteuer(preisOhneMwSt); + + return ""; + } + + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/auftragsAbwicklung/AuftragsAbwicklungRemote.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/auftragsAbwicklung/AuftragsAbwicklungRemote.java new file mode 100644 index 0000000..4dfa025 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/auftragsAbwicklung/AuftragsAbwicklungRemote.java @@ -0,0 +1,20 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.auftragsAbwicklung; + +import exceptions.AuftragsAbwicklungException; +import helper.AuftragsPosition; +import java.util.List; +import javax.ejb.Remote; + +/** + * + * @author jmueller + */ +@Remote +public interface AuftragsAbwicklungRemote { + public String bestelleArtikel(long kundenId, long artikelId, long artikelAnzahl) throws Exception; +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/bestell/BestellBean.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/bestell/BestellBean.java new file mode 100644 index 0000000..4e3b125 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/bestell/BestellBean.java @@ -0,0 +1,115 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.bestell; + +import beans.kundenManager.KundenManagerRemote; +import beans.*; +import beans.artikelManager.ArtikelManagerRemote; +import javax.ejb.EJB; +import javax.ejb.Stateless; +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebResult; +import javax.jws.WebService; + +/** + * + * @author Jan + */ +@WebService +@Stateless(mappedName="BestellBean") +public class BestellBean implements BestellRemote { + @EJB + private KundenManagerRemote kundenManagerBean; + @EJB + private ArtikelManagerRemote artikelManagerBean; + + + /** + * testet ob eine Position valide ist, + * das heisst ob es einen Artikel mit angegebener Id gibt + * und ob die anzahl > 0 ist + * + * @param artikelId + * @param anzahl + * @return true falls valide + */ + @WebMethod + public @WebResult(name="valide") boolean validierePosition + ( @WebParam(name="artikelId") long artikelId, + @WebParam(name="anzahl") long anzahl) { + + // verifiziere, dass mindestens ein Artikel bestellt wird + if(anzahl < 1){ + return false; + } + + // verifiziere dass ein Artikel mit dieser id existiert + if (artikelManagerBean.existsArtikel(artikelId) == false){ + return false; + } + + return true; + } + + /** + * validiert eine Bestellung, + * + * siehe validierePosition, allerdings mit Überprüfung ob ein Kunde + * mit angegebener Id existiert + * + * @param artikelId Id des Artikels + * @param anzahl Artikel-Anzahl + * @param kundenId Id des Kunden + * @return true falls valide + */ + @WebMethod + public @WebResult(name="valide") boolean validiereBestellung + ( @WebParam(name="artikelId") long artikelId, + @WebParam(name="anzahl") long anzahl, + @WebParam(name="kundenId") long kundenId) { + + + if( validierePosition(artikelId, anzahl) != true){ + return false; + } + + if(kundenManagerBean.existsKunde(kundenId) == false){ + return false; + } + + return true; + } + + /** + * berechnet den Gesamtpreis der bestellten Artikel + * + * @param anzahl Anzahl der Artikel + * @param preis Einzel-Preis + * @return Gesamtpreis + */ + @WebMethod + public @WebResult(name="gesamtpreis") double berechneGesamtpreis + ( @WebParam(name="anzahl") long anzahl, + @WebParam(name="preis") double preis) { + return anzahl * preis; + } + + /** + * Berechnet die Mehrwertsteuer + * + * es wird von einer Mehrwert-Steuer von 19% ausgegangen + * + * @param preis Der Preis + * @return MwSt Die berechnete Mehrwertsteuer + */ + @WebMethod + public @WebResult(name="mehrwertsteuer") double berechneMehrwertSteuer( + @WebParam(name="preis") double preis) { + return 0.19 * preis; + } + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/bestell/BestellRemote.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/bestell/BestellRemote.java new file mode 100644 index 0000000..a6f1001 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/bestell/BestellRemote.java @@ -0,0 +1,23 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.bestell; + +import javax.ejb.Remote; + +/** + * + * @author Jan + */ +@Remote +public interface BestellRemote { + + public double berechneGesamtpreis(long anzahl, double preis); + public double berechneMehrwertSteuer(double preis); + public boolean validierePosition(long artikelId, long anzahl); + public boolean validiereBestellung(long artikelId, long anzahl, @javax.jws.WebParam(name = "kundenId") + long kundenId); + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/kundenManager/KundenManagerBean.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/kundenManager/KundenManagerBean.java new file mode 100644 index 0000000..b0de74c --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/kundenManager/KundenManagerBean.java @@ -0,0 +1,99 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.kundenManager; + +import beans.*; +import entities.Kunde; +import java.util.List; +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +/** + * + * @author Jan + */ + +@Stateless(mappedName="KundenManagerBean") +public class KundenManagerBean implements KundenManagerRemote { + @PersistenceContext + private EntityManager em; + + + /** + * erstellt einen Kunden und liefert die Kunden-Id zurueck + * @param Kunde + * @return Kunden-Id + */ + public long createKunde(Kunde kunde) { + em.persist(kunde); + + return kunde.getId(); + } + + + /** + * Gibt einen Kunden anhand seiner Id zurueck + * @param kundeId + * @return + */ + public Kunde readKunde(long kundeId){ + Kunde kunde = em.find(Kunde.class, kundeId ); + return kunde; + } + + + /** + * gibt alle Kunden zurueck + * @return + */ + public List<Kunde> readAllKunden(){ + return (List<Kunde>)em.createQuery("SELECT k FROM Kunde k ORDER BY k.id").getResultList(); + } + + /** + * Schreibt die Änderungen eines Kunden in die Datenbank + * @param kunde Der Kunde + */ + public void updateKunde(Kunde kunde){ + em.merge(kunde); + } + + /** + * Entfernt einen Kunden mit der angegebenen Kunden-Id + * @param kundeId + */ + public void deleteKunde(long kundeId){ + Kunde kunde = em.find(Kunde.class, kundeId ); + em.remove(kunde); + } + + + /** + * entfernt alle Kunden + * + */ + public void deleteAllKunden(){ + for(Kunde kunde : readAllKunden()){ + deleteKunde( kunde.getId() ); + } + } + + + /** + * Prüft ob es einen Kunden mit angegebener Kunden-Id gibt + * @param kundeId + * @return true falls ein Kunde mit angegebener ID existiert + */ + public boolean existsKunde(long kundeId){ + Kunde kunde = em.find(Kunde.class, kundeId ); + if(kunde != null) + return true; + + return false; + } + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/kundenManager/KundenManagerRemote.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/kundenManager/KundenManagerRemote.java new file mode 100644 index 0000000..935c715 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/kundenManager/KundenManagerRemote.java @@ -0,0 +1,25 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.kundenManager; + +import javax.ejb.Remote; + +/** + * + * @author Jan + */ +@Remote +public interface KundenManagerRemote { + + public long createKunde(entities.Kunde kunde); + public entities.Kunde readKunde(long kundeId); + public java.util.List<entities.Kunde> readAllKunden(); + public void updateKunde(entities.Kunde kunde); + public void deleteKunde(long kundeId); + public void deleteAllKunden(); + public boolean existsKunde(long kundeId); + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lager/LagerBean.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lager/LagerBean.java new file mode 100644 index 0000000..2c6dcf7 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lager/LagerBean.java @@ -0,0 +1,94 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.lager; + +import beans.*; +import beans.artikelManager.ArtikelManagerRemote; +import entities.Artikel; +import exceptions.IllegalerWertException; +import exceptions.UnbekanntesEntityException; +import javax.ejb.EJB; +import javax.ejb.Stateless; +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebService; +import javax.jws.WebResult; + +/** + * Diese Klasse stellt Funktionen des Lagers bereit + * @author jmueller + */ +@WebService +@Stateless(mappedName="LagerBean") +public class LagerBean implements LagerRemote { + @EJB + private ArtikelManagerRemote artikelManagerBean; + + /** + * bucht eine bestimmte Anzahl von Artikeln aus dem Lager aus + * + * @param id die Id des Artikels + * @param anzahl die Anzahl der auszubuchenden Artikel + */ + @WebMethod + public void bucheArtikelAus( + @WebParam(name="artikelId")long id, + @WebParam(name="anzahl") long anzahl)throws UnbekanntesEntityException, IllegalerWertException{ + System.out.println("Lager: bucheArtikelAus("+id+","+anzahl+")"); + if(anzahl < 0){ + throw new IllegalerWertException("anzahl", ""+id); + } + Artikel artikel = artikelManagerBean.readArtikel(id); + artikel.setAnzahl(artikel.getAnzahl() - anzahl); + artikelManagerBean.updateArtikel(artikel); + } + + + /** + * bucht eine bestimmte Anzahl von Artikeln ins Lager ein + * + * @param id + * @param anzahl + * @throws exceptions.UnbekanntesEntityException + * @throws exceptions.IllegalerWertException + */ + @WebMethod + public void bucheArtikelEin( + @WebParam(name="artikelId")long id, + @WebParam(name="anzahl") long anzahl) throws UnbekanntesEntityException, IllegalerWertException{ + System.out.println("Lager: bucheArtikelEin("+id+","+ anzahl+")"); + if(anzahl < 0){ + throw new IllegalerWertException("anzahl", ""+id); + } + + Artikel artikel = artikelManagerBean.readArtikel(id); + artikel.setAnzahl(artikel.getAnzahl() + anzahl); + artikelManagerBean.updateArtikel(artikel); + } + + + /** + * Testet ob der Artikel in ausreichender Anzahl vorhanden ist, + * falls der Artikel nicht existiert wird false zurückgegeben + * @param id + * @param anzahl + * @return + */ + @WebMethod + public @WebResult(name="verfuegbar") boolean pruefeVerfuegbarkeit( + @WebParam(name="artikelId") long id, + @WebParam(name="anzahl") long anzahl) throws Exception{ + Artikel artikel = artikelManagerBean.readArtikel(id); + if( artikel.getAnzahl() >= anzahl ){ + return true; + } + + return false; + } + + // Add business logic below. (Right-click in editor and choose + // "EJB Methods > Add Business Method" or "Web Service > Add Operation") +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lager/LagerRemote.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lager/LagerRemote.java new file mode 100644 index 0000000..ea1e8d0 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lager/LagerRemote.java @@ -0,0 +1,22 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.lager; + +import exceptions.IllegalerWertException; +import exceptions.UnbekanntesEntityException; +import javax.ejb.Remote; + +/** + * + * @author jmueller + */ +@Remote +public interface LagerRemote { + + public void bucheArtikelAus(long id, long anzahl) throws UnbekanntesEntityException, IllegalerWertException; + public void bucheArtikelEin(long id, long anzahl) throws UnbekanntesEntityException, IllegalerWertException; + public boolean pruefeVerfuegbarkeit(long id, long anzahl) throws Exception; +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lieferant/LieferantBean.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lieferant/LieferantBean.java new file mode 100644 index 0000000..2dbc76a --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lieferant/LieferantBean.java @@ -0,0 +1,55 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.lieferant; + +import beans.*; +import beans.lager.LagerRemote; +import beans.artikelManager.ArtikelManagerRemote; +import beans.adressen.AdressenRemote; +import exceptions.IllegalerWertException; +import exceptions.UnbekanntesEntityException; +import javax.ejb.EJB; +import javax.ejb.Stateless; +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebService; + +/** + * + * @author jmueller + */ +@WebService +@Stateless(mappedName="LieferantBean") +public class LieferantBean implements LieferantRemote { + @EJB + private ArtikelManagerRemote artikelManagerBean; + @EJB + private LagerRemote lagerBean; + @EJB + private AdressenRemote adressenBean; + + + + /** + * bestellt eine bestimmte Anzahl von Artikeln nach + * @param id die Id des Artikels + * @param anzahl die Anzahl + */ + // TODO: Session Bean erstellen die die Adresse des Lieferanten für bestimmte + // Artikel heraussucht + @WebMethod + public void bestelleNach( + @WebParam(name="artikelId") long id, + @WebParam(name="anzahl") long anzahl) throws UnbekanntesEntityException, IllegalerWertException{ + System.out.println("Lieferant: bestelleNach("+id+","+anzahl+")"); + lagerBean.bucheArtikelEin(id, anzahl); + + System.out.println("Bestellung erfolgt bei: " + adressenBean.getLieferantenAdresseFuerArtikel(id) ); + } + + + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lieferant/LieferantRemote.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lieferant/LieferantRemote.java new file mode 100644 index 0000000..9a4a63f --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/beans/lieferant/LieferantRemote.java @@ -0,0 +1,22 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package beans.lieferant; + +import exceptions.IllegalerWertException; +import exceptions.UnbekanntesEntityException; +import javax.ejb.Remote; + +/** + * + * @author jmueller + */ +@Remote +public interface LieferantRemote { + + void bestelleNach(long id, long anzahl) throws UnbekanntesEntityException, IllegalerWertException; + + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/entities/Artikel.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/entities/Artikel.java new file mode 100644 index 0000000..9859fc6 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/entities/Artikel.java @@ -0,0 +1,112 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package entities; + +import java.io.Serializable; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +/** + * Eine Klasse welche den Typ eines Artikels verwaltet + * @author jmueller + */ +@Entity +public class Artikel implements Serializable { + private static final long serialVersionUID = 1L; + private Long id; + private String bezeichnung; + private Long anzahl; + private Double preis; + + + public Artikel(){ + + } + + public Artikel(Long id, String bezeichnung, Long anzahl, Double preis) { + this.id = id; + this.bezeichnung = bezeichnung; + this.anzahl = anzahl; + this.preis = preis; + } + + + + + /** + * Default-Konstruktor + */ + + +/* + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public int getId() { + return id; + } +*/ + @Override + public int hashCode() { + int hash = 0; + hash += getId(); + return hash; + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof Artikel)) { + return false; + } + Artikel other = (Artikel) object; + if (this.getId() != other.getId()) { + return false; + } + return true; + } + + @Override + public String toString() { + return "entities.Artikel[id=" + getId() + "]"; + } + + public String getBezeichnung() { + return bezeichnung; + } + + public void setBezeichnung(String bezeichnung) { + this.bezeichnung = bezeichnung; + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getAnzahl() { + return anzahl; + } + + public void setAnzahl(Long anzahl) { + this.anzahl = anzahl; + } + + public Double getPreis() { + return preis; + } + + public void setPreis(Double preis) { + this.preis = preis; + } + + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/entities/Kunde.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/entities/Kunde.java new file mode 100644 index 0000000..0ebadfc --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/entities/Kunde.java @@ -0,0 +1,100 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package entities; + +import java.io.Serializable; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +/** + * + * @author Jan + */ +@Entity +public class Kunde implements Serializable { + private static final long serialVersionUID = 1L; + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + private String vorname; + private String nachname; + private String adresse; + + public Kunde() { + } + + public Kunde(Long id, String vorname, String nachname, String adresse) { + this.id = id; + this.vorname = vorname; + this.nachname = nachname; + this.adresse = adresse; + } + + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + @Override + public int hashCode() { + int hash = 0; + hash += (id != null ? id.hashCode() : 0); + return hash; + } + + @Override + public boolean equals(Object object) { + // TODO: Warning - this method won't work in the case the id fields are not set + if (!(object instanceof Kunde)) { + return false; + } + Kunde other = (Kunde) object; + + // true -> wenn alle Daten identisch sind + if(this.id.equals(other.id) && this.vorname.equals(other.vorname) && this.nachname.equals(other.nachname) && this.adresse.equals(other.adresse)){ + return true; + } + + return false; + } + + @Override + public String toString() { + return "entities.Kunde[id=" + id + "," + vorname +"," + nachname +"," + adresse +"]"; + } + + public String getVorname() { + return vorname; + } + + public void setVorname(String vorname) { + this.vorname = vorname; + } + + public String getNachname() { + return nachname; + } + + public void setNachname(String nachname) { + this.nachname = nachname; + } + + public String getAdresse() { + return adresse; + } + + public void setAdresse(String adresse) { + this.adresse = adresse; + } + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/AuftragsAbwicklungException.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/AuftragsAbwicklungException.java new file mode 100644 index 0000000..8aa5574 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/AuftragsAbwicklungException.java @@ -0,0 +1,22 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package exceptions; + +import javax.ejb.ApplicationException; + +/** + * + * @author jmueller + */ +@ApplicationException(rollback=true) +public class AuftragsAbwicklungException extends Exception { + private static final long serialVersionUID = 1L; + + public AuftragsAbwicklungException(String msg){ + super("Auftrag konnte nicht Abgewickelt werden: " + msg); + } + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/IdBereitsVergebenException.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/IdBereitsVergebenException.java new file mode 100644 index 0000000..685b931 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/IdBereitsVergebenException.java @@ -0,0 +1,19 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package exceptions; + +import javax.ejb.ApplicationException; + +/** + * + * @author Jan + */ +@ApplicationException(rollback=true) +public class IdBereitsVergebenException extends Exception{ + public IdBereitsVergebenException(String msg) { + super(msg); + } +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/IllegalerWertException.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/IllegalerWertException.java new file mode 100644 index 0000000..eb21936 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/IllegalerWertException.java @@ -0,0 +1,26 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package exceptions; + +import javax.ejb.ApplicationException; + +/** + * + * @author Jan + */ +@ApplicationException(rollback=true) +public class IllegalerWertException extends Exception { + + public IllegalerWertException(String msg) { + super(msg); + } + + public IllegalerWertException(String variablenName, Object wert) { + super("Illegaler Wert: [" + variablenName+ " = " + wert.toString() +"]"); + } + + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/UnbekanntesEntityException.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/UnbekanntesEntityException.java new file mode 100644 index 0000000..0d1c405 --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/exceptions/UnbekanntesEntityException.java @@ -0,0 +1,29 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package exceptions; + +import javax.ejb.ApplicationException; + +/** + * + * @author jmueller + */ +@ApplicationException(rollback=true) +public class UnbekanntesEntityException extends Exception { + + /** + * Constructs an instance of <code>UnbekannterArtikelException</code> with the specified detail message. + * @param msg the detail message. + */ + public UnbekanntesEntityException(String msg) { + super(msg); + } + + public UnbekanntesEntityException(String typ, long id) { + super("Unbekanntes Entity vom Typ: " + typ + " [id="+ id +"]"); + } + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/helper/Auftrag.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/helper/Auftrag.java new file mode 100644 index 0000000..ade052e --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/helper/Auftrag.java @@ -0,0 +1,69 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package helper; + +import java.io.Serializable; +import java.util.LinkedList; +import java.util.List; +import javax.swing.AbstractListModel; + +/** + * Diese Klasse stellt einen Auftrag dar, der aus mehreren Auftragspositionen besteht + * @author jmueller + */ +public class Auftrag extends AbstractListModel implements Serializable { + private List<AuftragsPosition> positionen; + + + public Auftrag(){ + this.positionen = new LinkedList<AuftragsPosition>(); + } + + + /** + * gibt die Positionen zurück + * @return die Auftragspositionen + */ + public List<AuftragsPosition> getPositionen() { + return this.positionen; + } + + public int getSize() { + return this.positionen.size(); + } + + public Object getElementAt(int arg0) { + return this.positionen.get(arg0); + } + + + public void addPosition(int id, int anzahl){ + this.addPosition(new AuftragsPosition(id, anzahl)); + + } + + public void addPosition(AuftragsPosition position){ + this.positionen.add(position); + this.fireIntervalAdded(position, this.positionen.size()-1, this.positionen.size()-1); + } + + public void removePosition(AuftragsPosition position){ + this.positionen.remove(position); + this.fireIntervalRemoved(position, 0, this.positionen.size()); + } + + + public void positionChanged(AuftragsPosition position){ + int index = this.positionen.indexOf(position); + this.fireContentsChanged(position, index, index); + } + + + + + + +} diff --git a/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/helper/AuftragsPosition.java b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/helper/AuftragsPosition.java new file mode 100644 index 0000000..fe276fa --- /dev/null +++ b/Master/Daten- und Systemintegration/Praktikum/Projekte/DSI-Praktikum-1/ausgang/DSI-ejb/src/java/helper/AuftragsPosition.java @@ -0,0 +1,56 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package helper; + +import java.io.Serializable; + +/** + * Die Klasse stellt eine Auftragsposition dar + * @author jmueller + */ +public class AuftragsPosition implements Serializable { + private int id; + private int anzahl; + + public AuftragsPosition() { + this.id = 0; + this.anzahl = 0; + } + + public AuftragsPosition(int _id, int _anzahl){ + this.id = _id; + this.anzahl = _anzahl; + } + + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getAnzahl() { + return anzahl; + } + + public void setAnzahl(int anzahl) { + this.anzahl = anzahl; + } + + + @Override + public String toString(){ + return "Id: " + this.id + ", Anzahl: " + this.anzahl; + } + + + + + + +} |
