Skip to content

Package: IntervallSerienTermin

IntervallSerienTermin

nameinstructionbranchcomplexitylinemethod
IntervallSerienTermin(KalenderEintrag, ComparableQuantity)
M: 0 C: 7
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
berechneKalenderEintraegeZumTag(LocalDate)
M: 0 C: 50
100%
M: 0 C: 8
100%
M: 0 C: 5
100%
M: 0 C: 12
100%
M: 0 C: 1
100%
create(KalenderEintrag, ComparableQuantity)
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%
erstellePassendenKalenderEintrag(Zeitraum)
M: 0 C: 9
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.serientermin;
2:
3: import tec.uom.se.ComparableQuantity;
4: import zeit.ZeitUtils;
5: import zeit.eintraege.KalenderEintrag;
6: import zeit.eintraege.Zeitraum;
7:
8: import javax.measure.quantity.Time;
9: import java.time.LocalDate;
10: import java.time.LocalDateTime;
11: import java.util.Collection;
12: import java.util.HashSet;
13:
14: /**
15: * Klasse die einen IntervallSerienTermin repräsentiert.
16: */
17: public final class IntervallSerienTermin extends SerienTermin {
18:
19:         private final ComparableQuantity<Time> wiederholungsIntervall;
20:         
21:
22:         private IntervallSerienTermin(final KalenderEintrag eintrag, final ComparableQuantity<Time> wiederholungsIntervall) {
23:                 super(eintrag);
24:                 this.wiederholungsIntervall = wiederholungsIntervall;
25:         }
26:
27: /**
28: * @param eintrag Kalendereintrag der sich wiederholt.
29: * @param wiederholungsIntervall Intervall in welchem sich der SerienTermin wiederholt.
30: * @return den erstellten {@link IntervallSerienTermin}
31: */
32:         public static IntervallSerienTermin create(final KalenderEintrag eintrag, final ComparableQuantity<Time> wiederholungsIntervall) {
33:          return new IntervallSerienTermin(eintrag, wiederholungsIntervall);
34: }
35:
36:         @Override
37: public Collection<KalenderEintrag> berechneKalenderEintraegeZumTag(final LocalDate tag) {
38:                 final Collection<KalenderEintrag> eintraege = new HashSet<>();
39:                 
40:                 LocalDateTime laufenderZeitpunktVon = this.getEintrag().getVon();
41:                 
42:•                if (laufenderZeitpunktVon.toLocalDate().isAfter(tag)) {
43:                         return eintraege;
44:                 }
45:                 
46:•                while (laufenderZeitpunktVon.toLocalDate().isBefore(tag) || laufenderZeitpunktVon.toLocalDate().equals(tag)) {
47:                         final Zeitraum zeitraumZumTag =
48:                                         Zeitraum.create(laufenderZeitpunktVon, this.getEintrag().getDauer());
49:•                        if (this.zeitraumAmTag(zeitraumZumTag, tag)) {
50:                                 eintraege.add(this.erstellePassendenKalenderEintrag(zeitraumZumTag));
51:                         }
52:                         laufenderZeitpunktVon = ZeitUtils.addTime(laufenderZeitpunktVon, this.wiederholungsIntervall);
53:                 }
54:                 
55:                 return eintraege;
56:         }
57:         
58:         private KalenderEintrag erstellePassendenKalenderEintrag(final Zeitraum zeitraumZumTag) {
59:                 return this.getEintrag().accept(new CreatePassendenKalenderEintragMitZeitraumVisitor(zeitraumZumTag));
60:         }
61: }