proai.util
Class TableSpec

java.lang.Object
  extended by proai.util.TableSpec

public class TableSpec
extends java.lang.Object

A holder of table specification information that helps in producing RDBMS-generic DDL "CREATE TABLE" commands.

An application constructs a TableSpec without regard to the underlying database kind, and then the TableSpec is converted to a DB-specific CREATE TABLE DDL command by a DDLConverter before the command is issued via JDBC.


Constructor Summary
TableSpec(java.lang.String name, java.util.List<ColumnSpec> columnSpecs, java.lang.String primaryColumnName)
          Constructs a TableSpec given a name, a set of ColumnSpecs, and the name of the primary key column.
TableSpec(java.lang.String name, java.util.List<ColumnSpec> columnSpecs, java.lang.String primaryColumnName, java.lang.String type)
          Constructs a TableSpec given a name, a set of ColumnSpecs, the name of the primary key column, and a table type.
 
Method Summary
 java.util.Iterator<ColumnSpec> columnSpecIterator()
          Gets an iterator over the columns.
 java.lang.String getName()
          Gets the name of the table.
 java.lang.String getPrimaryColumnName()
          Gets the name of the primary key column.
static java.util.List<TableSpec> getTableSpecs(java.io.InputStream in)
          Gets a TableSpec for each table element in the stream, where the stream contains a valid XML document containing one or more table elements, wrapped in the root element.
 java.lang.String getType()
          Gets the type of the table.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TableSpec

public TableSpec(java.lang.String name,
                 java.util.List<ColumnSpec> columnSpecs,
                 java.lang.String primaryColumnName)
Constructs a TableSpec given a name, a set of ColumnSpecs, and the name of the primary key column.

Parameters:
name - The table name.
columnSpecs - ColumnSpec objects describing columns in the table.
primaryColumnName - The column that is the primary key for the table.

TableSpec

public TableSpec(java.lang.String name,
                 java.util.List<ColumnSpec> columnSpecs,
                 java.lang.String primaryColumnName,
                 java.lang.String type)
Constructs a TableSpec given a name, a set of ColumnSpecs, the name of the primary key column, and a table type. Table type specification is not supported by all RDBMS software, and is usually software-specific. When a tableSpec is used to create a table, if the type is understood it is used. Otherwise it is ignored.

Parameters:
name - The table name.
columnSpecs - ColumnSpec objects describing columns in the table.
primaryColumnName - The column that is the primary key for the table.
type - The table type.
Method Detail

getTableSpecs

public static java.util.List<TableSpec> getTableSpecs(java.io.InputStream in)
                                               throws java.io.IOException
Gets a TableSpec for each table element in the stream, where the stream contains a valid XML document containing one or more table elements, wrapped in the root element.

Input is of the form:
 <database>
   <table name="tableName" primaryKey="primaryColumnName" type="tableType">
     <column name="columnName"
                type="typeSpec"
                autoIncrement="isAutoIncremented"
                index="indexName"
                notNull="isNotNull"
                unique="isUnique"
                default="defaultValue"
                foreignKey="foreignTableName.columnName onDeleteAction"/>
   </table>
 </database>
 
About the attributes:

Parameters:
in - The xml-encoded table specs.
Returns:
TableSpec objects.
Throws:
java.io.IOException - if an error occurs while parsing.

getName

public java.lang.String getName()
Gets the name of the table.

Returns:
The name.

getPrimaryColumnName

public java.lang.String getPrimaryColumnName()
Gets the name of the primary key column.

Returns:
The name.

getType

public java.lang.String getType()
Gets the type of the table.

Returns:
The name.

columnSpecIterator

public java.util.Iterator<ColumnSpec> columnSpecIterator()
Gets an iterator over the columns.

Returns:
An Iterator over ColumnSpec objects.