OSDN Git Service

EAからOracle用DDLが吐けるようになった
[ea2ddl/ea2ddl.git] / ea2ddl-ddl / src / main / java / jp / sourceforge / ea2ddl / ddl / command / GenerateDdlCommand.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.DatabaseModelFactory;\r
9 import jp.sourceforge.ea2ddl.ddl.model.DatabaseModel;\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 GenerateDdlCommand extends AbstractCommand {\r
25         protected Logger _logger = Logger.getLogger(GenerateDdlCommand.class);\r
26 \r
27         protected String _factoryClassName;\r
28 \r
29         public String getFactoryClassName() {\r
30                 return _factoryClassName;\r
31         }\r
32 \r
33         public void setFactoryClassName(String generatorClassName) {\r
34                 _factoryClassName = generatorClassName;\r
35         }\r
36 \r
37         /*\r
38          * (\94ñ Javadoc)\r
39          * \r
40          * @see\r
41          * org.seasar.extension.jdbc.gen.internal.command.AbstractCommand#doValidate\r
42          * ()\r
43          */\r
44         @Override\r
45         protected void doValidate() {\r
46         }\r
47 \r
48         /*\r
49          * (\94ñ Javadoc)\r
50          * \r
51          * @see\r
52          * org.seasar.extension.jdbc.gen.internal.command.AbstractCommand#doInit()\r
53          */\r
54         @Override\r
55         protected void doInit() {\r
56         }\r
57 \r
58         /*\r
59          * (\94ñ Javadoc)\r
60          * \r
61          * @see\r
62          * org.seasar.extension.jdbc.gen.internal.command.AbstractCommand#doExecute\r
63          * ()\r
64          */\r
65         @Override\r
66         protected void doExecute() throws Throwable {\r
67                 DatabaseModelFactory factory = (DatabaseModelFactory) SingletonS2Container\r
68                                 .getComponent(ClassUtil.convertClass(_factoryClassName));\r
69                 final DatabaseModel dbModel = factory.create();\r
70                 generate(dbModel);\r
71         }\r
72 \r
73         protected void generate(DatabaseModel model) {\r
74                 final File templateDir = new File("target/classes");\r
75                 final Generator generator = new GeneratorImpl("UTF-8", templateDir);\r
76                 File output = new File("base.sql");\r
77                 final GenerationContext context = new GenerationContextImpl(model,\r
78                                 output, "base.ftl", "UTF-8", true);\r
79                 generator.generate(context);\r
80         }\r
81 \r
82         /*\r
83          * (\94ñ Javadoc)\r
84          * \r
85          * @see\r
86          * org.seasar.extension.jdbc.gen.internal.command.AbstractCommand#doDestroy\r
87          * ()\r
88          */\r
89         @Override\r
90         protected void doDestroy() {\r
91         }\r
92 \r
93         /*\r
94          * (\94ñ Javadoc)\r
95          * \r
96          * @see\r
97          * org.seasar.extension.jdbc.gen.internal.command.AbstractCommand#getLogger\r
98          * ()\r
99          */\r
100         @Override\r
101         protected Logger getLogger() {\r
102                 return _logger;\r
103         }\r
104 \r
105 }\r