factoryClassName="jp.sourceforge.ea2ddl.ddl.factory.impl.DatabaseModelFactoryImpl"\r
>\r
</gen-ddl>\r
+ <gen-classification\r
+ configPath="${configPath}"\r
+ classpathref="classpath"\r
+ factoryClassName="jp.sourceforge.ea2ddl.ddl.factory.impl.ClassificationModelFactoryImpl"\r
+ templateFileName="classification.ftl"\r
+ outputFileName="classification.txt"\r
+ >\r
+ </gen-classification>\r
</target>\r
</project>\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.command;\r
+\r
+import java.io.File;\r
+\r
+import jp.sourceforge.ea2ddl.ddl.model.Model;\r
+\r
+import org.seasar.extension.jdbc.gen.generator.GenerationContext;\r
+import org.seasar.extension.jdbc.gen.generator.Generator;\r
+import org.seasar.extension.jdbc.gen.internal.generator.GenerationContextImpl;\r
+import org.seasar.extension.jdbc.gen.internal.generator.GeneratorImpl;\r
+import org.seasar.framework.log.Logger;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public class GenerateClassificationCommand extends TemplateCommand {\r
+ private Logger _logger = Logger.getLogger(GenerateClassificationCommand.class);\r
+\r
+ /*\r
+ * (非 Javadoc)\r
+ * \r
+ * @see\r
+ * org.seasar.extension.jdbc.gen.internal.command.AbstractCommand#doDestroy\r
+ * ()\r
+ */\r
+ @Override\r
+ protected void doDestroy() {\r
+ }\r
+\r
+ /*\r
+ * (非 Javadoc)\r
+ * \r
+ * @see\r
+ * org.seasar.extension.jdbc.gen.internal.command.AbstractCommand#doInit()\r
+ */\r
+ @Override\r
+ protected void doInit() {\r
+ }\r
+\r
+ /*\r
+ * (非 Javadoc)\r
+ * \r
+ * @see\r
+ * org.seasar.extension.jdbc.gen.internal.command.AbstractCommand#doValidate\r
+ * ()\r
+ */\r
+ @Override\r
+ protected void doValidate() {\r
+ }\r
+\r
+ /*\r
+ * (非 Javadoc)\r
+ * \r
+ * @see\r
+ * org.seasar.extension.jdbc.gen.internal.command.AbstractCommand#getLogger\r
+ * ()\r
+ */\r
+ @Override\r
+ protected Logger getLogger() {\r
+ return _logger;\r
+ }\r
+\r
+ @Override\r
+ protected GenerationContext createGenerationContext(Model model) {\r
+ final File output = new File(getOutputDirName(), getOutputFileName());\r
+ final GenerationContextImpl generationContext = new GenerationContextImpl(model, output,\r
+ getTemplateFileName(), getOutputFileEncoding(), true);\r
+ return generationContext;\r
+ }\r
+\r
+ @Override\r
+ protected Generator createGenerator() {\r
+ final File dir = new File(getTemplateFileDir());\r
+ return new GeneratorImpl(getTemplateFileEncoding(), dir);\r
+ }\r
+\r
+}\r
\r
import java.io.File;\r
\r
-import jp.sourceforge.ea2ddl.ddl.factory.DatabaseModelFactory;\r
-import jp.sourceforge.ea2ddl.ddl.model.DatabaseModel;\r
+import jp.sourceforge.ea2ddl.ddl.factory.ModelFactory;\r
+import jp.sourceforge.ea2ddl.ddl.model.Model;\r
\r
import org.seasar.extension.jdbc.gen.generator.GenerationContext;\r
import org.seasar.extension.jdbc.gen.generator.Generator;\r
*/\r
@Override\r
protected void doExecute() throws Throwable {\r
- DatabaseModelFactory factory = (DatabaseModelFactory) SingletonS2Container\r
- .getComponent(ClassUtil.convertClass(_factoryClassName));\r
- final DatabaseModel dbModel = factory.create();\r
+ ModelFactory modelFactory = (ModelFactory) SingletonS2Container.getComponent(ClassUtil\r
+ .convertClass(_factoryClassName));\r
+ final Model dbModel = modelFactory.create();\r
generate(dbModel);\r
}\r
\r
- protected void generate(DatabaseModel model) {\r
+ protected void generate(Model model) {\r
final File templateDir = new File(_templateFileDir);\r
- final Generator generator = new GeneratorImpl(_templateFileEncoding,\r
- templateDir);\r
+ final Generator generator = new GeneratorImpl(_templateFileEncoding, templateDir);\r
File output = new File(_outputDirName, _baseSqlFileName);\r
- final GenerationContext context = new GenerationContextImpl(model,\r
- output, _baseSqlTemplateFileName, _sqlFileEncoding, true);\r
+ final GenerationContext context = new GenerationContextImpl(model, output, _baseSqlTemplateFileName,\r
+ _sqlFileEncoding, true);\r
generator.generate(context);\r
}\r
\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.command;\r
+\r
+import jp.sourceforge.ea2ddl.ddl.factory.ModelFactory;\r
+import jp.sourceforge.ea2ddl.ddl.model.Model;\r
+\r
+import org.seasar.extension.jdbc.gen.generator.GenerationContext;\r
+import org.seasar.extension.jdbc.gen.generator.Generator;\r
+import org.seasar.extension.jdbc.gen.internal.command.AbstractCommand;\r
+import org.seasar.framework.container.SingletonS2Container;\r
+import org.seasar.framework.util.ClassUtil;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public abstract class TemplateCommand extends AbstractCommand {\r
+\r
+ protected String _factoryClassName;\r
+ protected String _templateFileDir = "target/classes";\r
+ protected String _templateFileName;\r
+ protected String _templateFileEncoding = "UTF-8";\r
+ protected String _outputDirName = "output";\r
+ protected String _outputFileName;\r
+ protected String _outputFileEncoding = "UTF-8";\r
+\r
+ public String getFactoryClassName() {\r
+ return _factoryClassName;\r
+ }\r
+\r
+ public void setFactoryClassName(String factoryClassName) {\r
+ _factoryClassName = factoryClassName;\r
+ }\r
+\r
+ public String getTemplateFileDir() {\r
+ return _templateFileDir;\r
+ }\r
+\r
+ public void setTemplateFileDir(String templateFileDir) {\r
+ _templateFileDir = templateFileDir;\r
+ }\r
+\r
+ public String getTemplateFileEncoding() {\r
+ return _templateFileEncoding;\r
+ }\r
+\r
+ public void setTemplateFileEncoding(String templateFileEncoding) {\r
+ _templateFileEncoding = templateFileEncoding;\r
+ }\r
+\r
+ public String getOutputDirName() {\r
+ return _outputDirName;\r
+ }\r
+\r
+ public void setOutputDirName(String outputDirName) {\r
+ _outputDirName = outputDirName;\r
+ }\r
+\r
+ public String getOutputFileName() {\r
+ return _outputFileName;\r
+ }\r
+\r
+ public void setOutputFileName(String outputFileName) {\r
+ _outputFileName = outputFileName;\r
+ }\r
+\r
+ public String getOutputFileEncoding() {\r
+ return _outputFileEncoding;\r
+ }\r
+\r
+ public void setOutputFileEncoding(String outputFileEncoding) {\r
+ _outputFileEncoding = outputFileEncoding;\r
+ }\r
+\r
+ public String getTemplateFileName() {\r
+ return _templateFileName;\r
+ }\r
+\r
+ public void setTemplateFileName(String outputTemplateFileName) {\r
+ _templateFileName = outputTemplateFileName;\r
+ }\r
+\r
+ @Override\r
+ protected void doExecute() throws Throwable {\r
+ final ModelFactory modelFactory = (ModelFactory) SingletonS2Container.getComponent(ClassUtil\r
+ .convertClass(getFactoryClassName()));\r
+ final Model model = modelFactory.create();\r
+ createGenerator().generate(createGenerationContext(model));\r
+ }\r
+\r
+ protected abstract Generator createGenerator();\r
+\r
+ protected abstract GenerationContext createGenerationContext(Model model);\r
+}\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.factory;\r
+\r
+import jp.sourceforge.ea2ddl.ddl.model.Model;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public interface ModelFactory {\r
+\r
+ Model create();\r
+}\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.factory.impl;\r
+\r
+import java.util.List;\r
+\r
+import jp.sourceforge.ea2ddl.common.config.Config;\r
+import jp.sourceforge.ea2ddl.dao.exbhv.TObjectBhv;\r
+import jp.sourceforge.ea2ddl.dao.exbhv.TPackageBhv;\r
+import jp.sourceforge.ea2ddl.dao.exentity.TObject;\r
+import jp.sourceforge.ea2ddl.dao.exentity.TPackage;\r
+import jp.sourceforge.ea2ddl.ddl.factory.ModelFactory;\r
+import jp.sourceforge.ea2ddl.ddl.model.ClassificationModel;\r
+import jp.sourceforge.ea2ddl.ddl.model.Model;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public class ClassificationModelFactoryImpl implements ModelFactory {\r
+\r
+ private Config _config;\r
+ private TObjectBhv _tObjectBhv;\r
+ private TPackageBhv _tPackageBhv;\r
+\r
+ public void setConfig(Config config) {\r
+ _config = config;\r
+ }\r
+\r
+ public void setTPackageBhv(TPackageBhv packageBhv) {\r
+ _tPackageBhv = packageBhv;\r
+ }\r
+\r
+ public void setTObjectBhv(TObjectBhv objectBhv) {\r
+ _tObjectBhv = objectBhv;\r
+ }\r
+\r
+ /*\r
+ * (非 Javadoc)\r
+ * \r
+ * @see jp.sourceforge.ea2ddl.ddl.factory.ModelFactory#create()\r
+ */\r
+ public Model create() {\r
+ final ClassificationModel model = new ClassificationModel();\r
+ final List<TObject> noteList = _tObjectBhv.selectList(_config.getProperty("er.package.tree"), null, "Note");\r
+ for (TObject note : noteList) {\r
+ model.addClassification(note.getNote());\r
+ }\r
+ return model;\r
+ }\r
+\r
+ protected TPackage getPackage(String packageTree) {\r
+ return _tPackageBhv.selectPackage(packageTree);\r
+ }\r
+\r
+}\r
import jp.sourceforge.ea2ddl.dao.exentity.TOperation;\r
import jp.sourceforge.ea2ddl.dao.exentity.TOperationparams;\r
import jp.sourceforge.ea2ddl.dao.exentity.TPackage;\r
-import jp.sourceforge.ea2ddl.ddl.factory.DatabaseModelFactory;\r
+import jp.sourceforge.ea2ddl.ddl.factory.ModelFactory;\r
import jp.sourceforge.ea2ddl.ddl.model.ColumnModel;\r
import jp.sourceforge.ea2ddl.ddl.model.DatabaseModel;\r
import jp.sourceforge.ea2ddl.ddl.model.ForeignKeyModel;\r
* @author taktos\r
* \r
*/\r
-public class DatabaseModelFactoryImpl implements DatabaseModelFactory {\r
+public class DatabaseModelFactoryImpl implements ModelFactory {\r
private Log _log = LogFactory.getLog(DatabaseModelFactoryImpl.class);\r
\r
private Config _config;\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.model;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public class ClassificationModel extends Model {\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ private List<String> classificationList;\r
+\r
+ public List<String> getClassificationList() {\r
+ if (classificationList == null) {\r
+ synchronized (this) {\r
+ if (classificationList == null) {\r
+ classificationList = new ArrayList<String>();\r
+ }\r
+ }\r
+ }\r
+ return classificationList;\r
+ }\r
+\r
+ public void setClassificationList(List<String> classificationList) {\r
+ this.classificationList = classificationList;\r
+ }\r
+\r
+ public void addClassification(String classification) {\r
+ getClassificationList().add(classification);\r
+ }\r
+}\r
*/\r
package jp.sourceforge.ea2ddl.ddl.model;\r
\r
-import java.io.Serializable;\r
import java.util.ArrayList;\r
import java.util.List;\r
\r
* @author taktos\r
* \r
*/\r
-public class DatabaseModel implements Serializable {\r
+public class DatabaseModel extends Model {\r
private static final long serialVersionUID = 1L;\r
\r
private List<TableModel> _tableList;\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.model;\r
+\r
+import java.io.Serializable;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public abstract class Model implements Serializable {\r
+ private static final long serialVersionUID = 1L;\r
+\r
+}\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.task;\r
+\r
+import jp.sourceforge.ea2ddl.ddl.command.GenerateClassificationCommand;\r
+import jp.sourceforge.ea2ddl.ddl.command.TemplateCommand;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public class GenerateClassificationTask extends TemplateTask {\r
+\r
+ protected GenerateClassificationCommand _command = new GenerateClassificationCommand();\r
+\r
+ @Override\r
+ protected TemplateCommand getTemplateCommand() {\r
+ return _command;\r
+ }\r
+\r
+}\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.task;\r
+\r
+import jp.sourceforge.ea2ddl.ddl.command.TemplateCommand;\r
+\r
+import org.seasar.extension.jdbc.gen.command.Command;\r
+import org.seasar.extension.jdbc.gen.task.AbstractTask;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public abstract class TemplateTask extends AbstractTask {\r
+\r
+ protected abstract TemplateCommand getTemplateCommand();\r
+\r
+ @Override\r
+ protected Command getCommand() {\r
+ return getTemplateCommand();\r
+ }\r
+\r
+ public void setConfigPath(String configPath) {\r
+ getTemplateCommand().setConfigPath(configPath);\r
+ }\r
+\r
+ public void setFactoryClassName(String className) {\r
+ getTemplateCommand().setFactoryClassName(className);\r
+ }\r
+\r
+ public void setTemplateFileDir(String templateFileDir) {\r
+ getTemplateCommand().setTemplateFileDir(templateFileDir);\r
+ }\r
+\r
+ public void setTemplateFileName(String templateFileName) {\r
+ getTemplateCommand().setTemplateFileName(templateFileName);\r
+ }\r
+\r
+ public void setTemplateFileEncoding(String templateFileEncoding) {\r
+ getTemplateCommand().setTemplateFileEncoding(templateFileEncoding);\r
+ }\r
+\r
+ public void setOutputDirName(String outputDirName) {\r
+ getTemplateCommand().setOutputDirName(outputDirName);\r
+ }\r
+\r
+ public void setOutputFileName(String outputFileName) {\r
+ getTemplateCommand().setOutputFileName(outputFileName);\r
+ }\r
+\r
+ public void setOutputFileEncoding(String outputFileEncoding) {\r
+ getTemplateCommand().setOutputFileEncoding(outputFileEncoding);\r
+ }\r
+\r
+}\r
-root.package.name=\u30d3\u30e5\u30fc\r
-er.package.tree=\u30af\u30e9\u30b9\u30d3\u30e5\u30fc/ER\u56f3/MFGS
\ No newline at end of file
+er.package.tree=\u30d3\u30e5\u30fc/\u30af\u30e9\u30b9\u30d3\u30e5\u30fc/ER\u56f3/EXAMPLEDB
\ No newline at end of file
+<#comment>\r
<#list tableList as table>\r
<#list table.foreignKeyList as fk>ALTER TABLE ${table.name} DROP CONSTRAINT ${fk.name}\r
;\r
<#list tableList as table>\r
DROP TABLE ${table.name};\r
</#list>\r
+</#comment>\r
\r
<#list tableList as table>\r
CREATE TABLE ${table.name} (\r
--- /dev/null
+<#list classificationList as cls>\r
+${cls}\r
+\r
+</#list>
\ No newline at end of file
-gen-ddl=jp.sourceforge.ea2ddl.ddl.task.GenerateDdlTask
\ No newline at end of file
+gen-ddl=jp.sourceforge.ea2ddl.ddl.task.GenerateDdlTask\r
+gen-classification=jp.sourceforge.ea2ddl.ddl.task.GenerateClassificationTask
\ No newline at end of file
\r
<component class="org.seasar.framework.container.autoregister.ComponentAutoRegister">\r
<initMethod name="addReferenceClass">\r
- <arg>@jp.sourceforge.ea2ddl.ddl.factory.DatabaseModelFactory@class</arg>\r
+ <arg>@jp.sourceforge.ea2ddl.ddl.factory.ModelFactory@class</arg>\r
</initMethod>\r
<initMethod name="addClassPattern">\r
<arg>"jp.sourceforge.ea2ddl.ddl.factory.impl"</arg>\r