OSDN Git Service

リリース用に調整
[ea2ddl/ea2ddl.git] / ea2ddl-ddl / src / main / java / jp / sourceforge / ea2ddl / ddl / command / TemplateCommand.java
1 /**\r
2  * \r
3  */\r
4 package jp.sourceforge.ea2ddl.ddl.command;\r
5 \r
6 import java.io.File;\r
7 \r
8 import jp.sourceforge.ea2ddl.ddl.factory.ModelFactory;\r
9 import jp.sourceforge.ea2ddl.ddl.model.Model;\r
10 \r
11 import org.seasar.extension.jdbc.gen.generator.GenerationContext;\r
12 import org.seasar.extension.jdbc.gen.generator.Generator;\r
13 import org.seasar.extension.jdbc.gen.internal.command.AbstractCommand;\r
14 import org.seasar.extension.jdbc.gen.internal.generator.GenerationContextImpl;\r
15 import org.seasar.extension.jdbc.gen.internal.generator.GeneratorImpl;\r
16 import org.seasar.framework.container.SingletonS2Container;\r
17 import org.seasar.framework.log.Logger;\r
18 import org.seasar.framework.util.ClassUtil;\r
19 \r
20 /**\r
21  * @author taktos\r
22  * \r
23  */\r
24 public class TemplateCommand extends AbstractCommand {\r
25         private Logger _logger = Logger.getLogger(TemplateCommand.class);\r
26 \r
27         protected String _factoryClassName;\r
28         protected String _templateFileDir = "templates";\r
29         protected String _templateFileName;\r
30         protected String _templateFileEncoding = "UTF-8";\r
31         protected String _outputDirName = "output";\r
32         protected String _outputFileName;\r
33         protected String _outputFileEncoding = "UTF-8";\r
34 \r
35         public String getFactoryClassName() {\r
36                 return _factoryClassName;\r
37         }\r
38 \r
39         public void setFactoryClassName(String factoryClassName) {\r
40                 _factoryClassName = factoryClassName;\r
41         }\r
42 \r
43         public String getTemplateFileDir() {\r
44                 return _templateFileDir;\r
45         }\r
46 \r
47         public void setTemplateFileDir(String templateFileDir) {\r
48                 _templateFileDir = templateFileDir;\r
49         }\r
50 \r
51         public String getTemplateFileEncoding() {\r
52                 return _templateFileEncoding;\r
53         }\r
54 \r
55         public void setTemplateFileEncoding(String templateFileEncoding) {\r
56                 _templateFileEncoding = templateFileEncoding;\r
57         }\r
58 \r
59         public String getOutputDirName() {\r
60                 return _outputDirName;\r
61         }\r
62 \r
63         public void setOutputDirName(String outputDirName) {\r
64                 _outputDirName = outputDirName;\r
65         }\r
66 \r
67         public String getOutputFileName() {\r
68                 return _outputFileName;\r
69         }\r
70 \r
71         public void setOutputFileName(String outputFileName) {\r
72                 _outputFileName = outputFileName;\r
73         }\r
74 \r
75         public String getOutputFileEncoding() {\r
76                 return _outputFileEncoding;\r
77         }\r
78 \r
79         public void setOutputFileEncoding(String outputFileEncoding) {\r
80                 _outputFileEncoding = outputFileEncoding;\r
81         }\r
82 \r
83         public String getTemplateFileName() {\r
84                 return _templateFileName;\r
85         }\r
86 \r
87         public void setTemplateFileName(String outputTemplateFileName) {\r
88                 _templateFileName = outputTemplateFileName;\r
89         }\r
90 \r
91         @Override\r
92         protected void doInit() {\r
93         }\r
94 \r
95         @Override\r
96         protected void doValidate() {\r
97         }\r
98 \r
99         @Override\r
100         protected void doExecute() throws Throwable {\r
101                 final ModelFactory modelFactory = (ModelFactory) SingletonS2Container.getComponent(ClassUtil\r
102                                 .convertClass(getFactoryClassName()));\r
103                 final Model model = modelFactory.create();\r
104                 createGenerator().generate(createGenerationContext(model));\r
105         }\r
106 \r
107         @Override\r
108         protected void doDestroy() {\r
109         }\r
110 \r
111         @Override\r
112         protected Logger getLogger() {\r
113                 return _logger;\r
114         }\r
115 \r
116         protected Generator createGenerator() {\r
117                 final File dir = new File(getTemplateFileDir());\r
118                 return new GeneratorImpl(getTemplateFileEncoding(), dir);\r
119         }\r
120 \r
121         protected GenerationContext createGenerationContext(Model model) {\r
122                 final File output = new File(getOutputDirName(), getOutputFileName());\r
123                 final GenerationContextImpl generationContext = new GenerationContextImpl(model, output, getTemplateFileName(),\r
124                                 getOutputFileEncoding(), true);\r
125                 return generationContext;\r
126         }\r
127 }\r