Skip to contentMethod: equals(Object)
      1: package zeit.eintraege;
2: 
3: import auftraege.ProduktionsAuftrag;
4: import com.google.common.base.Objects;
5: import tec.uom.se.ComparableQuantity;
6: 
7: import javax.measure.quantity.Time;
8: import java.time.LocalDateTime;
9: 
10: /**
11:  * Repräsentiert abstrakt die Belegung eines Menschen oder einer Maschine in der Produktionsplanung.
12:  * Diese erbt von KalenderEintrag, da diese Belegungen im Kalender des Menschen oder der Maschine eingetragen werden müssen.
13:  */
14: public abstract class BelegungsEintrag extends KalenderEintrag {
15:         private final ProduktionsAuftrag zuVerarbeitenderAuftrag;
16: 
17:         /**
18:          * 
19:          * @param startZeitpunkt Startzeitpunkt der Belegung
20:          * @param dauer Dauer der Belegung
21:      * @param zuVerarbeitenderAuftrag Produktionsauftrag an welchem gearbeitet wird
22:          */
23:         protected BelegungsEintrag(final LocalDateTime startZeitpunkt,
24:                               final ComparableQuantity<Time> dauer,
25:                               final ProduktionsAuftrag zuVerarbeitenderAuftrag) {
26:         super(startZeitpunkt, dauer, KalenderEintragTyp.BELEGT);
27:         this.zuVerarbeitenderAuftrag = zuVerarbeitenderAuftrag;
28:     }
29: 
30:         /**
31:          * 
32:          * @param startZeitpunkt Startzeitpunkt der Belegung
33:          * @param endeZeitpunkt Endezeitpunkt der Belegung
34:      * @param zuVerarbeitenderAuftrag Produktionsauftrag an welchem gearbeitet wird
35:          */
36:     protected BelegungsEintrag(final LocalDateTime startZeitpunkt,
37:                              final LocalDateTime endeZeitpunkt,
38:                              final ProduktionsAuftrag zuVerarbeitenderAuftrag) {
39:         super(startZeitpunkt, endeZeitpunkt, KalenderEintragTyp.BELEGT);
40:         this.zuVerarbeitenderAuftrag = zuVerarbeitenderAuftrag;
41:     }
42: 
43:     /**
44:      * @param andererEintrag andere Belegung
45:      * @return true, falls der Zeitraum der Belegung und der Produktionsauftrag an welchem gearbeitet wird gleich sind.
46:      */
47:         public boolean gleicherZeitraumUndProduktionsauftrag(final BelegungsEintrag andererEintrag) {
48:                 return this.getVon().equals(andererEintrag.getVon())
49:                                 && this.getBis().equals(andererEintrag.getBis())
50:                                 && this.getZuVerarbeitenderAuftrag().equals(andererEintrag.getZuVerarbeitenderAuftrag());
51:         }
52: 
53:         /**
54:          * @return den Produktionsauftrag an welchem, im Rahmen dieser Belegung, gearbeitet wird.
55:          */
56:         public ProduktionsAuftrag getZuVerarbeitenderAuftrag() {
57:                 return this.zuVerarbeitenderAuftrag;
58:         }
59: 
60:     @Override
61:     public boolean equals(final Object o) {
62:•        if (this == o) {
63:             return true;
64:         }
65:•        if (!(o instanceof BelegungsEintrag)) {
66:             return false;
67:         }
68:•        if (!super.equals(o)) {
69:             return false;
70:         }
71:         final BelegungsEintrag that = (BelegungsEintrag) o;
72:         return Objects.equal(this.zuVerarbeitenderAuftrag, that.zuVerarbeitenderAuftrag);
73:     }
74: 
75:     @Override
76:     public int hashCode() {
77:         return Objects.hashCode(super.hashCode(), this.zuVerarbeitenderAuftrag);
78:     }
79: }