1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.scripting.velocity;
17
18 import java.io.IOException;
19 import java.io.StringWriter;
20
21 import org.apache.velocity.context.InternalContextAdapter;
22 import org.apache.velocity.runtime.parser.node.ASTBlock;
23 import org.apache.velocity.runtime.parser.node.Node;
24
25 public class WhereDirective extends TrimDirective {
26
27 @Override
28 public String getName() {
29 return "where";
30 }
31
32 @Override
33 protected Params getParams(InternalContextAdapter context, Node node) throws IOException {
34 final Params params = new Params();
35 params.setPrefix("WHERE");
36 params.setPrefixOverrides("AND |OR |AND\n|OR\n|AND\r|OR\r");
37 if (node.jjtGetNumChildren() == 1) {
38 final Node child = node.jjtGetChild(0);
39 if (child instanceof ASTBlock) {
40 StringWriter blockContent = new StringWriter();
41 child.render(context, blockContent);
42 params.setBody(blockContent.toString().trim());
43 return params;
44 }
45 }
46 return null;
47 }
48
49 }