Skip to content

Package: SendungsanzahlSpanneFactory

SendungsanzahlSpanneFactory

nameinstructionbranchcomplexitylinemethod
parse(String)
M: 65 C: 46
41%
M: 7 C: 4
36%
M: 6 C: 2
25%
M: 7 C: 9
56%
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 auftraege.auftragsBildungsParameter.SendungsAnzahlSpanne;
4: import util.RegexConstants;
5:
6: import java.util.regex.Matcher;
7:
8: /**
9: * Factory, die in der Lage ist, aus einem String eine {@link SendungsAnzahlSpanne} zu erstellen.
10: */
11: public enum SendungsanzahlSpanneFactory implements DirectVoraussichtlicheDokumentenklassenVariablenFactory<SendungsAnzahlSpanne> {
12:
13:         INSTANCE;
14:
15:         //TODO Art: Feature request; Tim: hier meckert Checkstyle wegen des returncounts. Jedoch würde ich sagen, dass das hier völlig legitime 5 Returns sind. Oder?!
16:         @Override
17:         public SendungsAnzahlSpanne parse(final String wert) {
18:                 final Matcher zwischenZweiZahlenMatcher = RegexConstants.ZWISCHEN_ZWEI_ZAHLEN.matcher(wert);
19:                 final Matcher vergleichsoperatorMitZahlMatcher = RegexConstants.VERGLEICHS_OPERATOR_MIT_ZAHL.matcher(wert);
20:                 final Matcher nurZahlMatcher = RegexConstants.ZAHL.matcher(wert);
21:
22:•                if (vergleichsoperatorMitZahlMatcher.find()) {
23:•                        switch (vergleichsoperatorMitZahlMatcher.group(1)) {
24:                                 case "<":
25:                                         return new SendungsAnzahlSpanne(0, Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)));
26:                                 case ">":
27:                                         return new SendungsAnzahlSpanne(Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)) + 1, Integer.MAX_VALUE);
28:                                 case "<=":
29:                                         return new SendungsAnzahlSpanne(0, Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)) + 1);
30:                                 case ">=":
31:                                         return new SendungsAnzahlSpanne(Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)), Integer.MAX_VALUE);
32:                                 default:
33:                                         break;
34:                         }
35:•                } else if (zwischenZweiZahlenMatcher.find()) {
36:                         return new SendungsAnzahlSpanne(Integer.parseInt(zwischenZweiZahlenMatcher.group(1)), Integer.parseInt(zwischenZweiZahlenMatcher.group(2)) + 1);
37:•                } else if (nurZahlMatcher.matches()) {
38:                         final int zahl = Integer.parseInt(nurZahlMatcher.group(1));
39:                         return new SendungsAnzahlSpanne(zahl, zahl);
40:                 }
41:                 throw new IllegalArgumentException("Der Wert [ " + wert + " ] der Blattanzahl matcht auf keines der vorgegebenen Pattern.");
42:         }
43:
44: }