Class SchemaTable

All Implemented Interfaces:
Table, org.datanucleus.store.schema.table.Table

public class SchemaTable extends TableImpl
Class defining DataNucleus schema definition tables. Represents a table in the datastore storing the class and table mappings. This table is used when restarting a DataNucleus system so that it is 'aware' of what classes were supported the previous time this datastore was used. It uses this information to pre-populate the RDBMSManager with the classes stored in this table. The table names are not used as such, other than as a record of what table a class maps to - because it goes off and finds the MetaData for the class which, with the DataNucleus naming scheme, defines the table name anyway.
  • Field Details

  • Constructor Details

    • SchemaTable

      public SchemaTable(RDBMSStoreManager storeMgr, String tableName)
      Constructor.
      Parameters:
      storeMgr - The RDBMSManager for this datastore
      tableName - Name of the starter table (optional, uses NUCLEUS_TABLES when this is null)
  • Method Details

    • initialize

      public void initialize(org.datanucleus.ClassLoaderResolver clr)
      Method to initialise the table.
      Parameters:
      clr - The ClassLoaderResolver
    • getIdMapping

      public JavaTypeMapping getIdMapping()
      Accessor for a mapping for the ID (persistable) for this table.
      Returns:
      The (persistable) ID mapping.
    • getAllClasses

      public Set<org.datanucleus.store.StoreData> getAllClasses(org.datanucleus.store.connection.ManagedConnection conn) throws SQLException
      Accessor for the classes already supported by this Schema Table.
      Parameters:
      conn - Connection for this datastore.
      Returns:
      The HashSet of class names (StoreData)
      Throws:
      SQLException - Thrown when an error occurs in the process.
    • addClass

      public void addClass(RDBMSStoreData data, org.datanucleus.store.connection.ManagedConnection conn) throws SQLException
      Method to insert a row in the SchemaTable. This is called when DataNucleus is now supporting a new class (and hence DB table).
      Parameters:
      data - Data for the class
      conn - Connection to the datastore
      Throws:
      SQLException - Thrown when an error occurs inserting the schema.
    • hasClass

      private boolean hasClass(org.datanucleus.store.StoreData data, org.datanucleus.store.connection.ManagedConnection conn) throws SQLException
      Method to verify the a class is already stored in the table.
      Parameters:
      data - Data for the class
      conn - Connection to the datastore
      Returns:
      if the SchemaTable already has the class
      Throws:
      SQLException - Thrown when an error occurs inserting the schema.
    • deleteClass

      public void deleteClass(String class_name, org.datanucleus.store.connection.ManagedConnection conn) throws SQLException
      Method to delete a class from the SchemaTable. This is called when DataNucleus is required to clean out support for a particular class.
      Parameters:
      class_name - Name of class to delete
      conn - Connection to the datastore
      Throws:
      SQLException - Thrown when an error occurs deleting the schema.
    • deleteAllClasses

      public void deleteAllClasses(org.datanucleus.store.connection.ManagedConnection conn) throws SQLException
      Method to delete all classes from the SchemaTable. This is called when DataNucleus is required to clean out its supported classes (and hence DB table).
      Parameters:
      conn - Connection to the datastore
      Throws:
      SQLException - Thrown when an error occurs deleting the schema.
    • tableExists

      private boolean tableExists(Connection conn) throws SQLException
      Convenience existence checker. This shouldn't be needed since exists already does this!
      Parameters:
      conn - Connection to use
      Returns:
      Whether it has been created
      Throws:
      SQLException
    • getMemberMapping

      public JavaTypeMapping getMemberMapping(org.datanucleus.metadata.AbstractMemberMetaData mmd)
      Accessor the for the mapping for a field/property stored in this table.
      Parameters:
      mmd - MetaData for the field whose mapping we want
      Returns:
      The mapping