1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.codegen.ibatis2;
17
18 import static org.mybatis.generator.internal.util.StringUtility.escapeStringForJava;
19 import static org.mybatis.generator.internal.util.StringUtility.stringHasValue;
20
21 import java.util.StringTokenizer;
22
23 import org.mybatis.generator.api.IntrospectedColumn;
24
25
26
27
28
29
30 public class Ibatis2FormattingUtilities {
31
32
33
34
35 private Ibatis2FormattingUtilities() {
36 super();
37 }
38
39
40
41
42
43
44
45
46 public static String getEscapedColumnName(
47 IntrospectedColumn introspectedColumn) {
48 StringBuilder sb = new StringBuilder();
49 sb.append(escapeStringForIbatis2(introspectedColumn
50 .getActualColumnName()));
51
52 if (introspectedColumn.isColumnNameDelimited()) {
53 sb.insert(0, introspectedColumn.getContext()
54 .getBeginningDelimiter());
55 sb.append(introspectedColumn.getContext().getEndingDelimiter());
56 }
57
58 return sb.toString();
59 }
60
61
62
63
64
65
66
67
68 public static String getAliasedEscapedColumnName(
69 IntrospectedColumn introspectedColumn) {
70 if (stringHasValue(introspectedColumn.getTableAlias())) {
71 StringBuilder sb = new StringBuilder();
72
73 sb.append(introspectedColumn.getTableAlias());
74 sb.append('.');
75 sb.append(getEscapedColumnName(introspectedColumn));
76 return sb.toString();
77 } else {
78 return getEscapedColumnName(introspectedColumn);
79 }
80 }
81
82
83
84
85
86
87
88
89 public static String getParameterClause(
90 IntrospectedColumn introspectedColumn) {
91 return getParameterClause(introspectedColumn, null);
92 }
93
94
95
96
97
98
99
100
101
102
103 public static String getParameterClause(
104 IntrospectedColumn introspectedColumn, String prefix) {
105 StringBuilder sb = new StringBuilder();
106
107 sb.append('#');
108 sb.append(introspectedColumn.getJavaProperty(prefix));
109
110 if (stringHasValue(introspectedColumn.getTypeHandler())) {
111 sb.append(",jdbcType=");
112 sb.append(introspectedColumn.getJdbcTypeName());
113 sb.append(",handler=");
114 sb.append(introspectedColumn.getTypeHandler());
115 } else {
116 sb.append(':');
117 sb.append(introspectedColumn.getJdbcTypeName());
118 }
119
120 sb.append('#');
121
122 return sb.toString();
123 }
124
125
126
127
128
129
130
131
132
133 public static String getSelectListPhrase(
134 IntrospectedColumn introspectedColumn) {
135 if (stringHasValue(introspectedColumn.getTableAlias())) {
136 StringBuilder sb = new StringBuilder();
137
138 sb.append(getAliasedEscapedColumnName(introspectedColumn));
139 sb.append(" as ");
140 if (introspectedColumn.isColumnNameDelimited()) {
141 sb.append(introspectedColumn.getContext()
142 .getBeginningDelimiter());
143 }
144 sb.append(introspectedColumn.getTableAlias());
145 sb.append('_');
146 sb.append(escapeStringForIbatis2(introspectedColumn
147 .getActualColumnName()));
148 if (introspectedColumn.isColumnNameDelimited()) {
149 sb.append(introspectedColumn.getContext().getEndingDelimiter());
150 }
151 return sb.toString();
152 } else {
153 return getEscapedColumnName(introspectedColumn);
154 }
155 }
156
157
158
159
160
161
162
163
164 public static String escapeStringForIbatis2(String s) {
165 StringTokenizer st = new StringTokenizer(s, "$#", true);
166 StringBuilder sb = new StringBuilder();
167 while (st.hasMoreTokens()) {
168 String token = st.nextToken();
169 if ("$".equals(token)) {
170 sb.append("$$");
171 } else if ("#".equals(token)) {
172 sb.append("##");
173 } else {
174 sb.append(token);
175 }
176 }
177
178 return sb.toString();
179 }
180
181
182
183
184
185
186
187
188
189
190
191
192
193 public static String getAliasedActualColumnName(
194 IntrospectedColumn introspectedColumn) {
195 StringBuilder sb = new StringBuilder();
196 if (stringHasValue(introspectedColumn.getTableAlias())) {
197 sb.append(introspectedColumn.getTableAlias());
198 sb.append('.');
199 }
200
201 if (introspectedColumn.isColumnNameDelimited()) {
202 sb.append(escapeStringForJava(introspectedColumn
203 .getContext().getBeginningDelimiter()));
204 }
205
206 sb.append(introspectedColumn.getActualColumnName());
207
208 if (introspectedColumn.isColumnNameDelimited()) {
209 sb.append(escapeStringForJava(introspectedColumn
210 .getContext().getEndingDelimiter()));
211 }
212
213 return sb.toString();
214 }
215
216
217
218
219
220
221
222
223
224 public static String getRenamedColumnNameForResultMap(
225 IntrospectedColumn introspectedColumn) {
226 if (stringHasValue(introspectedColumn.getTableAlias())) {
227 StringBuilder sb = new StringBuilder();
228
229 sb.append(introspectedColumn.getTableAlias());
230 sb.append('_');
231 sb.append(introspectedColumn.getActualColumnName());
232 return sb.toString();
233 } else {
234 return introspectedColumn.getActualColumnName();
235 }
236 }
237 }