Skip to content

Package: BlattanzahlSpanneFactory

BlattanzahlSpanneFactory

nameinstructionbranchcomplexitylinemethod
parse(String)
M: 15 C: 96
86%
M: 2 C: 9
82%
M: 2 C: 6
75%
M: 2 C: 14
88%
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.BlattAnzahlSpanne;
4: import util.RegexConstants;
5:
6: import java.util.regex.Matcher;
7:
8: /**
9: *
10: * Hier werden die {@link DirectProduktionsauftragsParameterFactory} und die {@link DirectVoraussichtlicheDokumentenklassenVariablenFactory} genutzt
11: * um eine {@link BlattanzahlSpanneFactory} zu erstellen.
12: *
13: */
14: public enum BlattanzahlSpanneFactory
15:                 implements DirectProduktionsauftragsParameterFactory<BlattAnzahlSpanne>, DirectVoraussichtlicheDokumentenklassenVariablenFactory<BlattAnzahlSpanne> {
16:         INSTANCE;
17:
18:         //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?!
19:         @Override
20:         public BlattAnzahlSpanne parse(final String wert) {
21:                 final Matcher zwischenZweiZahlenMatcher = RegexConstants.ZWISCHEN_ZWEI_ZAHLEN.matcher(wert);
22:                 final Matcher vergleichsoperatorMitZahlMatcher = RegexConstants.VERGLEICHS_OPERATOR_MIT_ZAHL.matcher(wert);
23:                 final Matcher nurZahlMatcher = RegexConstants.ZAHL.matcher(wert);
24:
25:•                if (vergleichsoperatorMitZahlMatcher.find()) {
26:•                        switch (vergleichsoperatorMitZahlMatcher.group(1)) {
27:                                 case "<":
28:                                         return new BlattAnzahlSpanne(0, Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)));
29:                                 case ">":
30:                                         return new BlattAnzahlSpanne(Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)) + 1, Integer.MAX_VALUE);
31:                                 case "<=":
32:                                         return new BlattAnzahlSpanne(0, Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)) + 1);
33:                                 case ">=":
34:                                         return new BlattAnzahlSpanne(Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)), Integer.MAX_VALUE);
35:                                 default:
36:                                         break;
37:                         }
38:•                } else if (zwischenZweiZahlenMatcher.find()) {
39:                         return new BlattAnzahlSpanne(Integer.parseInt(zwischenZweiZahlenMatcher.group(1)), Integer.parseInt(zwischenZweiZahlenMatcher.group(2)) + 1);
40:•                } else if (nurZahlMatcher.matches()) {
41:                         final int zahl = Integer.parseInt(nurZahlMatcher.group(1));
42:                         return new BlattAnzahlSpanne(zahl, zahl);
43:                 }
44:                 throw new IllegalArgumentException("Der Wert [ " + wert + " ] der Blattanzahl matcht auf keines der vorgegebenen Pattern.");
45:         }
46: }