Oracle Fusion Middleware Java API Reference for Oracle Extension SDK
12c (12.1.2)

E23196-02

Package oracle.javatools.db

Contains a metadata API for describing database objects, and retrieving them from a provider of database objects - for example a database.

See: Description

Package oracle.javatools.db Description

Contains a metadata API for describing database objects, and retrieving them from a provider of database objects - for example a database. Facilities are provided for creating metadata objects from an existing database connection, as well as for generating SQL to create new objects based on in memory or offline-persisted metadata.

Code Examples

Using a DBObjectProvider (provider)

Get a specific Schema

  Schema mySchema = provider.getSchema( "MYSCHEMA" );

Listing available Tables of a Schema

   String[] tabNames = provider.listObjects( Table.TYPE, mySchema );
 

Listing table beginning with 'A' in a Schema

   String[] tabNames = provider.listObjects( Table.TYPE, mySchema, 'A%' );
 

Get All Tables and Views in a Schema

   SchemaObject[] tabsAndViews = provider.listObjects(
                                   new String[]{ Table.TYPE, View.TYPE },
                                   mySchema );
 

Getting a Specific Object

   Table fred = (Table)provider.getObject( Table.TYPE, mySchema, "EMP" );
 

Updating Objects

Add a Column to a Table

  Table fred = (Table)provider.getObject( Table.TYPE, mySchema, "FRED" );

// make a fresh copy of fred and setup temporary ids
  Table newFred = fred.copyTo( null, true );

// add a new column
  Column col = new Column( "NEW_COL" );
  DataType dt = provider.getDataType( "NUMBER" );
  col.setDataTypeUsage( dt.createDefaultUsage() );
  col.setDefault( new Integer( 4 ) );
  newFred.addColumn( col );

// update the provider
  provider.updateObject( fred, newFred );

Listening for Updates

The database API has its own event/listener model. This is used to listen for new/deleted schemas, new/delete objects and changes to existing objects. The message are all concerned with a SchemaObject not a DBObject (the distinction being a SchemaObject is a "top level" object such as a Table or View, a DBObject that isn't a SchemaObject is a child object such as a Column. Notifications of updates to a Column will come through listening to the owning Table.)

New or Deleted Objects

Attach an oracle.javatools.db.DBObjectProviderListener to your provider.

Changes to an Existing Object

Attach a oracle.javatools.db.SchemaObjectListener to the given object.

  Table fred = (Table)provider.getObject( Table.TYPE, mySchema, "FRED" );
  fred.addObjectListener( myListener );

then when a the new column is added to fred by the above code the listener's update method is called:

  public void schemaObjectUpdated(DBObjectChange change)
{ DBObject changed = change.getDBObject(); if( change.hasNameChanged() ) { // the table has change named ... we must update our own information. } for( final obj : change.getOwnedObjectsAdded() ) { Object obj = newKids.next(); if( obj instanceof Column ) { String name = ( (Column)obj ).getName(); // name is "NEW_COL"!! } } }
Oracle Fusion Middleware Java API Reference for Oracle Extension SDK
12c (12.1.2)

E23196-02

Copyright © 1997, 2013, Oracle. All rights reserved.