Index: C:/Java/castor-5/anttask/src/main/java/org/castor/anttask/CastorDDLGenTask.java
===================================================================
--- C:/Java/castor-5/anttask/src/main/java/org/castor/anttask/CastorDDLGenTask.java (revision 7007)
+++ C:/Java/castor-5/anttask/src/main/java/org/castor/anttask/CastorDDLGenTask.java (working copy)
@@ -18,7 +18,7 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.PrintStream;
+import java.io.OutputStream;
import java.util.Vector;
import org.apache.tools.ant.BuildException;
@@ -73,7 +73,7 @@
private String _databaseEngineProperties;
/** OutputStream used for writing the generated DDL statements. */
- private PrintStream _outputStream;
+ private OutputStream _outputStream;
//--------------------------------------------------------------------------
@@ -151,7 +151,7 @@
}
try {
- _outputStream = new PrintStream(new FileOutputStream(_ddlFileName));
+ _outputStream = new FileOutputStream(_ddlFileName);
} catch (IOException e) {
throw new BuildException("Problem finding the Castor JDO mapping file "
+ _mappingFile.getAbsolutePath(), e);
@@ -175,8 +175,7 @@
new MappingUnmarshaller().loadMappingOnly(mapping);
ddlgen.setMapping(mapping);
- ddlgen.setPrinter(_outputStream);
- ddlgen.generateDDL();
+ ddlgen.generateDDL(_outputStream);
} catch (IOException e) {
throw new BuildException ("Problem finding the Castor JDO mapping file "
+ _mappingFile.getAbsolutePath(), e);
@@ -203,39 +202,35 @@
throw new BuildException(NO_MAPPING_MSG);
}
- try {
- config();
+ config();
- // Run DDL generator on file
- if (_mappingFile != null) {
- processFile(_mappingFile.getAbsolutePath());
- }
+ // Run DDL generator on file
+ if (_mappingFile != null) {
+ processFile(_mappingFile.getAbsolutePath());
+ }
- // Run source generator on all files in directory
- if (_mappingDir != null && _mappingDir.exists() && _mappingDir.isDirectory()) {
- DirectoryScanner ds = this.getDirectoryScanner(_mappingDir);
+ // Run source generator on all files in directory
+ if (_mappingDir != null && _mappingDir.exists() && _mappingDir.isDirectory()) {
+ DirectoryScanner ds = this.getDirectoryScanner(_mappingDir);
- String[] files = ds.getIncludedFiles();
- for (int i = 0; i < files.length; i++) {
- String filePath = _mappingDir.getAbsolutePath() + File.separator + files[i];
- processFile(filePath);
- }
+ String[] files = ds.getIncludedFiles();
+ for (int i = 0; i < files.length; i++) {
+ String filePath = _mappingDir.getAbsolutePath() + File.separator + files[i];
+ processFile(filePath);
}
+ }
- // Run source generator on all files in FileSet
- for (int i = 0; i < _mappingFilesets.size(); i++) {
- FileSet fs = (FileSet) _mappingFilesets.elementAt(i);
- DirectoryScanner ds = fs.getDirectoryScanner(getProject());
- File subdir = fs.getDir(getProject());
+ // Run source generator on all files in FileSet
+ for (int i = 0; i < _mappingFilesets.size(); i++) {
+ FileSet fs = (FileSet) _mappingFilesets.elementAt(i);
+ DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+ File subdir = fs.getDir(getProject());
- String[] files = ds.getIncludedFiles();
- for (int j = 0; j < files.length; j++) {
- String filePath = subdir.getAbsolutePath() + File.separator + files[j];
- processFile(filePath);
- }
+ String[] files = ds.getIncludedFiles();
+ for (int j = 0; j < files.length; j++) {
+ String filePath = subdir.getAbsolutePath() + File.separator + files[j];
+ processFile(filePath);
}
- } finally {
- _outputStream.close();
}
}
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/AbstractGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/AbstractGenerator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/AbstractGenerator.java (working copy)
@@ -15,7 +15,7 @@
*/
package org.castor.ddlgen;
-import java.io.PrintStream;
+import java.io.OutputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
@@ -23,7 +23,6 @@
import org.castor.ddlgen.schemaobject.Field;
import org.castor.ddlgen.schemaobject.ForeignKey;
-import org.castor.ddlgen.schemaobject.Index;
import org.castor.ddlgen.schemaobject.KeyGenerator;
import org.castor.ddlgen.schemaobject.PrimaryKey;
import org.castor.ddlgen.schemaobject.Schema;
@@ -172,9 +171,6 @@
/** handle all resolving tables. */
private final Map _resolveTable = new HashMap();
- /** handle the writer for output. */
- private PrintStream _printer;
-
//--------------------------------------------------------------------------
/**
@@ -290,24 +286,6 @@
return _schema;
}
- /**
- * Set print stream.
- *
- * @param printer Print stream.
- */
- public final void setPrinter(final PrintStream printer) {
- _printer = printer;
- }
-
- /**
- * Get print stream.
- *
- * @return Print stream.
- */
- public final PrintStream getPrinter() {
- return _printer;
- }
-
//--------------------------------------------------------------------------
/**
@@ -313,7 +291,9 @@
/**
* {@inheritDoc}
*/
- public final void generateDDL() throws GeneratorException {
+ public final void generateDDL(final OutputStream output) throws GeneratorException {
+ DDLWriter writer = new DDLWriter(output, _configuration);
+
// Create schema.
createSchema();
@@ -322,12 +302,14 @@
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);
}
+
+ writer.close();
}
/**
@@ -334,9 +316,10 @@
* Generating ddl grouped by ddl type of DDL (e.g DROP, CREATE TABLE, create
* Primary key, create foreign key).
*
+ * @param writer DDLWriter to write schema objects to.
* @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,27 +335,27 @@
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); }
}
/**
@@ -378,16 +361,13 @@
/**
* Generate DDL for drop statement of table.
*
- * @return DDL to drop table.
+ * @param writer DDLWriter to write schema objects to.
* @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());
+ _schema.getTable(i).toDropDDL(writer);
}
- return buff.toString();
}
/**
@@ -404,16 +384,13 @@
* );
*
*
- * @return DDL for create table.
+ * @param writer DDLWriter to write schema objects to.
* @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());
+ _schema.getTable(i).toCreateDDL(writer);
}
- return buff.toString();
}
/**
@@ -419,16 +396,13 @@
/**
* Generate DDL for primany keys.
*
- * @return DDL for primary keys.
+ * @param writer DDLWriter to write schema objects to.
* @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());
+ _schema.getTable(i).getPrimaryKey().toCreateDDL(writer);
}
- return buff.toString();
}
/**
@@ -441,16 +415,13 @@
* ON UPDATE CASCADE;
*
*
- * @return DDL for foreign keys.
+ * @param writer DDLWriter to write schema objects to.
* @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(_schema.getTable(i), writer);
}
- return buff.toString();
}
/**
@@ -456,16 +427,13 @@
/**
* Generate DDL for indices.
*
- * @return DDL for indices.
+ * @param writer DDLWriter to write schema objects to.
* @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(_schema.getTable(i), writer);
}
- return buff.toString();
}
/**
@@ -471,11 +439,10 @@
/**
* Generate DDL for key generators (sequence/trigger).
*
- * @return DDL for key generators.
+ * @param writer DDLWriter to write schema objects to.
* @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) {
@@ -480,10 +447,9 @@
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();
}
/**
@@ -489,9 +455,10 @@
/**
* Generating ddl group by table.
*
+ * @param writer DDLWriter to write schema objects to.
* @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,9 +474,9 @@
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);
@@ -514,19 +481,15 @@
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,17 +497,14 @@
* Generate DDL for foreign key.
*
* @param table Table to generate DDL of foreign key for.
- * @return DDL for foreign key.
+ * @param writer DDLWriter to write schema objects to.
* @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());
+ table.getForeignKey(i).toCreateDDL(writer);
}
- return buff.toString();
}
/**
@@ -551,16 +511,14 @@
* 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 DDLWriter to write schema objects to.
* @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());
+ table.getIndex(i).toCreateDDL(writer);
}
- return buff.toString();
}
//--------------------------------------------------------------------------
@@ -568,9 +526,9 @@
/**
* Generate header comment.
*
- * @return Header comment.
+ * @param writer DDLWriter to write schema objects to.
*/
- public abstract String generateHeader();
+ public abstract void generateHeader(final DDLWriter writer);
//--------------------------------------------------------------------------
@@ -1024,25 +982,4 @@
}
//--------------------------------------------------------------------------
-
- /**
- * 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);
- }
- }
-
- //--------------------------------------------------------------------------
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/DDLWriter.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/DDLWriter.java (revision 0)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/DDLWriter.java (revision 0)
@@ -0,0 +1,463 @@
+/*
+ * Copyright 2007 Le Duc Bao, Ralf Joachim
+ *
+ * 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.BufferedWriter;
+import java.io.IOException;
+import java.io.InterruptedIOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.text.MessageFormat;
+
+/**
+ * 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
+ * @version $Revision: 5951 $ $Date: 2006-04-25 16:09:10 -0600 (Tue, 25 Apr 2006) $
+ * @since 1.1.2
+ */
+public final class DDLWriter extends Writer {
+ //--------------------------------------------------------------------------
+
+ /** Print writer to write all output to. */
+ private Writer _writer;
+
+ /** Remember errors. */
+ private IOException _error = null;
+
+ /** Newline flag is turn on at a new line before any other character gets written. */
+ private boolean _isNewline = true;
+
+ /** Current indent level. */
+ private int _indentLevel = 0;
+
+ /** String to output to indent a line. */
+ private String _indentText = DDLGenConfiguration.DEFAULT_INDENT;
+
+ /** String to output for a new line. */
+ private String _newline = DDLGenConfiguration.DEFAULT_NEWLINE;
+
+ /** Character format defined by CHAR_FORMAT_KEY in configuration file. */
+ private String _chrFormat = DDLGenConfiguration.CHAR_FORMAT_SENSITIVE;
+
+ //--------------------------------------------------------------------------
+
+ /**
+ * Construct new DDLWriter with given output stream and configuration file.
+ *
+ * @param output Output stream to write output characters to.
+ * @param conf Configuration.
+ */
+ public DDLWriter(final OutputStream output, final Configuration conf) {
+ this(new BufferedWriter(new OutputStreamWriter(output)), conf);
+ }
+
+ /**
+ * Construct new DDLWriter with given writer and configuration file.
+ *
+ * @param writer Writer to write output characters to.
+ * @param conf Configuration.
+ */
+ public DDLWriter(final Writer writer, final Configuration conf) {
+ super(writer);
+
+ _writer = writer;
+
+ _newline = conf.getStringValue(
+ DDLGenConfiguration.NEWLINE_KEY,
+ DDLGenConfiguration.DEFAULT_NEWLINE);
+ _indentText = conf.getStringValue(
+ DDLGenConfiguration.INDENT_KEY,
+ DDLGenConfiguration.DEFAULT_INDENT);
+ _chrFormat = conf.getStringValue(
+ DDLGenConfiguration.CHAR_FORMAT_KEY,
+ DDLGenConfiguration.CHAR_FORMAT_SENSITIVE);
+ }
+
+ /**
+ * Flush the writer.
+ */
+ public void flush() {
+ try {
+ synchronized (lock) {
+ if (_writer == null) { throw new IOException("Writer closed."); }
+ _writer.flush();
+ }
+ } catch (IOException ex) {
+ _error = ex;
+ }
+ }
+
+ /**
+ * Close the writer.
+ */
+ public void close () {
+ try {
+ synchronized (lock) {
+ if (_writer != null) {
+ _writer.close();
+ _writer = null;
+ }
+ }
+ } catch (IOException ex) {
+ _error = ex;
+ }
+ }
+
+ /**
+ * Check if any error occured at previous operations of the writer. If an IOException was
+ * caught at any previous operation of the writer it will be thrown now.
+ *
+ * @throws IOException IOException caught at any previous operation of the writer.
+ */
+ public void checkError() throws IOException {
+ if (_error != null) { throw _error; }
+ }
+
+ //--------------------------------------------------------------------------
+
+ /**
+ * Increase indention by 1.
+ */
+ public void indent() {
+ _indentLevel++;
+ }
+
+ /**
+ * Decrease indention by 1.
+ */
+ public void unindent() {
+ _indentLevel = (_indentLevel <= 0) ? 0 : _indentLevel - 1;
+ }
+
+ //--------------------------------------------------------------------------
+
+ /**
+ * {@inheritDoc}
+ */
+ public void write(final char[] buf, final int off, final int len) {
+ write(new String(buf, off, len));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void write(final char[] buf) {
+ write(new String(buf));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void write(final int c) {
+ write(new String(new char[] {(char) c}));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void write(final String s, final int off, final int len) {
+ write(s.substring(off, off + len));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void write(final String s) {
+ if (s != null) {
+ try {
+ synchronized (lock) {
+ if (_writer == null) { throw new IOException("Writer closed."); }
+
+ if (DDLGenConfiguration.CHAR_FORMAT_LOWER.equalsIgnoreCase(_chrFormat)) {
+ _writer.write(s.toLowerCase());
+ } else if (DDLGenConfiguration.CHAR_FORMAT_UPPER.equalsIgnoreCase(_chrFormat)) {
+ _writer.write(s.toUpperCase());
+ } else {
+ _writer.write(s);
+ }
+ }
+ } catch (InterruptedIOException ex) {
+ Thread.currentThread().interrupt();
+ } catch (IOException ex) {
+ _error = ex;
+ }
+ }
+ }
+
+ /**
+ * Write indention.
+ */
+ private void writeIndention() {
+ try {
+ synchronized (lock) {
+ if (_writer == null) { throw new IOException("Writer closed."); }
+
+ if (_isNewline) {
+ for (int i = 0; i < _indentLevel; i++) {
+ _writer.write(_indentText);
+ }
+
+ _isNewline = false;
+ }
+ }
+ } catch (InterruptedIOException ex) {
+ Thread.currentThread().interrupt();
+ } catch (IOException ex) {
+ _error = ex;
+ }
+ }
+
+ /**
+ * Write newline.
+ */
+ private void writeNewline() {
+ try {
+ synchronized (lock) {
+ if (_writer == null) { throw new IOException("Writer closed."); }
+
+ _isNewline = true;
+
+ _writer.write(_newline);
+ }
+ } catch (InterruptedIOException ex) {
+ Thread.currentThread().interrupt();
+ } catch (IOException ex) {
+ _error = ex;
+ }
+ }
+
+ //--------------------------------------------------------------------------
+
+ /**
+ * Print an array of characters.
+ *
+ * @param chars Array of chars to be printed.
+ */
+ public void print(final char[] chars) {
+ synchronized (lock) {
+ writeIndention();
+ write(chars);
+ }
+ }
+
+ /**
+ * Print a double-precision floating-point number.
+ *
+ * @param number Double to be printed.
+ */
+ public void print(final double number) {
+ synchronized (lock) {
+ writeIndention();
+ write(String.valueOf(number));
+ }
+ }
+
+ /**
+ * Print an integer number.
+ *
+ * @param number Integer to be printed.
+ */
+ public void print(final int number) {
+ synchronized (lock) {
+ writeIndention();
+ write(String.valueOf(number));
+ }
+ }
+
+ /**
+ * Print a long number.
+ *
+ * @param number Long to be printed.
+ */
+ public void print(final long number) {
+ synchronized (lock) {
+ writeIndention();
+ write(String.valueOf(number));
+ }
+ }
+
+ /**
+ * Print an object.
+ *
+ * @param object Object to be printed.
+ */
+ public void print(final Object object) {
+ synchronized (lock) {
+ writeIndention();
+ write(String.valueOf(object));
+ }
+ }
+
+ /**
+ * Print a string.
+ *
+ * @param string String to be printed.
+ */
+ public void print(final String string) {
+ synchronized (lock) {
+ writeIndention();
+ write(string);
+ }
+ }
+
+ /**
+ * A convenience method to print a formatted string build by filling placeholders of the
+ * specified pattern with given arguments.
+ *
+ * @param pattern Pattern with placeholders.
+ * @param arguments Arguments to replace placeholders in pattern.
+ */
+ public void print(final String pattern, final Object[] arguments) {
+ synchronized (lock) {
+ writeIndention();
+ write(MessageFormat.format(pattern, arguments));
+ }
+ }
+
+ //--------------------------------------------------------------------------
+
+ /**
+ * Terminate the current line by writing the line separator string.
+ */
+ public void println() {
+ writeNewline();
+ }
+
+ /**
+ * Print an array of characters and terminate the line.
+ *
+ * @param chars Array of chars to be printed.
+ */
+ public void println(final char[] chars) {
+ synchronized (lock) {
+ writeIndention();
+ write(chars);
+ writeNewline();
+ }
+ }
+
+ /**
+ * Print a double-precision floating-point number and terminate the line.
+ *
+ * @param number Double to be printed.
+ */
+ public void println(final double number) {
+ synchronized (lock) {
+ writeIndention();
+ write(String.valueOf(number));
+ writeNewline();
+ }
+ }
+
+ /**
+ * Print an integer number and terminate the line.
+ *
+ * @param number Integer to be printed.
+ */
+ public void println(final int number) {
+ synchronized (lock) {
+ writeIndention();
+ write(String.valueOf(number));
+ writeNewline();
+ }
+ }
+
+ /**
+ * Print a long number and terminate the line.
+ *
+ * @param number Long to be printed.
+ */
+ public void println(final long number) {
+ synchronized (lock) {
+ writeIndention();
+ write(String.valueOf(number));
+ writeNewline();
+ }
+ }
+
+ /**
+ * Print an object and terminate the line.
+ *
+ * @param object Object to be printed.
+ */
+ public void println(final Object object) {
+ synchronized (lock) {
+ writeIndention();
+ write(String.valueOf(object));
+ writeNewline();
+ }
+ }
+
+ /**
+ * Print a string and terminate the line.
+ *
+ * @param string String to be printed.
+ */
+ public void println(final String string) {
+ synchronized (lock) {
+ writeIndention();
+ write(string);
+ writeNewline();
+ }
+ }
+
+ /**
+ * A convenience method to print a formatted string build by filling placeholders of the
+ * specified pattern with given arguments. Line will be terminated after the formatted string.
+ *
+ * @param pattern Pattern with placeholders.
+ * @param arguments Arguments to replace placeholders in pattern.
+ */
+ public void println(final String pattern, final Object[] arguments) {
+ synchronized (lock) {
+ writeIndention();
+ write(MessageFormat.format(pattern, arguments));
+ writeNewline();
+ }
+ }
+
+ //--------------------------------------------------------------------------
+}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2Field.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2Field.java (revision 7007)
+++ C:/Java/castor-5/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.print(getName());
+ writer.print(" ");
+ writer.print(getType().toDDL(this));
+
+ if (isIdentity() || isRequired()) { writer.print(" NOT NULL"); }
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" GENERATED BY DEFAULT AS IDENTITY ");
- sb.append("START WITH 1 INCREMENT BY 1");
+ writer.print(" GENERATED BY DEFAULT AS IDENTITY START WITH 1 INCREMENT BY 1");
}
-
- return sb.toString();
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2Generator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2Generator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2Generator.java (working copy)
@@ -15,8 +15,12 @@
*/
package org.castor.ddlgen.engine.db2;
+import java.util.Date;
+
import org.castor.ddlgen.AbstractGenerator;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +86,14 @@
/**
* {@inheritDoc}
*/
- public String generateHeader() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
+ public void generateHeader(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
- 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(
- DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ writer.println("/* ");
+ writer.println(new Date());
+ writer.println("Castor DDL Generator from mapping for DB2");
+ writer.println(conf.getStringValue(DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
+ writer.println("*/");
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2PrimaryKey.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2PrimaryKey.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2PrimaryKey.java (working copy)
@@ -16,6 +16,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 +33,21 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- if (getFieldCount() <= 0) { return ""; }
+ public void toCreateDDL(final DDLWriter writer) {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
- 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();
+ if (getFieldCount() > 0) {
+ writer.println();
+ writer.println();
+ writer.print("ALTER TABLE ");
+ writer.println(getTable().getName());
+ writer.print("ADD CONSTRAINT ");
+ writer.println(getName());
+ writer.print("PRIMARY KEY (");
+ fieldNames(writer);
+ writer.print(")");
+ writer.print(delimiter);
+ }
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2SequenceKeyGeneratorFactory.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/db2/Db2SequenceKeyGeneratorFactory.java (revision 7007)
+++ C:/Java/castor-5/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,10 +35,8 @@
/**
* {@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(),
@@ -43,18 +42,14 @@
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);
-
- 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);
+ writer.println();
+ writer.println();
+ writer.print("CREATE SEQUENCE AS INTEGER ");
+ writer.println(sequenceName);
+ writer.println("START WITH 1 INCREMENT BY 1");
+ writer.print("MAXVALUE ");
+ writer.print(Integer.MAX_VALUE);
+ writer.println(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
if (sequenceKey.isTrigger()) {
// refer to http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.
@@ -67,8 +62,8 @@
triggerName = "TRG" + sequenceName;
}
- String triggerTemp = conf.getStringValue(
- DDLGenConfiguration.TRIGGER_TEMPLATE_KEY, "");
+ DDLGenConfiguration conf = sequenceKey.getConfiguration();
+ String triggerTemp = conf.getStringValue(DDLGenConfiguration.TRIGGER_TEMPLATE_KEY, "");
triggerTemp = triggerTemp.replaceAll("", triggerName);
triggerTemp = triggerTemp.replaceAll("", sequenceName);
@@ -75,12 +70,11 @@
triggerTemp = triggerTemp.replaceAll("", tableName);
triggerTemp = triggerTemp.replaceAll("", pkList);
triggerTemp = triggerTemp.replaceAll("", pkTypeList);
- buff.append(newline);
- buff.append(newline);
- buff.append(triggerTemp);
+
+ writer.println();
+ writer.println();
+ writer.println(triggerTemp);
}
-
- return buff.toString();
}
/**
@@ -86,7 +80,5 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL(final KeyGenerator key) {
- return "";
- }
+ public void toDropDDL(final KeyGenerator key, final DDLWriter writer) { }
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/derby/DerbyField.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/derby/DerbyField.java (revision 7007)
+++ C:/Java/castor-5/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.print(getName());
+ writer.print(" ");
+ writer.print(getType().toDDL(this));
+
+ if (isIdentity() || isRequired()) { writer.print(" NOT NULL"); }
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" GENERATED BY DEFAULT AS IDENTITY ");
- sb.append("(START WITH 1, INCREMENT BY 1)");
+ writer.print(" GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1)");
}
-
- return sb.toString();
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/derby/DerbyGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/derby/DerbyGenerator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/derby/DerbyGenerator.java (working copy)
@@ -15,8 +15,12 @@
*/
package org.castor.ddlgen.engine.derby;
+import java.util.Date;
+
import org.castor.ddlgen.AbstractGenerator;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,16 +86,14 @@
/**
* {@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 Derby");
- buff.append(getConfiguration().getStringValue(
- DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append("*/");
- return buff.toString();
+ public void generateHeader(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
+
+ writer.println("/* ");
+ writer.println(new Date());
+ writer.println("Castor DDL Generator from mapping for Derby");
+ writer.println(conf.getStringValue(DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
+ writer.println("*/");
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlField.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlField.java (revision 7007)
+++ C:/Java/castor-5/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,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.print(getName());
+ writer.print(" ");
+ writer.print(getType().toDDL(this));
+
+ if (isIdentity() || isRequired()) { writer.print(" NOT NULL"); }
+
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" IDENTITY");
+ writer.print(" IDENTITY");
}
-
- return sb.toString();
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlGenerator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlGenerator.java (working copy)
@@ -15,8 +15,12 @@
*/
package org.castor.ddlgen.engine.hsql;
+import java.util.Date;
+
import org.castor.ddlgen.AbstractGenerator;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +86,14 @@
/**
* {@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(
- DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ public void generateHeader(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
+
+ writer.println("/* ");
+ writer.println(new Date());
+ writer.println("Castor DDL Generator from mapping for HSQL");
+ writer.println(conf.getStringValue(DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
+ writer.println("*/");
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlPrimaryKey.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlPrimaryKey.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlPrimaryKey.java (working copy)
@@ -16,6 +16,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 +33,21 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- if (getFieldCount() <= 0) { return ""; }
+ public void toCreateDDL(final DDLWriter writer) {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
- 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();
+ if (getFieldCount() > 0) {
+ writer.println();
+ writer.println();
+ writer.print("ALTER TABLE ");
+ writer.println(getTable().getName());
+ writer.print("ADD CONSTRAINT ");
+ writer.println(getName());
+ writer.print("PRIMARY KEY (");
+ fieldNames(writer);
+ writer.print(")");
+ writer.print(delimiter);
+ }
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlSequenceKeyGeneratorFactory.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlSequenceKeyGeneratorFactory.java (revision 7007)
+++ C:/Java/castor-5/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,10 +35,8 @@
/**
* {@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(),
@@ -43,16 +42,13 @@
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);
-
- 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);
+ writer.println();
+ writer.println();
+ writer.print("CREATE SEQUENCE ");
+ writer.print(sequenceName);
+ writer.println(" AS INTEGER");
+ writer.print("START WITH 1 INCREMENT BY 1");
+ writer.println(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
if (sequenceKey.isTrigger()) {
String pkTypeList = toPrimaryKeyTypeList(key.getTable());
@@ -63,8 +59,8 @@
triggerName = "TRG" + sequenceName;
}
- String triggerTemp = conf.getStringValue(
- DDLGenConfiguration.TRIGGER_TEMPLATE_KEY, "");
+ DDLGenConfiguration conf = sequenceKey.getConfiguration();
+ String triggerTemp = conf.getStringValue(DDLGenConfiguration.TRIGGER_TEMPLATE_KEY, "");
triggerTemp = triggerTemp.replaceAll("", triggerName);
triggerTemp = triggerTemp.replaceAll("", sequenceName);
@@ -71,12 +67,11 @@
triggerTemp = triggerTemp.replaceAll("", tableName);
triggerTemp = triggerTemp.replaceAll("", pkList);
triggerTemp = triggerTemp.replaceAll("", pkTypeList);
- buff.append(newline);
- buff.append(newline);
- buff.append(triggerTemp);
+
+ writer.println();
+ writer.println();
+ writer.println(triggerTemp);
}
-
- return buff.toString();
}
/**
@@ -82,7 +77,5 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL(final KeyGenerator key) {
- return "";
- }
+ public void toDropDDL(final KeyGenerator key, final DDLWriter writer) { }
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlTable.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlTable.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/hsql/HsqlTable.java (working copy)
@@ -16,6 +16,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,19 +34,16 @@
/**
* {@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 {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
+
+ writer.println();
+ writer.println();
+ writer.println("CREATE TABLE {0} (", new Object[] {getName()});
+ fields(writer);
+ writer.println();
+ writer.print(")");
+ writer.print(delimiter);
}
/**
@@ -51,15 +49,12 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
+ public void toDropDDL(final DDLWriter writer) {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
- 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();
+ writer.println();
+ writer.println();
+ writer.print("DROP TABLE IF EXISTS {0}{1}", new Object[] {getName(), delimiter});
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlField.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlField.java (revision 7007)
+++ C:/Java/castor-5/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,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.print(getName());
+ writer.print(" ");
+ writer.print(getType().toDDL(this));
+
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" IDENTITY(1,1)");
+ writer.print(" IDENTITY(1,1)");
}
- if (isIdentity() || isRequired()) { sb.append(" NOT NULL"); }
-
- return sb.toString();
+ if (isIdentity() || isRequired()) { writer.print(" NOT NULL"); }
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlGenerator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlGenerator.java (working copy)
@@ -15,8 +15,12 @@
*/
package org.castor.ddlgen.engine.mssql;
+import java.util.Date;
+
import org.castor.ddlgen.AbstractGenerator;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,23 +86,14 @@
/**
* {@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(
- DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
+ public void generateHeader(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
- return buff.toString();
+ writer.println("/* ");
+ writer.println(new Date());
+ writer.println("Castor DDL Generator from mapping for Microsoft SQL Server");
+ writer.println(conf.getStringValue(DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
+ writer.println("*/");
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlPrimaryKey.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlPrimaryKey.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mssql/MssqlPrimaryKey.java (working copy)
@@ -16,6 +16,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 +33,21 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- if (getFieldCount() <= 0) { return ""; }
+ public void toCreateDDL(final DDLWriter writer) {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
- 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();
+ if (getFieldCount() > 0) {
+ writer.println();
+ writer.println();
+ writer.print("ALTER TABLE ");
+ writer.println(getTable().getName());
+ writer.print("ADD CONSTRAINT ");
+ writer.println(getName());
+ writer.print("PRIMARY KEY (");
+ fieldNames(writer);
+ writer.print(")");
+ writer.print(delimiter);
+ }
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlField.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlField.java (revision 7007)
+++ C:/Java/castor-5/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.print(getName());
+ writer.print(" ");
+ writer.print(getType().toDDL(this));
+
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" AUTO_INCREMENT");
+ writer.print(" AUTO_INCREMENT");
}
- if (isIdentity() || isRequired()) { sb.append(" NOT NULL"); }
-
- return sb.toString();
+ if (isIdentity() || isRequired()) { writer.print(" NOT NULL"); }
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlForeignKey.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlForeignKey.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlForeignKey.java (working copy)
@@ -15,7 +15,9 @@
*/
package org.castor.ddlgen.engine.mysql;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.schemaobject.ForeignKey;
/**
@@ -32,39 +34,36 @@
/**
* {@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(getName());
- sb.append(" (").append(fieldNames()).append(')');
- sb.append(newline);
- sb.append("REFERENCES ").append(getReferenceTable().getName());
- sb.append(" (").append(referencedFieldNames()).append(')');
+ public void toCreateDDL(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
+ String del = conf.getStringValue(DDLGenConfiguration.FOREIGN_KEY_ON_DELETE_KEY, null);
+ String upd = conf.getStringValue(DDLGenConfiguration.FOREIGN_KEY_ON_UPDATE_KEY, null);
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
+
+ writer.println();
+ writer.println();
+ writer.println("ALTER TABLE {0}", new Object[] {getTable().getName()});
+ writer.println("ADD CONSTRAINT {0}", new Object[] {getName()});
+ writer.print("FOREIGN KEY {0} (", new Object[] {getName()});
+ fieldNames(writer);
+ writer.println(")");
+ writer.print("REFERENCES {0} (", new Object[] {getReferenceTable().getName()});
+ referencedFieldNames(writer);
+ writer.print(")");
- // 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);
+ if ((del != null) && !"".equals(del)) {
+ writer.println();
+ writer.print("ON DELETE ");
+ writer.print(del);
}
- opt = getConfiguration().getStringValue(
- DDLGenConfiguration.FOREIGN_KEY_ON_UPDATE_KEY, null);
- if (opt != null && !"".equals(opt)) {
- sb.append(newline);
- sb.append("ON UPDATE ").append(opt);
+ if ((upd != null) && !"".equals(upd)) {
+ writer.println();
+ writer.print("ON UPDATE ");
+ writer.print(upd);
}
-
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+
+ writer.print(delimiter);
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlGenerator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlGenerator.java (working copy)
@@ -15,8 +15,12 @@
*/
package org.castor.ddlgen.engine.mysql;
+import java.util.Date;
+
import org.castor.ddlgen.AbstractGenerator;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,19 +86,13 @@
/**
* {@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(
- DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- return buff.toString();
+ public void generateHeader(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
+
+ writer.println("# {0}", new Object[] {new Date()});
+ writer.println("# Castor DDL Generator from mapping for MySQL");
+ writer.println();
+ writer.println(conf.getStringValue(DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlSchema.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlSchema.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlSchema.java (working copy)
@@ -15,7 +15,9 @@
*/
package org.castor.ddlgen.engine.mysql;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.schemaobject.Schema;
/**
@@ -32,19 +34,15 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- if (!getConfiguration().getBoolValue(
- DDLGenConfiguration.GENERATE_DDL_FOR_SCHEMA_KEY, true)) {
- return "";
- }
-
- String schema = getConfiguration().getStringValue(
- DDLGenConfiguration.SCHEMA_NAME_KEY, "");
- if (schema == null || "".equals(schema)) {
- return "";
+ public void toCreateDDL(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
+
+ if (conf.getBoolValue(DDLGenConfiguration.GENERATE_DDL_FOR_SCHEMA_KEY, true)) {
+ String schema = conf.getStringValue(DDLGenConfiguration.SCHEMA_NAME_KEY, "");
+ if ((schema != null) && !"".equals(schema)) {
+ writer.println("USE {0};", new Object[] {schema});
+ }
}
-
- return "USE " + schema + ";";
}
/**
@@ -50,9 +48,7 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL() {
- return "";
- }
+ public void toDropDDL(final DDLWriter writer) { }
//--------------------------------------------------------------------------
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlTable.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlTable.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/mysql/MysqlTable.java (working copy)
@@ -15,7 +15,9 @@
*/
package org.castor.ddlgen.engine.mysql;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.schemaobject.Table;
@@ -33,38 +35,32 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() throws GeneratorException {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
- 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(')');
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ Configuration conf = getConfiguration();
+ String engine = conf.getStringValue(DDLGenConfiguration.STORAGE_ENGINE_KEY, null);
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
+
+ writer.println();
+ writer.println();
+ writer.println("CREATE TABLE {0} (", new Object[] {getName()});
+ fields(writer);
+ writer.println();
if ((engine != null) && !"".equals(engine)) {
- sb.append(" ENGINE=").append(engine);
+ writer.print(") ENGINE={0}{1}", new Object[] {engine, delimiter});
+ } else {
+ writer.print("){0}", new Object[] {delimiter});
}
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
}
- /**
+ /**
* {@inheritDoc}
*/
- public String toDropDDL() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
+ public void toDropDDL(final DDLWriter writer) {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
- 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();
+ writer.println();
+ writer.println();
+ writer.print("DROP TABLE IF EXISTS {0}{1}", new Object[] {getName(), delimiter});
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/oracle/OracleGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/oracle/OracleGenerator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/oracle/OracleGenerator.java (working copy)
@@ -15,8 +15,12 @@
*/
package org.castor.ddlgen.engine.oracle;
+import java.util.Date;
+
import org.castor.ddlgen.AbstractGenerator;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +86,14 @@
/**
* {@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(
- DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ public void generateHeader(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
+
+ writer.println("/* ");
+ writer.println(new Date());
+ writer.println("Castor DDL Generator from mapping for Oracle");
+ writer.println(conf.getStringValue(DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
+ writer.println("*/");
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/oracle/OracleSequenceKeyGeneratorFactory.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/oracle/OracleSequenceKeyGeneratorFactory.java (revision 7007)
+++ C:/Java/castor-5/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,11 +35,8 @@
/**
* {@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();
String pkList = toPrimaryKeyList(key.getTable());
String pkTypeList = toPrimaryKeyTypeList(key.getTable());
@@ -45,18 +43,14 @@
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);
-
- 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);
+ writer.println();
+ writer.println();
+ writer.print("CREATE SEQUENCE ");
+ writer.println(sequenceName);
+ writer.print("MAXVALUE ");
+ writer.println(Integer.MAX_VALUE);
+ writer.print("INCREMENT BY 1 START WITH 1");
+ writer.println(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
if (sequenceKey.isTrigger()) {
String triggerName = null;
@@ -65,8 +59,8 @@
} else {
triggerName = "TRG" + sequenceName;
}
- String triggerTemp = conf.getStringValue(
- DDLGenConfiguration.TRIGGER_TEMPLATE_KEY, "");
+ DDLGenConfiguration conf = sequenceKey.getConfiguration();
+ String triggerTemp = conf.getStringValue(DDLGenConfiguration.TRIGGER_TEMPLATE_KEY, "");
triggerTemp = triggerTemp.replaceAll("", triggerName);
triggerTemp = triggerTemp.replaceAll("", sequenceName);
@@ -73,12 +67,11 @@
triggerTemp = triggerTemp.replaceAll("", tableName);
triggerTemp = triggerTemp.replaceAll("", pkList);
triggerTemp = triggerTemp.replaceAll("", pkTypeList);
- buff.append(newline);
- buff.append(newline);
- buff.append(triggerTemp);
- }
- return buff.toString();
+ writer.println();
+ writer.println();
+ writer.println(triggerTemp);
+ }
}
/**
@@ -84,7 +77,5 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL(final KeyGenerator key) {
- return "";
- }
+ public void toDropDDL(final KeyGenerator key, final DDLWriter writer) { }
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBaseField.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBaseField.java (revision 7007)
+++ C:/Java/castor-5/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,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.print(getName());
+ writer.print(" ");
+ writer.print(getType().toDDL(this));
+
+ if (isIdentity() || isRequired()) { writer.print(" NOT NULL"); }
+
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" IDENTITY(1,1)");
+ writer.print(" IDENTITY(1,1)");
}
-
- return sb.toString();
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBaseGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBaseGenerator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBaseGenerator.java (working copy)
@@ -15,8 +15,12 @@
*/
package org.castor.ddlgen.engine.pointbase;
+import java.util.Date;
+
import org.castor.ddlgen.AbstractGenerator;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +86,14 @@
/**
* {@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(
- DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ public void generateHeader(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
+
+ writer.println("/* ");
+ writer.println(new Date());
+ writer.println("Castor DDL Generator from mapping for PointBase");
+ writer.println(conf.getStringValue(DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
+ writer.println("*/");
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBasePrimaryKey.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBasePrimaryKey.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/pointbase/PointBasePrimaryKey.java (working copy)
@@ -16,6 +16,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 +33,21 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- if (getFieldCount() <= 0) { return ""; }
+ public void toCreateDDL(final DDLWriter writer) {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
- 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();
+ if (getFieldCount() > 0) {
+ writer.println();
+ writer.println();
+ writer.print("ALTER TABLE ");
+ writer.println(getTable().getName());
+ writer.print("ADD CONSTRAINT ");
+ writer.println(getName());
+ writer.print("PRIMARY KEY (");
+ fieldNames(writer);
+ writer.print(")");
+ writer.print(delimiter);
+ }
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlField.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlField.java (revision 7007)
+++ C:/Java/castor-5/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,6 +34,26 @@
/**
* {@inheritDoc}
*/
+ public void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ writer.print(getName());
+ writer.print(" ");
+
+ if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
+ if ("integer".equalsIgnoreCase(getType().getSqlType())) {
+ writer.print("SERIAL");
+ } else {
+ writer.print("BIGSERIAL");
+ }
+ } else {
+ writer.print(getType().toDDL(this));
+ }
+
+ if (isIdentity() || isRequired()) { writer.print(" NOT NULL"); }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public String toCreateDDL() throws GeneratorException {
StringBuffer sb = new StringBuffer();
sb.append(getName()).append(" ");
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlGenerator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlGenerator.java (working copy)
@@ -15,8 +15,12 @@
*/
package org.castor.ddlgen.engine.postgresql;
+import java.util.Date;
+
import org.castor.ddlgen.AbstractGenerator;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,15 +86,12 @@
/**
* {@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(
- DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- return buff.toString();
+ public void generateHeader(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
+
+ writer.println("-- {0}", new Object[] {new Date()});
+ writer.println("-- Castor DDL Generator from mapping for PostgreSQL");
+ writer.println(conf.getStringValue(DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlSequenceKeyGeneratorFactory.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/postgresql/PostgresqlSequenceKeyGeneratorFactory.java (revision 7007)
+++ C:/Java/castor-5/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,10 +35,8 @@
/**
* {@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());
@@ -44,17 +43,14 @@
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);
-
- 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);
+ writer.println();
+ writer.println();
+ writer.print("CREATE SEQUENCE ");
+ writer.println(sequenceName);
+ writer.print("INCREMENT 1 MAXVALUE ");
+ writer.print(Integer.MAX_VALUE);
+ writer.print(" START 1");
+ writer.println(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
if (sequenceKey.isTrigger()) {
String triggerName = null;
@@ -64,8 +60,8 @@
triggerName = "TRG" + sequenceName;
}
- String triggerTemp = conf.getStringValue(
- DDLGenConfiguration.TRIGGER_TEMPLATE_KEY, "");
+ DDLGenConfiguration conf = sequenceKey.getConfiguration();
+ String triggerTemp = conf.getStringValue(DDLGenConfiguration.TRIGGER_TEMPLATE_KEY, "");
triggerTemp = triggerTemp.replaceAll("", triggerName);
triggerTemp = triggerTemp.replaceAll("", sequenceName);
@@ -72,12 +68,11 @@
triggerTemp = triggerTemp.replaceAll("", tableName);
triggerTemp = triggerTemp.replaceAll("", pkList);
triggerTemp = triggerTemp.replaceAll("", pkTypeList);
- buff.append(newline);
- buff.append(newline);
- buff.append(triggerTemp);
+
+ writer.println();
+ writer.println();
+ writer.println(triggerTemp);
}
-
- return buff.toString();
}
/**
@@ -83,7 +78,5 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL(final KeyGenerator key) {
- return "";
- }
+ public void toDropDDL(final KeyGenerator key, final DDLWriter writer) { }
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/sapdb/SapdbGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/sapdb/SapdbGenerator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/sapdb/SapdbGenerator.java (working copy)
@@ -15,8 +15,12 @@
*/
package org.castor.ddlgen.engine.sapdb;
+import java.util.Date;
+
import org.castor.ddlgen.AbstractGenerator;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +86,14 @@
/**
* {@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(
- DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ public void generateHeader(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
+
+ writer.println("/* ");
+ writer.println(new Date());
+ writer.println("Castor DDL Generator from mapping for SapDB");
+ writer.println(conf.getStringValue(DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
+ writer.println("*/");
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/sapdb/SapdbSequenceKeyGeneratorFactory.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/sapdb/SapdbSequenceKeyGeneratorFactory.java (revision 7007)
+++ C:/Java/castor-5/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,10 +35,8 @@
/**
* {@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(),
@@ -43,18 +42,14 @@
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);
-
- 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);
+ writer.println();
+ writer.println();
+ writer.print("CREATE SEQUENCE ");
+ writer.println(sequenceName);
+ writer.println("INCREMENT BY 1 START WITH 1");
+ writer.print("MAXVALUE ");
+ writer.print(Integer.MAX_VALUE);
+ writer.println(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
if (sequenceKey.isTrigger()) {
String pkTypeList = toPrimaryKeyTypeList(key.getTable());
@@ -65,8 +60,8 @@
triggerName = "TRG" + sequenceName;
}
- String triggerTemp = conf.getStringValue(
- DDLGenConfiguration.TRIGGER_TEMPLATE_KEY, "");
+ DDLGenConfiguration conf = sequenceKey.getConfiguration();
+ String triggerTemp = conf.getStringValue(DDLGenConfiguration.TRIGGER_TEMPLATE_KEY, "");
triggerTemp = triggerTemp.replaceAll("", triggerName);
triggerTemp = triggerTemp.replaceAll("", sequenceName);
@@ -73,12 +68,11 @@
triggerTemp = triggerTemp.replaceAll("", tableName);
triggerTemp = triggerTemp.replaceAll("", pkList);
triggerTemp = triggerTemp.replaceAll("", pkTypeList);
- buff.append(newline);
- buff.append(newline);
- buff.append(triggerTemp);
+
+ writer.println();
+ writer.println();
+ writer.println(triggerTemp);
}
-
- return buff.toString();
}
/**
@@ -84,7 +78,5 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL(final KeyGenerator key) {
- return "";
- }
+ public void toDropDDL(final KeyGenerator key, final DDLWriter writer) { }
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/sybase/SybaseField.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/sybase/SybaseField.java (revision 7007)
+++ C:/Java/castor-5/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,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.print(getName());
+ writer.print(" ");
+ writer.print(getType().toDDL(this));
+
+ if (isIdentity() || isRequired()) { writer.print(" NOT NULL"); }
+
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
- sb.append(" IDENTITY");
+ writer.print(" IDENTITY");
}
-
- return sb.toString();
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/sybase/SybaseGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/sybase/SybaseGenerator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/engine/sybase/SybaseGenerator.java (working copy)
@@ -15,8 +15,12 @@
*/
package org.castor.ddlgen.engine.sybase;
+import java.util.Date;
+
import org.castor.ddlgen.AbstractGenerator;
+import org.castor.ddlgen.Configuration;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.MappingHelper;
/**
@@ -82,22 +86,14 @@
/**
* {@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(
- DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
- buff.append(newline);
- buff.append("*/");
- return buff.toString();
+ public void generateHeader(final DDLWriter writer) {
+ Configuration conf = getConfiguration();
+
+ writer.println("/* ");
+ writer.println(new Date());
+ writer.println("Castor DDL Generator from mapping for Sybase");
+ writer.println(conf.getStringValue(DDLGenConfiguration.HEADER_COMMENT_KEY, ""));
+ writer.println("*/");
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/Generator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/Generator.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/Generator.java (working copy)
@@ -15,7 +15,7 @@
*/
package org.castor.ddlgen;
-import java.io.PrintStream;
+import java.io.OutputStream;
import org.exolab.castor.mapping.Mapping;
@@ -82,13 +82,6 @@
*/
void setKeyGenRegistry(KeyGeneratorRegistry keygenRegistry);
- /**
- * Set print stream for output.
- *
- * @param printer Print stream for output.
- */
- void setPrinter(PrintStream printer);
-
//--------------------------------------------------------------------------
/**
@@ -94,9 +87,10 @@
/**
* Generate DDL for a mapping document.
*
+ * @param output Output stream for output.
* @throws GeneratorException If failed to generate DDL.
*/
- void generateDDL() throws GeneratorException;
+ void generateDDL(OutputStream output) throws GeneratorException;
//--------------------------------------------------------------------------
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/HighLowKeyGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/HighLowKeyGenerator.java (revision 7007)
+++ C:/Java/castor-5/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,7 +167,7 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() { return ""; }
+ public void toCreateDDL(final DDLWriter writer) { }
/**
* {@inheritDoc}
@@ -171,7 +172,7 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL() { return ""; }
+ public void toDropDDL(final DDLWriter writer) { }
//--------------------------------------------------------------------------
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/IdentityKeyGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/IdentityKeyGenerator.java (revision 7007)
+++ C:/Java/castor-5/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,7 +61,7 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() { return ""; }
+ public void toCreateDDL(final DDLWriter writer) { }
/**
* {@inheritDoc}
@@ -65,7 +66,7 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL() { return ""; }
+ public void toDropDDL(final DDLWriter writer) { }
//--------------------------------------------------------------------------
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/MaxKeyGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/MaxKeyGenerator.java (revision 7007)
+++ C:/Java/castor-5/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,7 +56,7 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() { return ""; }
+ public void toCreateDDL(final DDLWriter writer) { }
/**
* {@inheritDoc}
@@ -60,7 +61,7 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL() { return ""; }
+ public void toDropDDL(final DDLWriter writer) { }
//--------------------------------------------------------------------------
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/SequenceKeyGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/SequenceKeyGenerator.java (revision 7007)
+++ C:/Java/castor-5/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: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/SequenceKeyGeneratorFactory.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/SequenceKeyGeneratorFactory.java (revision 7007)
+++ C:/Java/castor-5/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,9 +65,9 @@
* 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 DDLWriter to write schema objects to.
*/
- 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.
@@ -72,9 +73,9 @@
* 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 DDLWriter to write schema objects to.
*/
- public abstract String toDropDDL(final KeyGenerator key);
+ public abstract void toDropDDL(final KeyGenerator key, final DDLWriter writer);
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/UUIDKeyGenerator.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/keygenerator/UUIDKeyGenerator.java (revision 7007)
+++ C:/Java/castor-5/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,7 +56,7 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() { return ""; }
+ public void toCreateDDL(final DDLWriter writer) { }
/**
* {@inheritDoc}
@@ -60,7 +61,7 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL() { return ""; }
+ public void toDropDDL(final DDLWriter writer) { }
//--------------------------------------------------------------------------
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/Main.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/Main.java (revision 7007)
+++ C:/Java/castor-5/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,7 @@
new MappingUnmarshaller().loadMappingOnly(mapping);
generator.setMapping(mapping);
- generator.setPrinter(new PrintStream(new FileOutputStream(ddlName)));
- generator.generateDDL();
+ generator.generateDDL(new FileOutputStream(ddlName));
} catch (Exception ex) {
LOG.error("Error: " + ex.getMessage(), ex);
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultField.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultField.java (revision 7007)
+++ C:/Java/castor-5/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,11 +33,7 @@
/**
* {@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 {
if (isIdentity() && (getKeyGenerator() instanceof IdentityKeyGenerator)) {
String msg = "IDENTITY key generator is not supported for this database";
throw new GeneratorException(msg);
@@ -42,7 +39,11 @@
throw new GeneratorException(msg);
}
- return sb.toString();
+ writer.print(getName());
+ writer.print(" ");
+ writer.print(getType().toDDL(this));
+
+ if (isIdentity() || isRequired()) { writer.print(" NOT NULL"); }
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultForeignKey.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultForeignKey.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultForeignKey.java (working copy)
@@ -16,6 +16,7 @@
package org.castor.ddlgen.schemaobject;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
/**
* Default foreign key.
@@ -31,22 +32,20 @@
/**
* {@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) {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
+
+ writer.println();
+ writer.println();
+ writer.println("ALTER TABLE {0}", new Object[] {getTable().getName()});
+ writer.println("ADD CONSTRAINT {0}", new Object[] {getName()});
+ writer.print("FOREIGN KEY (");
+ fieldNames(writer);
+ writer.println(")");
+ writer.print("REFERENCES {0} (", new Object[] {getReferenceTable().getName()});
+ referencedFieldNames(writer);
+ writer.print(")");
+ writer.print(delimiter);
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultIndex.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultIndex.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultIndex.java (working copy)
@@ -16,6 +16,7 @@
package org.castor.ddlgen.schemaobject;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
/**
* Default index.
@@ -31,18 +32,16 @@
/**
* {@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) {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
+
+ writer.println();
+ writer.println();
+ writer.println("CREATE UNIQUE INDEX {0}", new Object[] {getName()});
+ writer.print("ON {0} (", new Object[] {getTable().getName()});
+ fieldNames(writer);
+ writer.print(")");
+ writer.print(delimiter);
}
/**
@@ -48,9 +47,7 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL() {
- return "";
- }
+ public void toDropDDL(final DDLWriter writer) { }
//--------------------------------------------------------------------------
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultPrimaryKey.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultPrimaryKey.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultPrimaryKey.java (working copy)
@@ -16,6 +16,7 @@
package org.castor.ddlgen.schemaobject;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
/**
* Default primary key.
@@ -31,19 +32,19 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- if (getFieldCount() == 0) { return ""; }
+ public void toCreateDDL(final DDLWriter writer) {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
- 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();
+ if (getFieldCount() > 0) {
+ writer.println();
+ writer.println();
+ writer.print("ALTER TABLE ");
+ writer.println(getTable().getName());
+ writer.print("ADD PRIMARY KEY (");
+ fieldNames(writer);
+ writer.print(")");
+ writer.print(delimiter);
+ }
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultSchema.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultSchema.java (revision 7007)
+++ C:/Java/castor-5/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,9 +31,7 @@
/**
* {@inheritDoc}
*/
- public String toCreateDDL() {
- return "";
- }
+ public void toCreateDDL(final DDLWriter writer) { }
/**
* {@inheritDoc}
@@ -36,9 +36,7 @@
/**
* {@inheritDoc}
*/
- public String toDropDDL() {
- return "";
- }
+ public void toDropDDL(final DDLWriter writer) { }
//--------------------------------------------------------------------------
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultTable.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultTable.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/DefaultTable.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;
/**
@@ -26,7 +27,7 @@
* @version $Revision: 5951 $ $Date: 2006-04-25 16:09:10 -0600 (Tue, 25 Apr 2006) $
* @since 1.1
*/
-public class DefaultTable extends Table {
+public final class DefaultTable extends Table {
//--------------------------------------------------------------------------
/**
@@ -32,19 +33,16 @@
/**
* {@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 void toCreateDDL(final DDLWriter writer) throws GeneratorException {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
+
+ writer.println();
+ writer.println();
+ writer.println("CREATE TABLE {0} (", new Object[] {getName()});
+ fields(writer);
+ writer.println();
+ writer.print(")");
+ writer.print(delimiter);
}
/**
@@ -50,15 +48,12 @@
/**
* {@inheritDoc}
*/
- public final String toDropDDL() {
- String newline = getConfiguration().getStringValue(
- DDLGenConfiguration.NEWLINE_KEY, DDLGenConfiguration.DEFAULT_NEWLINE);
+ public void toDropDDL(final DDLWriter writer) {
+ String delimiter = DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER;
- StringBuffer sb = new StringBuffer();
- sb.append(newline).append(newline);
- sb.append("DROP TABLE ").append(getName());
- sb.append(DDLGenConfiguration.DEFAULT_STATEMENT_DELIMITER);
- return sb.toString();
+ writer.println();
+ writer.println();
+ writer.print("DROP TABLE {0}{1}", new Object[] {getName(), delimiter});
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Field.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Field.java (revision 7007)
+++ C:/Java/castor-5/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,10 +184,8 @@
/**
* {@inheritDoc}
*/
- public final String toDropDDL() {
- return "";
- }
-
+ public final void toDropDDL(final DDLWriter writer) { }
+
//--------------------------------------------------------------------------
/**
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/ForeignKey.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/ForeignKey.java (revision 7007)
+++ C:/Java/castor-5/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;
/**
@@ -181,17 +182,18 @@
/**
* Concatenate all field names delimited by field delimiter and whitespace.
*
- * @return Field names delimited by field delimiter and whitespace.
+ * @param writer DDLWriter to write schema objects to.
*/
- protected final String fieldNames() {
+ protected final void fieldNames(final DDLWriter writer) {
String delimiter = DDLGenConfiguration.DEFAULT_FIELD_DELIMITER;
- StringBuffer sb = new StringBuffer();
for (int i = 0; i < getFieldCount(); i++) {
- if (i > 0) { sb.append(delimiter).append(' '); }
- sb.append(getField(i).getName());
+ if (i > 0) {
+ writer.print(delimiter);
+ writer.print(" ");
+ }
+ writer.print(getField(i).getName());
}
- return sb.toString();
}
/**
@@ -197,17 +199,18 @@
/**
* Concatenate all referenced field names delimited by field delimiter and whitespace.
*
- * @return Referenced field names delimited by field delimiter and whitespace.
+ * @param writer DDLWriter to write schema objects to.
*/
- protected final String referencedFieldNames() {
+ protected final void referencedFieldNames(final DDLWriter writer) {
String delimiter = DDLGenConfiguration.DEFAULT_FIELD_DELIMITER;
- StringBuffer sb = new StringBuffer();
for (int i = 0; i < getReferenceFieldCount(); i++) {
- if (i > 0) { sb.append(delimiter).append(' '); }
- sb.append(getReferenceField(i).getName());
+ if (i > 0) {
+ writer.print(delimiter);
+ writer.print(" ");
+ }
+ writer.print(getReferenceField(i).getName());
}
- return sb.toString();
}
//--------------------------------------------------------------------------
@@ -215,10 +218,8 @@
/**
* {@inheritDoc}
*/
- public final String toDropDDL() {
- return "";
- }
-
+ public final void toDropDDL(final DDLWriter writer) { }
+
//--------------------------------------------------------------------------
/**
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Index.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Index.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Index.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 indices.
@@ -90,17 +91,18 @@
/**
* Concatenate all field names delimited by field delimiter and whitespace.
*
- * @return Field names delimited by field delimiter and whitespace.
+ * @param writer DDLWriter to write schema objects to.
*/
- protected final String fieldNames() {
+ protected final void fieldNames(final DDLWriter writer) {
String delimiter = DDLGenConfiguration.DEFAULT_FIELD_DELIMITER;
- StringBuffer sb = new StringBuffer();
for (int i = 0; i < getFieldCount(); i++) {
- if (i > 0) { sb.append(delimiter).append(' '); }
- sb.append(getField(i).getName());
+ if (i > 0) {
+ writer.print(delimiter);
+ writer.print(" ");
+ }
+ writer.print(getField(i).getName());
}
- return sb.toString();
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/PrimaryKey.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/PrimaryKey.java (revision 7007)
+++ C:/Java/castor-5/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.
@@ -90,17 +91,18 @@
/**
* Concatenate all field names delimited by field delimiter and whitespace.
*
- * @return Field names delimited by field delimiter and whitespace.
+ * @param writer DDLWriter to write schema objects to.
*/
- protected final String fieldNames() {
+ protected final void fieldNames(final DDLWriter writer) {
String delimiter = DDLGenConfiguration.DEFAULT_FIELD_DELIMITER;
- StringBuffer sb = new StringBuffer();
for (int i = 0; i < getFieldCount(); i++) {
- if (i > 0) { sb.append(delimiter).append(' '); }
- sb.append(getField(i).getName());
+ if (i > 0) {
+ writer.print(delimiter);
+ writer.print(" ");
+ }
+ writer.print(getField(i).getName());
}
- return sb.toString();
}
//--------------------------------------------------------------------------
@@ -108,10 +110,8 @@
/**
* {@inheritDoc}
*/
- public final String toDropDDL() {
- return "";
- }
-
+ public final void toDropDDL(final DDLWriter writer) { }
+
//--------------------------------------------------------------------------
/**
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/SchemaObject.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/SchemaObject.java (revision 7007)
+++ C:/Java/castor-5/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;
/**
@@ -62,10 +63,10 @@
/**
* Build create script for the schema object.
*
- * @return Create script for the schema object.
+ * @param writer DDLWriter to write schema objects to.
* @throws GeneratorException If generation of the script failed or is not supported.
*/
- String toCreateDDL() throws GeneratorException;
+ void toCreateDDL(final DDLWriter writer) throws GeneratorException;
/**
* Build drop script for the schema object.
@@ -70,10 +71,10 @@
/**
* Build drop script for the schema object.
*
- * @return Drop script for the schema object.
+ * @param writer DDLWriter to write schema objects to.
* @throws GeneratorException If generation of the script failed or is not supported.
*/
- String toDropDDL() throws GeneratorException;
-
+ void toDropDDL(final DDLWriter writer) throws GeneratorException;
+
//--------------------------------------------------------------------------
}
Index: C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Table.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Table.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/main/java/org/castor/ddlgen/schemaobject/Table.java (working copy)
@@ -23,6 +23,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;
/**
@@ -219,22 +220,18 @@
/**
* Concatenate all fields names delimited by line separator.
*
- * @return Field names delimited by field delimiter and whitespace.
+ * @param writer DDLWriter to write schema objects to.
* @throws GeneratorException If generation of the script failed or is not supported.
*/
- protected final String fields() throws GeneratorException {
+ protected final void fields(final DDLWriter writer) 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();
+ 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.println(delimiter); }
+ getField(i).toCreateDDL(writer);
}
- return sb.toString();
+ writer.unindent();
}
//--------------------------------------------------------------------------
Index: C:/Java/castor-5/ddlgen/src/test/java/org/castor/ddlgen/engine/db2/Db2GeneratorTest.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/test/java/org/castor/ddlgen/engine/db2/Db2GeneratorTest.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/test/java/org/castor/ddlgen/engine/db2/Db2GeneratorTest.java (working copy)
@@ -15,6 +15,8 @@
*/
package org.castor.ddlgen.engine.db2;
+import java.io.ByteArrayOutputStream;
+
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -19,6 +21,7 @@
import junit.framework.TestSuite;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.GeneratorException;
import org.castor.ddlgen.KeyGeneratorRegistry;
import org.castor.ddlgen.test.framework.AbstractGeneratorTest;
@@ -128,7 +131,14 @@
loadData("single_field_for_all.xml");
try {
- getGenerator().generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, getGenerator().getConfiguration());
+
+ getGenerator().generateCreate(writer);
+
+ writer.close();
+ out.toString();
+
fail("bit type is not supported, expected an exception");
} catch (GeneratorException e) {
assertTrue(true);
@@ -145,8 +155,6 @@
try {
loadData("single_field_except_bit.xml");
- String ddl = getGenerator().generateCreate();
-
DDLGenConfiguration conf = getGenerator().getConfiguration();
Object[] params = new Object[] {
conf.getInteger(PARAM_PREFIX + "tinyint" + PARAM_PRECISION),
@@ -173,6 +181,15 @@
getSuffixString(conf, PARAM_PREFIX + "javaobject" + PARAM_LENGTH),
getSuffixString(conf, PARAM_PREFIX + "blob" + PARAM_LENGTH),
getSuffixString(conf, PARAM_PREFIX + "clob" + PARAM_LENGTH) };
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ getGenerator().generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
+
boolean b = getExpected().match(getEngine(), ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + getExpected().getLastMatchString(), b);
Index: C:/Java/castor-5/ddlgen/src/test/java/org/castor/ddlgen/engine/derby/DerbyGeneratorTest.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/test/java/org/castor/ddlgen/engine/derby/DerbyGeneratorTest.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/test/java/org/castor/ddlgen/engine/derby/DerbyGeneratorTest.java (working copy)
@@ -15,6 +15,8 @@
*/
package org.castor.ddlgen.engine.derby;
+import java.io.ByteArrayOutputStream;
+
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -19,6 +21,7 @@
import junit.framework.TestSuite;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.ddlgen.KeyGeneratorRegistry;
import org.castor.ddlgen.test.framework.AbstractGeneratorTest;
import org.castor.ddlgen.test.framework.Expected;
@@ -124,8 +127,6 @@
try {
loadData("single_field_for_all.xml");
- String ddl = getGenerator().generateCreate();
-
DDLGenConfiguration conf = getGenerator().getConfiguration();
Object[] params = new Object[] {
conf.getInteger(PARAM_PREFIX + "tinyint" + PARAM_PRECISION),
@@ -152,6 +153,15 @@
getSuffixString(conf, PARAM_PREFIX + "javaobject" + PARAM_LENGTH),
getSuffixString(conf, PARAM_PREFIX + "blob" + PARAM_LENGTH),
getSuffixString(conf, PARAM_PREFIX + "clob" + PARAM_LENGTH) };
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ getGenerator().generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
+
boolean b = getExpected().match(getEngine(), ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + getExpected().getLastMatchString(), b);
Index: C:/Java/castor-5/ddlgen/src/test/java/org/castor/ddlgen/test/framework/AbstractGeneratorTest.java
===================================================================
--- C:/Java/castor-5/ddlgen/src/test/java/org/castor/ddlgen/test/framework/AbstractGeneratorTest.java (revision 7007)
+++ C:/Java/castor-5/ddlgen/src/test/java/org/castor/ddlgen/test/framework/AbstractGeneratorTest.java (working copy)
@@ -15,6 +15,7 @@
*/
package org.castor.ddlgen.test.framework;
+import java.io.ByteArrayOutputStream;
import java.net.URL;
import junit.framework.TestCase;
@@ -21,6 +22,7 @@
import org.castor.ddlgen.AbstractGenerator;
import org.castor.ddlgen.DDLGenConfiguration;
+import org.castor.ddlgen.DDLWriter;
import org.castor.mapping.MappingUnmarshaller;
import org.exolab.castor.mapping.Mapping;
@@ -169,8 +171,6 @@
try {
loadData("single_table.xml");
- String ddl = _generator.generateCreate();
-
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
conf.getStringValue(PARAM_PREFIX + "integer" + PARAM_PRECISION, ""),
@@ -175,6 +175,15 @@
Object[] params = new Object[] {
conf.getStringValue(PARAM_PREFIX + "integer" + PARAM_PRECISION, ""),
conf.getStringValue(PARAM_PREFIX + "char" + PARAM_LENGTH, "") };
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
+
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
@@ -190,8 +199,6 @@
try {
loadData("ignored_table.xml");
- String ddl = _generator.generateCreate();
-
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
@@ -196,6 +203,15 @@
Object[] params = new Object[] {
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
+
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
@@ -211,8 +227,6 @@
try {
loadData("no_table.xml");
- String ddl = _generator.generateCreate();
-
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
@@ -217,6 +231,15 @@
Object[] params = new Object[] {
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
+
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
@@ -232,7 +255,13 @@
try {
loadData("drop_table.xml");
- String ddl = _generator.generateDrop();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, _generator.getConfiguration());
+
+ _generator.generateDrop(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, ddl);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -254,7 +283,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -260,7 +295,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generatePrimaryKey();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generatePrimaryKey(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -282,7 +323,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -288,7 +335,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generatePrimaryKey();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generatePrimaryKey(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, null);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -310,7 +363,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -316,7 +375,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generatePrimaryKey();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generatePrimaryKey(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -338,7 +403,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -344,7 +415,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generatePrimaryKey();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generatePrimaryKey(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -366,7 +443,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -372,7 +455,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generatePrimaryKey();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generatePrimaryKey(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -389,8 +478,6 @@
try {
loadData("multiple_table.xml");
- String ddl = _generator.generateCreate();
-
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
@@ -395,6 +482,15 @@
Object[] params = new Object[] {
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
+
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
@@ -410,8 +506,6 @@
try {
loadData("single_field_for_all.xml");
- String ddl = _generator.generateCreate();
-
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
conf.getInteger(PARAM_PREFIX + "tinyint" + PARAM_PRECISION),
@@ -441,6 +535,15 @@
conf.getStringValue(PARAM_PREFIX + "javaobject" + PARAM_LENGTH),
conf.getStringValue(PARAM_PREFIX + "blob" + PARAM_LENGTH),
conf.getStringValue(PARAM_PREFIX + "clob" + PARAM_LENGTH) };
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
+
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
@@ -456,8 +559,6 @@
try {
loadData("single_field.xml");
- String ddl = _generator.generateCreate();
-
DDLGenConfiguration conf = _generator.getConfiguration();
Object[] params = new Object[] {
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
@@ -462,6 +563,15 @@
Object[] params = new Object[] {
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
+
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
@@ -482,7 +592,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -488,7 +604,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateKeyGenerator();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generateKeyGenerator(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -510,7 +632,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -516,7 +644,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateKeyGenerator();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generateKeyGenerator(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -538,7 +672,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -544,7 +684,14 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateKeyGenerator();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generateKeyGenerator(writer);
+
+ writer.close();
+ ddl = out.toString();
+
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
@@ -566,7 +713,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -572,7 +725,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateKeyGenerator();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generateKeyGenerator(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -594,7 +753,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -600,7 +765,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateKeyGenerator();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generateKeyGenerator(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -622,7 +793,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -628,7 +805,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateForeignKey();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generateForeignKey(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -650,7 +833,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -656,7 +845,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateForeignKey();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generateForeignKey(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -678,7 +873,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -684,7 +885,13 @@
assertTrue("Generated DDL: " + ddl + "\n"
+ "Expected DDL: " + _expected.getLastMatchString(), b);
- ddl = _generator.generateForeignKey();
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, conf);
+
+ _generator.generateForeignKey(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -706,7 +913,13 @@
conf.getStringValue(PARAM_PREFIX + "integer" + PARAM_PRECISION, ""),
conf.getStringValue(PARAM_PREFIX + "char" + PARAM_LENGTH, "") };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -728,7 +941,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -745,7 +964,13 @@
try {
loadData("no_field.xml");
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, _generator.getConfiguration());
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, ddl);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -767,7 +992,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -789,7 +1020,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -811,7 +1048,13 @@
conf.getInteger(PARAM_PREFIX + "integer" + PARAM_PRECISION),
conf.getInteger(PARAM_PREFIX + "char" + PARAM_LENGTH) };
- String ddl = _generator.generateCreate();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, conf);
+
+ _generator.generateCreate(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, ddl, params);
assertTrue("Generated DDL: " + ddl + "\n"
@@ -831,7 +1074,14 @@
DDLGenConfiguration conf = _generator.getConfiguration();
conf.setProperty(DDLGenConfiguration.SCHEMA_NAME_KEY, "test");
- String ddl = _generator.getSchema().toCreateDDL();
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, _generator.getConfiguration());
+
+ _generator.getSchema().toCreateDDL(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, 0, ddl, new String[] {"test"});
assertTrue("Generated DDL: " + ddl + "\n"
@@ -838,7 +1088,14 @@
+ "Expected DDL: " + _expected.getLastMatchString(), b);
conf.setProperty(DDLGenConfiguration.SCHEMA_NAME_KEY, "");
- ddl = _generator.getSchema().toCreateDDL();
+
+ out = new ByteArrayOutputStream();
+ writer = new DDLWriter(out, _generator.getConfiguration());
+
+ _generator.getSchema().toCreateDDL(writer);
+
+ writer.close();
+ ddl = out.toString();
b = _expected.match(_engine, 1, ddl, new String[] {});
assertTrue("Generated DDL: " + ddl + "\n"
@@ -855,7 +1112,13 @@
try {
loadData("index_creation.xml");
- String ddl = _generator.generateIndex();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ DDLWriter writer = new DDLWriter(out, _generator.getConfiguration());
+
+ _generator.generateIndex(writer);
+
+ writer.close();
+ String ddl = out.toString();
boolean b = _expected.match(_engine, ddl);
assertTrue("Generated DDL: " + ddl + "\n"
Index: C:/Java/castor-5/src/doc/release-notes.xml
===================================================================
--- C:/Java/castor-5/src/doc/release-notes.xml (revision 7007)
+++ C:/Java/castor-5/src/doc/release-notes.xml (working copy)
@@ -35,6 +35,26 @@
+
+
+ Replaced PrintStream and StringBuffer by a Writer implementation.
+
+
+ Le Duc Bao
+ leducbao@gmail.com
+
+
+ Ralf Joachim
+ ralf.joachim@syscon.eu
+
+
+ Ralf Joachim
+ ralf.joachim@syscon.eu
+
+ Enh.
+ JDO
+ 20070607
+
Fixed a problem with incorrect import statements/class name
Index: C:/Java/castor-5/src/etc/CHANGELOG
===================================================================
--- C:/Java/castor-5/src/etc/CHANGELOG (revision 7007)
+++ C:/Java/castor-5/src/etc/CHANGELOG (working copy)
@@ -1,6 +1,11 @@
SVN
---
+JDO: Resolved issue CASTOR-1774 using contribution from Le Duc Bao [leducbao@gmail.com]
+ Replaced PrintStream and StringBuffer by a Writer implementation.
+ Details: http://jira.codehaus.org/browse/CASTOR-1774
+ (Ralf - 20070607)
+
XML: Resolved issue CASTOR-1986 using contribution from Werner Guttmann [michael.kopp@gmx.at]
Fixed a problem with incorrect import statements/class name references in the context
of included/imported XML schemas.