1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.codegen.ibatis2.sqlmap;
17
18 import static org.mybatis.generator.internal.util.messages.Messages.getString;
19
20 import org.mybatis.generator.api.FullyQualifiedTable;
21 import org.mybatis.generator.api.dom.xml.Attribute;
22 import org.mybatis.generator.api.dom.xml.Document;
23 import org.mybatis.generator.api.dom.xml.XmlElement;
24 import org.mybatis.generator.codegen.AbstractXmlGenerator;
25 import org.mybatis.generator.codegen.XmlConstants;
26 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.AbstractXmlElementGenerator;
27 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.BaseColumnListElementGenerator;
28 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.BlobColumnListElementGenerator;
29 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.CountByExampleElementGenerator;
30 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.DeleteByExampleElementGenerator;
31 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.DeleteByPrimaryKeyElementGenerator;
32 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.ExampleWhereClauseElementGenerator;
33 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.InsertElementGenerator;
34 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.InsertSelectiveElementGenerator;
35 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.ResultMapWithBLOBsElementGenerator;
36 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.ResultMapWithoutBLOBsElementGenerator;
37 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.SelectByExampleWithBLOBsElementGenerator;
38 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.SelectByExampleWithoutBLOBsElementGenerator;
39 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.SelectByPrimaryKeyElementGenerator;
40 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.UpdateByExampleSelectiveElementGenerator;
41 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.UpdateByExampleWithBLOBsElementGenerator;
42 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.UpdateByExampleWithoutBLOBsElementGenerator;
43 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.UpdateByPrimaryKeySelectiveElementGenerator;
44 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.UpdateByPrimaryKeyWithBLOBsElementGenerator;
45 import org.mybatis.generator.codegen.ibatis2.sqlmap.elements.UpdateByPrimaryKeyWithoutBLOBsElementGenerator;
46
47
48
49
50
51
52 public class SqlMapGenerator extends AbstractXmlGenerator {
53
54 public SqlMapGenerator() {
55 super();
56 }
57
58 protected XmlElement getSqlMapElement() {
59 FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
60 progressCallback.startTask(getString(
61 "Progress.12", table.toString()));
62 XmlElement answer = new XmlElement("sqlMap");
63 answer.addAttribute(new Attribute("namespace",
64 introspectedTable.getIbatis2SqlMapNamespace()));
65
66 context.getCommentGenerator().addRootComment(answer);
67
68 addResultMapWithoutBLOBsElement(answer);
69 addResultMapWithBLOBsElement(answer);
70 addExampleWhereClauseElement(answer);
71 addBaseColumnListElement(answer);
72 addBlobColumnListElement(answer);
73 addSelectByExampleWithBLOBsElement(answer);
74 addSelectByExampleWithoutBLOBsElement(answer);
75 addSelectByPrimaryKeyElement(answer);
76 addDeleteByPrimaryKeyElement(answer);
77 addDeleteByExampleElement(answer);
78 addInsertElement(answer);
79 addInsertSelectiveElement(answer);
80 addCountByExampleElement(answer);
81 addUpdateByExampleSelectiveElement(answer);
82 addUpdateByExampleWithBLOBsElement(answer);
83 addUpdateByExampleWithoutBLOBsElement(answer);
84 addUpdateByPrimaryKeySelectiveElement(answer);
85 addUpdateByPrimaryKeyWithBLOBsElement(answer);
86 addUpdateByPrimaryKeyWithoutBLOBsElement(answer);
87
88 return answer;
89 }
90
91 protected void addResultMapWithoutBLOBsElement(XmlElement parentElement) {
92 if (introspectedTable.getRules().generateBaseResultMap()) {
93 AbstractXmlElementGenerator elementGenerator = new ResultMapWithoutBLOBsElementGenerator();
94 initializeAndExecuteGenerator(elementGenerator, parentElement);
95 }
96 }
97
98 protected void addResultMapWithBLOBsElement(XmlElement parentElement) {
99 if (introspectedTable.getRules().generateResultMapWithBLOBs()) {
100 AbstractXmlElementGenerator elementGenerator = new ResultMapWithBLOBsElementGenerator();
101 initializeAndExecuteGenerator(elementGenerator, parentElement);
102 }
103 }
104
105 protected void addExampleWhereClauseElement(XmlElement parentElement) {
106 if (introspectedTable.getRules().generateSQLExampleWhereClause()) {
107 AbstractXmlElementGenerator elementGenerator = new ExampleWhereClauseElementGenerator();
108 initializeAndExecuteGenerator(elementGenerator, parentElement);
109 }
110 }
111
112 protected void addBaseColumnListElement(XmlElement parentElement) {
113 if (introspectedTable.getRules().generateBaseColumnList()) {
114 AbstractXmlElementGenerator elementGenerator = new BaseColumnListElementGenerator();
115 initializeAndExecuteGenerator(elementGenerator, parentElement);
116 }
117 }
118
119 protected void addBlobColumnListElement(XmlElement parentElement) {
120 if (introspectedTable.getRules().generateBlobColumnList()) {
121 AbstractXmlElementGenerator elementGenerator = new BlobColumnListElementGenerator();
122 initializeAndExecuteGenerator(elementGenerator, parentElement);
123 }
124 }
125
126 protected void addSelectByExampleWithoutBLOBsElement(
127 XmlElement parentElement) {
128 if (introspectedTable.getRules().generateSelectByExampleWithoutBLOBs()) {
129 AbstractXmlElementGenerator elementGenerator = new SelectByExampleWithoutBLOBsElementGenerator();
130 initializeAndExecuteGenerator(elementGenerator, parentElement);
131 }
132 }
133
134 protected void addSelectByExampleWithBLOBsElement(XmlElement parentElement) {
135 if (introspectedTable.getRules().generateSelectByExampleWithBLOBs()) {
136 AbstractXmlElementGenerator elementGenerator = new SelectByExampleWithBLOBsElementGenerator();
137 initializeAndExecuteGenerator(elementGenerator, parentElement);
138 }
139 }
140
141 protected void addSelectByPrimaryKeyElement(XmlElement parentElement) {
142 if (introspectedTable.getRules().generateSelectByPrimaryKey()) {
143 AbstractXmlElementGenerator elementGenerator = new SelectByPrimaryKeyElementGenerator();
144 initializeAndExecuteGenerator(elementGenerator, parentElement);
145 }
146 }
147
148 protected void addDeleteByExampleElement(XmlElement parentElement) {
149 if (introspectedTable.getRules().generateDeleteByExample()) {
150 AbstractXmlElementGenerator elementGenerator = new DeleteByExampleElementGenerator();
151 initializeAndExecuteGenerator(elementGenerator, parentElement);
152 }
153 }
154
155 protected void addDeleteByPrimaryKeyElement(XmlElement parentElement) {
156 if (introspectedTable.getRules().generateDeleteByPrimaryKey()) {
157 AbstractXmlElementGenerator elementGenerator = new DeleteByPrimaryKeyElementGenerator();
158 initializeAndExecuteGenerator(elementGenerator, parentElement);
159 }
160 }
161
162 protected void addInsertElement(XmlElement parentElement) {
163 if (introspectedTable.getRules().generateInsert()) {
164 AbstractXmlElementGenerator elementGenerator = new InsertElementGenerator();
165 initializeAndExecuteGenerator(elementGenerator, parentElement);
166 }
167 }
168
169 protected void addInsertSelectiveElement(XmlElement parentElement) {
170 if (introspectedTable.getRules().generateInsertSelective()) {
171 AbstractXmlElementGenerator elementGenerator = new InsertSelectiveElementGenerator();
172 initializeAndExecuteGenerator(elementGenerator, parentElement);
173 }
174 }
175
176 protected void addCountByExampleElement(XmlElement parentElement) {
177 if (introspectedTable.getRules().generateCountByExample()) {
178 AbstractXmlElementGenerator elementGenerator = new CountByExampleElementGenerator();
179 initializeAndExecuteGenerator(elementGenerator, parentElement);
180 }
181 }
182
183 protected void addUpdateByExampleSelectiveElement(XmlElement parentElement) {
184 if (introspectedTable.getRules().generateUpdateByExampleSelective()) {
185 AbstractXmlElementGenerator elementGenerator = new UpdateByExampleSelectiveElementGenerator();
186 initializeAndExecuteGenerator(elementGenerator, parentElement);
187 }
188 }
189
190 protected void addUpdateByExampleWithBLOBsElement(XmlElement parentElement) {
191 if (introspectedTable.getRules().generateUpdateByExampleWithBLOBs()) {
192 AbstractXmlElementGenerator elementGenerator = new UpdateByExampleWithBLOBsElementGenerator();
193 initializeAndExecuteGenerator(elementGenerator, parentElement);
194 }
195 }
196
197 protected void addUpdateByExampleWithoutBLOBsElement(
198 XmlElement parentElement) {
199 if (introspectedTable.getRules().generateUpdateByExampleWithoutBLOBs()) {
200 AbstractXmlElementGenerator elementGenerator = new UpdateByExampleWithoutBLOBsElementGenerator();
201 initializeAndExecuteGenerator(elementGenerator, parentElement);
202 }
203 }
204
205 protected void addUpdateByPrimaryKeySelectiveElement(
206 XmlElement parentElement) {
207 if (introspectedTable.getRules().generateUpdateByPrimaryKeySelective()) {
208 AbstractXmlElementGenerator elementGenerator = new UpdateByPrimaryKeySelectiveElementGenerator();
209 initializeAndExecuteGenerator(elementGenerator, parentElement);
210 }
211 }
212
213 protected void addUpdateByPrimaryKeyWithBLOBsElement(
214 XmlElement parentElement) {
215 if (introspectedTable.getRules().generateUpdateByPrimaryKeyWithBLOBs()) {
216 AbstractXmlElementGenerator elementGenerator = new UpdateByPrimaryKeyWithBLOBsElementGenerator();
217 initializeAndExecuteGenerator(elementGenerator, parentElement);
218 }
219 }
220
221 protected void addUpdateByPrimaryKeyWithoutBLOBsElement(
222 XmlElement parentElement) {
223 if (introspectedTable.getRules()
224 .generateUpdateByPrimaryKeyWithoutBLOBs()) {
225 AbstractXmlElementGenerator elementGenerator = new UpdateByPrimaryKeyWithoutBLOBsElementGenerator();
226 initializeAndExecuteGenerator(elementGenerator, parentElement);
227 }
228 }
229
230 protected void initializeAndExecuteGenerator(
231 AbstractXmlElementGenerator elementGenerator,
232 XmlElement parentElement) {
233 elementGenerator.setContext(context);
234 elementGenerator.setIntrospectedTable(introspectedTable);
235 elementGenerator.setProgressCallback(progressCallback);
236 elementGenerator.setWarnings(warnings);
237 elementGenerator.addElements(parentElement);
238 }
239
240 @Override
241 public Document getDocument() {
242 Document document = new Document(
243 XmlConstants.IBATIS2_SQL_MAP_PUBLIC_ID,
244 XmlConstants.IBATIS2_SQL_MAP_SYSTEM_ID);
245 document.setRootElement(getSqlMapElement());
246
247 if (!context.getPlugins().sqlMapDocumentGenerated(document,
248 introspectedTable)) {
249 document = null;
250 }
251
252 return document;
253 }
254 }