OSDN Git Service

EAからOracle用DDLが吐けるようになった
authortaktos9 <taktos9@136db618-7844-41ca-8ac1-fb3fd040db1d>
Sun, 19 Oct 2008 18:15:37 +0000 (18:15 +0000)
committertaktos9 <taktos9@136db618-7844-41ca-8ac1-fb3fd040db1d>
Sun, 19 Oct 2008 18:15:37 +0000 (18:15 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/ea2ddl/trunk/ea2ddl@34 136db618-7844-41ca-8ac1-fb3fd040db1d

46 files changed:
ea2ddl-ddl/.classpath [new file with mode: 0644]
ea2ddl-ddl/.project [new file with mode: 0644]
ea2ddl-ddl/.settings/org.eclipse.core.resources.prefs [new file with mode: 0644]
ea2ddl-ddl/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
ea2ddl-ddl/.settings/org.eclipse.jdt.ui.prefs [new file with mode: 0644]
ea2ddl-ddl/.settings/org.maven.ide.eclipse.prefs [new file with mode: 0644]
ea2ddl-ddl/build-ea2ddl.xml [new file with mode: 0644]
ea2ddl-ddl/lib/aopalliance-1.0.jar [new file with mode: 0644]
ea2ddl-ddl/lib/commons-collections-3.2.jar [new file with mode: 0644]
ea2ddl-ddl/lib/commons-lang-2.3.jar [new file with mode: 0644]
ea2ddl-ddl/lib/commons-logging-1.1.jar [new file with mode: 0644]
ea2ddl-ddl/lib/easymock-2.2.jar [new file with mode: 0644]
ea2ddl-ddl/lib/freemarker-2.3.13.jar [new file with mode: 0644]
ea2ddl-ddl/lib/geronimo-ejb_3.0_spec-1.0.jar [new file with mode: 0644]
ea2ddl-ddl/lib/geronimo-j2ee_1.4_spec-1.0.jar [new file with mode: 0644]
ea2ddl-ddl/lib/geronimo-jpa_3.0_spec-1.0.jar [new file with mode: 0644]
ea2ddl-ddl/lib/geronimo-jta_1.1_spec-1.0.jar [new file with mode: 0644]
ea2ddl-ddl/lib/javassist-3.4.ga.jar [new file with mode: 0644]
ea2ddl-ddl/lib/junit-4.4.jar [new file with mode: 0644]
ea2ddl-ddl/lib/junit-addons-1.4.jar [new file with mode: 0644]
ea2ddl-ddl/lib/log4j-1.2.14.jar [new file with mode: 0644]
ea2ddl-ddl/lib/ognl-2.6.9-patch-20070908.jar [new file with mode: 0644]
ea2ddl-ddl/lib/poi-3.0.2-FINAL.jar [new file with mode: 0644]
ea2ddl-ddl/lib/s2-dao-1.0.47.jar [new file with mode: 0644]
ea2ddl-ddl/lib/s2-dao-tiger-1.0.47.jar [new file with mode: 0644]
ea2ddl-ddl/lib/s2-extension-2.4.30.jar [new file with mode: 0644]
ea2ddl-ddl/lib/s2-framework-2.4.30.jar [new file with mode: 0644]
ea2ddl-ddl/lib/s2-tiger-2.4.30.jar [new file with mode: 0644]
ea2ddl-ddl/pom.xml [new file with mode: 0644]
ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/command/GenerateDdlCommand.java [new file with mode: 0644]
ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/factory/DatabaseModelFactory.java [new file with mode: 0644]
ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/factory/impl/DatabaseModelFactoryImpl.java [new file with mode: 0644]
ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/ColumnModel.java [new file with mode: 0644]
ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/DatabaseModel.java [new file with mode: 0644]
ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/ForeignKeyModel.java [new file with mode: 0644]
ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/IndexModel.java [new file with mode: 0644]
ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/PrimaryKeyModel.java [new file with mode: 0644]
ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/TableModel.java [new file with mode: 0644]
ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/UniqueModel.java [new file with mode: 0644]
ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/task/GenerateDdlTask.java [new file with mode: 0644]
ea2ddl-ddl/src/main/resources/app-config.dicon [new file with mode: 0644]
ea2ddl-ddl/src/main/resources/app.properties [new file with mode: 0644]
ea2ddl-ddl/src/main/resources/base.ftl [new file with mode: 0644]
ea2ddl-ddl/src/main/resources/ea2ddl-taskdef.properties [new file with mode: 0644]
ea2ddl-ddl/src/main/resources/ea2ddl.dicon [new file with mode: 0644]
ea2ddl-ddl/src/main/resources/log4j.properties [new file with mode: 0644]

diff --git a/ea2ddl-ddl/.classpath b/ea2ddl-ddl/.classpath
new file mode 100644 (file)
index 0000000..96f09f1
--- /dev/null
@@ -0,0 +1,10 @@
+<?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
diff --git a/ea2ddl-ddl/.project b/ea2ddl-ddl/.project
new file mode 100644 (file)
index 0000000..e1eb98d
--- /dev/null
@@ -0,0 +1,23 @@
+<?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
diff --git a/ea2ddl-ddl/.settings/org.eclipse.core.resources.prefs b/ea2ddl-ddl/.settings/org.eclipse.core.resources.prefs
new file mode 100644 (file)
index 0000000..59ecb00
--- /dev/null
@@ -0,0 +1,3 @@
+#Mon Oct 20 02:33:03 JST 2008\r
+eclipse.preferences.version=1\r
+encoding/<project>=UTF-8\r
diff --git a/ea2ddl-ddl/.settings/org.eclipse.jdt.core.prefs b/ea2ddl-ddl/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..3636ab3
--- /dev/null
@@ -0,0 +1,13 @@
+#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
diff --git a/ea2ddl-ddl/.settings/org.eclipse.jdt.ui.prefs b/ea2ddl-ddl/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644 (file)
index 0000000..4b70c95
--- /dev/null
@@ -0,0 +1,58 @@
+#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
diff --git a/ea2ddl-ddl/.settings/org.maven.ide.eclipse.prefs b/ea2ddl-ddl/.settings/org.maven.ide.eclipse.prefs
new file mode 100644 (file)
index 0000000..91c6154
--- /dev/null
@@ -0,0 +1,8 @@
+#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
diff --git a/ea2ddl-ddl/build-ea2ddl.xml b/ea2ddl-ddl/build-ea2ddl.xml
new file mode 100644 (file)
index 0000000..51b1c8f
--- /dev/null
@@ -0,0 +1,28 @@
+<?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
diff --git a/ea2ddl-ddl/lib/aopalliance-1.0.jar b/ea2ddl-ddl/lib/aopalliance-1.0.jar
new file mode 100644 (file)
index 0000000..578b1a0
Binary files /dev/null and b/ea2ddl-ddl/lib/aopalliance-1.0.jar differ
diff --git a/ea2ddl-ddl/lib/commons-collections-3.2.jar b/ea2ddl-ddl/lib/commons-collections-3.2.jar
new file mode 100644 (file)
index 0000000..75580be
Binary files /dev/null and b/ea2ddl-ddl/lib/commons-collections-3.2.jar differ
diff --git a/ea2ddl-ddl/lib/commons-lang-2.3.jar b/ea2ddl-ddl/lib/commons-lang-2.3.jar
new file mode 100644 (file)
index 0000000..c33b353
Binary files /dev/null and b/ea2ddl-ddl/lib/commons-lang-2.3.jar differ
diff --git a/ea2ddl-ddl/lib/commons-logging-1.1.jar b/ea2ddl-ddl/lib/commons-logging-1.1.jar
new file mode 100644 (file)
index 0000000..2ff9bbd
Binary files /dev/null and b/ea2ddl-ddl/lib/commons-logging-1.1.jar differ
diff --git a/ea2ddl-ddl/lib/easymock-2.2.jar b/ea2ddl-ddl/lib/easymock-2.2.jar
new file mode 100644 (file)
index 0000000..c4159f5
Binary files /dev/null and b/ea2ddl-ddl/lib/easymock-2.2.jar differ
diff --git a/ea2ddl-ddl/lib/freemarker-2.3.13.jar b/ea2ddl-ddl/lib/freemarker-2.3.13.jar
new file mode 100644 (file)
index 0000000..5b8192e
Binary files /dev/null and b/ea2ddl-ddl/lib/freemarker-2.3.13.jar differ
diff --git a/ea2ddl-ddl/lib/geronimo-ejb_3.0_spec-1.0.jar b/ea2ddl-ddl/lib/geronimo-ejb_3.0_spec-1.0.jar
new file mode 100644 (file)
index 0000000..7759185
Binary files /dev/null and b/ea2ddl-ddl/lib/geronimo-ejb_3.0_spec-1.0.jar differ
diff --git a/ea2ddl-ddl/lib/geronimo-j2ee_1.4_spec-1.0.jar b/ea2ddl-ddl/lib/geronimo-j2ee_1.4_spec-1.0.jar
new file mode 100644 (file)
index 0000000..6c30f12
Binary files /dev/null and b/ea2ddl-ddl/lib/geronimo-j2ee_1.4_spec-1.0.jar differ
diff --git a/ea2ddl-ddl/lib/geronimo-jpa_3.0_spec-1.0.jar b/ea2ddl-ddl/lib/geronimo-jpa_3.0_spec-1.0.jar
new file mode 100644 (file)
index 0000000..e8917c5
Binary files /dev/null and b/ea2ddl-ddl/lib/geronimo-jpa_3.0_spec-1.0.jar differ
diff --git a/ea2ddl-ddl/lib/geronimo-jta_1.1_spec-1.0.jar b/ea2ddl-ddl/lib/geronimo-jta_1.1_spec-1.0.jar
new file mode 100644 (file)
index 0000000..b9d7cc7
Binary files /dev/null and b/ea2ddl-ddl/lib/geronimo-jta_1.1_spec-1.0.jar differ
diff --git a/ea2ddl-ddl/lib/javassist-3.4.ga.jar b/ea2ddl-ddl/lib/javassist-3.4.ga.jar
new file mode 100644 (file)
index 0000000..a6bde77
Binary files /dev/null and b/ea2ddl-ddl/lib/javassist-3.4.ga.jar differ
diff --git a/ea2ddl-ddl/lib/junit-4.4.jar b/ea2ddl-ddl/lib/junit-4.4.jar
new file mode 100644 (file)
index 0000000..649b0b3
Binary files /dev/null and b/ea2ddl-ddl/lib/junit-4.4.jar differ
diff --git a/ea2ddl-ddl/lib/junit-addons-1.4.jar b/ea2ddl-ddl/lib/junit-addons-1.4.jar
new file mode 100644 (file)
index 0000000..c344624
Binary files /dev/null and b/ea2ddl-ddl/lib/junit-addons-1.4.jar differ
diff --git a/ea2ddl-ddl/lib/log4j-1.2.14.jar b/ea2ddl-ddl/lib/log4j-1.2.14.jar
new file mode 100644 (file)
index 0000000..6251307
Binary files /dev/null and b/ea2ddl-ddl/lib/log4j-1.2.14.jar differ
diff --git a/ea2ddl-ddl/lib/ognl-2.6.9-patch-20070908.jar b/ea2ddl-ddl/lib/ognl-2.6.9-patch-20070908.jar
new file mode 100644 (file)
index 0000000..418f322
Binary files /dev/null and b/ea2ddl-ddl/lib/ognl-2.6.9-patch-20070908.jar differ
diff --git a/ea2ddl-ddl/lib/poi-3.0.2-FINAL.jar b/ea2ddl-ddl/lib/poi-3.0.2-FINAL.jar
new file mode 100644 (file)
index 0000000..fda0431
Binary files /dev/null and b/ea2ddl-ddl/lib/poi-3.0.2-FINAL.jar differ
diff --git a/ea2ddl-ddl/lib/s2-dao-1.0.47.jar b/ea2ddl-ddl/lib/s2-dao-1.0.47.jar
new file mode 100644 (file)
index 0000000..52e1597
Binary files /dev/null and b/ea2ddl-ddl/lib/s2-dao-1.0.47.jar differ
diff --git a/ea2ddl-ddl/lib/s2-dao-tiger-1.0.47.jar b/ea2ddl-ddl/lib/s2-dao-tiger-1.0.47.jar
new file mode 100644 (file)
index 0000000..c6a56a0
Binary files /dev/null and b/ea2ddl-ddl/lib/s2-dao-tiger-1.0.47.jar differ
diff --git a/ea2ddl-ddl/lib/s2-extension-2.4.30.jar b/ea2ddl-ddl/lib/s2-extension-2.4.30.jar
new file mode 100644 (file)
index 0000000..b1ae461
Binary files /dev/null and b/ea2ddl-ddl/lib/s2-extension-2.4.30.jar differ
diff --git a/ea2ddl-ddl/lib/s2-framework-2.4.30.jar b/ea2ddl-ddl/lib/s2-framework-2.4.30.jar
new file mode 100644 (file)
index 0000000..231836b
Binary files /dev/null and b/ea2ddl-ddl/lib/s2-framework-2.4.30.jar differ
diff --git a/ea2ddl-ddl/lib/s2-tiger-2.4.30.jar b/ea2ddl-ddl/lib/s2-tiger-2.4.30.jar
new file mode 100644 (file)
index 0000000..1cee487
Binary files /dev/null and b/ea2ddl-ddl/lib/s2-tiger-2.4.30.jar differ
diff --git a/ea2ddl-ddl/pom.xml b/ea2ddl-ddl/pom.xml
new file mode 100644 (file)
index 0000000..e738800
--- /dev/null
@@ -0,0 +1,43 @@
+<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
diff --git a/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/command/GenerateDdlCommand.java b/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/command/GenerateDdlCommand.java
new file mode 100644 (file)
index 0000000..3bb034f
--- /dev/null
@@ -0,0 +1,105 @@
+/**\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
diff --git a/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/factory/DatabaseModelFactory.java b/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/factory/DatabaseModelFactory.java
new file mode 100644 (file)
index 0000000..c711f27
--- /dev/null
@@ -0,0 +1,15 @@
+/**\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
diff --git a/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/factory/impl/DatabaseModelFactoryImpl.java b/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/factory/impl/DatabaseModelFactoryImpl.java
new file mode 100644 (file)
index 0000000..6b5b5f9
--- /dev/null
@@ -0,0 +1,255 @@
+/**\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
diff --git a/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/ColumnModel.java b/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/ColumnModel.java
new file mode 100644 (file)
index 0000000..e0fe1a4
--- /dev/null
@@ -0,0 +1,133 @@
+/**\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
diff --git a/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/DatabaseModel.java b/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/DatabaseModel.java
new file mode 100644 (file)
index 0000000..b5d19dd
--- /dev/null
@@ -0,0 +1,37 @@
+/**\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
diff --git a/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/ForeignKeyModel.java b/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/ForeignKeyModel.java
new file mode 100644 (file)
index 0000000..f34e607
--- /dev/null
@@ -0,0 +1,62 @@
+/**\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
diff --git a/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/IndexModel.java b/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/IndexModel.java
new file mode 100644 (file)
index 0000000..f41a846
--- /dev/null
@@ -0,0 +1,33 @@
+/**\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
diff --git a/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/PrimaryKeyModel.java b/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/PrimaryKeyModel.java
new file mode 100644 (file)
index 0000000..964c3d5
--- /dev/null
@@ -0,0 +1,37 @@
+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
diff --git a/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/TableModel.java b/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/TableModel.java
new file mode 100644 (file)
index 0000000..7916289
--- /dev/null
@@ -0,0 +1,145 @@
+/**\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
diff --git a/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/UniqueModel.java b/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/model/UniqueModel.java
new file mode 100644 (file)
index 0000000..96c96ed
--- /dev/null
@@ -0,0 +1,46 @@
+/**\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
diff --git a/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/task/GenerateDdlTask.java b/ea2ddl-ddl/src/main/java/jp/sourceforge/ea2ddl/ddl/task/GenerateDdlTask.java
new file mode 100644 (file)
index 0000000..626ed45
--- /dev/null
@@ -0,0 +1,35 @@
+/**\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
diff --git a/ea2ddl-ddl/src/main/resources/app-config.dicon b/ea2ddl-ddl/src/main/resources/app-config.dicon
new file mode 100644 (file)
index 0000000..958db57
--- /dev/null
@@ -0,0 +1,11 @@
+<?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
diff --git a/ea2ddl-ddl/src/main/resources/app.properties b/ea2ddl-ddl/src/main/resources/app.properties
new file mode 100644 (file)
index 0000000..f735a34
--- /dev/null
@@ -0,0 +1,2 @@
+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
diff --git a/ea2ddl-ddl/src/main/resources/base.ftl b/ea2ddl-ddl/src/main/resources/base.ftl
new file mode 100644 (file)
index 0000000..3848c7f
--- /dev/null
@@ -0,0 +1,38 @@
+<#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
diff --git a/ea2ddl-ddl/src/main/resources/ea2ddl-taskdef.properties b/ea2ddl-ddl/src/main/resources/ea2ddl-taskdef.properties
new file mode 100644 (file)
index 0000000..6c3baa5
--- /dev/null
@@ -0,0 +1 @@
+gen-ddl=jp.sourceforge.ea2ddl.ddl.task.GenerateDdlTask
\ No newline at end of file
diff --git a/ea2ddl-ddl/src/main/resources/ea2ddl.dicon b/ea2ddl-ddl/src/main/resources/ea2ddl.dicon
new file mode 100644 (file)
index 0000000..03940e1
--- /dev/null
@@ -0,0 +1,18 @@
+<?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
diff --git a/ea2ddl-ddl/src/main/resources/log4j.properties b/ea2ddl-ddl/src/main/resources/log4j.properties
new file mode 100644 (file)
index 0000000..80480de
--- /dev/null
@@ -0,0 +1,7 @@
+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