Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/test/java/org/castor/ddlgen/test/framework/AbstractGeneratorTest.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/test/java/org/castor/ddlgen/test/framework/AbstractGeneratorTest.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/test/java/org/castor/ddlgen/test/framework/AbstractGeneratorTest.java (working copy)
@@ -15,12 +15,17 @@
*/
package org.castor.ddlgen.test.framework;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
import java.net.URL;
import junit.framework.TestCase;
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
+import org.castor.ddlgen.GeneratorException;
import org.castor.mapping.MappingUnmarshaller;
import org.exolab.castor.mapping.Mapping;
@@ -169,7 +174,7 @@
try {
loadData("single_table.xml");
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
@@ -190,7 +195,7 @@
try {
loadData("ignored_table.xml");
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
@@ -211,7 +216,7 @@
try {
loadData("no_table.xml");
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
@@ -232,7 +237,7 @@
try {
loadData("drop_table.xml");
- String ddl = _generator.generateDrop();
+ String ddl = generate(DROP);
boolean b = _expected.match(_engine, ddl);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -254,13 +259,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generatePrimaryKey();
+ ddl = generate(PRIMARY_KEY);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -282,13 +287,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generatePrimaryKey();
+ ddl = generate(PRIMARY_KEY);
b = _expected.match(_engine, 1, ddl, null);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -310,13 +315,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generatePrimaryKey();
+ ddl = generate(PRIMARY_KEY);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -338,13 +343,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generatePrimaryKey();
+ ddl = generate(PRIMARY_KEY);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -366,13 +371,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generatePrimaryKey();
+ ddl = generate(PRIMARY_KEY);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -389,7 +394,7 @@
try {
loadData("multiple_table.xml");
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
@@ -410,7 +415,7 @@
try {
loadData("single_field_for_all.xml");
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
@@ -456,7 +461,7 @@
try {
loadData("single_field.xml");
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
@@ -482,13 +487,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateKeyGenerator();
+ ddl = generate(KEY_GENERATOR);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -510,13 +515,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateKeyGenerator();
+ ddl = generate(KEY_GENERATOR);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -538,13 +543,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateKeyGenerator();
+ ddl = generate(KEY_GENERATOR);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
@@ -566,13 +571,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateKeyGenerator();
+ ddl = generate(KEY_GENERATOR);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -594,13 +599,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateKeyGenerator();
+ ddl = generate(KEY_GENERATOR);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -622,13 +627,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateForeignKey();
+ ddl = generate(FOREIGN_KEY);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -650,13 +655,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateForeignKey();
+ ddl = generate(FOREIGN_KEY);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -678,13 +683,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateForeignKey();
+ ddl = generate(FOREIGN_KEY);
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -706,7 +711,7 @@
conf.getStringValue(PARAM_PREFIX + "integer" + PARAM_PRECISION, ""),
conf.getStringValue(PARAM_PREFIX + "char" + PARAM_LENGTH, "") };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -728,7 +733,7 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -745,7 +750,7 @@
try {
loadData("no_field.xml");
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, ddl);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -767,7 +772,7 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -789,7 +794,7 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -811,7 +816,7 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ String ddl = generate(CREATE);
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -831,14 +836,14 @@
DDLGenConfiguration conf = _generator.getConfiguration();
conf.setProperty(DDLGenConfiguration.SCHEMA_NAME_KEY, "test");
- String ddl = _generator.getSchema().toCreateDDL();
+ String ddl = generate(SCHEMA);
boolean b = _expected.match(_engine, 0, ddl, new String[] {"test"});
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
conf.setProperty(DDLGenConfiguration.SCHEMA_NAME_KEY, "");
- ddl = _generator.getSchema().toCreateDDL();
+ ddl = generate(SCHEMA);
b = _expected.match(_engine, 1, ddl, new String[] {});
assertTrue("Generated DDL: " + ddl + "\n"
@@ -855,7 +860,7 @@
try {
loadData("index_creation.xml");
- String ddl = _generator.generateIndex();
+ String ddl = generate(INDEX);
boolean b = _expected.match(_engine, ddl);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -865,5 +870,43 @@
}
}
+ public static final String CREATE = "create";
+ public static final String DROP = "drop";
+ public static final String PRIMARY_KEY = "primaryKey";
+ public static final String KEY_GENERATOR = "keyGenerator";
+ public static final String FOREIGN_KEY = "foreignKey";
+ public static final String SCHEMA = "schema";
+ public static final String INDEX = "index";
+ /**
+ * @param by by ?.
+ * @return string
+ * @throws GeneratorException
+ */
+ protected final String generate(final String by) throws GeneratorException {
+ StringWriter sw = new StringWriter();
+ DDLWriter writer = new DDLWriter(new PrintWriter(sw));
+
+ if (CREATE.equalsIgnoreCase(by)) {
+ _generator.generateCreate(writer);
+ } else if (DROP.equalsIgnoreCase(by)) {
+ _generator.generateDrop(writer);
+ } else if (PRIMARY_KEY.equalsIgnoreCase(by)) {
+ _generator.generatePrimaryKey(writer);
+ } else if (KEY_GENERATOR.equalsIgnoreCase(by)) {
+ _generator.generateKeyGenerator(writer);
+ } else if (FOREIGN_KEY.equalsIgnoreCase(by)) {
+ _generator.generateForeignKey(writer);
+ } else if (SCHEMA.equalsIgnoreCase(by)) {
+ _generator.getSchema().toCreateDDL(writer);
+ } else if (INDEX.equalsIgnoreCase(by)) {
+ _generator.generateIndex(writer);
+ }
+
+ writer.flush();
+ String r = sw.getBuffer().toString();
+ writer.close();
+ return r;
+
+ }
//--------------------------------------------------------------------------
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/test/java/org/castor/ddlgen/engine/derby/DerbyGeneratorTest.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/test/java/org/castor/ddlgen/engine/derby/DerbyGeneratorTest.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/test/java/org/castor/ddlgen/engine/derby/DerbyGeneratorTest.java (working copy)
@@ -124,7 +124,7 @@
try {
loadData("single_field_for_all.xml");
- String ddl = getGenerator().generateCreate();
+ String ddl = generate(CREATE);
DDLGenConfiguration conf = getGenerator().getConfiguration();
Object[] params = new Object[] {
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/test/java/org/castor/ddlgen/engine/db2/Db2GeneratorTest.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/test/java/org/castor/ddlgen/engine/db2/Db2GeneratorTest.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/test/java/org/castor/ddlgen/engine/db2/Db2GeneratorTest.java (working copy)
@@ -128,7 +128,7 @@
loadData("single_field_for_all.xml");
try {
- getGenerator().generateCreate();
+ generate(CREATE);
fail("bit type is not supported, expected an exception");
} catch (GeneratorException e) {
assertTrue(true);
@@ -145,7 +145,7 @@
try {
loadData("single_field_except_bit.xml");
- String ddl = getGenerator().generateCreate();
+ String ddl = generate(CREATE);
DDLGenConfiguration conf = getGenerator().getConfiguration();
Object[] params = new Object[] {
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/DDLWriter.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/DDLWriter.java (revision 0)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/DDLWriter.java (revision 0)
@@ -0,0 +1,548 @@
+/*
+ * Copyright 2007 Le Duc Bao
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.castor.ddlgen;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+/**
+ * Replace PrintStream and StringBuffer by a Writer implementation
+ * We have various properties to configure output that are in-depended of the schema object:
+ *
org.castor.ddlgen.CharFormat=SENSITIVE, UPPER and LOWER
+ * org.castor.ddlgen.Newline=\n
+ * org.castor.ddlgen.Indention=\t
+ *
+ * These properties are accessed at various places all around ddlgen at the moment.The idea
+ * is that these properties are set only once at the new Writer and do not need to be
+ * accessed elsewhere. This has the following advantages:
+ * improved performance as the properties don't need to be accessed for every object to output
+ * functionallity to format genertaed ddl is concentrated in one class: the new Writer
+ * all the toDDL(), toDropDDL(), toCreateDDL() methods get much shorter
+ *
+ * I thought of the following interface for the new Writer (not complete):
+ * write(String) outputs String as is
+ * writeln(String) calls write(String) followed by newline()
+ * newline() output newline and indention of next line
+ * indent() increases indention
+ * unindent() decreases indention
+ *
+ * More write() and writeln() methods for other data types may be added on demand. A further
+ * improvement could be to offer write(String, Object[]) methods that internally use
+ * MessageFormat. This would enable us to use a pattern based approach for DDL generation.
+ * These patterns may sometimes be much easier to read and maintain.
+ *
+ * In addition to the introduction of the new Writer it will be required to pass an instance
+ * of the Writer to every method where DDL gets generated. Therefore the parameterless
+ * toCreate() method have to be changed to toCreateDDL(DDLWriter). This also applies to other
+ * such methods.
+
+ * @author Le Duc Bao
+ */
+
+public class DDLWriter {
+ // ----------------variables---------------------------------------------
+
+ /** handle the current indent level, initialized by 0. */
+ private int _indentLevel;
+
+ /** A real print writer to be writed. */
+ private PrintWriter _pw = null;
+
+ /** indent text string, set to \t by default or load from configuration file
+ * by DEFAULT_INDENT. */
+ private String _indentText = "\n";
+
+ /**
+ * newline flag, turn on for a new line is activated.
+ */
+ private boolean _isNewline = true;
+
+ /**
+ * enable/disable indent function.
+ */
+ private boolean _isIndent = true;
+
+ /** new line text string, set to \n by default or load from configuration file
+ * by DEFAULT_NEWLINE.*/
+ private String _newline = null;
+
+ /**char format defined by CHAR_FORMAT_KEY in configuration file.*/
+ private String _charFormat = null;
+
+ // -----------------constructors----------------------------------------
+
+ /**
+ * Constructor with printwriter and configuration file. This constructor is
+ * dedicated to Castor-DDL
+ * @param pw
+ * a Print Writer to be wrapped.
+ * @param conf Castor configuration
+ */
+ public DDLWriter(final PrintWriter pw, final Configuration conf) {
+ _pw = pw;
+ initialize(conf);
+ }
+
+ /**
+ * Constructor with default value.
+ * @param pw
+ * a Print Writer to be wrapped.
+ */
+ public DDLWriter(final PrintWriter pw) {
+ _pw = pw;
+ }
+
+ // -------------------------private methodes----------------------------
+ /**
+ * get some configuration value from Castor config file.
+ * @param conf Castor configuration
+ */
+ private void initialize(final Configuration conf) {
+ _indentLevel = 0;
+ _newline = conf.getStringValue(
+ DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
+ _indentText = conf.getStringValue(
+ DDLGenConfiguration.INDENT_KEY, DDLGenConfiguration.DEFAULT_INDENT);
+ _charFormat = conf.getStringValue(
+ DDLGenConfiguration.CHAR_FORMAT_KEY,
+ DDLGenConfiguration.CHAR_FORMAT_SENSITIVE);
+ }
+
+ // -------------------------public methods------------------------------
+
+ /**
+ * create a newline in output stream.
+ */
+ public final void newline() {
+ _pw.print(_newline);
+ //the newline is turned on indicating that the next printing task will
+ //take in account the indent text.
+ _isNewline = true;
+ }
+
+ /**
+ * write indent space.
+ *
+ */
+ private void writeIndent() {
+ //the indent is effect only when the newline was previously called and
+ // indent flag is on
+ if (_isNewline && isIndent()) {
+ for (int i = 0; i < _indentLevel; i++) {
+ _pw.print(_indentText);
+ }
+ _isNewline = false;
+ }
+ }
+
+ /**
+ * add one more indentText for a newline.
+ * @return a this writer
+ */
+ public final DDLWriter indent() {
+ _indentLevel++;
+ return this;
+ }
+
+ /**
+ * remove one indentText of a newline.
+ * @return a this writer
+ */
+ public final DDLWriter unindent() {
+ _indentLevel = _indentLevel <= 0 ? 0 : _indentLevel - 1;
+ return this;
+ }
+
+ //
+ /**
+ * write a string S into output stream.
+ * @param s
+ * string to be written.
+ * @return a this writer
+ */
+ public final DDLWriter write(final String s) {
+ writeIndent();
+ _pw.print(processCharacterFormat (s));
+ return this;
+ }
+
+ /**
+ * write an integer number into output stream.
+ *
+ * @param number
+ * number to be written.
+ * @return a this writer
+ */
+ public final DDLWriter write(final int number) {
+ writeIndent();
+ _pw.print(number);
+ return this;
+ }
+
+ /**
+ * write a double number into output stream.
+ *
+ * @param number
+ * number to be written.
+ * @return a this writer
+ */
+ public final DDLWriter write(final double number) {
+ writeIndent();
+ _pw.print(number);
+ return this;
+ }
+
+// /**
+// * write a character into output stream.
+// *
+// * @param c
+// * character to be written.
+// * @return a this writer
+// */
+// public final DDLWriter write(final char c) {
+// writeIndent();
+// _pw.print(c);
+// return this;
+// }
+
+ /**
+ * write an array of character into output stream.
+ *
+ * @param c
+ * an array of character to be written.
+ * @return a this writer
+ */
+ public final DDLWriter write(final char[] c) {
+ writeIndent();
+ _pw.print(processCharacterFormat(new String (c)));
+ return this;
+ }
+
+ /**
+ * write a character into output stream.
+ *
+ * @param l
+ * a number number to be written.
+ * @return a this writer
+ */
+ public final DDLWriter write(final long l) {
+ writeIndent();
+ _pw.print(l);
+ return this;
+ }
+
+ /**
+ * write an object into output stream.
+ *
+ * @param o
+ * an object to be written.
+ * @return a this writer
+ */
+ public final DDLWriter write(final Object o) {
+ writeIndent();
+ _pw.print(processCharacterFormat (o));
+ return this;
+ }
+
+ /**
+ * A convenience method to write a formatted string to this writer using the
+ * specified format string and arguments. If automatic flushing is enabled,
+ * calls to this method will flush the output buffer.
+ *
+ * @param format
+ * A format string as described in Format string syntax.
+ *
+ * @param args
+ * Arguments referenced by the format specifiers in the format
+ * string.
+ * @return this writer
+ */
+ public final DDLWriter write(final String format, final Object []args) {
+ writeIndent();
+ String s = String.format(format, args);
+ _pw.print(processCharacterFormat (s));
+ return this;
+ }
+
+ /**
+ * write a string S into output stream.
+ *
+ * @param s
+ * string to be written.
+ * @return this writer
+ */
+ public final DDLWriter writeln(final String s) {
+ writeIndent();
+ _pw.print(processCharacterFormat (s));
+ newline();
+ return this;
+ }
+
+ /**
+ * write an integer number into output stream.
+ *
+ * @param number
+ * number to be written.
+ * @return this writer
+ */
+ public final DDLWriter writeln(final int number) {
+ writeIndent();
+ _pw.print(number);
+ newline();
+ return this;
+ }
+
+ /**
+ * write a double number into output stream.
+ *
+ * @param number
+ * number to be written.
+ * @return this writer
+ */
+ public final DDLWriter writeln(final double number) {
+ _pw.print(number);
+ newline();
+ return this;
+ }
+
+ /**
+ * write a character into output stream.
+ *
+ * @return this writer
+ */
+ public final DDLWriter writeln() {
+ writeIndent();
+ newline();
+ return this;
+ }
+
+// /**
+// * write a character into output stream.
+// *
+// * @param c
+// * a character to be written.
+// * @return this writer
+// */
+// public final DDLWriter writeln(final char c) {
+// writeIndent();
+// _pw.print(c);
+// newline();
+// return this;
+// }
+
+ /**
+ * write an array of character into output stream.
+ *
+ * @param c
+ * a character to be written.
+ * @return this writer
+ */
+ public final DDLWriter writeln(final char[] c) {
+ writeIndent();
+ _pw.print(processCharacterFormat(new String (c)));
+ newline();
+ return this;
+ }
+
+ /**
+ * write a character into output stream.
+ * @param l
+ * a number to be written.
+ * @return this writer
+ */
+ public final DDLWriter writeln(final long l) {
+ writeIndent();
+ _pw.print(l);
+ newline();
+ return this;
+ }
+
+ /**
+ * write an object into output stream.
+ * @param o
+ * an object to be written.
+ * @return this writer
+ */
+ public final DDLWriter writeln(final Object o) {
+ writeIndent();
+ _pw.print(processCharacterFormat (o));
+ newline();
+ return this;
+ }
+
+ /**
+ * A convenience method to write a formatted string to this writer using the
+ * specified format string and arguments. If automatic flushing is enabled,
+ * calls to this method will flush the output buffer.
+ * @param format
+ * A format string as described in Format string syntax.
+ * @param args
+ * Arguments referenced by the format specifiers in the format
+ * string.
+ * @return This writer
+ */
+ public final DDLWriter writeln(final String format,
+ final Object []args) {
+ writeIndent();
+ String s = String.format(format, args);
+ _pw.print(processCharacterFormat (s));
+ newline();
+ return this;
+ }
+
+ /**
+ * flush.
+ * @throws IOException
+ */
+ public final void flush() {
+ _pw.flush();
+ }
+
+ /**
+ *
+ * @return Returns the indent.
+ */
+ public final boolean isIndent() {
+ return _isIndent;
+ }
+
+ /**
+ * Set the indent by indent.
+ * @param indent toggle indent
+ */
+ public final void setIndent(final boolean indent) {
+ this._isIndent = indent;
+ }
+
+ /**
+ *
+ * @return Returns the indentText.
+ */
+ public final String getIndentText() {
+ return _indentText;
+ }
+
+ /**
+ * Set the indentText by IndentText.
+ * @param indentText indent text
+ */
+ public final void setIndentText(final String indentText) {
+ this._indentText = indentText;
+ }
+
+ /**
+ *
+ * @return Returns the newline.
+ */
+ public final String getNewline() {
+ return _newline;
+ }
+
+ /**
+ * Set the newline by _newline.
+ * @param newline newline
+ */
+ public final void setNewline(final String newline) {
+ _newline = newline;
+ }
+
+ /**
+ * process char format.
+ * @param s string to be processed.
+ * @return a formated string
+ */
+ private String processCharacterFormat(final String s) {
+ if (s == null) { return null; }
+ if (DDLGenConfiguration.CHAR_FORMAT_LOWER.equalsIgnoreCase(_charFormat)) {
+ return s.toLowerCase();
+ } else if (DDLGenConfiguration.CHAR_FORMAT_UPPER.equalsIgnoreCase(_charFormat)) {
+ return s.toUpperCase();
+ }
+ return s;
+ }
+
+ /**
+ * process char format.
+ * @param o string to be processed.
+ * @return a formated string
+ */
+ private String processCharacterFormat(final Object o) {
+ if (o == null) { return null; }
+ String s = o.toString();
+
+ if (DDLGenConfiguration.CHAR_FORMAT_LOWER.equalsIgnoreCase(_charFormat)) {
+ return s.toLowerCase();
+ } else if (DDLGenConfiguration.CHAR_FORMAT_UPPER.equalsIgnoreCase(_charFormat)) {
+ return s.toUpperCase();
+ }
+ return s;
+ }
+
+ //tester
+ /**
+ * main.
+ * @param argv argv
+ */
+ public static void main(final String[] argv) {
+ StringWriter sw = new StringWriter();
+ DDLWriter writer = new DDLWriter(new PrintWriter(sw));
+ writer.setIndentText(" ");
+ writer.setNewline("\n");
+
+ writer.writeln(10);
+ writer.indent();
+ writer.writeln(1).indent();
+ writer.writeln("2").writeln("3").indent();
+ writer.setIndent(false);
+ writer.writeln("xxx");
+ writer.setIndent(true);
+ writer.writeln("4").unindent();
+ writer.writeln("5").writeln("6").unindent();
+ writer.writeln("7");
+
+ writer.flush();
+ System.out.println(sw.getBuffer().toString());
+ }
+
+ /**
+ * write a field delimiter.
+ * @return thid ddl writer
+ */
+ public final DDLWriter writeFieldDelimiter () {
+ write(DDLGenConfiguration.DEFAULT_FIELD_DELIMITER);
+ return this;
+ }
+
+ /**
+ * write a statement delimiter.
+ * @return thid ddl writer
+ */
+ public final DDLWriter writeStatementDelimiter () {
+ write(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
+ return this;
+ }
+ /**
+ *close print writer.
+ */
+ public final void close () {
+ if (_pw != null) {
+ _pw.close();
+ }
+ }
+ }
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultPrimaryKey.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultPrimaryKey.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultPrimaryKey.java (working copy)
@@ -15,7 +15,7 @@
*/
package org.castor.ddlgen.schemaobject;
-import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
/**
* Default primary key.
@@ -31,19 +31,14 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- if (getFieldCount() == 0) { return ""; }
+ public void toCreateDDL(final DDLWriter writer) {
+ if (getFieldCount() == 0) { return; }
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("ALTER TABLE ").append(getTable().getName());
- sb.append(newline);
- sb.append("ADD PRIMARY KEY (").append(fieldNames()).append(')');
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ writer.write("ALTER TABLE ").writeln(getTable().getName());
+ writer.indent();
+ writer.write("ADD PRIMARY KEY (").write(fieldNames()).write(')');
+ writer.writeStatementDelimiter().writeln();
+ writer.unindent();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/ForeignKey.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/ForeignKey.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/ForeignKey.java (working copy)
@@ -21,6 +21,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
/**
@@ -215,8 +216,7 @@
/**
* {@inheritDoc}
*/
- public final String toDropDDL() {
- return "";
+ public final void toDropDDL(final DDLWriter writer) {
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultSchema.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultSchema.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultSchema.java (working copy)
@@ -15,6 +15,8 @@
*/
package org.castor.ddlgen.schemaobject;
+import org.castor.ddlgen.DDLWriter;
+
/**
* Default schema.
*
@@ -29,15 +31,13 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- return "";
+ public void toCreateDDL(final DDLWriter writer) {
}
/**
* {@inheritDoc}
*/
- public String toDropDDL() {
- return "";
+ public void toDropDDL(final DDLWriter writer) {
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultForeignKey.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultForeignKey.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultForeignKey.java (working copy)
@@ -15,7 +15,7 @@
*/
package org.castor.ddlgen.schemaobject;
-import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
/**
* Default foreign key.
@@ -31,22 +31,15 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("ALTER TABLE ").append(getTable().getName());
- sb.append(newline);
- sb.append("ADD CONSTRAINT ").append(getName());
- sb.append(newline);
- sb.append("FOREIGN KEY (").append(fieldNames()).append(')');
- sb.append(newline);
- sb.append("REFERENCES ").append(getReferenceTable().getName());
- sb.append(" (").append(referencedFieldNames()).append(')');
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ public void toCreateDDL(final DDLWriter writer) {
+ writer.write("ALTER TABLE ").writeln(getTable().getName());
+ writer.indent();
+ writer.write("ADD CONSTRAINT ").writeln(getName());
+ writer.write("FOREIGN KEY (").write(fieldNames()).writeln(')');
+ writer.write("REFERENCES ").write(getReferenceTable().getName());
+ writer.write(" (").write(referencedFieldNames()).write(')');
+ writer.writeStatementDelimiter().writeln();
+ writer.unindent();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultIndex.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultIndex.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultIndex.java (working copy)
@@ -15,7 +15,7 @@
*/
package org.castor.ddlgen.schemaobject;
-import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
/**
* Default index.
@@ -31,25 +31,19 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("CREATE UNIQUE INDEX ").append(getName());
- sb.append(newline);
- sb.append("ON ").append(getTable().getName());
- sb.append(" (").append(fieldNames()).append(')');
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ public void toCreateDDL(final DDLWriter writer) {
+ writer.write("CREATE UNIQUE INDEX ").writeln(getName());
+ writer.indent();
+ writer.write("ON ").write(getTable().getName());
+ writer.write(" (").write(fieldNames()).write(')');
+ writer.writeStatementDelimiter().writeln();
+ writer.unindent();
}
/**
* {@inheritDoc}
*/
- public String toDropDDL() {
- return "";
+ public void toDropDDL(final DDLWriter writer) {
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Field.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Field.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Field.java (working copy)
@@ -17,6 +17,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.typeinfo.TypeInfo;
@@ -183,8 +184,7 @@
/**
* {@inheritDoc}
*/
- public final String toDropDDL() {
- return "";
+ public final void toDropDDL(final DDLWriter writer) {
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Table.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Table.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Table.java (working copy)
@@ -22,7 +22,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
/**
@@ -218,23 +218,16 @@
/**
* Concatenate all fields names delimited by line separator.
- *
- * @return Field names delimited by field delimiter and whitespace.
+ * @param writer DDL Writer.
* @throws GeneratorException If generation of the script failed or is not supported.
*/
- protected final String fields() throws GeneratorException {
- String delimiter = DDLGenConfiguration.DEFAULT_FIELD_DELIMITER;
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
- String indent = getConfiguration().getStringValue(
- DDLGenConfiguration.INDENT_KEY, DDLGenConfiguration.DEFAULT_INDENT);
-
- StringBuffer sb = new StringBuffer();
+ protected final void fields(final DDLWriter writer) throws GeneratorException {
+ writer.indent();
for (int i = 0; i < getFieldCount(); i++) {
- if (i > 0) { sb.append(delimiter).append(newline); }
- sb.append(indent).append(getField(i).toCreateDDL());
+ if (i > 0) { writer.writeFieldDelimiter(); }
+ getField(i).toCreateDDL(writer);
}
- return sb.toString();
+ writer.unindent();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/SchemaObject.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/SchemaObject.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/SchemaObject.java (working copy)
@@ -16,6 +16,7 @@
package org.castor.ddlgen.schemaobject;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
/**
@@ -61,19 +62,17 @@
/**
* Build create script for the schema object.
- *
- * @return Create script for the schema object.
+ * @param writer DDL writer.
* @throws GeneratorException If generation of the script failed or is not supported.
*/
- String toCreateDDL() throws GeneratorException;
+ void toCreateDDL(DDLWriter writer) throws GeneratorException;
/**
* Build drop script for the schema object.
- *
- * @return Drop script for the schema object.
+ * @param writer DDL writer.
* @throws GeneratorException If generation of the script failed or is not supported.
*/
- String toDropDDL() throws GeneratorException;
+ void toDropDDL(DDLWriter writer) throws GeneratorException;
//--------------------------------------------------------------------------
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultField.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultField.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultField.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.schemaobject;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.keygenerator.IdentityKeyGenerator;
@@ -32,17 +33,15 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- StringBuffer sb = new StringBuffer();
- sb.append(getName()).append(" ").append(getType().toDDL(this));
- if (isIdentity() || isRequired()) { sb.append(" NOT NULL"); }
-
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.write(getName()).write(" ").write(getType().toDDL(this));
+ if (isIdentity() || isRequired()) { writer.write(" NOT NULL"); }
+ writer.writeln();
+
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
String msg = "IDENTITY key generator is not supported for this database";
throw new GeneratorException(msg);
}
-
- return sb.toString();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/PrimaryKey.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/PrimaryKey.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/PrimaryKey.java (working copy)
@@ -19,6 +19,7 @@
import java.util.List;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
/**
* Abstract base class for all primary keys.
@@ -108,8 +109,7 @@
/**
* {@inheritDoc}
*/
- public final String toDropDDL() {
- return "";
+ public final void toDropDDL(final DDLWriter writer) {
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultTable.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultTable.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultTable.java (working copy)
@@ -15,7 +15,7 @@
*/
package org.castor.ddlgen.schemaobject;
-import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
/**
@@ -32,33 +32,17 @@
/**
* {@inheritDoc}
*/
- public final String toCreateDDL() throws GeneratorException {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("CREATE TABLE ").append(getName()).append(" (");
- sb.append(newline);
- sb.append(fields());
- sb.append(newline);
- sb.append(')');
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ public final void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.write("CREATE TABLE ").write(getName()).writeln(" (");
+ fields(writer);
+ writer.write(')').writeStatementDelimiter().writeln();
}
/**
* {@inheritDoc}
*/
- public final String toDropDDL() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("DROP TABLE ").append(getName());
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ public final void toDropDDL(final DDLWriter writer) {
+ writer.write("DROP TABLE ").write(getName()).writeStatementDelimiter().writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/AbstractGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/AbstractGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/AbstractGenerator.java (working copy)
@@ -15,7 +15,6 @@
*/
package org.castor.ddlgen;
-import java.io.PrintStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
@@ -172,8 +171,8 @@
/** handle all resolving tables. */
private final Map _resolveTable = new HashMap();
- /** handle the writer for output. */
- private PrintStream _printer;
+// /** handle the writer for output. */
+// private DDLWriter _writer;
//--------------------------------------------------------------------------
@@ -290,30 +289,30 @@
return _schema;
}
- /**
- * Set print stream.
- *
- * @param printer Print stream.
- */
- public final void setPrinter(final PrintStream printer) {
- _printer = printer;
- }
+// /**
+// * Set print stream.
+// *
+// * @param printer Print stream.
+// */
+// public final void setWriter(final DDLWriter printer) {
+// _writer = printer;
+// }
- /**
- * Get print stream.
- *
- * @return Print stream.
- */
- public final PrintStream getPrinter() {
- return _printer;
- }
+// /**
+// * Get print stream.
+// *
+// * @return Print stream.
+// */
+// public final DDLWriter getWriter() {
+// return _writer;
+// }
//--------------------------------------------------------------------------
/**
* {@inheritDoc}
*/
- public final void generateDDL() throws GeneratorException {
+ public final void generateDDL(final DDLWriter writer) throws GeneratorException {
// Create schema.
createSchema();
@@ -322,9 +321,9 @@
DDLGenConfiguration.GROUP_DDL_KEY,
DDLGenConfiguration.GROUP_DDL_BY_TABLE);
if (DDLGenConfiguration.GROUP_DDL_BY_TABLE.equalsIgnoreCase(groupBy)) {
- generateDDLGroupByTable();
+ generateDDLGroupByTable(writer);
} else if (DDLGenConfiguration.GROUP_DDL_BY_DDLTYPE.equalsIgnoreCase(groupBy)) {
- generateDDLGroupByDDLType();
+ generateDDLGroupByDDLType(writer);
} else {
throw new GeneratorException("group ddl by do not support: " + groupBy);
}
@@ -333,10 +332,10 @@
/**
* Generating ddl grouped by ddl type of DDL (e.g DROP, CREATE TABLE, create
* Primary key, create foreign key).
- *
+ * @param writer ddl writer.
* @throws GeneratorException If failed to generate DDL.
*/
- private void generateDDLGroupByDDLType() throws GeneratorException {
+ private void generateDDLGroupByDDLType(final DDLWriter writer) throws GeneratorException {
boolean genSchema = _configuration.getBoolValue(
DDLGenConfiguration.GENERATE_DDL_FOR_SCHEMA_KEY, true);
boolean genDrop = _configuration.getBoolValue(
@@ -352,42 +351,39 @@
boolean genKeyGen = _configuration.getBoolValue(
DDLGenConfiguration.GENERATE_DDL_FOR_KEYGENERATOR_KEY, true);
- write(generateHeader());
+ generateHeader(writer);
//generate ddl for schema
- if (genSchema) { write(_schema.toCreateDDL()); }
+ if (genSchema) { _schema.toCreateDDL(writer); }
//generate drop statemetn
- if (genDrop) { write(generateDrop()); }
+ if (genDrop) { generateDrop(writer); }
//generate create statement
- if (genCreate) { write(generateCreate()); }
+ if (genCreate) { generateCreate(writer); }
//generate primary key creation statement
- if (genPrimaryKey) { write(generatePrimaryKey()); }
+ if (genPrimaryKey) { generatePrimaryKey(writer); }
//generate foreign key creation statement
- if (genForeignKey) { write(generateForeignKey()); }
+ if (genForeignKey) { generateForeignKey(writer); }
//generate index creation statement
- if (genIndex) { write(generateIndex()); }
+ if (genIndex) { generateIndex(writer); }
- if (genKeyGen) { write(generateKeyGenerator()); }
+ if (genKeyGen) { generateKeyGenerator(writer); }
}
/**
* Generate DDL for drop statement of table.
- *
- * @return DDL to drop table.
+ * @param writer ddl writer.
* @throws GeneratorException If failed to generate DDL.
*/
- public final String generateDrop() throws GeneratorException {
- StringBuffer buff = new StringBuffer();
+ public final void generateDrop(final DDLWriter writer) throws GeneratorException {
for (int i = 0; i < _schema.getTableCount(); i++) {
Table table = _schema.getTable(i);
- buff.append(table.toDropDDL());
+ table.toDropDDL(writer);
}
- return buff.toString();
}
/**
@@ -404,31 +400,27 @@
* );
*
*
- * @return DDL for create table.
+ * @param writer ddl writer.
* @throws GeneratorException If failed to generate DDL.
*/
- public final String generateCreate() throws GeneratorException {
- StringBuffer buff = new StringBuffer();
+ public final void generateCreate(final DDLWriter writer) throws GeneratorException {
for (int i = 0; i < _schema.getTableCount(); i++) {
Table table = _schema.getTable(i);
- buff.append(table.toCreateDDL());
+ table.toCreateDDL(writer);
}
- return buff.toString();
}
/**
* Generate DDL for primany keys.
*
- * @return DDL for primary keys.
+ * @param writer ddl writer.
* @throws GeneratorException If failed to generate DDL.
*/
- public final String generatePrimaryKey() throws GeneratorException {
- StringBuffer buff = new StringBuffer();
+ public final void generatePrimaryKey(final DDLWriter writer) throws GeneratorException {
for (int i = 0; i < _schema.getTableCount(); i++) {
Table table = _schema.getTable(i);
- buff.append(table.getPrimaryKey().toCreateDDL());
+ table.getPrimaryKey().toCreateDDL(writer);
}
- return buff.toString();
}
/**
@@ -441,57 +433,52 @@
* ON UPDATE CASCADE;
*
*
- * @return DDL for foreign keys.
+ * @param writer ddl writer.
* @throws GeneratorException If failed to generate DDL.
*/
- public final String generateForeignKey() throws GeneratorException {
- StringBuffer buff = new StringBuffer();
+ public final void generateForeignKey(final DDLWriter writer) throws GeneratorException {
for (int i = 0; i < _schema.getTableCount(); i++) {
Table table = _schema.getTable(i);
- buff.append(createForeignKeyDDL(table));
+ createForeignKeyDDL(table, writer);
}
- return buff.toString();
}
/**
* Generate DDL for indices.
*
- * @return DDL for indices.
+ * @param writer ddl writer.
* @throws GeneratorException If failed to generate DDL.
*/
- public final String generateIndex() throws GeneratorException {
- StringBuffer buff = new StringBuffer();
+ public final void generateIndex(final DDLWriter writer) throws GeneratorException {
for (int i = 0; i < _schema.getTableCount(); i++) {
Table table = _schema.getTable(i);
- buff.append(createIndex(table));
+ createIndex(table, writer);
}
- return buff.toString();
}
/**
* Generate DDL for key generators (sequence/trigger).
*
- * @return DDL for key generators.
+ * @param writer ddl writer.
* @throws GeneratorException If failed to generate DDL.
*/
- public final String generateKeyGenerator() throws GeneratorException {
- StringBuffer buff = new StringBuffer();
+ public final void generateKeyGenerator(final DDLWriter writer) throws GeneratorException {
for (int i = 0; i < _schema.getTableCount(); i++) {
Table table = _schema.getTable(i);
if (table.getKeyGenerator() != null) {
table.getKeyGenerator().setTable(table);
- buff.append(table.getKeyGenerator().toCreateDDL());
+ table.getKeyGenerator().toCreateDDL(writer);
}
}
- return buff.toString();
}
/**
* Generating ddl group by table.
*
+ * @param writer ddl writer.
* @throws GeneratorException If failed to generate DDL.
*/
- private void generateDDLGroupByTable() throws GeneratorException {
+ private void generateDDLGroupByTable(final DDLWriter writer) throws GeneratorException {
boolean genSchema = _configuration.getBoolValue(
DDLGenConfiguration.GENERATE_DDL_FOR_SCHEMA_KEY, true);
boolean genDrop = _configuration.getBoolValue(
@@ -507,26 +494,22 @@
boolean genKeyGen = _configuration.getBoolValue(
DDLGenConfiguration.GENERATE_DDL_FOR_KEYGENERATOR_KEY, true);
- write(generateHeader());
+ generateHeader(writer);
- if (genSchema) { write(_schema.toCreateDDL()); }
+ if (genSchema) { _schema.toCreateDDL(writer); }
for (int i = 0; i < _schema.getTableCount(); i++) {
Table table = _schema.getTable(i);
- StringBuffer buff = new StringBuffer();
-
- if (genDrop) { buff.append(table.toDropDDL()); }
- if (genCreate) { buff.append(table.toCreateDDL()); }
- if (genPrimaryKey) { buff.append(table.getPrimaryKey().toCreateDDL()); }
- if (genForeignKey) { buff.append(createForeignKeyDDL(table)); }
- if (genIndex) { buff.append(createIndex(table)); }
+ if (genDrop) { table.toDropDDL(writer); }
+ if (genCreate) { table.toCreateDDL(writer); }
+ if (genPrimaryKey) { table.getPrimaryKey().toCreateDDL(writer); }
+ if (genForeignKey) { createForeignKeyDDL(table, writer); }
+ if (genIndex) { createIndex(table, writer); }
if (genKeyGen && (table.getKeyGenerator() != null)) {
table.getKeyGenerator().setTable(table);
- buff.append(table.getKeyGenerator().toCreateDDL());
+ table.getKeyGenerator().toCreateDDL(writer);
}
-
- write(buff.toString());
}
}
@@ -534,33 +517,30 @@
* Generate DDL for foreign key.
*
* @param table Table to generate DDL of foreign key for.
- * @return DDL for foreign key.
+ * @param writer ddl writer.
* @throws GeneratorException If failed to generate DDL.
*/
- protected final String createForeignKeyDDL(final Table table)
+ protected final void createForeignKeyDDL(final Table table, final DDLWriter writer)
throws GeneratorException {
- StringBuffer buff = new StringBuffer();
for (int i = 0; i < table.getForeignKeyCount(); i++) {
ForeignKey fk = table.getForeignKey(i);
- buff.append(fk.toCreateDDL());
+ fk.toCreateDDL(writer);
}
- return buff.toString();
}
/**
* Generate DDL for indices of given table.
*
* @param table Table to generate DDL of indices for.
- * @return DDL for indices of given table.
+ * @param writer ddl writer.
* @throws GeneratorException If failed to generate DDL.
*/
- public final String createIndex(final Table table) throws GeneratorException {
- StringBuffer buff = new StringBuffer();
+ public final void createIndex(final Table table, final DDLWriter writer)
+ throws GeneratorException {
for (int i = 0; i < table.getIndexCount(); i++) {
Index index = table.getIndex(i);
- buff.append(index.toCreateDDL());
+ index.toCreateDDL(writer);
}
- return buff.toString();
}
//--------------------------------------------------------------------------
@@ -568,9 +548,9 @@
/**
* Generate header comment.
*
- * @return Header comment.
+ * @param writer ddl writer.
*/
- public abstract String generateHeader();
+ public abstract void generateHeader(final DDLWriter writer);
//--------------------------------------------------------------------------
@@ -1025,24 +1005,24 @@
//--------------------------------------------------------------------------
- /**
- * Write given string to print stream.
- *
- * @param s String to write to print stream.
- */
- protected final void write(final String s) {
- String f = _configuration.getStringValue(
- DDLGenConfiguration.CHAR_FORMAT_KEY,
- DDLGenConfiguration.CHAR_FORMAT_SENSITIVE);
-
- if (DDLGenConfiguration.CHAR_FORMAT_LOWER.equalsIgnoreCase(f)) {
- _printer.println(s.toLowerCase());
- } else if (DDLGenConfiguration.CHAR_FORMAT_UPPER.equalsIgnoreCase(f)) {
- _printer.println(s.toUpperCase());
- } else {
- _printer.println(s);
- }
- }
-
+// /**
+// * Write given string to print stream.
+// *
+// * @param s String to write to print stream.
+// */
+// protected final void write(final String s) {
+// String f = _configuration.getStringValue(
+// DDLGenConfiguration.CHAR_FORMAT_KEY,
+// DDLGenConfiguration.CHAR_FORMAT_SENSITIVE);
+//
+// if (DDLGenConfiguration.CHAR_FORMAT_LOWER.equalsIgnoreCase(f)) {
+// _writer.println(s.toLowerCase());
+// } else if (DDLGenConfiguration.CHAR_FORMAT_UPPER.equalsIgnoreCase(f)) {
+// _writer.println(s.toUpperCase());
+// } else {
+// _writer.println(s);
+// }
+// }
+//
//--------------------------------------------------------------------------
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/SequenceKeyGeneratorFactory.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/SequenceKeyGeneratorFactory.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/SequenceKeyGeneratorFactory.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.keygenerator;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.KeyGeneratorFactory;
import org.castor.ddlgen.schemaobject.Field;
@@ -64,17 +65,17 @@
* Generate create script for given SEQUENCE key generator.
*
* @param key SEQUENCE key generator to generate DDL for.
- * @return Create script of SEQUENCE key generator.
+ * @param writer DDL Writer.
*/
- public abstract String toCreateDDL(final KeyGenerator key);
+ public abstract void toCreateDDL(final KeyGenerator key, final DDLWriter writer);
/**
* Generate drop script for given SEQUENCE key generator.
*
* @param key SEQUENCE key generator to generate DDL for.
- * @return Drop script of SEQUENCE key generator.
+ * @param writer DDL Writer.
*/
- public abstract String toDropDDL(final KeyGenerator key);
+ public abstract void toDropDDL(final KeyGenerator key, final DDLWriter writer);
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/HighLowKeyGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/HighLowKeyGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/HighLowKeyGenerator.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.keygenerator;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.schemaobject.KeyGenerator;
import org.exolab.castor.mapping.xml.KeyGeneratorDef;
@@ -166,12 +167,12 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() { return ""; }
+ public void toCreateDDL(final DDLWriter writer) { }
/**
* {@inheritDoc}
*/
- public String toDropDDL() { return ""; }
+ public void toDropDDL(final DDLWriter writer) { }
//--------------------------------------------------------------------------
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/MaxKeyGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/MaxKeyGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/MaxKeyGenerator.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.keygenerator;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.schemaobject.KeyGenerator;
import org.exolab.castor.mapping.xml.KeyGeneratorDef;
@@ -55,12 +56,12 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() { return ""; }
+ public void toCreateDDL(final DDLWriter writer) { }
/**
* {@inheritDoc}
*/
- public String toDropDDL() { return ""; }
+ public void toDropDDL(final DDLWriter writer) { }
//--------------------------------------------------------------------------
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/UUIDKeyGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/UUIDKeyGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/UUIDKeyGenerator.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.keygenerator;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.schemaobject.KeyGenerator;
import org.exolab.castor.mapping.xml.KeyGeneratorDef;
@@ -55,12 +56,12 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() { return ""; }
+ public void toCreateDDL(final DDLWriter writer) { }
/**
* {@inheritDoc}
*/
- public String toDropDDL() { return ""; }
+ public void toDropDDL(final DDLWriter writer) { }
//--------------------------------------------------------------------------
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/SequenceKeyGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/SequenceKeyGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/SequenceKeyGenerator.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.keygenerator;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.schemaobject.KeyGenerator;
import org.exolab.castor.mapping.xml.KeyGeneratorDef;
@@ -153,8 +154,8 @@
*
* {@inheritDoc}
*/
- public String toCreateDDL() {
- return _factory.toCreateDDL(this);
+ public void toCreateDDL(final DDLWriter writer) {
+ _factory.toCreateDDL(this, writer);
}
/**
@@ -162,8 +163,8 @@
*
* {@inheritDoc}
*/
- public String toDropDDL() {
- return _factory.toDropDDL(this);
+ public void toDropDDL(final DDLWriter writer) {
+ _factory.toDropDDL(this, writer);
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/IdentityKeyGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/IdentityKeyGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/IdentityKeyGenerator.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.keygenerator;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.schemaobject.KeyGenerator;
import org.exolab.castor.mapping.xml.KeyGeneratorDef;
@@ -60,12 +61,12 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() { return ""; }
+ public void toCreateDDL(final DDLWriter writer) { }
/**
* {@inheritDoc}
*/
- public String toDropDDL() { return ""; }
+ public void toDropDDL(final DDLWriter writer) { }
//--------------------------------------------------------------------------
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/Main.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/Main.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/Main.java (working copy)
@@ -16,7 +16,6 @@
package org.castor.ddlgen;
import java.io.FileOutputStream;
-import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Properties;
@@ -99,8 +98,8 @@
new MappingUnmarshaller().loadMappingOnly(mapping);
generator.setMapping(mapping);
- generator.setPrinter(new PrintStream(new FileOutputStream(ddlName)));
- generator.generateDDL();
+ DDLWriter writer = new DDLWriter(new PrintWriter(new FileOutputStream(ddlName)));
+ generator.generateDDL(writer);
} catch (Exception ex) {
LOG.error("Error: " + ex.getMessage(), ex);
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlField.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlField.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlField.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.engine.mssql;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.keygenerator.IdentityKeyGenerator;
import org.castor.ddlgen.schemaobject.Field;
@@ -33,17 +34,15 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- StringBuffer sb = new StringBuffer();
- sb.append(getName()).append(" ").append(getType().toDDL(this));
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.write(getName()).write(" ").write(getType().toDDL(this));
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" IDENTITY(1,1)");
+ writer.write(" IDENTITY(1,1)");
}
- if (isIdentity() || isRequired()) { sb.append(" NOT NULL"); }
-
- return sb.toString();
+ if (isIdentity() || isRequired()) { writer.write(" NOT NULL"); }
+ writer.writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlGenerator.java (working copy)
@@ -17,6 +17,7 @@
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,23 +83,13 @@
/**
* {@inheritDoc}
*/
- public String generateHeader() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer buff = new StringBuffer("/* ");
- buff.append(newline);
- buff.append(new java.util.Date());
- buff.append(newline);
-
- buff.append("Castor DDL Generator from mapping for Microsoft SQL Server");
- buff.append(newline);
- buff.append(getConfiguration().getStringValue(
+ public void generateHeader(final DDLWriter writer) {
+ writer.writeln("/*");
+ writer.writeln(new java.util.Date());
+ writer.writeln("Castor DDL Generator from mapping for Microsoft SQL Server");
+ writer.writeln(getConfiguration().getStringValue(
DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
-
- return buff.toString();
+ writer.writeln("*/");
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlPrimaryKey.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlPrimaryKey.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlPrimaryKey.java (working copy)
@@ -15,7 +15,7 @@
*/
package org.castor.ddlgen.engine.mssql;
-import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.schemaobject.PrimaryKey;
/**
@@ -32,21 +32,14 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- if (getFieldCount() <= 0) { return ""; }
+ public void toCreateDDL(final DDLWriter writer) {
+ if (getFieldCount() <= 0) { return; }
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("ALTER TABLE ").append(getTable().getName());
- sb.append(newline);
- sb.append("ADD CONSTRAINT ").append(getName());
- sb.append(newline);
- sb.append("PRIMARY KEY (").append(fieldNames()).append(')');
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ writer.write("ALTER TABLE ").write(getTable().getName());
+ writer.indent();
+ writer.write("ADD CONSTRAINT ").writeln(getName());
+ writer.write("PRIMARY KEY (").write(fieldNames()).write(')');
+ writer.writeStatementDelimiter().writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlSequenceKeyGeneratorFactory.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlSequenceKeyGeneratorFactory.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlSequenceKeyGeneratorFactory.java (working copy)
@@ -18,6 +18,7 @@
import java.text.MessageFormat;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.keygenerator.SequenceKeyGenerator;
import org.castor.ddlgen.keygenerator.SequenceKeyGeneratorFactory;
import org.castor.ddlgen.schemaobject.KeyGenerator;
@@ -34,28 +35,20 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL(final KeyGenerator key) {
+ public void toCreateDDL(final KeyGenerator key, final DDLWriter writer) {
SequenceKeyGenerator sequenceKey = (SequenceKeyGenerator) key;
- DDLGenConfiguration conf = sequenceKey.getConfiguration();
- StringBuffer buff = new StringBuffer();
String tableName = sequenceKey.getTable().getName();
String pkList = toPrimaryKeyList(key.getTable());
String pkTypeList = toPrimaryKeyTypeList(key.getTable());
String sequenceName = MessageFormat.format(sequenceKey.getSequence(),
new Object[]{tableName, pkList});
- String newline = conf.getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
- String indent = conf.getStringValue(
- DDLGenConfiguration.INDENT_KEY, DDLGenConfiguration.DEFAULT_INDENT);
+ writer.write("CREATE SEQUENCE ").writeln(sequenceName);
+ writer.indent();
+ writer.write(" INCREMENT 1 ").write("MAXVALUE ").
+ write(Integer.MAX_VALUE).write(" START 1");
+ writer.writeStatementDelimiter().writeln();
- buff.append(newline).append(newline);
- buff.append("CREATE SEQUENCE ").append(sequenceName);
- buff.append(newline).append(indent);
- buff.append(" INCREMENT 1 ").append("MAXVALUE ").
- append(Integer.MAX_VALUE).append(" START 1");
- buff.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
-
if (sequenceKey.isTrigger()) {
String triggerName = null;
if (sequenceName.matches(".*SEQ.*")) {
@@ -64,7 +57,7 @@
triggerName = "TRG" + sequenceName;
}
- String triggerTemp = conf.getStringValue(
+ String triggerTemp = key.getConfiguration().getStringValue(
DDLGenConfiguration.TRIGGER_TEMPLATE_KEY, "");
triggerTemp = triggerTemp.replaceAll("", triggerName);
@@ -72,18 +65,14 @@
triggerTemp = triggerTemp.replaceAll("", tableName);
triggerTemp = triggerTemp.replaceAll("", pkList);
triggerTemp = triggerTemp.replaceAll("", pkTypeList);
- buff.append(newline);
- buff.append(newline);
- buff.append(triggerTemp);
+ writer.writeln(triggerTemp);
}
-
- return buff.toString();
+ writer.unindent();
}
/**
* {@inheritDoc}
*/
- public String toDropDDL(final KeyGenerator key) {
- return "";
+ public void toDropDDL(final KeyGenerator key, final DDLWriter writer) {
}
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlField.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlField.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlField.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.engine.postgresql;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.keygenerator.IdentityKeyGenerator;
import org.castor.ddlgen.schemaobject.Field;
@@ -33,23 +34,21 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- StringBuffer sb = new StringBuffer();
- sb.append(getName()).append(" ");
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.write(getName()).write(" ");
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
if ("integer".equalsIgnoreCase(getType().getSqlType())) {
- sb.append("SERIAL");
+ writer.write("SERIAL");
} else {
- sb.append("BIGSERIAL");
+ writer.write("BIGSERIAL");
}
} else {
- sb.append(getType().toDDL(this));
+ writer.write(getType().toDDL(this));
}
- if (isIdentity() || isRequired()) { sb.append(" NOT NULL"); }
-
- return sb.toString();
+ if (isIdentity() || isRequired()) { writer.write(" NOT NULL"); }
+ writer.writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlGenerator.java (working copy)
@@ -17,6 +17,7 @@
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,15 +83,11 @@
/**
* {@inheritDoc}
*/
- public String generateHeader() {
- StringBuffer buff = new StringBuffer("-- ");
- buff.append(new java.util.Date());
- buff.append("\n");
-
- buff.append("-- Castor DDL Generator from mapping for PostgreSQL");
- buff.append(getConfiguration().getStringValue(
+ public void generateHeader(final DDLWriter writer) {
+ writer.write("-- ").writeln(new java.util.Date());
+ writer.writeln("-- Castor DDL Generator from mapping for PostgreSQL");
+ writer.write("-- ").writeln(getConfiguration().getStringValue(
DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- return buff.toString();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBasePrimaryKey.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBasePrimaryKey.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBasePrimaryKey.java (working copy)
@@ -15,7 +15,7 @@
*/
package org.castor.ddlgen.engine.pointbase;
-import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.schemaobject.PrimaryKey;
/**
@@ -32,21 +32,14 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- if (getFieldCount() <= 0) { return ""; }
+ public void toCreateDDL(final DDLWriter writer) {
+ if (getFieldCount() <= 0) { return; }
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("ALTER TABLE ").append(getTable().getName());
- sb.append(newline);
- sb.append("ADD CONSTRAINT ").append(getName());
- sb.append(newline);
- sb.append("PRIMARY KEY (").append(fieldNames()).append(')');
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ writer.write("ALTER TABLE ").writeln(getTable().getName());
+ writer.indent();
+ writer.write("ADD CONSTRAINT ").writeln(getName());
+ writer.write("PRIMARY KEY (").write(fieldNames()).write(')');
+ writer.writeStatementDelimiter().writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBaseField.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBaseField.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBaseField.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.engine.pointbase;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.keygenerator.IdentityKeyGenerator;
import org.castor.ddlgen.schemaobject.Field;
@@ -33,16 +34,15 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- StringBuffer sb = new StringBuffer();
- sb.append(getName()).append(" ").append(getType().toDDL(this));
- if (isIdentity() || isRequired()) { sb.append(" NOT NULL"); }
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.write(getName()).write(" ").write(getType().toDDL(this));
+ if (isIdentity() || isRequired()) { writer.write(" NOT NULL"); }
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" IDENTITY(1,1)");
+ writer.write(" IDENTITY(1,1)");
}
- return sb.toString();
+ writer.writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBaseGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBaseGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBaseGenerator.java (working copy)
@@ -17,6 +17,7 @@
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +83,13 @@
/**
* {@inheritDoc}
*/
- public String generateHeader() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer buff = new StringBuffer("/* ");
- buff.append(newline);
- buff.append(new java.util.Date());
- buff.append(newline);
-
- buff.append("Castor DDL Generator from mapping for PointBase");
- buff.append(newline);
- buff.append(getConfiguration().getStringValue(
+ public void generateHeader(final DDLWriter writer) {
+ writer.writeln("/*");
+ writer.writeln(new java.util.Date());
+ writer.writeln("Castor DDL Generator from mapping for PointBase");
+ writer.writeln(getConfiguration().getStringValue(
DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ writer.writeln("*/");
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/derby/DerbyField.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/derby/DerbyField.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/derby/DerbyField.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.engine.derby;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.keygenerator.IdentityKeyGenerator;
import org.castor.ddlgen.schemaobject.Field;
@@ -33,17 +34,16 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- StringBuffer sb = new StringBuffer();
- sb.append(getName()).append(" ").append(getType().toDDL(this));
- if (isIdentity() || isRequired()) { sb.append(" NOT NULL"); }
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.write(getName()).write(" ").write(getType().toDDL(this));
+ if (isIdentity() || isRequired()) { writer.write(" NOT NULL"); }
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" GENERATED BY DEFAULT AS IDENTITY ");
- sb.append("(START WITH 1, INCREMENT BY 1)");
+ writer.write(" GENERATED BY DEFAULT AS IDENTITY ");
+ writer.write("(START WITH 1, INCREMENT BY 1)");
}
- return sb.toString();
+ writer.writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/derby/DerbyGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/derby/DerbyGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/derby/DerbyGenerator.java (working copy)
@@ -17,6 +17,7 @@
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,16 +83,15 @@
/**
* {@inheritDoc}
*/
- public String generateHeader() {
- StringBuffer buff = new StringBuffer("/*");
- buff.append(new java.util.Date());
- buff.append("\n");
+ public void generateHeader(final DDLWriter writer) {
+ writer.writeln("/*");
+ writer.writeln(new java.util.Date());
+ writer.writeln("\n");
- buff.append("Castor DDL Generator from mapping for Derby");
- buff.append(getConfiguration().getStringValue(
+ writer.writeln("Castor DDL Generator from mapping for Derby");
+ writer.writeln(getConfiguration().getStringValue(
DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append("*/");
- return buff.toString();
+ writer.writeln("*/");
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlSchema.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlSchema.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlSchema.java (working copy)
@@ -16,6 +16,7 @@
package org.castor.ddlgen.engine.mysql;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.schemaobject.Schema;
/**
@@ -32,26 +33,25 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
+ public void toCreateDDL(final DDLWriter writer) {
if (!getConfiguration().getBoolValue(
DDLGenConfiguration.GENERATE_DDL_FOR_SCHEMA_KEY, true)) {
- return "";
+ return;
}
String schema = getConfiguration().getStringValue(
DDLGenConfiguration.SCHEMA_NAME_KEY, "");
if (schema == null || "".equals(schema)) {
- return "";
+ return;
}
- return "USE " + schema + ";";
+ writer.write("USE ").write(schema).writeln(";");
}
/**
* {@inheritDoc}
*/
- public String toDropDDL() {
- return "";
+ public void toDropDDL(final DDLWriter writer) {
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlForeignKey.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlForeignKey.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlForeignKey.java (working copy)
@@ -16,6 +16,7 @@
package org.castor.ddlgen.engine.mysql;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.schemaobject.ForeignKey;
/**
@@ -32,39 +33,30 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
+ public void toCreateDDL(final DDLWriter writer) {
+ writer.write("ALTER TABLE ").writeln(getTable().getName());
+ writer.indent();
+ writer.write("ADD CONSTRAINT ").writeln(getName());
+ writer.write("FOREIGN KEY ").write(getName());
+ writer.write(" (").writeln(fieldNames()).writeln(')');
+ writer.write("REFERENCES ").write(getReferenceTable().getName());
+ writer.write(" (").write(referencedFieldNames()).writeln(')');
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("ALTER TABLE ").append(getTable().getName());
- sb.append(newline);
- sb.append("ADD CONSTRAINT ").append(getName());
- sb.append(newline);
- sb.append("FOREIGN KEY ").append(getName());
- sb.append(" (").append(fieldNames()).append(')');
- sb.append(newline);
- sb.append("REFERENCES ").append(getReferenceTable().getName());
- sb.append(" (").append(referencedFieldNames()).append(')');
-
// on delete
String opt = getConfiguration().getStringValue(
DDLGenConfiguration.FOREIGN_KEY_ON_DELETE_KEY, null);
if (opt != null && !"".equals(opt)) {
- sb.append(newline);
- sb.append("ON DELETE ").append(opt);
+ writer.write("ON DELETE ").writeln(opt);
}
opt = getConfiguration().getStringValue(
DDLGenConfiguration.FOREIGN_KEY_ON_UPDATE_KEY, null);
if (opt != null && !"".equals(opt)) {
- sb.append(newline);
- sb.append("ON UPDATE ").append(opt);
+ writer.write("ON UPDATE ").writeln(opt);
}
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ writer.writeStatementDelimiter().writeln();
+ writer.unindent();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlField.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlField.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlField.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.engine.mysql;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.keygenerator.IdentityKeyGenerator;
import org.castor.ddlgen.schemaobject.Field;
@@ -33,17 +34,16 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- StringBuffer sb = new StringBuffer();
- sb.append(getName()).append(" ").append(getType().toDDL(this));
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.write(getName()).write(" ").write(getType().toDDL(this));
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" AUTO_INCREMENT");
+ writer.write(" AUTO_INCREMENT");
}
- if (isIdentity() || isRequired()) { sb.append(" NOT NULL"); }
+ if (isIdentity() || isRequired()) { writer.write(" NOT NULL"); }
- return sb.toString();
+ writer.writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlGenerator.java (working copy)
@@ -17,6 +17,7 @@
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,19 +83,12 @@
/**
* {@inheritDoc}
*/
- public String generateHeader() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer buff = new StringBuffer("# ");
- buff.append(new java.util.Date());
- buff.append("\n");
-
- buff.append("# Castor DDL Generator from _mapping");
- buff.append(newline).append(newline);
- buff.append(getConfiguration().getStringValue(
+ public void generateHeader(final DDLWriter writer) {
+ writer.writeln("#");
+ writer.writeln(new java.util.Date());
+ writer.writeln("# Castor DDL Generator from _mapping");
+ writer.writeln(getConfiguration().getStringValue(
DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- return buff.toString();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlTable.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlTable.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlTable.java (working copy)
@@ -16,6 +16,7 @@
package org.castor.ddlgen.engine.mysql;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.schemaobject.Table;
@@ -33,38 +34,25 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
String engine = getConfiguration().getStringValue(
DDLGenConfiguration.STORAGE_ENGINE_KEY, null);
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("CREATE TABLE ").append(getName()).append(" (");
- sb.append(newline);
- sb.append(fields());
- sb.append(newline);
- sb.append(')');
+ writer.write("CREATE TABLE ").write(getName()).writeln(" (");
+ fields(writer);
+ writer.write(')');
if ((engine != null) && !"".equals(engine)) {
- sb.append(" ENGINE=").append(engine);
+ writer.write(" ENGINE=").write(engine);
}
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ writer.writeln(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
}
/**
* {@inheritDoc}
*/
- public String toDropDDL() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("DROP TABLE IF EXISTS ").append(getName());
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ public void toDropDDL(final DDLWriter writer) {
+ writer.write("DROP TABLE IF EXISTS ").write(getName());
+ writer.writeStatementDelimiter().writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/oracle/OracleSequenceKeyGeneratorFactory.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/oracle/OracleSequenceKeyGeneratorFactory.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/oracle/OracleSequenceKeyGeneratorFactory.java (working copy)
@@ -18,6 +18,7 @@
import java.text.MessageFormat;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.keygenerator.SequenceKeyGenerator;
import org.castor.ddlgen.keygenerator.SequenceKeyGeneratorFactory;
import org.castor.ddlgen.schemaobject.KeyGenerator;
@@ -34,9 +35,9 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL(final KeyGenerator key) {
+ public void toCreateDDL(final KeyGenerator key, final DDLWriter writer) {
SequenceKeyGenerator sequenceKey = (SequenceKeyGenerator) key;
- StringBuffer buff = new StringBuffer();
+
DDLGenConfiguration conf = sequenceKey.getConfiguration();
String tableName = sequenceKey.getTable().getName();
@@ -45,19 +46,12 @@
String sequenceName = MessageFormat.format(sequenceKey.getSequence(),
new Object[]{tableName, pkList});
- String newline = conf.getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
- String indent = conf.getStringValue(
- DDLGenConfiguration.INDENT_KEY, DDLGenConfiguration.DEFAULT_INDENT);
+ writer.write("CREATE SEQUENCE ").writeln(sequenceName);
+ writer.indent();
+ writer.write("MAXVALUE ").writeln(Integer.MAX_VALUE);
+ writer.write("INCREMENT BY 1 START WITH 1");
+ writer.writeStatementDelimiter().writeln();
- buff.append(newline).append(newline);
- buff.append("CREATE SEQUENCE ").append(sequenceName);
- buff.append(newline).append(indent);
- buff.append("MAXVALUE ").append(Integer.MAX_VALUE);
- buff.append(newline).append(indent);
- buff.append("INCREMENT BY 1 START WITH 1");
- buff.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
-
if (sequenceKey.isTrigger()) {
String triggerName = null;
if (sequenceName.matches(".*SEQ.*")) {
@@ -73,18 +67,14 @@
triggerTemp = triggerTemp.replaceAll("", tableName);
triggerTemp = triggerTemp.replaceAll("", pkList);
triggerTemp = triggerTemp.replaceAll("", pkTypeList);
- buff.append(newline);
- buff.append(newline);
- buff.append(triggerTemp);
+ writer.write(triggerTemp);
}
-
- return buff.toString();
+ writer.unindent();
}
/**
* {@inheritDoc}
*/
- public String toDropDDL(final KeyGenerator key) {
- return "";
+ public void toDropDDL(final KeyGenerator key, final DDLWriter writer) {
}
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/oracle/OracleGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/oracle/OracleGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/oracle/OracleGenerator.java (working copy)
@@ -17,6 +17,7 @@
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +83,13 @@
/**
* {@inheritDoc}
*/
- public String generateHeader() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer buff = new StringBuffer("/* ");
- buff.append(newline);
- buff.append(new java.util.Date());
- buff.append(newline);
-
- buff.append("Castor DDL Generator from mapping for Oracle");
- buff.append(newline);
- buff.append(getConfiguration().getStringValue(
+ public void generateHeader(final DDLWriter writer) {
+ writer.writeln("/*");
+ writer.writeln(new java.util.Date());
+ writer.writeln("Castor DDL Generator from mapping for Oracle");
+ writer.writeln(getConfiguration().getStringValue(
DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ writer.writeln("*/");
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sybase/SybaseField.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sybase/SybaseField.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sybase/SybaseField.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.engine.sybase;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.keygenerator.IdentityKeyGenerator;
import org.castor.ddlgen.schemaobject.Field;
@@ -33,16 +34,14 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- StringBuffer sb = new StringBuffer();
- sb.append(getName()).append(" ").append(getType().toDDL(this));
- if (isIdentity() || isRequired()) { sb.append(" NOT NULL"); }
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.write(getName()).write(" ").write(getType().toDDL(this));
+ if (isIdentity() || isRequired()) { writer.write(" NOT NULL"); }
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" IDENTITY");
+ writer.write(" IDENTITY");
}
-
- return sb.toString();
+ writer.writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sybase/SybaseGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sybase/SybaseGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sybase/SybaseGenerator.java (working copy)
@@ -17,6 +17,7 @@
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +83,13 @@
/**
* {@inheritDoc}
*/
- public String generateHeader() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer buff = new StringBuffer("/* ");
- buff.append(newline);
- buff.append(new java.util.Date());
- buff.append(newline);
-
- buff.append("Castor DDL Generator from mapping for Sybase");
- buff.append(newline);
- buff.append(getConfiguration().getStringValue(
+ public void generateHeader(final DDLWriter writer) {
+ writer.writeln("/*");
+ writer.writeln(new java.util.Date());
+ writer.writeln("Castor DDL Generator from mapping for Sybase");
+ writer.writeln(getConfiguration().getStringValue(
DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ writer.writeln("*/");
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2PrimaryKey.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2PrimaryKey.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2PrimaryKey.java (working copy)
@@ -15,7 +15,7 @@
*/
package org.castor.ddlgen.engine.db2;
-import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.schemaobject.PrimaryKey;
/**
@@ -32,21 +32,15 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- if (getFieldCount() <= 0) { return ""; }
+ public void toCreateDDL(final DDLWriter writer) {
+ if (getFieldCount() <= 0) { return; }
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("ALTER TABLE ").append(getTable().getName());
- sb.append(newline);
- sb.append("ADD CONSTRAINT ").append(getName());
- sb.append(newline);
- sb.append("PRIMARY KEY (").append(fieldNames()).append(')');
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ writer.write("ALTER TABLE ").writeln(getTable().getName());
+ writer.indent();
+ writer.write("ADD CONSTRAINT ").writeln(getName());
+ writer.write("PRIMARY KEY (").write(fieldNames()).write(')');
+ writer.writeStatementDelimiter().writeln();
+ writer.unindent();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2SequenceKeyGeneratorFactory.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2SequenceKeyGeneratorFactory.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2SequenceKeyGeneratorFactory.java (working copy)
@@ -18,6 +18,7 @@
import java.text.MessageFormat;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.keygenerator.SequenceKeyGenerator;
import org.castor.ddlgen.keygenerator.SequenceKeyGeneratorFactory;
import org.castor.ddlgen.schemaobject.KeyGenerator;
@@ -34,28 +35,20 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL(final KeyGenerator key) {
+ public void toCreateDDL(final KeyGenerator key, final DDLWriter writer) {
SequenceKeyGenerator sequenceKey = (SequenceKeyGenerator) key;
DDLGenConfiguration conf = sequenceKey.getConfiguration();
- StringBuffer buff = new StringBuffer();
String tableName = sequenceKey.getTable().getName();
String pkList = toPrimaryKeyList(key.getTable());
String sequenceName = MessageFormat.format(sequenceKey.getSequence(),
new Object[]{tableName, pkList});
- String newline = conf.getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
- String indent = conf.getStringValue(
- DDLGenConfiguration.INDENT_KEY, DDLGenConfiguration.DEFAULT_INDENT);
+ writer.write("CREATE SEQUENCE AS INTEGER ").writeln(sequenceName);
+ writer.indent();
+ writer.writeln("START WITH 1 INCREMENT BY 1");
+ writer.write("MAXVALUE ").write(Integer.MAX_VALUE);
+ writer.writeStatementDelimiter().writeln();
- buff.append(newline).append(newline);
- buff.append("CREATE SEQUENCE AS INTEGER ").append(sequenceName);
- buff.append(newline).append(indent);
- buff.append("START WITH 1 INCREMENT BY 1");
- buff.append(newline).append(indent);
- buff.append("MAXVALUE ").append(Integer.MAX_VALUE);
- buff.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
-
if (sequenceKey.isTrigger()) {
// refer to http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.
// jsp?topic=/com.ibm.db2.udb.doc/admin/r0000931.htm
@@ -75,18 +68,13 @@
triggerTemp = triggerTemp.replaceAll("", tableName);
triggerTemp = triggerTemp.replaceAll("", pkList);
triggerTemp = triggerTemp.replaceAll("", pkTypeList);
- buff.append(newline);
- buff.append(newline);
- buff.append(triggerTemp);
+ writer.writeln(triggerTemp);
}
-
- return buff.toString();
}
/**
* {@inheritDoc}
*/
- public String toDropDDL(final KeyGenerator key) {
- return "";
+ public void toDropDDL(final KeyGenerator key, final DDLWriter writer) {
}
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2Field.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2Field.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2Field.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.engine.db2;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.keygenerator.IdentityKeyGenerator;
import org.castor.ddlgen.schemaobject.Field;
@@ -33,17 +34,16 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- StringBuffer sb = new StringBuffer();
- sb.append(getName()).append(" ").append(getType().toDDL(this));
- if (isIdentity() || isRequired()) { sb.append(" NOT NULL"); }
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.write(getName()).write(" ").write(getType().toDDL(this));
+ if (isIdentity() || isRequired()) { writer.write(" NOT NULL"); }
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" GENERATED BY DEFAULT AS IDENTITY ");
- sb.append("START WITH 1 INCREMENT BY 1");
+ writer.write(" GENERATED BY DEFAULT AS IDENTITY ");
+ writer.write("START WITH 1 INCREMENT BY 1");
}
- return sb.toString();
+ writer.writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2Generator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2Generator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2Generator.java (working copy)
@@ -17,6 +17,7 @@
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +83,13 @@
/**
* {@inheritDoc}
*/
- public String generateHeader() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer buff = new StringBuffer("/* ");
- buff.append(newline);
- buff.append(new java.util.Date());
- buff.append(newline);
-
- buff.append("Castor DDL Generator from mapping for DB2");
- buff.append(newline);
- buff.append(getConfiguration().getStringValue(
+ public void generateHeader(final DDLWriter writer) {
+ writer.writeln("/*");
+ writer.writeln(new java.util.Date());
+ writer.writeln("Castor DDL Generator from mapping for DB2");
+ writer.writeln(getConfiguration().getStringValue(
DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ writer.writeln("*/");
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlTable.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlTable.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlTable.java (working copy)
@@ -15,7 +15,7 @@
*/
package org.castor.ddlgen.engine.hsql;
-import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.schemaobject.Table;
@@ -33,33 +33,19 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("CREATE TABLE ").append(getName()).append(" (");
- sb.append(newline);
- sb.append(fields());
- sb.append(newline);
- sb.append(')');
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.write("CREATE TABLE ").write(getName()).writeln(" (");
+ fields(writer);
+ writer.write(')');
+ writer.writeStatementDelimiter().writeln();
}
/**
* {@inheritDoc}
*/
- public String toDropDDL() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("DROP TABLE IF EXISTS ").append(getName());
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ public void toDropDDL(final DDLWriter writer) {
+ writer.write("DROP TABLE IF EXISTS ").write(getName());
+ writer.writeStatementDelimiter().writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlPrimaryKey.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlPrimaryKey.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlPrimaryKey.java (working copy)
@@ -15,7 +15,7 @@
*/
package org.castor.ddlgen.engine.hsql;
-import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.schemaobject.PrimaryKey;
/**
@@ -32,21 +32,14 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- if (getFieldCount() <= 0) { return ""; }
+ public void toCreateDDL(final DDLWriter writer) {
+ if (getFieldCount() <= 0) { return; }
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("ALTER TABLE ").append(getTable().getName());
- sb.append(newline);
- sb.append("ADD CONSTRAINT ").append(getName());
- sb.append(newline);
- sb.append("PRIMARY KEY (").append(fieldNames()).append(')');
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ writer.write("ALTER TABLE ").write(getTable().getName());
+ writer.indent();
+ writer.write("ADD CONSTRAINT ").writeln(getName());
+ writer.write("PRIMARY KEY (").write(fieldNames()).write(')');
+ writer.writeStatementDelimiter().writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlSequenceKeyGeneratorFactory.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlSequenceKeyGeneratorFactory.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlSequenceKeyGeneratorFactory.java (working copy)
@@ -18,6 +18,7 @@
import java.text.MessageFormat;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.keygenerator.SequenceKeyGenerator;
import org.castor.ddlgen.keygenerator.SequenceKeyGeneratorFactory;
import org.castor.ddlgen.schemaobject.KeyGenerator;
@@ -34,26 +35,19 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL(final KeyGenerator key) {
+ public void toCreateDDL(final KeyGenerator key, final DDLWriter writer) {
SequenceKeyGenerator sequenceKey = (SequenceKeyGenerator) key;
DDLGenConfiguration conf = sequenceKey.getConfiguration();
- StringBuffer buff = new StringBuffer();
String tableName = sequenceKey.getTable().getName();
String pkList = toPrimaryKeyList(key.getTable());
String sequenceName = MessageFormat.format(sequenceKey.getSequence(),
new Object[]{tableName, pkList});
- String newline = conf.getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
- String indent = conf.getStringValue(
- DDLGenConfiguration.INDENT_KEY, DDLGenConfiguration.DEFAULT_INDENT);
+ writer.write("CREATE SEQUENCE ").write(sequenceName).writeln(" AS INTEGER");
+ writer.indent();
+ writer.write("START WITH 1 INCREMENT BY 1");
+ writer.writeStatementDelimiter().writeln();
- buff.append(newline).append(newline);
- buff.append("CREATE SEQUENCE ").append(sequenceName).append(" AS INTEGER");
- buff.append(newline).append(indent);
- buff.append("START WITH 1 INCREMENT BY 1");
- buff.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
-
if (sequenceKey.isTrigger()) {
String pkTypeList = toPrimaryKeyTypeList(key.getTable());
String triggerName = null;
@@ -71,18 +65,13 @@
triggerTemp = triggerTemp.replaceAll("", tableName);
triggerTemp = triggerTemp.replaceAll("", pkList);
triggerTemp = triggerTemp.replaceAll("", pkTypeList);
- buff.append(newline);
- buff.append(newline);
- buff.append(triggerTemp);
+ writer.writeln(triggerTemp);
}
-
- return buff.toString();
}
/**
* {@inheritDoc}
*/
- public String toDropDDL(final KeyGenerator key) {
- return "";
+ public void toDropDDL(final KeyGenerator key, final DDLWriter writer) {
}
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlField.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlField.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlField.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.engine.hsql;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.keygenerator.IdentityKeyGenerator;
import org.castor.ddlgen.schemaobject.Field;
@@ -33,16 +34,15 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- StringBuffer sb = new StringBuffer();
- sb.append(getName()).append(" ").append(getType().toDDL(this));
- if (isIdentity() || isRequired()) { sb.append(" NOT NULL"); }
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.write(getName()).write(" ").write(getType().toDDL(this));
+ if (isIdentity() || isRequired()) { writer.write(" NOT NULL"); }
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" IDENTITY");
+ writer.write(" IDENTITY");
}
- return sb.toString();
+ writer.writeln();
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlGenerator.java (working copy)
@@ -17,6 +17,7 @@
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +83,13 @@
/**
* {@inheritDoc}
*/
- public String generateHeader() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer buff = new StringBuffer("/* ");
- buff.append(newline);
- buff.append(new java.util.Date());
- buff.append(newline);
-
- buff.append("Castor DDL Generator from mapping for HSQL");
- buff.append(newline);
- buff.append(getConfiguration().getStringValue(
+ public void generateHeader(final DDLWriter writer) {
+ writer.writeln("/*");
+ writer.writeln(new java.util.Date());
+ writer.writeln("Castor DDL Generator from mapping for HSQL");
+ writer.writeln(getConfiguration().getStringValue(
DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ writer.writeln("*/");
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sapdb/SapdbGenerator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sapdb/SapdbGenerator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sapdb/SapdbGenerator.java (working copy)
@@ -17,6 +17,7 @@
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +83,13 @@
/**
* {@inheritDoc}
*/
- public String generateHeader() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
-
- StringBuffer buff = new StringBuffer("/* ");
- buff.append(newline);
- buff.append(new java.util.Date());
- buff.append(newline);
-
- buff.append("Castor DDL Generator from mapping for SapDB");
- buff.append(newline);
- buff.append(getConfiguration().getStringValue(
+ public void generateHeader(final DDLWriter writer) {
+ writer.writeln("/*");
+ writer.writeln(new java.util.Date());
+ writer.writeln("Castor DDL Generator from mapping for SapDB");
+ writer.writeln(getConfiguration().getStringValue(
DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ writer.writeln("*/");
}
//--------------------------------------------------------------------------
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sapdb/SapdbSequenceKeyGeneratorFactory.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sapdb/SapdbSequenceKeyGeneratorFactory.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/engine/sapdb/SapdbSequenceKeyGeneratorFactory.java (working copy)
@@ -18,6 +18,7 @@
import java.text.MessageFormat;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.keygenerator.SequenceKeyGenerator;
import org.castor.ddlgen.keygenerator.SequenceKeyGeneratorFactory;
import org.castor.ddlgen.schemaobject.KeyGenerator;
@@ -34,28 +35,19 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL(final KeyGenerator key) {
+ public void toCreateDDL(final KeyGenerator key, final DDLWriter writer) {
SequenceKeyGenerator sequenceKey = (SequenceKeyGenerator) key;
DDLGenConfiguration conf = sequenceKey.getConfiguration();
- StringBuffer buff = new StringBuffer();
String tableName = sequenceKey.getTable().getName();
String pkList = toPrimaryKeyList(key.getTable());
String sequenceName = MessageFormat.format(sequenceKey.getSequence(),
new Object[]{tableName, pkList});
- String newline = conf.getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
- String indent = conf.getStringValue(
- DDLGenConfiguration.INDENT_KEY, DDLGenConfiguration.DEFAULT_INDENT);
+ writer.write("CREATE SEQUENCE ").writeln(sequenceName);
+ writer.indent();
+ writer.writeln("INCREMENT BY 1 START WITH 1");
+ writer.write("MAXVALUE ").writeln(Integer.MAX_VALUE).writeStatementDelimiter();
- buff.append(newline).append(newline);
- buff.append("CREATE SEQUENCE ").append(sequenceName);
- buff.append(newline).append(indent);
- buff.append("INCREMENT BY 1 START WITH 1");
- buff.append(newline).append(indent);
- buff.append("MAXVALUE ").append(Integer.MAX_VALUE);
- buff.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
-
if (sequenceKey.isTrigger()) {
String pkTypeList = toPrimaryKeyTypeList(key.getTable());
String triggerName = null;
@@ -73,18 +65,15 @@
triggerTemp = triggerTemp.replaceAll("", tableName);
triggerTemp = triggerTemp.replaceAll("", pkList);
triggerTemp = triggerTemp.replaceAll("", pkTypeList);
- buff.append(newline);
- buff.append(newline);
- buff.append(triggerTemp);
+ writer.writeln(triggerTemp);
}
-
- return buff.toString();
+ writer.unindent();
}
/**
* {@inheritDoc}
*/
- public String toDropDDL(final KeyGenerator key) {
- return "";
+ public void toDropDDL(final KeyGenerator key, final DDLWriter writer) {
+
}
}
Index: D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/Generator.java
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/Generator.java (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/ddlgen/src/main/java/org/castor/ddlgen/Generator.java (working copy)
@@ -15,8 +15,6 @@
*/
package org.castor.ddlgen;
-import java.io.PrintStream;
-
import org.exolab.castor.mapping.Mapping;
/**
@@ -82,21 +80,21 @@
*/
void setKeyGenRegistry(KeyGeneratorRegistry keygenRegistry);
- /**
- * Set print stream for output.
- *
- * @param printer Print stream for output.
- */
- void setPrinter(PrintStream printer);
-
+// /**
+// * Set print stream for output.
+// *
+// * @param printer Print stream for output.
+// */
+// void setPrinter(PrintStream printer);
+//
//--------------------------------------------------------------------------
/**
* Generate DDL for a mapping document.
- *
+ * @param writer ddl writer.
* @throws GeneratorException If failed to generate DDL.
*/
- void generateDDL() throws GeneratorException;
+ void generateDDL(final DDLWriter writer) throws GeneratorException;
//--------------------------------------------------------------------------
}
Index: D:/projects/SoC/castor_dev/castor/trunk/.classpath
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/.classpath (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/.classpath (working copy)
@@ -1,48 +1,13 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
Index: D:/projects/SoC/castor_dev/castor/trunk/.cvsignore
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/.cvsignore (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/.cvsignore (working copy)
@@ -1,3 +1,4 @@
build
dist
+.classpath
Index: D:/projects/SoC/castor_dev/castor/trunk/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/.settings/org.eclipse.jdt.core.prefs (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/.settings/org.eclipse.jdt.core.prefs (working copy)
@@ -1,4 +1,4 @@
-#Sat Oct 28 18:16:43 CEST 2006
+#Sun May 06 22:23:18 GMT+02:00 2007
eclipse.preferences.version=1
org.eclipse.jdt.core.codeComplete.argumentPrefixes=
org.eclipse.jdt.core.codeComplete.argumentSuffixes=
@@ -9,21 +9,21 @@
org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=s_
org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.3
+org.eclipse.jdt.core.compiler.compliance=1.4
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.deprecation=warning
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
Index: D:/projects/SoC/castor_dev/castor/trunk/.settings/org.eclipse.jdt.ui.prefs
===================================================================
--- D:/projects/SoC/castor_dev/castor/trunk/.settings/org.eclipse.jdt.ui.prefs (revision 6968)
+++ D:/projects/SoC/castor_dev/castor/trunk/.settings/org.eclipse.jdt.ui.prefs (working copy)
@@ -1,4 +1,4 @@
-#Sat Oct 28 17:56:07 CEST 2006
+#Tue Apr 24 21:50:19 GMT+02:00 2007
eclipse.preferences.version=1
internal.default.compliance=default
org.eclipse.jdt.ui.exception.name=e
@@ -9,3 +9,4 @@
org.eclipse.jdt.ui.keywordthis=false
org.eclipse.jdt.ui.ondemandthreshold=99
org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.text.custom_code_templates=