Skip to content

Package: ZeitraumFactory

ZeitraumFactory

nameinstructionbranchcomplexitylinemethod
parse(String)
M: 20 C: 62
76%
M: 3 C: 6
67%
M: 3 C: 4
57%
M: 2 C: 13
87%
M: 0 C: 1
100%
static {...}
M: 0 C: 14
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%

Coverage

1: package auftraege.factory;
2:
3: import util.Constants;
4: import util.RegexConstants;
5: import zeit.eintraege.Zeitraum;
6:
7: import java.time.LocalDate;
8: import java.util.regex.Matcher;
9:
10:
11: /**
12: * Ist in der Lage, SLA zu erstellen.
13: */
14: public enum ZeitraumFactory implements DirectProduktionsauftragsParameterFactory<Zeitraum> {
15:         INSTANCE;
16:         
17:         @Override
18:         public Zeitraum parse(final String wert) {
19:                 final Matcher zwischenZweiDatenMatcher =
20:                                 RegexConstants.ZWISCHEN_ZWEI_DATEN.matcher(wert);
21:                 final Matcher vergleichsoperatorDatumMatcher =
22:                                 RegexConstants.VERGLEICHS_OPERATOR_MIT_DATUM.matcher(wert);
23:•                if (zwischenZweiDatenMatcher.find()) {
24:                         return Zeitraum.create(LocalDate.parse(zwischenZweiDatenMatcher.group(1), Constants.FORMATTER_GER_DATE),
25:                                         LocalDate.parse(zwischenZweiDatenMatcher.group(2), Constants.FORMATTER_GER_DATE));
26:•                } else if (vergleichsoperatorDatumMatcher.find()) {
27:                         final String datum = vergleichsoperatorDatumMatcher.group(2);
28:                         // TODO Art: Work in Progress; hier müssen noch irgendwie die Grenzen mit inklusive und exklusive abgekaspert werden.
29:•                        switch (vergleichsoperatorDatumMatcher.group(1)) {
30:                         case "<":
31:                                 return Zeitraum.create(LocalDate.MIN, LocalDate.parse(datum, Constants.FORMATTER_GER_DATE));
32:                         case ">":
33:                                 return Zeitraum.create(LocalDate.parse(datum, Constants.FORMATTER_GER_DATE).plusDays(1), LocalDate.MAX);
34:                         case "<=":
35:                                 return Zeitraum.create(LocalDate.MIN, LocalDate.parse(datum, Constants.FORMATTER_GER_DATE).plusDays(1));
36:                         case ">=":
37:                                 return Zeitraum.create(LocalDate.parse(datum, Constants.FORMATTER_GER_DATE), LocalDate.MAX);
38:                         default:
39:                                 break;
40:                         }
41:                 }
42:                 throw new IllegalArgumentException(
43:                                 "Der Wert [ " + wert + " ] des SLA matcht auf keines der vorgegebenen Pattern.");
44:         }
45: }