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 guru.mikelue.jdut.DuetFunctions;
8 import guru.mikelue.jdut.jdbc.JdbcFunction;
9 import guru.mikelue.jdut.yaml.LoadingYamlException;
10
11
12
13
14 public class CodeNode implements NodeBase {
15 private Optional<JdbcFunction<Connection, ?>> buildFunction = Optional.empty();
16 private Optional<JdbcFunction<Connection, ?>> cleanFunction = Optional.empty();
17
18 @SuppressWarnings("unchecked")
19 public CodeNode(Object codeNode)
20 {
21 Map<String, JdbcFunction<Connection, ?>> sqlCode = (Map<String, JdbcFunction<Connection, ?>>)codeNode;
22
23 sqlCode.forEach(
24 (key, value) -> {
25 switch (key) {
26 case "build_operation":
27 buildFunction = Optional.of(value);
28 break;
29 case "clean_operation":
30 cleanFunction = Optional.of(value);
31 break;
32 default:
33 throw new LoadingYamlException("Unknown property of !sql!code: \"%s\"", key);
34 }
35 }
36 );
37 }
38
39 @Override
40 public NodeType getNodeType()
41 {
42 return NodeType.Code;
43 }
44
45 public DuetFunctions toDuetFunctions()
46 {
47 return new DuetFunctions() {
48 @Override
49 public JdbcFunction<Connection, ?> getBuildFunction()
50 {
51 return buildFunction.orElse(conn -> null);
52 }
53 @Override
54 public JdbcFunction<Connection, ?> getCleanFunction()
55 {
56 return cleanFunction.orElse(conn -> null);
57 }
58 };
59 }
60 }