Skip to contentMethod: createWholeDay(LocalDate, KalenderEintragTyp)
      1: package zeit.eintraege;
2: 
3: import tec.uom.se.ComparableQuantity;
4: 
5: import javax.measure.quantity.Time;
6: import java.time.LocalDate;
7: import java.time.LocalDateTime;
8: import java.util.Objects;
9: 
10: /**
11:  * Diese Klasse repräsentiert alle Kalendereinträge, außer diese, welche Belegungen von Mitarbeitern oder Maschinen darstellen.
12:  * Deswegen darf der {@link KalenderEintragTyp KalenderEintragTyp} nicht Belegt sein.
13:  */
14: public final class KalenderEintragGenerell extends KalenderEintrag {
15: 
16:     private KalenderEintragGenerell(final LocalDateTime von, final ComparableQuantity<Time> dauer, final KalenderEintragTyp typ) {
17:         super(von, dauer, typ);
18:     }
19: 
20:     private KalenderEintragGenerell(final LocalDateTime von, final LocalDateTime bis, final KalenderEintragTyp typ) {
21:         super(von, bis, typ);
22:     }
23: 
24:     @Override
25:     public <T> T accept(final KalenderEintragVisitor<T> visitor) {
26:         return visitor.handle(this);
27:     }
28: 
29: 
30:     /**
31:      * Create Methode.
32:      * @param von von Datum des Kalendereintrags
33:      * @param dauer Dauer des Kalendereintrags
34:      * @param typ Typ des Kalendereintrags z.B. Belegt
35:      * @return den erstellten Kalendereintrag.
36:      */
37:     public static KalenderEintragGenerell create(final LocalDateTime von, final ComparableQuantity<Time> dauer, final KalenderEintragTyp typ) {
38:         Objects.requireNonNull(von);
39:         Objects.requireNonNull(dauer);
40:         Objects.requireNonNull(typ);
41: 
42:         return new KalenderEintragGenerell(von, dauer, typ);
43:     }
44: 
45:     /**
46:      * Create Methode.
47:      * @param von von Datum des Kalendereintrags
48:      * @param bis bis Datum des Kalendereintrags
49:      * @param typ Typ des Kalendereintrags z.B. Belegt
50:      * @return den erstellten Kalendereintrag.
51:      */
52:     public static KalenderEintragGenerell create(final LocalDateTime von, final LocalDateTime bis, final KalenderEintragTyp typ) {
53:         Objects.requireNonNull(von);
54:         Objects.requireNonNull(bis);
55:         Objects.requireNonNull(typ);
56: 
57:         if (!von.isBefore(bis)) {
58:                 throw new IllegalArgumentException("Von-Zeitpunkt muss vor dem Bis-Zeitpunkt liegen!");
59:         }
60: 
61:         return new KalenderEintragGenerell(von, bis, typ);
62:     }
63: 
64:     /**
65:      * @param day Tag welcher vom Eintrag umfasst werden soll.
66:      * @param typ Typ des Kalendereintrags z.B. Belegt
67:      * @return einen Kalendereintrag, welcher den ganzen durch day spezifizierten Tag umfasst.
68:      */
69:     public static KalenderEintragGenerell createWholeDay(final LocalDate day, final KalenderEintragTyp typ) {
70:         Objects.requireNonNull(day);
71:         Objects.requireNonNull(typ);
72: 
73:         return new KalenderEintragGenerell(day.atStartOfDay(),
74:                 day.atTime(Zeitraum.BEFORE_MIDNIGHT_HOUR,
75:                             Zeitraum.BEFORE_MIDNIGHT_MINUTE,
76:                             Zeitraum.BEFORE_MIDNIGHT_SECOND), typ);
77:     }
78: 
79: 
80: }