--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry kind="src" output="target/classes" path="src/main/java"/>\r
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>\r
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>\r
+ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>\r
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>\r
+ <classpathentry kind="output" path="target/classes"/>\r
+</classpath>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>ea2ddl-ddl</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.maven.ide.eclipse.maven2Builder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+#Mon Oct 20 02:33:03 JST 2008\r
+eclipse.preferences.version=1\r
+encoding/<project>=UTF-8\r
--- /dev/null
+#Sat Oct 18 02:40:05 JST 2008\r
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=\r
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=\r
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=_\r
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=\r
+org.eclipse.jdt.core.codeComplete.localPrefixes=\r
+org.eclipse.jdt.core.codeComplete.localSuffixes=\r
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=\r
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\r
+org.eclipse.jdt.core.compiler.compliance=1.5\r
+org.eclipse.jdt.core.compiler.source=1.5\r
--- /dev/null
+#Sat Oct 18 02:40:42 JST 2008\r
+eclipse.preferences.version=1\r
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true\r
+org.eclipse.jdt.ui.exception.name=e\r
+org.eclipse.jdt.ui.gettersetter.use.is=true\r
+org.eclipse.jdt.ui.keywordthis=false\r
+org.eclipse.jdt.ui.overrideannotation=true\r
+sp_cleanup.add_default_serial_version_id=true\r
+sp_cleanup.add_generated_serial_version_id=false\r
+sp_cleanup.add_missing_annotations=true\r
+sp_cleanup.add_missing_deprecated_annotations=true\r
+sp_cleanup.add_missing_methods=false\r
+sp_cleanup.add_missing_nls_tags=false\r
+sp_cleanup.add_missing_override_annotations=true\r
+sp_cleanup.add_serial_version_id=false\r
+sp_cleanup.always_use_blocks=true\r
+sp_cleanup.always_use_parentheses_in_expressions=false\r
+sp_cleanup.always_use_this_for_non_static_field_access=false\r
+sp_cleanup.always_use_this_for_non_static_method_access=false\r
+sp_cleanup.convert_to_enhanced_for_loop=false\r
+sp_cleanup.correct_indentation=false\r
+sp_cleanup.format_source_code=true\r
+sp_cleanup.format_source_code_changes_only=false\r
+sp_cleanup.make_local_variable_final=false\r
+sp_cleanup.make_parameters_final=false\r
+sp_cleanup.make_private_fields_final=true\r
+sp_cleanup.make_type_abstract_if_missing_method=false\r
+sp_cleanup.make_variable_declarations_final=true\r
+sp_cleanup.never_use_blocks=false\r
+sp_cleanup.never_use_parentheses_in_expressions=true\r
+sp_cleanup.on_save_use_additional_actions=false\r
+sp_cleanup.organize_imports=true\r
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false\r
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true\r
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true\r
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false\r
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false\r
+sp_cleanup.remove_private_constructors=true\r
+sp_cleanup.remove_trailing_whitespaces=false\r
+sp_cleanup.remove_trailing_whitespaces_all=true\r
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false\r
+sp_cleanup.remove_unnecessary_casts=true\r
+sp_cleanup.remove_unnecessary_nls_tags=false\r
+sp_cleanup.remove_unused_imports=false\r
+sp_cleanup.remove_unused_local_variables=false\r
+sp_cleanup.remove_unused_private_fields=true\r
+sp_cleanup.remove_unused_private_members=false\r
+sp_cleanup.remove_unused_private_methods=true\r
+sp_cleanup.remove_unused_private_types=true\r
+sp_cleanup.sort_members=false\r
+sp_cleanup.sort_members_all=false\r
+sp_cleanup.use_blocks=false\r
+sp_cleanup.use_blocks_only_for_return_and_throw=false\r
+sp_cleanup.use_parentheses_in_expressions=false\r
+sp_cleanup.use_this_for_non_static_field_access=false\r
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true\r
+sp_cleanup.use_this_for_non_static_method_access=false\r
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true\r
--- /dev/null
+#Fri Oct 17 20:58:20 JST 2008\r
+activeProfiles=\r
+eclipse.preferences.version=1\r
+fullBuildGoals=process-test-resources\r
+includeModules=false\r
+resolveWorkspaceProjects=true\r
+resourceFilterGoals=process-resources resources\:testResources\r
+version=1\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project name="ea2ddl-ddl" default="gen-ddl" basedir=".">\r
+\r
+ <property name="configPath" value="ea2ddl.dicon"/>\r
+ <property name="classpathdir" value="target/classes" />\r
+ <property name="common-classpathdir" value="../ea2ddl-common/target/classes"/>\r
+ <property name="dao-classpathdir" value="../ea2ddl-dao/target/classes"/>\r
+\r
+ <path id="classpath">\r
+ <pathelement path="${classpathdir}"/>\r
+ <pathelement path="${common-classpathdir}"/>\r
+ <pathelement path="${dao-classpathdir}"/>\r
+ <fileset dir="lib">\r
+ <include name="**/*.jar" />\r
+ </fileset>\r
+ </path>\r
+\r
+ <typedef resource="ea2ddl-taskdef.properties" classpathref="classpath" />\r
+\r
+ <target name="gen-ddl">\r
+ <gen-ddl\r
+ configPath="${configPath}"\r
+ classpathref="classpath"\r
+ factoryClassName="jp.sourceforge.ea2ddl.ddl.factory.impl.DatabaseModelFactoryImpl"\r
+ >\r
+ </gen-ddl>\r
+ </target>\r
+</project>\r
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
+ <parent>\r
+ <artifactId>ea2ddl-parent</artifactId>\r
+ <groupId>jp.sourceforge.ea2ddl</groupId>\r
+ <version>0.0.1-SNAPSHOT</version>\r
+ </parent>\r
+ <modelVersion>4.0.0</modelVersion>\r
+ <groupId>jp.sourceforge.ea2ddl</groupId>\r
+ <artifactId>ea2ddl-ddl</artifactId>\r
+ <name>Enterprise Archetect to DDL</name>\r
+ <version>0.0.1-SNAPSHOT</version>\r
+ <description>Enterprise Archetect to DDL</description>\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>${project.groupId}</groupId>\r
+ <artifactId>ea2ddl-dao</artifactId>\r
+ <version>${project.version}</version>\r
+ </dependency>\r
+ \r
+ <dependency>\r
+ <groupId>org.freemarker</groupId>\r
+ <artifactId>freemarker</artifactId>\r
+ </dependency>\r
+\r
+ <dependency>\r
+ <groupId>org.apache.geronimo.specs</groupId>\r
+ <artifactId>geronimo-j2ee_1.4_spec</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.apache.geronimo.specs</groupId>\r
+ <artifactId>geronimo-ejb_3.0_spec</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.apache.geronimo.specs</groupId>\r
+ <artifactId>geronimo-jpa_3.0_spec</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.apache.geronimo.specs</groupId>\r
+ <artifactId>geronimo-jta_1.1_spec</artifactId>\r
+ </dependency>\r
+ </dependencies>\r
+</project>
\ No newline at end of file
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.command;\r
+\r
+import java.io.File;\r
+\r
+import jp.sourceforge.ea2ddl.ddl.factory.DatabaseModelFactory;\r
+import jp.sourceforge.ea2ddl.ddl.model.DatabaseModel;\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.extension.jdbc.gen.internal.generator.GenerationContextImpl;\r
+import org.seasar.extension.jdbc.gen.internal.generator.GeneratorImpl;\r
+import org.seasar.framework.container.SingletonS2Container;\r
+import org.seasar.framework.log.Logger;\r
+import org.seasar.framework.util.ClassUtil;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public class GenerateDdlCommand extends AbstractCommand {\r
+ protected Logger _logger = Logger.getLogger(GenerateDdlCommand.class);\r
+\r
+ protected String _factoryClassName;\r
+\r
+ public String getFactoryClassName() {\r
+ return _factoryClassName;\r
+ }\r
+\r
+ public void setFactoryClassName(String generatorClassName) {\r
+ _factoryClassName = generatorClassName;\r
+ }\r
+\r
+ /*\r
+ * (\94ñ 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
+ * (\94ñ 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
+ * (\94ñ Javadoc)\r
+ * \r
+ * @see\r
+ * org.seasar.extension.jdbc.gen.internal.command.AbstractCommand#doExecute\r
+ * ()\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
+ generate(dbModel);\r
+ }\r
+\r
+ protected void generate(DatabaseModel model) {\r
+ final File templateDir = new File("target/classes");\r
+ final Generator generator = new GeneratorImpl("UTF-8", templateDir);\r
+ File output = new File("base.sql");\r
+ final GenerationContext context = new GenerationContextImpl(model,\r
+ output, "base.ftl", "UTF-8", true);\r
+ generator.generate(context);\r
+ }\r
+\r
+ /*\r
+ * (\94ñ 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
+ * (\94ñ 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
+}\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.factory;\r
+\r
+import jp.sourceforge.ea2ddl.ddl.model.DatabaseModel;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public interface DatabaseModelFactory {\r
+\r
+ DatabaseModel 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.allcommon.cbean.ListResultBean;\r
+import jp.sourceforge.ea2ddl.dao.cbean.TAttributeCB;\r
+import jp.sourceforge.ea2ddl.dao.cbean.TConnectorCB;\r
+import jp.sourceforge.ea2ddl.dao.cbean.TObjectpropertiesCB;\r
+import jp.sourceforge.ea2ddl.dao.cbean.TOperationCB;\r
+import jp.sourceforge.ea2ddl.dao.cbean.TOperationparamsCB;\r
+import jp.sourceforge.ea2ddl.dao.exbhv.TAttributeBhv;\r
+import jp.sourceforge.ea2ddl.dao.exbhv.TConnectorBhv;\r
+import jp.sourceforge.ea2ddl.dao.exbhv.TObjectBhv;\r
+import jp.sourceforge.ea2ddl.dao.exbhv.TObjectpropertiesBhv;\r
+import jp.sourceforge.ea2ddl.dao.exbhv.TOperationBhv;\r
+import jp.sourceforge.ea2ddl.dao.exbhv.TOperationparamsBhv;\r
+import jp.sourceforge.ea2ddl.dao.exbhv.TPackageBhv;\r
+import jp.sourceforge.ea2ddl.dao.exentity.TAttribute;\r
+import jp.sourceforge.ea2ddl.dao.exentity.TConnector;\r
+import jp.sourceforge.ea2ddl.dao.exentity.TObject;\r
+import jp.sourceforge.ea2ddl.dao.exentity.TObjectproperties;\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.model.ColumnModel;\r
+import jp.sourceforge.ea2ddl.ddl.model.DatabaseModel;\r
+import jp.sourceforge.ea2ddl.ddl.model.ForeignKeyModel;\r
+import jp.sourceforge.ea2ddl.ddl.model.PrimaryKeyModel;\r
+import jp.sourceforge.ea2ddl.ddl.model.TableModel;\r
+import jp.sourceforge.ea2ddl.ddl.model.UniqueModel;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.seasar.framework.container.annotation.tiger.Binding;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public class DatabaseModelFactoryImpl implements DatabaseModelFactory {\r
+ private Log _log = LogFactory.getLog(DatabaseModelFactoryImpl.class);\r
+\r
+ private Config _config;\r
+ private TPackageBhv _tPackageBhv;\r
+ private TObjectBhv _tObjectBhv;\r
+ private TObjectpropertiesBhv _tObjectpropertiesBhv;\r
+ private TAttributeBhv _tAttributeBhv;\r
+ private TConnectorBhv _tConnectorBhv;\r
+ private TOperationBhv _tOperationBhv;\r
+ private TOperationparamsBhv _tOperationparamsBhv;\r
+\r
+ @Binding\r
+ public void setConfig(Config config) {\r
+ _config = config;\r
+ }\r
+\r
+ @Binding\r
+ public void setTPackageBhv(TPackageBhv packageBhv) {\r
+ _tPackageBhv = packageBhv;\r
+ }\r
+\r
+ @Binding\r
+ public void setTObjectBhv(TObjectBhv objectBhv) {\r
+ _tObjectBhv = objectBhv;\r
+ }\r
+\r
+ @Binding\r
+ public void setTObjectpropertiesBhv(TObjectpropertiesBhv objectpropertiesBhv) {\r
+ _tObjectpropertiesBhv = objectpropertiesBhv;\r
+ }\r
+\r
+ @Binding\r
+ public void setTAttributeBhv(TAttributeBhv attributeBhv) {\r
+ _tAttributeBhv = attributeBhv;\r
+ }\r
+\r
+ @Binding\r
+ public void setTConnectorBhv(TConnectorBhv connectorBhv) {\r
+ _tConnectorBhv = connectorBhv;\r
+ }\r
+\r
+ @Binding\r
+ public void setTOperationBhv(TOperationBhv operationBhv) {\r
+ _tOperationBhv = operationBhv;\r
+ }\r
+\r
+ @Binding\r
+ public void setTOperationparamsBhv(TOperationparamsBhv operationparamsBhv) {\r
+ _tOperationparamsBhv = operationparamsBhv;\r
+ }\r
+\r
+ /*\r
+ * (�� Javadoc)\r
+ * \r
+ * @see jp.sourceforge.ea2ddl.ddl.factory.Generator#execute()\r
+ */\r
+ public DatabaseModel create() {\r
+ final DatabaseModel dbModel = new DatabaseModel();\r
+ final TPackage pkg = getPackage(_config.getProperty("er.package.tree"));\r
+ final List<TObject> objectList = _tObjectBhv.selectListByStereotype(\r
+ pkg, "table");\r
+ _log.debug(objectList.size());\r
+\r
+ for (TObject object : objectList) {\r
+ final TableModel table = generateTableModel(object);\r
+ dbModel.addTable(table);\r
+ }\r
+ return dbModel;\r
+ }\r
+\r
+ protected TPackage getPackage(String packageTree) {\r
+ return _tPackageBhv.selectPackage(packageTree);\r
+ }\r
+\r
+ protected TableModel generateTableModel(TObject tobject) {\r
+ final TableModel table = new TableModel();\r
+ table.setName(tobject.getName());\r
+ table.setAlias(tobject.getAlias());\r
+ table.setNote(tobject.getNote());\r
+ if (_config.getBoolean("use.schema")) {\r
+ final TObjectpropertiesCB cb = new TObjectpropertiesCB();\r
+ cb.query().setObjectId_Equal(tobject.getObjectId());\r
+ cb.query().setProperty_Equal("OWNER");\r
+ final TObjectproperties owner = _tObjectpropertiesBhv\r
+ .selectEntity(cb);\r
+ if (owner != null) {\r
+ table.setSchema(owner.getValue());\r
+ }\r
+ }\r
+ generateColumnModel(table, tobject);\r
+ generatePKModel(table, tobject);\r
+ generateFKModel(table, tobject);\r
+ generateUniqueModel(table, tobject);\r
+\r
+ return table;\r
+ }\r
+\r
+ protected void generateColumnModel(TableModel table, TObject tobject) {\r
+ final TAttributeCB cb = new TAttributeCB();\r
+ cb.query().setObjectId_Equal(tobject.getObjectId());\r
+ final ListResultBean<TAttribute> attributes = _tAttributeBhv\r
+ .selectList(cb);\r
+ for (TAttribute attribute : attributes) {\r
+ final ColumnModel column = new ColumnModel();\r
+ column.setName(attribute.getName());\r
+ column.setAlias(attribute.getStyle());\r
+ column.setType(attribute.getType());\r
+ column.setLength(attribute.getLength());\r
+ column.setPrecision(attribute.getPrecision());\r
+ column.setScale(attribute.getScale());\r
+ column.setNullable(Integer.valueOf(0).equals(\r
+ attribute.getAllowduplicates()));\r
+ column.setNote(attribute.getNotes());\r
+ table.addColumn(column);\r
+ }\r
+ }\r
+\r
+ protected void generatePKModel(TableModel table, TObject tobject) {\r
+ final TOperationCB opeCB = new TOperationCB();\r
+ opeCB.query().setObjectId_Equal(tobject.getObjectId());\r
+ opeCB.query().setStereotype_Equal("PK");\r
+ final TOperation opePK = _tOperationBhv.selectEntity(opeCB);\r
+ if (opePK == null) {\r
+ return;\r
+ }\r
+ final TOperationparamsCB cb = new TOperationparamsCB();\r
+ cb.query().setOperationid_Equal(opePK.getOperationid());\r
+ cb.query().addOrderBy_Pos_Asc();\r
+ final ListResultBean<TOperationparams> params = _tOperationparamsBhv\r
+ .selectList(cb);\r
+ if (0 < params.size()) {\r
+ final PrimaryKeyModel pk = new PrimaryKeyModel();\r
+ pk.setName(opePK.getName());\r
+ for (TOperationparams param : params) {\r
+ pk.addColumnName(param.getName());\r
+ }\r
+ table.setPrimaryKey(pk);\r
+ }\r
+ }\r
+\r
+ protected void generateFKModel(TableModel table, TObject tobject) {\r
+ final TOperationCB opeCB = new TOperationCB();\r
+ opeCB.query().setObjectId_Equal(tobject.getObjectId());\r
+ opeCB.query().setStereotype_Equal("FK");\r
+ final ListResultBean<TOperation> opeFKList = _tOperationBhv\r
+ .selectList(opeCB);\r
+ for (TOperation opeFK : opeFKList) {\r
+ final ForeignKeyModel fk = new ForeignKeyModel();\r
+ fk.setName(opeFK.getName());\r
+ {\r
+ final TOperationparamsCB paraCB = new TOperationparamsCB();\r
+ paraCB.query().setOperationid_Equal(opeFK.getOperationid());\r
+ paraCB.query().addOrderBy_Pos_Asc();\r
+ final ListResultBean<TOperationparams> params = _tOperationparamsBhv\r
+ .selectList(paraCB);\r
+ for (TOperationparams param : params) {\r
+ fk.addColumnName(param.getName());\r
+ }\r
+ }\r
+ {\r
+ final TConnectorCB conCB = new TConnectorCB();\r
+ conCB.query().setStartObjectId_Equal(tobject.getObjectId());\r
+ conCB.query().setSourcerole_Equal(opeFK.getName());\r
+ final TConnector con = _tConnectorBhv.selectEntity(conCB);\r
+\r
+ final TObject targetTable = _tObjectBhv.selectEntity(con\r
+ .getEndObjectId());\r
+ fk.setTargetTable(targetTable.getName());\r
+\r
+ final TOperationCB targetOpeCB = new TOperationCB();\r
+ targetOpeCB.query().setObjectId_Equal(con.getEndObjectId());\r
+ targetOpeCB.query().setName_Equal(con.getDestrole());\r
+ final TOperation targetOpe = _tOperationBhv\r
+ .selectEntity(targetOpeCB);\r
+\r
+ final TOperationparamsCB targetParaCB = new TOperationparamsCB();\r
+ targetParaCB.query().setOperationid_Equal(\r
+ targetOpe.getOperationid());\r
+ targetParaCB.query().addOrderBy_Pos_Asc();\r
+ final ListResultBean<TOperationparams> targetParams = _tOperationparamsBhv\r
+ .selectList(targetParaCB);\r
+ for (TOperationparams targetParam : targetParams) {\r
+ fk.addTargetColumnName(targetParam.getName());\r
+ }\r
+ }\r
+ table.addForeignKey(fk);\r
+ }\r
+ }\r
+\r
+ protected void generateUniqueModel(TableModel table, TObject tobject) {\r
+ final TOperationCB cb = new TOperationCB();\r
+ cb.query().setObjectId_Equal(tobject.getObjectId());\r
+ cb.query().setStereotype_Equal("unique");\r
+ final ListResultBean<TOperation> uniqueList = _tOperationBhv\r
+ .selectList(cb);\r
+ for (TOperation unique : uniqueList) {\r
+ final UniqueModel uniqueModel = new UniqueModel();\r
+ uniqueModel.setName(unique.getName());\r
+ final TOperationparamsCB opeCB = new TOperationparamsCB();\r
+ opeCB.query().setOperationid_Equal(unique.getOperationid());\r
+ opeCB.query().addOrderBy_Pos_Asc();\r
+ final ListResultBean<TOperationparams> cols = _tOperationparamsBhv\r
+ .selectList(opeCB);\r
+ for (TOperationparams param : cols) {\r
+ uniqueModel.addColumnName(param.getName());\r
+ }\r
+ table.addUnique(uniqueModel);\r
+ }\r
+ }\r
+}\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.model;\r
+\r
+import java.io.Serializable;\r
+\r
+/**\r
+ * @author takiguchi\r
+ * \r
+ */\r
+public class ColumnModel implements Serializable {\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ private String _name;\r
+ private String _alias;\r
+ private String _note;\r
+ private String _type;\r
+ private Integer _length;\r
+ private Integer _precision;\r
+ private Integer _scale;\r
+ private boolean nullable;\r
+\r
+ public boolean isNullable() {\r
+ return nullable;\r
+ }\r
+\r
+ public void setNullable(boolean nullable) {\r
+ this.nullable = nullable;\r
+ }\r
+\r
+ private String defaultValue;\r
+\r
+ public String getName() {\r
+ return _name;\r
+ }\r
+\r
+ public void setName(String name) {\r
+ _name = name;\r
+ }\r
+\r
+ public String getAlias() {\r
+ return _alias;\r
+ }\r
+\r
+ public void setAlias(String alias) {\r
+ _alias = alias;\r
+ }\r
+\r
+ public String getNote() {\r
+ return _note;\r
+ }\r
+\r
+ public void setNote(String note) {\r
+ _note = note;\r
+ }\r
+\r
+ public String getType() {\r
+ return _type;\r
+ }\r
+\r
+ public void setType(String type) {\r
+ _type = type;\r
+ }\r
+\r
+ public Integer getLength() {\r
+ return _length;\r
+ }\r
+\r
+ public void setLength(Integer length) {\r
+ _length = length;\r
+ }\r
+\r
+ public Integer getPrecision() {\r
+ return _precision;\r
+ }\r
+\r
+ public void setPrecision(Integer precision) {\r
+ _precision = precision;\r
+ }\r
+\r
+ public Integer getScale() {\r
+ return _scale;\r
+ }\r
+\r
+ public void setScale(Integer scale) {\r
+ _scale = scale;\r
+ }\r
+\r
+ public String getDefaultValue() {\r
+ return defaultValue;\r
+ }\r
+\r
+ public void setDefaultValue(String defaultValue) {\r
+ this.defaultValue = defaultValue;\r
+ }\r
+\r
+ public String getDefinition() {\r
+ StringBuffer b = new StringBuffer();\r
+ b.append(getType());\r
+ if ("CHAR".equals(getType()) || "VARCHAR".equals(getType())\r
+ || "VARCHAR2".equals(getType()) || "INTEGER".equals(getType())\r
+ || "LONG".equals(getType()) || "FLOAT".equals(getType())\r
+ || "NCHAR".equals(getType()) || "NVARCHAR".equals(getType())\r
+ || "NVARCHAR2".equals(getType()) || "RAW".equals(getType())) {\r
+ b.append("(").append(getLength()).append(")");\r
+ } else if ("NUMBER".equals(getType())) {\r
+ b.append("(").append(getPrecision());\r
+ if (getScale() != null && 0 != getScale()) {\r
+ b.append(",").append(getScale());\r
+ }\r
+ b.append(")");\r
+ }\r
+ if (!isNullable()) {\r
+ b.append(" NOT NULL");\r
+ }\r
+ return b.toString();\r
+ }\r
+\r
+ public String getComment() {\r
+ StringBuffer b = new StringBuffer();\r
+ if (getAlias() != null) {\r
+ b.append(getAlias()).append(".").append("\r\n");\r
+ }\r
+ if (getNote() != null) {\r
+ b.append(getNote());\r
+ }\r
+ if (b.length() == 0) {\r
+ return null;\r
+ }\r
+ return b.toString();\r
+ }\r
+}\r
--- /dev/null
+/**\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
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public class DatabaseModel implements Serializable {\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ private List<TableModel> _tableList;\r
+\r
+ public List<TableModel> getTableList() {\r
+ if (_tableList == null) {\r
+ synchronized (this) {\r
+ if (_tableList == null) {\r
+ _tableList = new ArrayList<TableModel>();\r
+ }\r
+ }\r
+ }\r
+ return _tableList;\r
+ }\r
+\r
+ public void setTableList(List<TableModel> tableList) {\r
+ _tableList = tableList;\r
+ }\r
+\r
+ public void addTable(TableModel table) {\r
+ getTableList().add(table);\r
+ }\r
+}\r
--- /dev/null
+/**\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
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public class ForeignKeyModel implements Serializable {\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ private String _name;\r
+ private List<String> _columnNameList = new ArrayList<String>();\r
+ private String _targetTable;\r
+ private List<String> _targetColumnNameList = new ArrayList<String>();\r
+\r
+ public String getName() {\r
+ return _name;\r
+ }\r
+\r
+ public void setName(String name) {\r
+ _name = name;\r
+ }\r
+\r
+ public List<String> getColumnNameList() {\r
+ return _columnNameList;\r
+ }\r
+\r
+ public void setColumnNameList(List<String> columnNameList) {\r
+ _columnNameList = columnNameList;\r
+ }\r
+\r
+ public void addColumnName(String columnName) {\r
+ getColumnNameList().add(columnName);\r
+ }\r
+\r
+ public String getTargetTable() {\r
+ return _targetTable;\r
+ }\r
+\r
+ public void setTargetTable(String targetTable) {\r
+ _targetTable = targetTable;\r
+ }\r
+\r
+ public List<String> getTargetColumnNameList() {\r
+ return _targetColumnNameList;\r
+ }\r
+\r
+ public void setTargetColumnNameList(List<String> targetColumnNameList) {\r
+ _targetColumnNameList = targetColumnNameList;\r
+ }\r
+\r
+ public void addTargetColumnName(String targetColumnName) {\r
+ getTargetColumnNameList().add(targetColumnName);\r
+ }\r
+\r
+}\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.model;\r
+\r
+import java.io.Serializable;\r
+import java.util.List;\r
+\r
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public class IndexModel implements Serializable {\r
+ private static final long serialVersionUID = 1L;\r
+ private String _name;\r
+ private List<String> _columnList;\r
+\r
+ public String getName() {\r
+ return _name;\r
+ }\r
+\r
+ public void setName(String name) {\r
+ _name = name;\r
+ }\r
+\r
+ public List<String> getColumnList() {\r
+ return _columnList;\r
+ }\r
+\r
+ public void setColumnList(List<String> columnList) {\r
+ _columnList = columnList;\r
+ }\r
+}\r
--- /dev/null
+package jp.sourceforge.ea2ddl.ddl.model;\r
+\r
+import java.io.Serializable;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+public class PrimaryKeyModel implements Serializable {\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ private String _name;\r
+ private List<String> _columnNameList;\r
+\r
+ public String getName() {\r
+ return _name;\r
+ }\r
+\r
+ public void setName(String name) {\r
+ _name = name;\r
+ }\r
+\r
+ public List<String> getColumnNameList() {\r
+ if (_columnNameList == null) {\r
+ synchronized (this) {\r
+ _columnNameList = new ArrayList<String>();\r
+ }\r
+ }\r
+ return _columnNameList;\r
+ }\r
+\r
+ public void setColumnNameList(List<String> columnNameList) {\r
+ _columnNameList = columnNameList;\r
+ }\r
+\r
+ public void addColumnName(String columnName) {\r
+ getColumnNameList().add(columnName);\r
+ }\r
+}\r
--- /dev/null
+/**\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
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public class TableModel implements Serializable {\r
+ private static final long serialVersionUID = 1L;\r
+ private String name;\r
+ private String alias;\r
+ private String note;\r
+ private String schema;\r
+\r
+ private List<ColumnModel> _columnList;\r
+ private PrimaryKeyModel _primaryKey;\r
+ private List<UniqueModel> _uniqueList;\r
+ private List<ForeignKeyModel> _foreignKeyList;\r
+ private List<IndexModel> _indexList;\r
+\r
+ public String getName() {\r
+ return name;\r
+ }\r
+\r
+ public void setName(String name) {\r
+ this.name = name;\r
+ }\r
+\r
+ public String getAlias() {\r
+ return alias;\r
+ }\r
+\r
+ public void setAlias(String alias) {\r
+ this.alias = alias;\r
+ }\r
+\r
+ public String getNote() {\r
+ return note;\r
+ }\r
+\r
+ public void setNote(String note) {\r
+ this.note = note;\r
+ }\r
+\r
+ public String getSchema() {\r
+ return schema;\r
+ }\r
+\r
+ public void setSchema(String schema) {\r
+ this.schema = schema;\r
+ }\r
+\r
+ public List<ColumnModel> getColumnList() {\r
+ if (_columnList == null) {\r
+ synchronized (this) {\r
+ if (_columnList == null) {\r
+ _columnList = new ArrayList<ColumnModel>();\r
+ }\r
+ }\r
+ }\r
+ return _columnList;\r
+ }\r
+\r
+ public void setColumnList(List<ColumnModel> columnList) {\r
+ _columnList = columnList;\r
+ }\r
+\r
+ public void addColumn(ColumnModel column) {\r
+ getColumnList().add(column);\r
+ }\r
+\r
+ public PrimaryKeyModel getPrimaryKey() {\r
+ return _primaryKey;\r
+ }\r
+\r
+ public void setPrimaryKey(PrimaryKeyModel primaryKey) {\r
+ _primaryKey = primaryKey;\r
+ }\r
+\r
+ public List<UniqueModel> getUniqueList() {\r
+ if (_uniqueList == null) {\r
+ synchronized (this) {\r
+ if (_uniqueList == null) {\r
+ _uniqueList = new ArrayList<UniqueModel>();\r
+ }\r
+ }\r
+ }\r
+ return _uniqueList;\r
+ }\r
+\r
+ public void setUniqueList(List<UniqueModel> uniqueList) {\r
+ _uniqueList = uniqueList;\r
+ }\r
+\r
+ public void addUnique(UniqueModel unique) {\r
+ getUniqueList().add(unique);\r
+ }\r
+\r
+ public List<ForeignKeyModel> getForeignKeyList() {\r
+ if (_foreignKeyList == null) {\r
+ synchronized (this) {\r
+ if (_foreignKeyList == null) {\r
+ _foreignKeyList = new ArrayList<ForeignKeyModel>();\r
+ }\r
+ }\r
+ }\r
+ return _foreignKeyList;\r
+ }\r
+\r
+ public void setForeignKeyList(List<ForeignKeyModel> foreignKeyList) {\r
+ _foreignKeyList = foreignKeyList;\r
+ }\r
+\r
+ public void addForeignKey(ForeignKeyModel foreignKey) {\r
+ getForeignKeyList().add(foreignKey);\r
+ }\r
+\r
+ public List<IndexModel> getIndexList() {\r
+ return _indexList;\r
+ }\r
+\r
+ public void setIndexList(List<IndexModel> indexList) {\r
+ _indexList = indexList;\r
+ }\r
+\r
+ public String getComment() {\r
+ StringBuffer b = new StringBuffer();\r
+ if (getAlias() != null) {\r
+ b.append(getAlias()).append(".").append("\r\n");\r
+ }\r
+ if (getNote() != null) {\r
+ b.append(getNote());\r
+ }\r
+ if (b.length() == 0) {\r
+ return null;\r
+ }\r
+ return b.toString();\r
+ }\r
+}\r
--- /dev/null
+/**\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
+/**\r
+ * @author taktos\r
+ * \r
+ */\r
+public class UniqueModel implements Serializable {\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ private String _name;\r
+ private List<String> _columnNameList;\r
+\r
+ public String getName() {\r
+ return _name;\r
+ }\r
+\r
+ public void setName(String name) {\r
+ _name = name;\r
+ }\r
+\r
+ public List<String> getColumnNameList() {\r
+ if (_columnNameList == null) {\r
+ synchronized (this) {\r
+ if (_columnNameList == null) {\r
+ _columnNameList = new ArrayList<String>();\r
+ }\r
+ }\r
+ }\r
+ return _columnNameList;\r
+ }\r
+\r
+ public void setColumnNameList(List<String> columnNameList) {\r
+ this._columnNameList = columnNameList;\r
+ }\r
+\r
+ public void addColumnName(String columnName) {\r
+ getColumnNameList().add(columnName);\r
+ }\r
+}\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package jp.sourceforge.ea2ddl.ddl.task;\r
+\r
+import jp.sourceforge.ea2ddl.ddl.command.GenerateDdlCommand;\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 class GenerateDdlTask extends AbstractTask {\r
+ protected GenerateDdlCommand _command = new GenerateDdlCommand();\r
+\r
+ /*\r
+ * (\94ñ Javadoc)\r
+ * \r
+ * @see org.seasar.extension.jdbc.gen.task.AbstractTask#getCommand()\r
+ */\r
+ @Override\r
+ protected Command getCommand() {\r
+ return _command;\r
+ }\r
+\r
+ public void setConfigPath(String configPath) {\r
+ _command.setConfigPath(configPath);\r
+ }\r
+\r
+ public void setFactoryClassName(String className) {\r
+ _command.setFactoryClassName(className);\r
+ }\r
+}\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" \r
+ "http://www.seasar.org/dtd/components24.dtd">\r
+<components>\r
+ <component name="config"\r
+ class="jp.sourceforge.ea2ddl.common.config.impl.ConfigImpl">\r
+ <initMethod name="load">\r
+ <arg>"app.properties"</arg>\r
+ </initMethod>\r
+ </component>\r
+</components>
\ No newline at end of file
--- /dev/null
+root.package.name=\u30d3\u30e5\u30fc\r
+er.package.tree=\u30af\u30e9\u30b9\u30d3\u30e5\u30fc/ER\u56f3/EXAMPLEDB
\ No newline at end of file
--- /dev/null
+<#list tableList as table>\r
+DROP TABLE ${table.name};\r
+</#list>\r
+\r
+<#list tableList as table>\r
+CREATE TABLE ${table.name} (\r
+<#list table.columnList as column> ${column.name} ${column.definition}<#if column_has_next>,</#if>\r
+</#list>\r
+)\r
+;\r
+<#if table.primaryKey??>ALTER TABLE ${table.name} ADD CONSTRAINT ${table.primaryKey.name}\r
+ PRIMARY KEY (<#list table.primaryKey.columnNameList as columnName>${columnName}<#if columnName_has_next>,</#if></#list>)\r
+;\r
+</#if>\r
+<#list table.uniqueList as unique>ALTER TABLE ${table.name} ADD CONSTRAINT ${unique.name}\r
+ UNIQUE (<#list unique.columnNameList as columnName>${columnName}<#if columnName_has_next>,</#if></#list>)\r
+;\r
+</#list>\r
+<#if table.comment??>\r
+COMMENT ON TABLE ${table.name} IS '${table.comment}'\r
+;\r
+</#if>\r
+<#list table.columnList as column>\r
+<#if column.comment??>\r
+COMMENT ON COLUMN ${table.name}.${column.name} IS '${column.comment}'\r
+;\r
+</#if>\r
+</#list>\r
+\r
+</#list>\r
+\r
+<#list tableList as table>\r
+<#list table.foreignKeyList as fk>ALTER TABLE ${table.name} ADD CONSTRAINT ${fk.name}\r
+ FOREIGN KEY (<#list fk.columnNameList as columnName>${columnName}<#if columnName_has_next>,</#if></#list>)\r
+ REFERENCES ${fk.targetTable} (<#list fk.targetColumnNameList as columnName>${columnName}<#if columnName_has_next>,</#if></#list>)\r
+;\r
+</#list>\r
+</#list>
\ No newline at end of file
--- /dev/null
+gen-ddl=jp.sourceforge.ea2ddl.ddl.task.GenerateDdlTask
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" \r
+ "http://www.seasar.org/dtd/components24.dtd">\r
+<components>\r
+ <include path="app-config.dicon" />\r
+ <include path="aop.dicon" />\r
+ <include path="dbflute.dicon" />\r
+\r
+ <component class="org.seasar.framework.container.autoregister.ComponentAutoRegister">\r
+ <initMethod name="addReferenceClass">\r
+ <arg>@jp.sourceforge.ea2ddl.ddl.factory.DatabaseModelFactory@class</arg>\r
+ </initMethod>\r
+ <initMethod name="addClassPattern">\r
+ <arg>"jp.sourceforge.ea2ddl.ddl.factory.impl"</arg>\r
+ <arg>".*Impl"</arg>\r
+ </initMethod>\r
+ </component>\r
+</components>\r
--- /dev/null
+log4j.rootLogger=DEBUG,STDOUT\r
+log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender\r
+log4j.appender.STDOUT.ImmediateFlush=true\r
+log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout\r
+log4j.appender.STDOUT.layout.ConversionPattern=%d [%t] %-5p %c - %m%n\r
+\r
+log4j.category.org.seasar=DEBUG\r