|
39 | 39 | */ |
40 | 40 | package net.sf.jsqlparser.statement; |
41 | 41 |
|
| 42 | +import java.util.ArrayList; |
| 43 | +import java.util.List; |
42 | 44 | import net.sf.jsqlparser.expression.Expression; |
43 | 45 |
|
44 | 46 | /** |
45 | 47 | * |
46 | 48 | * @author toben |
47 | 49 | */ |
48 | | -public class SetStatement implements Statement { |
| 50 | +public final class SetStatement implements Statement { |
49 | 51 |
|
50 | | - private String name; |
51 | | - private Expression expression; |
52 | | - private boolean useEqual; |
| 52 | + private final List<NameExpr> values = new ArrayList<>(); |
53 | 53 |
|
54 | 54 | public SetStatement(String name, Expression expression) { |
55 | | - this.name = name; |
56 | | - this.expression = expression; |
| 55 | + add(name, expression, true); |
| 56 | + } |
| 57 | + |
| 58 | + public void add(String name, Expression expression, boolean useEqual) { |
| 59 | + values.add(new NameExpr(name, expression, useEqual)); |
57 | 60 | } |
58 | 61 |
|
59 | 62 | public boolean isUseEqual() { |
60 | | - return useEqual; |
| 63 | + return values.get(0).useEqual; |
61 | 64 | } |
62 | 65 |
|
63 | 66 | public SetStatement setUseEqual(boolean useEqual) { |
64 | | - this.useEqual = useEqual; |
| 67 | + values.get(0).useEqual = useEqual; |
65 | 68 | return this; |
66 | 69 | } |
67 | 70 |
|
68 | 71 | public String getName() { |
69 | | - return name; |
| 72 | + return values.get(0).name; |
70 | 73 | } |
71 | 74 |
|
72 | 75 | public void setName(String name) { |
73 | | - this.name = name; |
| 76 | + values.get(0).name = name; |
74 | 77 | } |
75 | 78 |
|
76 | 79 | public Expression getExpression() { |
77 | | - return expression; |
| 80 | + return values.get(0).expression; |
78 | 81 | } |
79 | 82 |
|
80 | 83 | public void setExpression(Expression expression) { |
81 | | - this.expression = expression; |
| 84 | + values.get(0).expression = expression; |
| 85 | + } |
| 86 | + |
| 87 | + private String toString(NameExpr ne) { |
| 88 | + return "SET " + ne.name + (ne.useEqual ? " = " : " ") + ne.expression.toString(); |
82 | 89 | } |
83 | 90 |
|
84 | 91 | @Override |
85 | 92 | public String toString() { |
86 | | - return "SET " + name + (useEqual ? " = " : " ") + expression.toString(); |
| 93 | + StringBuilder b = new StringBuilder("SET "); |
| 94 | + |
| 95 | + for (NameExpr ne : values) { |
| 96 | + if (b.length() != 4) { |
| 97 | + b.append(", "); |
| 98 | + } |
| 99 | + b.append(toString(ne)); |
| 100 | + } |
| 101 | + |
| 102 | + return b.toString(); |
87 | 103 | } |
88 | 104 |
|
89 | 105 | @Override |
90 | 106 | public void accept(StatementVisitor statementVisitor) { |
91 | 107 | statementVisitor.visit(this); |
92 | 108 | } |
| 109 | + |
| 110 | + static class NameExpr { |
| 111 | + |
| 112 | + private String name; |
| 113 | + private Expression expression; |
| 114 | + private boolean useEqual; |
| 115 | + |
| 116 | + public NameExpr(String name, Expression expr, boolean useEqual) { |
| 117 | + this.name = name; |
| 118 | + this.expression = expr; |
| 119 | + this.useEqual = useEqual; |
| 120 | + } |
| 121 | + } |
93 | 122 | } |
0 commit comments