Skip to content

Package: TypMitKalender

TypMitKalender

nameinstructionbranchcomplexitylinemethod
addBelegungsEintrag(BelegungsEintrag)
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
getAlleEintraege(Zeitraum, KalenderEintragTyp[])
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getArbeitszeit(LocalDate, ChronoUnit)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getEintraegeZuTag(LocalDate)
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getFruehesteVerfuegbarkeit(LocalDateTime, Quantity, LocalDateTime)
M: 0 C: 7
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getVerfuegbarkeiten(LocalDateTime, Quantity, LocalDateTime)
M: 0 C: 7
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
istVerfuegbar(LocalDateTime, LocalDateTime)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: package zeit;
2:
3: import util.exceptions.KeineVerfuegbarkeitException;
4: import zeit.eintraege.BelegungsEintrag;
5: import zeit.eintraege.KalenderEintrag;
6: import zeit.eintraege.KalenderEintragTyp;
7: import zeit.eintraege.Zeitraum;
8:
9: import javax.measure.Quantity;
10: import javax.measure.quantity.Time;
11: import java.time.LocalDate;
12: import java.time.LocalDateTime;
13: import java.time.temporal.ChronoUnit;
14: import java.util.Collection;
15:
16: /**
17: * Signalisiert das dieser Typ einen Kalender hat. Die in dieser Schnittstelle enthaltenen Methoden,
18: * werden dann einfach an den Kalender weitergeleitet.
19: */
20: public interface TypMitKalender {
21:         
22:         /**
23:          * @return den Kalender
24:          */
25:         Kalender getKalender();
26:         
27:         /**
28:          * Fügt einen Eintrag dem Kalender hinzu.
29:          *
30:          * @param eintrag
31:          *                 hinzuzufügender Eintrag.
32:          */
33:         default void addBelegungsEintrag(final BelegungsEintrag eintrag) {
34:                 this.getKalender().addEintrag(eintrag);
35:         }
36:         
37:         /**
38:          * @param von
39:          *                 Beginn des Zeitraums
40:          * @param bis
41:          *                 Ende des Zeitraums
42:          *
43:          * @return true, wenn der Kalender Verfügbarkeit für den definierten Zeitraum signalisiert.
44:          */
45:         default boolean istVerfuegbar(final LocalDateTime von, final LocalDateTime bis) {
46:                 return this.getKalender().isVerfuegbar(von, bis);
47:         }
48:         
49:         /**
50:          * @param tag
51:          *                 zu welchem die verfügbare Zeit ermittelt werden soll.
52:          * @param einheit
53:          *                 einheit der Zahl die zurückgegeben wird.
54:          *
55:          * @return Anzahl von der Einheit einheit and verfügbarer Zeit.
56:          */
57:         default long getArbeitszeit(final LocalDate tag, final ChronoUnit einheit) {
58:                 return this.getKalender().getArbeitszeit(tag, einheit);
59:         }
60:         
61:         /**
62:          * @param abZeitpunkt
63:          *                 Zeipunkt ab dem die nächste Verfügbarkeit gefunden werden soll.
64:          * @param benoetigteZeit
65:          *                 Groesse des Zeitslots der benötigt wird
66:          * @param slaFrist
67:          *                 Zeitpunkt, bis zu dem ein Zeitslot gefunden sein muss
68:          *
69:          * @return fruehster Zeitpunkt zu dem ein Zeitslot der spezifizierten Groesse verfügbar ist
70:          * @throws KeineVerfuegbarkeitException
71:          *                 wenn keine Zeitraum bis zum SLA in der vorgegebenen Länge gefunden werden kann.
72:          */
73:         default LocalDateTime getFruehesteVerfuegbarkeit(final LocalDateTime abZeitpunkt,
74:                         final Quantity<Time> benoetigteZeit,
75:                         final LocalDateTime slaFrist) throws KeineVerfuegbarkeitException {
76:                 return this.getKalender().getFruehesteVerfuegbarkeit(abZeitpunkt, benoetigteZeit, slaFrist);
77:         }
78:         
79:         /**
80:          * @param abZeitpunkt
81:          *                 Zeipunkt ab dem die nächste Verfügbarkeit gefunden werden soll.
82:          * @param benoetigteZeit
83:          *                 Groesse des Zeitslots der benötigt wird
84:          * @param slaFrist
85:          *                 Zeitpunkt, bis zu dem ein Zeitslot gefunden sein muss
86:          *
87:          * @return alle Zeitslots bis zur SLA-Frist in denen der Kalender frei ist und die mindestens die Länge der benötigten Zeit haben.
88:          */
89:         default Collection<Zeitraum> getVerfuegbarkeiten(final LocalDateTime abZeitpunkt,
90:                         final Quantity<Time> benoetigteZeit,
91:                         final LocalDateTime slaFrist) {
92:                 return this.getKalender().getVerfuegbarkeiten(abZeitpunkt, benoetigteZeit, slaFrist);
93:         }
94:         
95:         /**
96:          * @param tag
97:          *                 Tag fuer den alle Eintraege zurueckgegeben werden
98:          *
99:          * @return alle Eintraege des spezifizierten Tages; Vielleicht wäre es sinnvoll hier eine List zu nehmen und die Eintraege chronologisch sortiert zu halten
100:          */
101:         default Collection<KalenderEintrag> getEintraegeZuTag(final LocalDate tag) {
102:                 return this.getKalender().getEintraegeZuTagOhneSerienTermine(tag);
103:         }
104:         
105:         /**
106:          * @param zeitraum
107:          * zu welchem die Einträge ermittelt werden soll.
108:          * @param filter
109:          * Liste der Typen, von denen Einträge zurückgegeben werden.
110:          * @return Alle Einträge, bei denen der Typ dem Filter entspricht.
111:          */
112:         default Collection<KalenderEintrag> getAlleEintraege(final Zeitraum zeitraum, final KalenderEintragTyp... filter) {
113:                 return this.getKalender().getAlleEintraege(zeitraum, filter);
114:         }
115: }