1 package guru.mikelue.jdut.yaml.node;
2
3 import java.sql.Connection;
4 import java.util.Map;
5 import java.util.Optional;
6
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9
10 import guru.mikelue.jdut.operation.DefaultOperators;
11 import guru.mikelue.jdut.yaml.LoadingYamlException;
12
13
14
15
16 public class ConfigNode {
17 private Logger logger = LoggerFactory.getLogger(ConfigNode.class);
18
19 private Optional<Boolean> transactional = Optional.of(false);
20 private Optional<Integer> transactionIsolation = Optional.empty();
21 private String nameOfBuildOperator = DefaultOperators.INSERT;
22 private String nameOfCleanOperator = DefaultOperators.DELETE;
23 private Optional<String> decorator = Optional.empty();
24
25
26
27
28 public ConfigNode() {}
29
30 @SuppressWarnings("unchecked")
31 public ConfigNode(Object configNode)
32 {
33 Map<String, Map<String, ?>> mapOfConfig = (Map<String, Map<String, ?>>)configNode;
34
35 mapOfConfig.get("config").forEach(
36 (key, value) -> {
37 switch (key) {
38 case "transaction":
39 logger.trace("With transaction: [{}]", value);
40 transactional = Optional.of((Boolean)value);
41 break;
42 case "transaction_isolation":
43 logger.trace("With transaction isolation: [{}]", value);
44 transactionIsolation = Optional.of(getTransactionIsolation((String)value));
45 break;
46 case "build_operation":
47 nameOfBuildOperator = (String)value;
48 break;
49 case "clean_operation":
50 nameOfCleanOperator = (String)value;
51 break;
52 case "decorator":
53 decorator = Optional.of((String)value);
54 break;
55 default:
56 throw new LoadingYamlException("Unknown property for \"config\": \"%s\"", key);
57 }
58 }
59 );
60 }
61
62 public boolean getTransactionl()
63 {
64 return transactional.get();
65 }
66 public Optional<Integer> getTransactionIsolation()
67 {
68 return transactionIsolation;
69 }
70 public String getNameOfBuildOperator()
71 {
72 return nameOfBuildOperator;
73 }
74 public String getNameOfCleanOperator()
75 {
76 return nameOfCleanOperator;
77 }
78 public Optional<String> getDecorator()
79 {
80 return decorator;
81 }
82
83 private int getTransactionIsolation(String isolation)
84 {
85 switch (isolation.toUpperCase()) {
86 case "READ_COMMITTED":
87 return Connection.TRANSACTION_READ_COMMITTED;
88 case "READ_UNCOMMITTED":
89 return Connection.TRANSACTION_READ_UNCOMMITTED;
90 case "REPEATABLE_READ":
91 return Connection.TRANSACTION_REPEATABLE_READ;
92 case "SERIALIZABLE":
93 return Connection.TRANSACTION_SERIALIZABLE;
94 default:
95 throw new LoadingYamlException("Unknown transaction isolation: [%s]", isolation);
96 }
97 }
98 }