1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.codegen.mybatis3.xmlmapper;
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.mybatis3.xmlmapper.elements.AbstractXmlElementGenerator;
27 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.DeleteByPrimaryKeyElementGenerator;
28 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.InsertElementGenerator;
29 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.ResultMapWithoutBLOBsElementGenerator;
30 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.SimpleSelectAllElementGenerator;
31 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.SimpleSelectByPrimaryKeyElementGenerator;
32 import org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.UpdateByPrimaryKeyWithoutBLOBsElementGenerator;
33
34 public class SimpleXMLMapperGenerator extends AbstractXmlGenerator {
35
36 public SimpleXMLMapperGenerator() {
37 super();
38 }
39
40 protected XmlElement getSqlMapElement() {
41 FullyQualifiedTable table = introspectedTable.getFullyQualifiedTable();
42 progressCallback.startTask(getString("Progress.12", table.toString()));
43 XmlElement answer = new XmlElement("mapper");
44 String namespace = introspectedTable.getMyBatis3SqlMapNamespace();
45 answer.addAttribute(new Attribute("namespace", namespace));
46
47 context.getCommentGenerator().addRootComment(answer);
48
49 addResultMapElement(answer);
50 addDeleteByPrimaryKeyElement(answer);
51 addInsertElement(answer);
52 addUpdateByPrimaryKeyElement(answer);
53 addSelectByPrimaryKeyElement(answer);
54 addSelectAllElement(answer);
55
56 return answer;
57 }
58
59 protected void addResultMapElement(XmlElement parentElement) {
60 if (introspectedTable.getRules().generateBaseResultMap()) {
61 AbstractXmlElementGenerator elementGenerator = new ResultMapWithoutBLOBsElementGenerator(true);
62 initializeAndExecuteGenerator(elementGenerator, parentElement);
63 }
64 }
65
66 protected void addSelectByPrimaryKeyElement(XmlElement parentElement) {
67 if (introspectedTable.getRules().generateSelectByPrimaryKey()) {
68 AbstractXmlElementGenerator elementGenerator = new SimpleSelectByPrimaryKeyElementGenerator();
69 initializeAndExecuteGenerator(elementGenerator, parentElement);
70 }
71 }
72
73 protected void addSelectAllElement(XmlElement parentElement) {
74 AbstractXmlElementGenerator elementGenerator = new SimpleSelectAllElementGenerator();
75 initializeAndExecuteGenerator(elementGenerator, parentElement);
76 }
77
78 protected void addDeleteByPrimaryKeyElement(XmlElement parentElement) {
79 if (introspectedTable.getRules().generateDeleteByPrimaryKey()) {
80 AbstractXmlElementGenerator elementGenerator = new DeleteByPrimaryKeyElementGenerator(true);
81 initializeAndExecuteGenerator(elementGenerator, parentElement);
82 }
83 }
84
85 protected void addInsertElement(XmlElement parentElement) {
86 if (introspectedTable.getRules().generateInsert()) {
87 AbstractXmlElementGenerator elementGenerator = new InsertElementGenerator(true);
88 initializeAndExecuteGenerator(elementGenerator, parentElement);
89 }
90 }
91
92 protected void addUpdateByPrimaryKeyElement(XmlElement parentElement) {
93 if (introspectedTable.getRules().generateUpdateByPrimaryKeySelective()) {
94 AbstractXmlElementGenerator elementGenerator = new UpdateByPrimaryKeyWithoutBLOBsElementGenerator(true);
95 initializeAndExecuteGenerator(elementGenerator, parentElement);
96 }
97 }
98
99 protected void initializeAndExecuteGenerator(AbstractXmlElementGenerator elementGenerator,
100 XmlElement parentElement) {
101 elementGenerator.setContext(context);
102 elementGenerator.setIntrospectedTable(introspectedTable);
103 elementGenerator.setProgressCallback(progressCallback);
104 elementGenerator.setWarnings(warnings);
105 elementGenerator.addElements(parentElement);
106 }
107
108 @Override
109 public Document getDocument() {
110 Document document = new Document(XmlConstants.MYBATIS3_MAPPER_PUBLIC_ID,
111 XmlConstants.MYBATIS3_MAPPER_SYSTEM_ID);
112 document.setRootElement(getSqlMapElement());
113
114 if (!context.getPlugins().sqlMapDocumentGenerated(document, introspectedTable)) {
115 document = null;
116 }
117
118 return document;
119 }
120 }