Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

org.objectweb.cjdbc.common.sql.schema.DatabaseTable Class Reference

List of all members.

Public Member Functions

 DatabaseTable (String name)
 DatabaseTable (String name, int nbOfColumns)
String getName ()
void addColumn (DatabaseColumn column)
void remove (String columnName)
void remove (DatabaseColumn column)
void mergeColumns (DatabaseTable table) throws SQLException
ArrayList getColumns ()
ArrayList getUniqueColumns ()
DatabaseColumn getColumn (String columnName)
DatabaseColumn getColumn (String columnName, boolean isCaseSensitive)
boolean equals (Object other)
boolean equalsIgnoreType (Object other)
String getXml ()

Detailed Description

A DatabaseTable represents a database table ! It is just an array of TableColumns objects.

Keep it mind that ArrayList is not synchronized...

Author:
Emmanuel Cecchet

Mathieu Peltier

Sara Bouchenak

Version:
1.0

Definition at line 45 of file DatabaseTable.java.


Constructor & Destructor Documentation

org.objectweb.cjdbc.common.sql.schema.DatabaseTable.DatabaseTable String  name  ) 
 

Creates a new DatabaseTable instance.

Parameters:
name table name

Definition at line 58 of file DatabaseTable.java.

00059   {
00060     this(name, new ArrayList());
00061   }

org.objectweb.cjdbc.common.sql.schema.DatabaseTable.DatabaseTable String  name,
int  nbOfColumns
 

Creates a new DatabaseTable instance.

Parameters:
name table name
nbOfColumns number of columns

Definition at line 69 of file DatabaseTable.java.

00070   {
00071     this(name, new ArrayList(nbOfColumns));
00072   }


Member Function Documentation

void org.objectweb.cjdbc.common.sql.schema.DatabaseTable.addColumn DatabaseColumn  column  ) 
 

Adds a DatabaseColumn object to this table.

Warning! The underlying ArrayList is not synchronized.

Parameters:
column a DatabaseColumn value

Definition at line 106 of file DatabaseTable.java.

Referenced by org.objectweb.cjdbc.common.sql.schema.DatabaseTable.mergeColumns().

00107   {
00108     columns.add(column);
00109   }

boolean org.objectweb.cjdbc.common.sql.schema.DatabaseTable.equals Object  other  ) 
 

Two DatabaseColumn are considered equal if they have the same name and the same columns.

Parameters:
other the object to compare with
Returns:
true if the tables are equal

Definition at line 259 of file DatabaseTable.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumns(), and org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getName().

Referenced by org.objectweb.cjdbc.common.sql.schema.AliasedDatabaseTable.equals(), and org.objectweb.cjdbc.common.sql.schema.DatabaseTable.equalsIgnoreType().

00260   {
00261     if ((other == null) || !(other instanceof DatabaseTable))
00262       return false;
00263 
00264     DatabaseTable t = (DatabaseTable) other;
00265     return (t.getName().equals(name)) && (t.getColumns().equals(columns));
00266   }

boolean org.objectweb.cjdbc.common.sql.schema.DatabaseTable.equalsIgnoreType Object  other  ) 
 

This function is the same as equals but ignores the column type.

Parameters:
other the object to compare with
Returns:
true if the table are equal ignoring the columns type
See also:
equals(Object)

Definition at line 276 of file DatabaseTable.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseTable.equals(), org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.equalsIgnoreType(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumn(), org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.getName(), and org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getName().

Referenced by org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.isCompatibleSubset(), and org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.isCompatibleWith().

00277   {
00278     if ((other == null) || !(other instanceof DatabaseTable))
00279       return false;
00280 
00281     DatabaseTable t = (DatabaseTable) other;
00282     if (!t.getName().equals(name))
00283       return false;
00284 
00285     DatabaseColumn c1, c2;
00286     Iterator iter = columns.iterator();
00287     while (iter.hasNext())
00288     {
00289       c1 = (DatabaseColumn) iter.next();
00290       c2 = t.getColumn(c1.getName());
00291 
00292       if (!c1.equalsIgnoreType(c2))
00293         return false; // Not compatible
00294     }
00295     return true;
00296   }

DatabaseColumn org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumn String  columnName,
boolean  isCaseSensitive
 

Returns the DatabaseColumn object matching the given column name or null if not found (the case can be enforced).

Parameters:
columnName column name to look for
isCaseSensitive true if name matching must be case sensitive
Returns:
a DatabaseColumn value or null

Definition at line 236 of file DatabaseTable.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumn(), and org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.getName().

00237   {
00238     if (!isCaseSensitive)
00239       return getColumn(columnName);
00240 
00241     DatabaseColumn c;
00242     for (Iterator i = columns.iterator(); i.hasNext();)
00243     {
00244       c = (DatabaseColumn) i.next();
00245       if (columnName.equals(c.getName()))
00246         return c;
00247 
00248     }
00249     return null;
00250   }

DatabaseColumn org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumn String  columnName  ) 
 

Returns the DatabaseColumn object matching the given column name or null if not found (the case is ignored).

Parameters:
columnName column name to look for
Returns:
a DatabaseColumn value or null

Definition at line 215 of file DatabaseTable.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.getName().

Referenced by org.objectweb.cjdbc.common.sql.schema.DatabaseTable.equalsIgnoreType(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumn(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.mergeColumns(), org.objectweb.cjdbc.common.sql.UpdateRequest.parse(), org.objectweb.cjdbc.common.sql.InsertRequest.parse(), and org.objectweb.cjdbc.common.sql.schema.DatabaseTable.remove().

00216   {
00217     DatabaseColumn c;
00218     for (Iterator i = columns.iterator(); i.hasNext();)
00219     {
00220       c = (DatabaseColumn) i.next();
00221       if (columnName.equalsIgnoreCase(c.getName()))
00222         return c;
00223 
00224     }
00225     return null;
00226   }

ArrayList org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumns  ) 
 

Returns a list of DatabaseColumn objects describing the columns of this table.

Warning! The underlying ArrayList is not synchronized.

Returns:
an ArrayList of DatabaseColumn

Definition at line 179 of file DatabaseTable.java.

Referenced by org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.CacheDatabaseTable(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.equals(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getColumns(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getPrimaryKeys(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.mergeColumns(), org.objectweb.cjdbc.common.sql.UpdateRequest.parse(), and org.objectweb.cjdbc.common.sql.InsertRequest.parse().

00180   {
00181     return columns;
00182   }

String org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getName  ) 
 

Gets the name of the table.

Returns:
the table name

Definition at line 94 of file DatabaseTable.java.

Referenced by org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.CacheDatabaseTable(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.equals(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.equalsIgnoreType(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getColumns(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getPrimaryKeys(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTable(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getTablePrivileges(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getTables(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.hasTable(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.isCompatibleSubset(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.isCompatibleWith(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.mergeSchema(), org.objectweb.cjdbc.common.sql.UpdateRequest.parse(), org.objectweb.cjdbc.common.sql.InsertRequest.parse(), org.objectweb.cjdbc.common.sql.DropRequest.parse(), and org.objectweb.cjdbc.controller.scheduler.schema.SchedulerDatabaseTable.SchedulerDatabaseTable().

00095   {
00096     return name;
00097   }

ArrayList org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getUniqueColumns  ) 
 

Returns a list of DatabaseColumn objects representing the unique columns of this table.

Warning! The underlying ArrayList is not synchronized.

Returns:
an ArrayList of DatabaseColumn objects

Definition at line 193 of file DatabaseTable.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.isUnique.

00194   {
00195     ArrayList cols = new ArrayList();
00196     Iterator i;
00197     DatabaseColumn c;
00198 
00199     for (i = columns.iterator(); i.hasNext();)
00200     {
00201       c = (DatabaseColumn) i.next();
00202       if (c.isUnique())
00203         cols.add(c);
00204     }
00205     return cols;
00206   }

String org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getXml  ) 
 

Get xml information about this table.

Returns:
xml formatted information on this database table.

Definition at line 303 of file DatabaseTable.java.

00304   {
00305     StringBuffer info = new StringBuffer();
00306     info.append(
00307       "<"
00308         + DatabasesXmlTags.ELT_DatabaseTable
00309         + " "
00310         + DatabasesXmlTags.ATT_tableName
00311         + "=\""
00312         + name
00313         + "\" "
00314         + DatabasesXmlTags.ATT_nbOfColumns
00315         + "=\""
00316         + columns.size()
00317         + "\">");
00318     for (int i = 0; i < columns.size(); i++)
00319       info.append(((DatabaseColumn) columns.get(i)).getXml());
00320     info.append("</" + DatabasesXmlTags.ELT_DatabaseTable + ">");
00321     return info.toString();
00322   }

void org.objectweb.cjdbc.common.sql.schema.DatabaseTable.mergeColumns DatabaseTable  table  )  throws SQLException
 

Merges this table with the given table's columns. All missing columns are added if no conflict is detected. An exception is thrown if the given table columns conflicts with this one.

Parameters:
table the table to merge
Exceptions:
SQLException if the schemas conflict

Definition at line 143 of file DatabaseTable.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseTable.addColumn(), org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.equalsIgnoreType(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumn(), and org.objectweb.cjdbc.common.sql.schema.DatabaseColumn.getName().

Referenced by org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.mergeSchema().

00144   {
00145     if (table == null)
00146       return;
00147 
00148     ArrayList otherColumns = table.getColumns();
00149     if (otherColumns == null)
00150       return;
00151 
00152     DatabaseColumn c, original;
00153     int size = otherColumns.size();
00154     for (int i = 0; i < size; i++)
00155     {
00156       c = (DatabaseColumn) otherColumns.get(i);
00157       original = getColumn(c.getName());
00158       if (original == null)
00159         addColumn(c);
00160       else
00161       {
00162         if (!original.equalsIgnoreType(c))
00163           throw new SQLException(
00164             "Unable to merge table ["+table.getName()+"]: column '"
00165               + c.getName()
00166               + "' definition mismatch");
00167       }
00168     }
00169   }

void org.objectweb.cjdbc.common.sql.schema.DatabaseTable.remove DatabaseColumn  column  ) 
 

Drops a DatabaseColumn object from this table.

Warning! The underlying ArrayList is not synchronized.

Parameters:
column a DatabaseColumn value

Definition at line 130 of file DatabaseTable.java.

00131   {
00132     columns.remove(column);
00133   }

void org.objectweb.cjdbc.common.sql.schema.DatabaseTable.remove String  columnName  ) 
 

Drops a DatabaseColumn object from this table.

Warning! The underlying ArrayList is not synchronized.

Parameters:
columnName a String that maps to a DatabaseColumn value

Definition at line 118 of file DatabaseTable.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumn().

00119   {
00120     columns.remove(getColumn(columnName));
00121   }


The documentation for this class was generated from the following file:
Generated on Mon Apr 11 22:02:13 2005 for C-JDBC by  doxygen 1.3.9.1