Package db

Class Schema


  • public class Schema
    extends java.lang.Object
    Class for definining the columns in a Ghidra Database table.
    • Constructor Summary

      Constructors 
      ChangeConstructor Description
      Schema​(int version, Field keyField, java.lang.String keyName, Field[] fields, java.lang.String[] fieldNames)
      Construct a new Schema.
      Schema​(int version, Field keyField, java.lang.String keyName, Field[] fields, java.lang.String[] fieldNames, int[] sparseColumns)
      Construct a new Schema.
      Schema​(int version, java.lang.Class<?> keyClass, java.lang.String keyName, java.lang.Class<?>[] fieldClasses, java.lang.String[] fieldNames)
      Construct a new Schema.
      Schema​(int version, java.lang.Class<?> keyClass, java.lang.String keyName, java.lang.Class<?>[] fieldClasses, java.lang.String[] fieldNames, int[] sparseColumns)
      Construct a new Schema.
      Schema​(int version, java.lang.String keyName, Field[] fields, java.lang.String[] fieldNames)
      Construct a new Schema which uses a long key.
      Schema​(int version, java.lang.String keyName, Field[] fields, java.lang.String[] fieldNames, int[] sparseColumns)
      Construct a new Schema which uses a long key.
      Schema​(int version, java.lang.String keyName, java.lang.Class<?>[] fieldClasses, java.lang.String[] fieldNames)
      Construct a new Schema which uses a long key.
      Schema​(int version, java.lang.String keyName, java.lang.Class<?>[] fieldClasses, java.lang.String[] fieldNames, int[] sparseColumns)
      Construct a new Schema which uses a long key.
    • Constructor Detail

      • Schema

        public Schema​(int version,
                      Field keyField,
                      java.lang.String keyName,
                      Field[] fields,
                      java.lang.String[] fieldNames,
                      int[] sparseColumns)
        Construct a new Schema.
        Parameters:
        version - schema version
        keyField - field associated with primary key (representative instance)
        keyName - primary key name
        fields - array of column fields (representative instances)
        fieldNames - array of column field names
        sparseColumns - column indexes corresponding to those columns which utilize sparse storage (null if no sparse columns). Valid sparse column indexes are in the range 0..127.
        Throws:
        java.lang.IllegalArgumentException - invalid parameters
      • Schema

        public Schema​(int version,
                      Field keyField,
                      java.lang.String keyName,
                      Field[] fields,
                      java.lang.String[] fieldNames)
        Construct a new Schema.
        Parameters:
        version - schema version
        keyField - field associated with primary key (representative instance)
        keyName - primary key name
        fields - array of column fields (representative instances)
        fieldNames - array of column field names
        Throws:
        java.lang.IllegalArgumentException - invalid parameters
      • Schema

        public Schema​(int version,
                      java.lang.String keyName,
                      Field[] fields,
                      java.lang.String[] fieldNames)
        Construct a new Schema which uses a long key.
        Parameters:
        version - schema version
        keyName - primary key name
        fields - array of column fields (representative instances)
        fieldNames - array of column field names
        Throws:
        java.lang.IllegalArgumentException - invalid parameters
      • Schema

        public Schema​(int version,
                      java.lang.String keyName,
                      Field[] fields,
                      java.lang.String[] fieldNames,
                      int[] sparseColumns)
        Construct a new Schema which uses a long key.
        Parameters:
        version - schema version
        keyName - primary key name
        fields - array of column fields (representative instances)
        fieldNames - array of column field names
        sparseColumns - column indexes corresponding to those columns which utilize sparse storage (null if no sparse columns). Valid sparse column indexes are in the range 0..127.
        Throws:
        java.lang.IllegalArgumentException - invalid parameters
      • Schema

        public Schema​(int version,
                      java.lang.Class<?> keyClass,
                      java.lang.String keyName,
                      java.lang.Class<?>[] fieldClasses,
                      java.lang.String[] fieldNames)
        Construct a new Schema.
        Parameters:
        version - schema version
        keyClass - field class associated with primary key
        keyName - primary key name
        fieldClasses - array of column field classes
        fieldNames - array of column field names
        Throws:
        java.lang.IllegalArgumentException - invalid parameters
      • Schema

        public Schema​(int version,
                      java.lang.Class<?> keyClass,
                      java.lang.String keyName,
                      java.lang.Class<?>[] fieldClasses,
                      java.lang.String[] fieldNames,
                      int[] sparseColumns)
        Construct a new Schema.
        Parameters:
        version - schema version
        keyClass - field class associated with primary key
        keyName - primary key name
        fieldClasses - array of column field classes
        fieldNames - array of column field names
        sparseColumns - column indexes corresponding to those columns which utilize sparse storage (null if no sparse columns). Valid sparse column indexes are in the range 0..127.
        Throws:
        java.lang.IllegalArgumentException - invalid parameters
      • Schema

        public Schema​(int version,
                      java.lang.String keyName,
                      java.lang.Class<?>[] fieldClasses,
                      java.lang.String[] fieldNames)
        Construct a new Schema which uses a long key.
        Parameters:
        version - schema version
        keyName - primary key name
        fieldClasses - array of column field classes
        fieldNames - array of column field names
        Throws:
        java.lang.IllegalArgumentException - invalid parameters
      • Schema

        public Schema​(int version,
                      java.lang.String keyName,
                      java.lang.Class<?>[] fieldClasses,
                      java.lang.String[] fieldNames,
                      int[] sparseColumns)
        Construct a new Schema which uses a long key.
        Parameters:
        version - schema version
        keyName - primary key name
        fieldClasses - array of column field classes
        fieldNames - array of column field names
        sparseColumns - column indexes corresponding to those columns which utilize sparse storage (null if no sparse columns). Valid sparse column indexes are in the range 0..127.
        Throws:
        java.lang.IllegalArgumentException - invalid parameters
    • Method Detail

      • hasSparseColumns NEW

        public boolean hasSparseColumns()
        Determine if schema employs sparse column storage
        Returns:
        true if schema employs sparse column storage
      • isSparseColumn NEW

        public boolean isSparseColumn​(int columnIndex)
        Determine if the specified column index has been designated as a sparse column within the associated record storage
        Parameters:
        columnIndex - column index
        Returns:
        true if designated column uses sparse storage
      • getKeyFieldType

        public Field getKeyFieldType()
        Get the Field type for the key.
        Returns:
        key Field type
      • getKeyName

        public java.lang.String getKeyName()
        Get the key name
        Returns:
        key name
      • getFields NEW

        public Field[] getFields()
        Get the list of data Field classes for this schema. The returned list is ordered consistent with the schema definition.
        Returns:
        data Field classes
      • getFieldNames

        public java.lang.String[] getFieldNames()
        Get the list of data Field names for this schema. The returned list is ordered consistent with the schema definition.
        Returns:
        data Field names
      • getFieldCount

        public int getFieldCount()
        Get the number of data Fields
        Returns:
        data Field count
      • getVersion

        public int getVersion()
        Get the schema version.
        Returns:
        schema version
      • isVariableLength

        public boolean isVariableLength()
        Returns true if records for this Schema can be of variable lengths.
        Returns:
        true if records with this Schema are variable length.
      • getFixedLength

        public int getFixedLength()
        Get length of fixed-length schema record.
        Returns:
        record length or 0 for variable length.
      • createRecord MODIFIED

        return type: Record → DBRecord
        -db.Record createRecord(long key)
        +db.DBRecord createRecord(long key)
        public DBRecord createRecord​(long key)
        Create an empty record for the specified key.
        Parameters:
        key - long key
        Returns:
        new record
      • createRecord MODIFIED

        return type: Record → DBRecord
        -db.Record createRecord(db.Field key)
        +db.DBRecord createRecord(db.Field key)
        public DBRecord createRecord​(Field key)
        Create an empty record for the specified key.
        Parameters:
        key - record key field
        Returns:
        new record
      • equals

        public boolean equals​(java.lang.Object obj)
        Compare two schemas for equality. Field names are ignored in this comparison. Instance variables such as fixedLength, isVariableLength and forceUseVariableLengthKeyNodes are also ignored.
        Overrides:
        equals in class java.lang.Object
        See Also:
        Object.equals(java.lang.Object)
      • hashCode NEW

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object