-
Notifications
You must be signed in to change notification settings - Fork 2
/
DefaultTransformStrategyFinder.java
69 lines (57 loc) · 2.45 KB
/
DefaultTransformStrategyFinder.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package org.swisspush.logtransformer.strategy;
import io.vertx.core.MultiMap;
import io.vertx.core.Vertx;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Default implementation of the {@link TransformStrategyFinder}
*
* @author https://github.com/mcweba [Marc-Andre Weber]
*/
public class DefaultTransformStrategyFinder implements TransformStrategyFinder {
private final String strategyHeader;
private final Logger log = LoggerFactory.getLogger(DefaultTransformStrategyFinder.class);
private Vertx vertx;
private DoNothingTransformStrategy doNothingTransformStrategy;
private SplitStorageExpandLogStrategy splitStorageExpandLogStrategy;
public DefaultTransformStrategyFinder(Vertx vertx, String strategyHeader) {
this.vertx = vertx;
this.strategyHeader = strategyHeader;
}
/**
* Returns the corresponding {@link TransformStrategy} implementation based on the provided header strategy property.
*
* @param headers the headers containing the name of the strategy
* @return returns the corresponding {@link TransformStrategy} implementation or {@link DoNothingTransformStrategy} when no matching strategy was found
*/
@Override
public TransformStrategy findTransformStrategy(MultiMap headers){
String strategy = headers.get(strategyHeader);
if(isEmpty(strategy)){
return getDoNothingTransformStrategy();
} else if("SplitStorageExpandLogStrategy".equalsIgnoreCase(strategy)){
return getSplitStorageExpandLogStrategy();
}
log.warn("No log transform strategy found for value '" + strategy + "'. Using DoNothingTransformStrategy instead");
return getDoNothingTransformStrategy();
}
private DoNothingTransformStrategy getDoNothingTransformStrategy(){
if(doNothingTransformStrategy == null){
doNothingTransformStrategy = new DoNothingTransformStrategy(vertx);
}
return doNothingTransformStrategy;
}
private SplitStorageExpandLogStrategy getSplitStorageExpandLogStrategy(){
if(splitStorageExpandLogStrategy == null){
splitStorageExpandLogStrategy = new SplitStorageExpandLogStrategy(vertx);
}
return splitStorageExpandLogStrategy;
}
private boolean isEmpty(String stringToTest){
if(stringToTest == null){
return true;
}
String trimmed = stringToTest.trim();
return trimmed.length() == 0;
}
}