1 | package fr.sii.ogham.core.builder.mimetype; | |
2 | ||
3 | import java.util.ArrayList; | |
4 | import java.util.List; | |
5 | import java.util.regex.Pattern; | |
6 | ||
7 | import fr.sii.ogham.core.builder.Builder; | |
8 | import fr.sii.ogham.core.fluent.AbstractParent; | |
9 | import fr.sii.ogham.core.mimetype.replace.ContainsMimetypeReplacer; | |
10 | import fr.sii.ogham.core.mimetype.replace.FirstMatchingMimetypeReplacer; | |
11 | import fr.sii.ogham.core.mimetype.replace.MimetypeReplacer; | |
12 | import fr.sii.ogham.core.mimetype.replace.PatternMimetypeReplacer; | |
13 | ||
14 | /** | |
15 | * | |
16 | * @author Aurélien Baudet | |
17 | * | |
18 | * @param <P> | |
19 | * the type of the parent builder (when calling {@link #and()} | |
20 | * method) | |
21 | */ | |
22 | public class SimpleReplaceMimetypeBuilder<P> extends AbstractParent<P> implements ReplaceMimetypeBuilder<P> { | |
23 | private final List<Builder<MimetypeReplacer>> delegates; | |
24 | ||
25 | /** | |
26 | * Initializes the builder with the parent instance (used by the | |
27 | * {@link #and()} method). | |
28 | * | |
29 | * @param parent | |
30 | * the parent instance | |
31 | */ | |
32 | public SimpleReplaceMimetypeBuilder(P parent) { | |
33 | super(parent); | |
34 | delegates = new ArrayList<>(); | |
35 | } | |
36 | ||
37 | @Override | |
38 | public ReplaceMimetypeBuilder<P> contains(String contains, String replacement) { | |
39 | delegates.add(new ContainsReplacement(contains, true, replacement)); | |
40 |
1
1. contains : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder::contains → NO_COVERAGE |
return this; |
41 | } | |
42 | ||
43 | @Override | |
44 | public ReplaceMimetypeBuilder<P> contains(String contains, boolean ignoreCase, String replacement) { | |
45 | delegates.add(new ContainsReplacement(contains, ignoreCase, replacement)); | |
46 |
1
1. contains : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder::contains → NO_COVERAGE |
return this; |
47 | } | |
48 | ||
49 | @Override | |
50 | public ReplaceMimetypeBuilder<P> pattern(String matchingPattern, String replacement) { | |
51 | delegates.add(new PatternReplacement(Pattern.compile(matchingPattern), replacement)); | |
52 |
2
1. pattern : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder::pattern → NO_COVERAGE 2. pattern : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder::pattern → SURVIVED |
return this; |
53 | } | |
54 | ||
55 | @Override | |
56 | public ReplaceMimetypeBuilder<P> pattern(Pattern matchingPattern, String replacement) { | |
57 | delegates.add(new PatternReplacement(matchingPattern, replacement)); | |
58 |
1
1. pattern : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder::pattern → NO_COVERAGE |
return this; |
59 | } | |
60 | ||
61 | @Override | |
62 | public MimetypeReplacer build() { | |
63 | List<MimetypeReplacer> replacers = new ArrayList<>(); | |
64 | for (Builder<MimetypeReplacer> builder : delegates) { | |
65 | replacers.add(builder.build()); | |
66 | } | |
67 |
5
1. build : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder::build → NO_COVERAGE 2. build : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder::build → TIMED_OUT 3. build : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder::build → KILLED 4. build : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder::build → KILLED 5. build : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder::build → KILLED |
return new FirstMatchingMimetypeReplacer(replacers); |
68 | } | |
69 | ||
70 | private static class PatternReplacement implements Builder<MimetypeReplacer> { | |
71 | private final Pattern pattern; | |
72 | private final String replacement; | |
73 | ||
74 | public PatternReplacement(Pattern pattern, String replacement) { | |
75 | super(); | |
76 | this.pattern = pattern; | |
77 | this.replacement = replacement; | |
78 | } | |
79 | ||
80 | @Override | |
81 | public MimetypeReplacer build() { | |
82 |
5
1. build : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder$PatternReplacement::build → NO_COVERAGE 2. build : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder$PatternReplacement::build → KILLED 3. build : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder$PatternReplacement::build → KILLED 4. build : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder$PatternReplacement::build → KILLED 5. build : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder$PatternReplacement::build → KILLED |
return new PatternMimetypeReplacer(pattern, replacement); |
83 | } | |
84 | ||
85 | } | |
86 | ||
87 | private static class ContainsReplacement implements Builder<MimetypeReplacer> { | |
88 | private final String contains; | |
89 | private final boolean ignoreCase; | |
90 | private final String replacement; | |
91 | ||
92 | public ContainsReplacement(String contains, boolean ignoreCase, String replacement) { | |
93 | super(); | |
94 | this.contains = contains; | |
95 | this.ignoreCase = ignoreCase; | |
96 | this.replacement = replacement; | |
97 | } | |
98 | ||
99 | @Override | |
100 | public MimetypeReplacer build() { | |
101 |
1
1. build : replaced return value with null for fr/sii/ogham/core/builder/mimetype/SimpleReplaceMimetypeBuilder$ContainsReplacement::build → NO_COVERAGE |
return new ContainsMimetypeReplacer(contains, ignoreCase, replacement); |
102 | } | |
103 | ||
104 | } | |
105 | } | |
Mutations | ||
40 |
1.1 |
|
46 |
1.1 |
|
52 |
1.1 2.2 |
|
58 |
1.1 |
|
67 |
1.1 2.2 3.3 4.4 5.5 |
|
82 |
1.1 2.2 3.3 4.4 5.5 |
|
101 |
1.1 |