summaryrefslogtreecommitdiffstats
path: root/Master/Daten- und Systemintegration/Praktikum/DSI-Praktikum-1_ausgang/WS-Client/src/wsclient/Bestellung.java
blob: d2902d70423827d821e1d72b7900d637c4047159 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wsclient;

/*
 * TODO: nach der Generierung der Webservice-Clients bitte Kommentar entfernen
 * 
import beans.artikelmanager.*;
*/


/**
 *
 * @author Jan
 */
public class Bestellung {

    
    /**
     * fuehrt eine Bestellung durch
     * 
     * @param kundenId          Die ID des Kunden
     * @param artikelId         Die ID des Artikels
     * @param artikelAnzahl     Die Anzahl der Artikel
     * @return  String          Report ueber die Bestellung
     * @throws java.lang.Exception
     */
    public String fuehreBestellungDurch(long kundenId, long artikelId, long artikelAnzahl) throws Exception {
        if(validiereBestellung(artikelId, artikelAnzahl, kundenId) != true) {
            throw new Exception("Bestellung nicht valide");
        }
        beans.artikelmanager.Artikel artikel = holeArtikelDaten(artikelId);

        if(pruefeVerfuegbarkeit(artikelId, artikelAnzahl)!=true) {
            long mindestMenge = holeMindestmengeFuerArtikel(artikelId);
            long imLager = artikel.getAnzahl();
            long anzahlNachbestellen = artikelAnzahl - imLager  + mindestMenge;
            bestelleNach(artikelId, anzahlNachbestellen);
            System.out.println(String.format("Reordeing %d pieces of %d", anzahlNachbestellen,artikelId));
        }
        bucheAus(artikelId, artikelAnzahl);
        double preisNetto = berechneGesamtpreis(artikelAnzahl, artikel.getPreis());
        double mwst = berechneMehrwertSteuer(preisNetto);
        String output = erstelleReport(kundenId, artikelAnzahl, artikel, preisNetto, mwst);
        return output;
        //throw new Exception("noch nicht implementiert!");
    }
    
    

    
/**
 * Die folgenden Methoden koennen zum wrappen der Webservice-Aufrufe verwendet werden
 * mittels erstelleReport kann ein Report generiert werden, 
 * den fuehreBestellungenDurch zurueckgeben kann
 */    

    private boolean validiereBestellung(long artikelId, long anzahl, long kundenId) throws Exception {
        try { // Call Web Service Operation
            beans.bestell.BestellBeanService service = new beans.bestell.BestellBeanService();
            beans.bestell.BestellBean port = service.getBestellBeanPort();
            boolean result = port.validiereBestellung(artikelId, anzahl, kundenId);
            System.out.println("Result = "+result);
            return result;
        } catch (Exception ex) {
            throw  new Exception("Error validating order with BestellBeanService",ex);
        }
    }

    private beans.artikelmanager.Artikel holeArtikelDaten(long artikelId) throws beans.artikelmanager.UnbekanntesEntityException_Exception, Exception {
        try { // Call Web Service Operation
            beans.artikelmanager.ArtikelManagerBeanService service = new beans.artikelmanager.ArtikelManagerBeanService();
            beans.artikelmanager.ArtikelManagerBean port = service.getArtikelManagerBeanPort();
            beans.artikelmanager.Artikel result = port.readArtikel(artikelId);
            System.out.println("Result = "+result);
            return result;
        } catch (Exception ex) {
            throw new Exception("Error fetching Artikel from ArtikelManagerBeanService", ex);
        }
    }

    private boolean pruefeVerfuegbarkeit(long artikelId, long anzahl) throws Exception {
        try { // Call Web Service Operation
            beans.lager.LagerBeanService service = new beans.lager.LagerBeanService();
            beans.lager.LagerBean port = service.getLagerBeanPort();
            boolean result = port.pruefeVerfuegbarkeit(artikelId, anzahl);
            System.out.println("Result = "+result);
            return result;
        } catch (Exception ex) {
            throw new Exception("Error fetching availability from LagerBeanService", ex);
        }

    }

    private void bestelleNach(long artikelId, long anzahl) throws beans.lieferant.IllegalerWertException_Exception, beans.lieferant.UnbekanntesEntityException_Exception, Exception {
        try { // Call Web Service Operation
            beans.lieferant.LieferantBeanService service = new beans.lieferant.LieferantBeanService();
            beans.lieferant.LieferantBean port = service.getLieferantBeanPort();
            port.bestelleNach(artikelId, anzahl);
        } catch (Exception ex) {
            throw new Exception("Error calling bestelleNach Service Method of LieferantBeanService",ex);
        }

    }

    private void bucheAus(long artikelId, long anzahl) throws beans.lager.IllegalerWertException_Exception, beans.lager.UnbekanntesEntityException_Exception, Exception {
        try { // Call Web Service Operation
            beans.lager.LagerBeanService service = new beans.lager.LagerBeanService();
            beans.lager.LagerBean port = service.getLagerBeanPort();
            port.bucheArtikelAus(artikelId, anzahl);
        } catch (Exception ex) {
            throw new Exception("Error calling bucheAus Service Method of LagerBeanService", ex);
        }

    }

    private double berechneGesamtpreis(long anzahl, double preis) throws Exception {
        try { // Call Web Service Operation
            beans.bestell.BestellBeanService service = new beans.bestell.BestellBeanService();
            beans.bestell.BestellBean port = service.getBestellBeanPort();
            double result = port.berechneGesamtpreis(anzahl, preis);
            System.out.println("Result = "+result);
            return result;
        } catch (Exception ex) {
            throw new Exception("Error calling berechneGesamtpreis Service Method of BestellBeanService", ex);
        }

    }

    private double berechneMehrwertSteuer(double preis) throws Exception {
        try { // Call Web Service Operation
            beans.bestell.BestellBeanService service = new beans.bestell.BestellBeanService();
            beans.bestell.BestellBean port = service.getBestellBeanPort();
            double result = port.berechneMehrwertSteuer(preis);
            System.out.println("Result = "+result);
            return result;
        } catch (Exception ex) {
            throw new Exception("Error calling berechneMehrwertSteuer Service Method of BestellBeanService", ex);
        }

    }

    private long holeMindestmengeFuerArtikel(long artikelId) throws Exception {
        try { // Call Web Service Operation
            ws.MindestMengeService service = new ws.MindestMengeService();
            ws.MindestMenge port = service.getMindestMengePort();
            long result = port.holeMindestmengeFuerArtikel(artikelId);
            System.out.println("Result = "+result);
            return result;
        } catch (Exception ex) {
            throw new Exception("Error calling holeMindestmengeFuerArtikel Service Method of MindestMengeService", ex);
        }

    }
    
   private String erstelleReport(long kundenId, long artikelAnzahl, beans.artikelmanager.Artikel artikel, double preisOhneMwSt , double MwSt){
        String output = "";
        
        output += "<html>";
        output += "<h2>Bestellung</h2>";
                
        output += "Kunden-Nr: " + kundenId  + "<p>";
        output += "Artikel" + "<p>";
        output += "  Artikel-Nr: " + artikel.getId() + "  Bezeichnung: " + artikel.getBezeichnung() + "<p>";
        output += "Bestellmenge: " + artikelAnzahl + "<p>";
        output += "Preis: " + String.format("%.2f", preisOhneMwSt) + "€ + " + String.format("%.2f", MwSt) + "€ MwSt = " + String.format("%.2f" ,(preisOhneMwSt + MwSt)) + "€" + "<p>";
        output += "</html>";

        return output;        
    } 
 
}