Skip to contentMethod: getIdentifier()
      1: package auftraege.versand;
2: 
3: import auftraege.auftragsBildungsParameter.abstraction.DokumentenklassenVariable;
4: import auftraege.auftragsBildungsParameter.abstraction.DokumentenklassenVariablenVisitor;
5: import com.google.common.base.Objects;
6: 
7: /**
8:  * Ein Kunde besitzt folgende Attribute: Adresse und Identifier(String) damit man ihn in einem Produktionsauftrag eindeutig identifizieren kann.
9:  */
10: public final class Kunde implements DokumentenklassenVariable {
11:         private final Adresse adresse;
12:         private final String identifier;
13: 
14: 
15:         private Kunde(final String identifier, final Adresse adresse) {
16:                 this.identifier = identifier;
17:         this.adresse = adresse;
18:     }
19: 
20:         /**
21:          * Üblicher Getter für das Attribut adresse.
22:          *
23:          * @return liefert adresse.
24:          */
25:         public Adresse getAdresse() {
26:                 return this.adresse;
27:         }
28: 
29:         /**
30:          * Getter für den Namen des Kunden.
31:          *
32:          * @return liefert NFamen des Kunden.
33:          */
34:         public String getIdentifier() {
35:                 return this.identifier;
36:         }
37: 
38:         /**
39:          * TODO Art: Feature request; hier ist nur ein dummy-Konstruktor, das sollte auch nochmal behandelt werden.
40:          * <p>
41:          * vielleicht erstellt einen Kunden, welcher über den identifier eindeutig identifiziert werden kann
42:          *
43:          * @param identifier eindeutiger identifier
44:      * @return das erstellte Kundenobjekt.
45:          */
46:         public static Kunde create(final String identifier) {
47:                 //TODO Art: Feature request; eigentlich müsste hier durch eine Liste von Kunden iteriert werdnen und dieser herausgefiltert werden.
48:                 return new Kunde(identifier, null);
49:         }
50: 
51:         @Override
52:         public <T> T accept(final DokumentenklassenVariablenVisitor<T> v) {
53:                 return v.handle(this);
54:         }
55: 
56:     @Override
57:     public boolean equals(final Object o) {
58:         if (this == o) {
59:             return true;
60:         }
61:         if (!(o instanceof Kunde)) {
62:             return false;
63:         }
64:         final Kunde kunde = (Kunde) o;
65:         return Objects.equal(this.adresse, kunde.adresse)
66:                 && Objects.equal(this.identifier, kunde.identifier);
67:     }
68: 
69:     @Override
70:     public int hashCode() {
71:         return Objects.hashCode(this.adresse, this.identifier);
72:     }
73: }