1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.generator.plugins;
17
18 import static org.mybatis.generator.internal.util.StringUtility.stringHasValue;
19 import static org.mybatis.generator.internal.util.messages.Messages.getString;
20
21 import java.util.ArrayList;
22 import java.util.Date;
23 import java.util.List;
24
25 import org.mybatis.generator.api.GeneratedXmlFile;
26 import org.mybatis.generator.api.PluginAdapter;
27 import org.mybatis.generator.api.IntrospectedTable;
28 import org.mybatis.generator.api.dom.xml.Attribute;
29 import org.mybatis.generator.api.dom.xml.Document;
30 import org.mybatis.generator.api.dom.xml.TextElement;
31 import org.mybatis.generator.api.dom.xml.XmlElement;
32 import org.mybatis.generator.codegen.XmlConstants;
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 public class MapperConfigPlugin extends PluginAdapter {
57
58 private List<String> mapperFiles;
59
60 public MapperConfigPlugin() {
61 mapperFiles = new ArrayList<String>();
62 }
63
64 public boolean validate(List<String> warnings) {
65 boolean valid = true;
66
67 if (!stringHasValue(properties
68 .getProperty("targetProject"))) {
69 warnings.add(getString("ValidationError.18",
70 "MapperConfigPlugin",
71 "targetProject"));
72 valid = false;
73 }
74
75 if (!stringHasValue(properties
76 .getProperty("targetPackage"))) {
77 warnings.add(getString("ValidationError.18",
78 "MapperConfigPlugin",
79 "targetPackage"));
80 valid = false;
81 }
82
83 return valid;
84 }
85
86 @Override
87 public List<GeneratedXmlFile> contextGenerateAdditionalXmlFiles() {
88 Document document = new Document(
89 XmlConstants.MYBATIS3_MAPPER_CONFIG_PUBLIC_ID,
90 XmlConstants.MYBATIS3_MAPPER_CONFIG_SYSTEM_ID);
91
92 XmlElement root = new XmlElement("configuration");
93 document.setRootElement(root);
94
95 root.addElement(new TextElement("<!--"));
96 root.addElement(new TextElement(
97 " This file is generated by MyBatis Generator."));
98 root
99 .addElement(new TextElement(
100 " This file is the shell of a Mapper Config file - in many cases you will need to add"));
101 root.addElement(new TextElement(
102 " to this file before it is usable by MyBatis."));
103
104 StringBuilder sb = new StringBuilder();
105 sb.append(" This file was generated on ");
106 sb.append(new Date());
107 sb.append('.');
108 root.addElement(new TextElement(sb.toString()));
109
110 root.addElement(new TextElement("-->"));
111
112 XmlElement mappers = new XmlElement("mappers");
113 root.addElement(mappers);
114
115 XmlElement mapper;
116 for (String mapperFile : mapperFiles) {
117 mapper = new XmlElement("mapper");
118 mapper.addAttribute(new Attribute("resource", mapperFile));
119 mappers.addElement(mapper);
120 }
121
122 GeneratedXmlFile gxf = new GeneratedXmlFile(document, properties
123 .getProperty("fileName", "MapperConfig.xml"),
124 properties.getProperty("targetPackage"),
125 properties.getProperty("targetProject"),
126 false, context.getXmlFormatter());
127
128 List<GeneratedXmlFile> answer = new ArrayList<GeneratedXmlFile>(1);
129 answer.add(gxf);
130
131 return answer;
132 }
133
134
135
136
137
138 @Override
139 public boolean sqlMapGenerated(GeneratedXmlFile sqlMap,
140 IntrospectedTable introspectedTable) {
141 StringBuilder sb = new StringBuilder();
142 sb.append(sqlMap.getTargetPackage());
143 sb.append('.');
144 String temp = sb.toString();
145 sb.setLength(0);
146 sb.append(temp.replace('.', '/'));
147 sb.append(sqlMap.getFileName());
148 mapperFiles.add(sb.toString());
149
150 return true;
151 }
152 }