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

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

List of all members.

Public Member Functions

 DatabaseSchema ()
 DatabaseSchema (int nbOfTables)
 DatabaseSchema (DatabaseSchema schema)
void addTable (DatabaseTable table)
void addProcedure (DatabaseProcedure procedure)
void removeTable (DatabaseTable table)
void removeProcedure (DatabaseProcedure procedure)
void mergeSchema (DatabaseSchema databaseSchema) throws SQLException
ArrayList getTables ()
ArrayList getProcedures ()
DatabaseTable getTable (String tableName)
DatabaseProcedure getProcedure (String procedureName)
DatabaseTable getTable (String tableName, boolean isCaseSensitive)
boolean hasTable (String tableName)
boolean hasProcedure (String procedureName)
boolean isCompatibleSubset (DatabaseSchema other)
boolean isCompatibleWith (DatabaseSchema other)
boolean equals (Object other)
String getXml ()

Detailed Description

A DatabaseSchema describes all the tables and columns of a database.

Author:
Emmanuel Cecchet

Nicolas Modrzyk

Version:
1.0

Definition at line 41 of file DatabaseSchema.java.


Constructor & Destructor Documentation

org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.DatabaseSchema  ) 
 

Creates a new DatabaseSchema instance.

Definition at line 51 of file DatabaseSchema.java.

00052   {
00053     tables = new ArrayList();
00054     procedures = new ArrayList();
00055   }

org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.DatabaseSchema int  nbOfTables  ) 
 

Creates a new DatabaseSchema instance with a specified number of tables.

Parameters:
nbOfTables an int value

Definition at line 63 of file DatabaseSchema.java.

00064   {
00065     tables = new ArrayList(nbOfTables);
00066     procedures = new ArrayList();
00067   }

org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.DatabaseSchema DatabaseSchema  schema  ) 
 

Creates a new DatabaseSchema instance from an existing database schema (the schema is cloned).

Parameters:
schema the existing database schema

Definition at line 75 of file DatabaseSchema.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getProcedures(), and org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTables().

00076   {
00077     if (schema == null)
00078       throw new IllegalArgumentException(
00079           "Illegal null database schema in DatabaseSchema(DatabaseSchema) constructor");
00080 
00081     tables = new ArrayList(schema.getTables());
00082     procedures = new ArrayList(schema.getProcedures());
00083   }


Member Function Documentation

void org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.addProcedure DatabaseProcedure  procedure  ) 
 

Adds a DatabaseProcedure describing a procedure of the database.

Parameters:
procedure the procedure to add

Definition at line 104 of file DatabaseSchema.java.

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

00105   {
00106     if (procedure == null)
00107       throw new IllegalArgumentException(
00108           "Illegal null database table in addTable(DatabaseTable) method");
00109     procedures.add(procedure);
00110   }

void org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.addTable DatabaseTable  table  ) 
 

Adds a DatabaseTable describing a table of the database.

Parameters:
table the table to add

Definition at line 90 of file DatabaseSchema.java.

Referenced by org.objectweb.cjdbc.common.sql.schema.DatabaseSQLMetaData.createDatabaseSchema(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.executeTask(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.executeTask(), and org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.mergeSchema().

00091   {
00092     if (table == null)
00093       throw new IllegalArgumentException(
00094           "Illegal null database table in addTable(DatabaseTable) method");
00095     tables.add(table);
00096   }

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

Two DatabaseSchema are considered equal if they have the same tables and the same procedures.

Parameters:
other the object to compare with
Returns:
true if the schemas are equals

Definition at line 410 of file DatabaseSchema.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.equals(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getProcedures(), and org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTables().

Referenced by org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.equals().

00411   {
00412     boolean equal = true;
00413     if ((other == null) || !(other instanceof DatabaseSchema))
00414       return false;
00415     if (tables == null)
00416       equal &= ((DatabaseSchema) other).getTables() == null;
00417     else
00418       equal &= tables.equals(((DatabaseSchema) other).getTables());
00419     if (procedures == null)
00420       equal &= ((DatabaseSchema) other).getProcedures() == null;
00421     else
00422       equal &= procedures.equals(((DatabaseSchema) other).getProcedures());
00423     return equal;
00424   }

DatabaseProcedure org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getProcedure String  procedureName  ) 
 

Returns the DatabaseProcedure object matching the given procedure name or null if not found.

Parameters:
procedureName the procedure name to look for
Returns:
a DatabaseProcedure value or null

Definition at line 238 of file DatabaseSchema.java.

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

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

00239   {
00240     if (procedureName == null)
00241       return null;
00242 
00243     DatabaseProcedure t;
00244     int size = procedures.size();
00245     for (int i = 0; i < size; i++)
00246     {
00247       t = (DatabaseProcedure) procedures.get(i);
00248       if (procedureName.compareTo(t.getName()) == 0)
00249         return t;
00250     }
00251     return null;
00252   }

ArrayList org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getProcedures  ) 
 

Returns an ArrayList of DatabaseProcedure objects describing the database.

Returns:
an ArrayList of DatabaseProcedure

Definition at line 203 of file DatabaseSchema.java.

Referenced by org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.DatabaseSchema(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.equals(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getProcedureColumns(), and org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getProcedures().

00204   {
00205     return procedures;
00206   }

DatabaseTable org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTable String  tableName,
boolean  isCaseSensitive
 

Returns the DatabaseTable object matching the given table name or null if not found. An extra boolean indicates if table name matching is case sensitive or not.

Parameters:
tableName the table name to look for
isCaseSensitive true if name matching must be case sensitive
Returns:
a DatabaseTable value or null

Definition at line 263 of file DatabaseSchema.java.

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

00264   {
00265     if (isCaseSensitive)
00266       return getTable(tableName);
00267 
00268     if (tableName == null)
00269       return null;
00270 
00271     DatabaseTable t;
00272     int size = tables.size();
00273     for (int i = 0; i < size; i++)
00274     {
00275       t = (DatabaseTable) tables.get(i);
00276       if (tableName.equalsIgnoreCase(t.getName()))
00277         return t;
00278     }
00279     return null;
00280   }

DatabaseTable org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTable String  tableName  ) 
 

Returns the DatabaseTable object matching the given table name or null if not found.

Parameters:
tableName the table name to look for
Returns:
a DatabaseTable value or null

Definition at line 215 of file DatabaseSchema.java.

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

Referenced by org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.executeTask(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.executeTask(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTable(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.isCompatibleSubset(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.isCompatibleWith(), and org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.mergeSchema().

00216   {
00217     if (tableName == null)
00218       return null;
00219 
00220     DatabaseTable t;
00221     int size = tables.size();
00222     for (int i = 0; i < size; i++)
00223     {
00224       t = (DatabaseTable) tables.get(i);
00225       if (tableName.compareTo(t.getName()) == 0)
00226         return t;
00227     }
00228     return null;
00229   }

ArrayList org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTables  ) 
 

Returns an ArrayList of DatabaseTable objects describing the database.

Returns:
an ArrayList of DatabaseTable

Definition at line 192 of file DatabaseSchema.java.

Referenced by org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseSchema.CacheDatabaseSchema(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.DatabaseSchema(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.equals(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getColumns(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getPrimaryKeys(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getTablePrivileges(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabaseDynamicMetaData.getTables(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseSchema.mergeSchema(), and org.objectweb.cjdbc.controller.scheduler.schema.SchedulerDatabaseSchema.SchedulerDatabaseSchema().

00193   {
00194     return tables;
00195   }

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

Get xml information about this schema.

Returns:
xml formatted information on this database schema.

Definition at line 431 of file DatabaseSchema.java.

00432   {
00433     StringBuffer info = new StringBuffer();
00434     info.append("<" + DatabasesXmlTags.ELT_DatabaseStaticSchema + ">");
00435     for (int i = 0; i < procedures.size(); i++)
00436       info.append(((DatabaseProcedure) procedures.get(i)).getXml());
00437     for (int i = 0; i < tables.size(); i++)
00438       info.append(((DatabaseTable) tables.get(i)).getXml());
00439     info.append("</" + DatabasesXmlTags.ELT_DatabaseStaticSchema + ">");
00440     return info.toString();
00441   }

boolean org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.hasProcedure String  procedureName  ) 
 

Returns true if the given ProcedureName is found in this schema.

Parameters:
procedureName the name of the procedure you are looking for
Returns:
true if the procedure has been found

Definition at line 312 of file DatabaseSchema.java.

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

00313   {
00314     if (procedureName == null)
00315       return false;
00316 
00317     DatabaseProcedure t;
00318     int size = procedures.size();
00319     for (int i = 0; i < size; i++)
00320     {
00321       t = (DatabaseProcedure) procedures.get(i);
00322       if (procedureName.equals(t.getName()))
00323         return true;
00324     }
00325     return false;
00326   }

boolean org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.hasTable String  tableName  ) 
 

Returns true if the given TableName is found in this schema.

Parameters:
tableName the name of the table you are looking for
Returns:
true if the table has been found

Definition at line 289 of file DatabaseSchema.java.

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

Referenced by org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getDatabaseSchemaFromActiveBackendsAndRefreshDatabaseProductNames().

00290   {
00291     if (tableName == null)
00292       return false;
00293 
00294     DatabaseTable t;
00295     int size = tables.size();
00296     for (int i = 0; i < size; i++)
00297     {
00298       t = (DatabaseTable) tables.get(i);
00299       if (tableName.equals(t.getName()))
00300         return true;
00301     }
00302     return false;
00303   }

boolean org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.isCompatibleSubset DatabaseSchema  other  ) 
 

Checks if this DatabaseSchema is a compatible subset of a given schema. It means that all tables in this schema must be present with the same definition in the other schema.

Parameters:
other the object to compare with
Returns:
true if the two schemas are compatible

Definition at line 336 of file DatabaseSchema.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.equals(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.equalsIgnoreType(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getProcedure(), and org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTable().

00337   {
00338     if (other == null)
00339       return false;
00340 
00341     DatabaseTable table, otherTable;
00342     int size = tables.size();
00343     for (int i = 0; i < size; i++)
00344     {
00345       // Parse all tables
00346       table = (DatabaseTable) tables.get(i);
00347       otherTable = other.getTable(table.getName());
00348       if (otherTable == null)
00349         return false; // Not present
00350       else if (!table.equalsIgnoreType(otherTable))
00351         return false; // Not compatible
00352     }
00353     DatabaseProcedure procedure, otherProcedure;
00354     int sizep = procedures.size();
00355     for (int i = 0; i < sizep; i++)
00356     {
00357       // Parse all procedures
00358       procedure = (DatabaseProcedure) procedures.get(i);
00359       otherProcedure = other.getProcedure(procedure.getName());
00360       if (otherProcedure == null)
00361         return false; // Not present
00362       else if (!procedure.equals(otherProcedure))
00363         return false; // Not compatible
00364     }
00365     return true; // Ok, all tables passed the test
00366   }

boolean org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.isCompatibleWith DatabaseSchema  other  ) 
 

Checks if this DatabaseSchema is compatible with the given schema. It means that all tables in this schema that are common with the other schema must be identical.

Parameters:
other the object to compare with
Returns:
true if the two schemas are compatible

Definition at line 376 of file DatabaseSchema.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.equals(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.equalsIgnoreType(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getProcedure(), and org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTable().

00377   {
00378     DatabaseTable table, otherTable;
00379     int size = tables.size();
00380     for (int i = 0; i < size; i++)
00381     { // Parse all tables
00382       table = (DatabaseTable) tables.get(i);
00383       otherTable = other.getTable(table.getName());
00384       if (otherTable == null)
00385         continue; // Not present in other schema
00386       else if (!table.equalsIgnoreType(otherTable))
00387         return false; // Not compatible
00388     }
00389     DatabaseProcedure procedure, otherProcedure;
00390     int sizep = procedures.size();
00391     for (int i = 0; i < sizep; i++)
00392     { // Parse all procedures
00393       procedure = (DatabaseProcedure) procedures.get(i);
00394       otherProcedure = other.getProcedure(procedure.getName());
00395       if (otherProcedure == null)
00396         continue; // Not present
00397       else if (!procedure.equals(otherProcedure))
00398         return false; // Not compatible
00399     }
00400     return true; // Ok, all tables passed the test
00401   }

void org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.mergeSchema DatabaseSchema  databaseSchema  )  throws SQLException
 

Merges the given schema with the current one. All missing tables or columns are added if no conflict is detected. An exception is thrown if the given schema definition conflicts with the current one.

Parameters:
databaseSchema the schema to merge
Exceptions:
SQLException if the schemas conflict

Definition at line 147 of file DatabaseSchema.java.

References org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.addProcedure(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.addTable(), org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getName(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getProcedure(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.getTable(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.mergeColumns(), and org.objectweb.cjdbc.common.sql.schema.DatabaseProcedure.mergeParameters().

Referenced by org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getDatabaseSchemaFromActiveBackendsAndRefreshDatabaseProductNames().

00148   {
00149     if (databaseSchema == null)
00150       throw new IllegalArgumentException(
00151           "Illegal null database schema in mergeSchema(DatabaseSchema) method");
00152 
00153     ArrayList otherTables = databaseSchema.getTables();
00154     if (otherTables.size() == 0)
00155       return;
00156 
00157     DatabaseTable table, originalTable;
00158     int size = otherTables.size();
00159     for (int i = 0; i < size; i++)
00160     {
00161       table = (DatabaseTable) otherTables.get(i);
00162       originalTable = getTable(table.getName());
00163       if (originalTable == null)
00164         addTable(table);
00165       else
00166         originalTable.mergeColumns(table);
00167     }
00168 
00169     ArrayList otherProcedures = databaseSchema.getProcedures();
00170     if (otherProcedures.size() == 0)
00171       return;
00172 
00173     DatabaseProcedure procedure, originalProcedure;
00174     int sizep = otherProcedures.size();
00175     for (int i = 0; i < sizep; i++)
00176     {
00177       procedure = (DatabaseProcedure) otherProcedures.get(i);
00178       originalProcedure = getProcedure(procedure.getName());
00179       if (originalProcedure == null)
00180         addProcedure(procedure);
00181       else
00182         originalProcedure.mergeParameters(procedure);
00183     }
00184   }

void org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.removeProcedure DatabaseProcedure  procedure  ) 
 

removes a DatabaseProcedure describing a procedure of the database.

Parameters:
procedure to remove

Definition at line 131 of file DatabaseSchema.java.

00132   {
00133     if (procedure == null)
00134       throw new IllegalArgumentException(
00135           "Illegal null database procedure in removeProcedure(DatabaseProcedure) method");
00136     procedures.remove(procedure);
00137   }

void org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.removeTable DatabaseTable  table  ) 
 

Removes a DatabaseTable describing a table of the database.

Parameters:
table the table to remove

Definition at line 117 of file DatabaseSchema.java.

Referenced by org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.executeTask(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.executeTask(), and org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getDatabaseSchemaFromActiveBackendsAndRefreshDatabaseProductNames().

00118   {
00119     if (table == null)
00120       throw new IllegalArgumentException(
00121           "Illegal null database table in removeTable(DatabaseTable) method");
00122     tables.remove(table);
00123   }


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