com.healthmarketscience.jackcess
Class IndexData

java.lang.Object
  extended by com.healthmarketscience.jackcess.IndexData
Direct Known Subclasses:
BigIndexData, SimpleIndexData

public abstract class IndexData
extends Object

Access table index data. This is the actual data which backs a logical Index, where one or more logical indexes can be backed by the same index data.

Author:
Tim McCune

Nested Class Summary
static class IndexData.ColumnDescriptor
          Information about the columns in an index.
static class IndexData.Entry
          A single leaf entry in an index (points to a single row)
 class IndexData.EntryCursor
          Utility class to traverse the entries in the Index.
static class IndexData.EntryType
          type attributes for Entries which simplify comparisons
 
Field Summary
static IndexData.Entry FIRST_ENTRY
          special entry which is less than any other entry
static IndexData.Entry LAST_ENTRY
          special entry which is greater than any other entry
static Object MAX_VALUE
          special object which will always be greater than any other value, when searching for an index entry range in a multi-value index
static Object MIN_VALUE
          special object which will always be greater than any other value, when searching for an index entry range in a multi-value index
 
Method Summary
 void addRow(Object[] row, RowId rowId)
          Adds a row to this index
 Object[] constructIndexRow(Map<String,?> row)
          Constructs an array of values appropriate for this index from the given column values.
 Object[] constructIndexRow(String colName, Object value)
          Constructs an array of values appropriate for this index from the given column value.
 Object[] constructIndexRowFromEntry(Object... values)
          Constructs an array of values appropriate for this index from the given column values, expected to match the columns for this index.
static IndexData create(Table table, ByteBuffer tableBuffer, int number, JetFormat format)
          Creates an IndexData appropriate for the given table, using information from the given table definition buffer.
 IndexData.EntryCursor cursor()
          Gets a new cursor for this index.
 IndexData.EntryCursor cursor(Object[] startRow, boolean startInclusive, Object[] endRow, boolean endInclusive)
          Gets a new cursor for this index, narrowed to the range defined by the given startRow and endRow.
 void deleteRow(Object[] row, RowId rowId)
          Removes a row from this index
 List<IndexData.ColumnDescriptor> getColumns()
          Returns the Columns for this index (unmodifiable)
 JetFormat getFormat()
           
 int getIndexDataNumber()
           
 List<Index> getIndexes()
           
 byte getIndexFlags()
           
 int getOwnedPageCount()
          Returns the number of database pages owned by this index data.
 PageChannel getPageChannel()
           
 Index getPrimaryIndex()
           
 Table getTable()
           
 int getUniqueEntryCount()
           
 int getUniqueEntryCountOffset()
           
 void initialize()
          Forces initialization of this index (actual parsing of index pages).
 boolean isInitialized()
          Whether or not the complete index state has been read.
 boolean isUnique()
          Whether or not index entries must be unique.
 void read(ByteBuffer tableBuffer, List<Column> availableColumns)
          Read the rest of the index info from a tableBuffer
 boolean shouldIgnoreNulls()
          Whether or not null values are actually recorded in the index.
 String toString()
           
 void update()
          Writes the current index state to the database.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FIRST_ENTRY

public static final IndexData.Entry FIRST_ENTRY
special entry which is less than any other entry


LAST_ENTRY

public static final IndexData.Entry LAST_ENTRY
special entry which is greater than any other entry


MAX_VALUE

public static final Object MAX_VALUE
special object which will always be greater than any other value, when searching for an index entry range in a multi-value index


MIN_VALUE

public static final Object MIN_VALUE
special object which will always be greater than any other value, when searching for an index entry range in a multi-value index

Method Detail

create

public static IndexData create(Table table,
                               ByteBuffer tableBuffer,
                               int number,
                               JetFormat format)
                        throws IOException
Creates an IndexData appropriate for the given table, using information from the given table definition buffer.

Throws:
IOException

getTable

public Table getTable()

getFormat

public JetFormat getFormat()

getPageChannel

public PageChannel getPageChannel()

getPrimaryIndex

public Index getPrimaryIndex()
Returns:
the "main" logical index which is backed by this data.

getIndexes

public List<Index> getIndexes()
Returns:
All of the Indexes backed by this data (unmodifiable List)

getIndexFlags

public byte getIndexFlags()

getIndexDataNumber

public int getIndexDataNumber()

getUniqueEntryCount

public int getUniqueEntryCount()

getUniqueEntryCountOffset

public int getUniqueEntryCountOffset()

shouldIgnoreNulls

public boolean shouldIgnoreNulls()
Whether or not null values are actually recorded in the index.


isUnique

public boolean isUnique()
Whether or not index entries must be unique.

Some notes about uniqueness:


getColumns

public List<IndexData.ColumnDescriptor> getColumns()
Returns the Columns for this index (unmodifiable)


isInitialized

public boolean isInitialized()
Whether or not the complete index state has been read.


getOwnedPageCount

public int getOwnedPageCount()
Returns the number of database pages owned by this index data.

Usage:
Intermediate: This method requires moderate API knowledge.

initialize

public void initialize()
                throws IOException
Forces initialization of this index (actual parsing of index pages). normally, the index will not be initialized until the entries are actually needed.

Throws:
IOException

update

public void update()
            throws IOException
Writes the current index state to the database.

Forces index initialization.

Throws:
IOException

read

public void read(ByteBuffer tableBuffer,
                 List<Column> availableColumns)
          throws IOException
Read the rest of the index info from a tableBuffer

Parameters:
tableBuffer - table definition buffer to read from initial info
availableColumns - Columns that this index may use
Throws:
IOException

addRow

public void addRow(Object[] row,
                   RowId rowId)
            throws IOException
Adds a row to this index

Forces index initialization.

Parameters:
row - Row to add
rowId - rowId of the row to be added
Throws:
IOException

deleteRow

public void deleteRow(Object[] row,
                      RowId rowId)
               throws IOException
Removes a row from this index

Forces index initialization.

Parameters:
row - Row to remove
rowId - rowId of the row to be removed
Throws:
IOException

cursor

public IndexData.EntryCursor cursor()
                             throws IOException
Gets a new cursor for this index.

Forces index initialization.

Throws:
IOException

cursor

public IndexData.EntryCursor cursor(Object[] startRow,
                                    boolean startInclusive,
                                    Object[] endRow,
                                    boolean endInclusive)
                             throws IOException
Gets a new cursor for this index, narrowed to the range defined by the given startRow and endRow.

Forces index initialization.

Parameters:
startRow - the first row of data for the cursor, or null for the first entry
startInclusive - whether or not startRow is inclusive or exclusive
endRow - the last row of data for the cursor, or null for the last entry
endInclusive - whether or not endRow is inclusive or exclusive
Throws:
IOException

constructIndexRowFromEntry

public Object[] constructIndexRowFromEntry(Object... values)
Constructs an array of values appropriate for this index from the given column values, expected to match the columns for this index.

Returns:
the appropriate sparse array of data
Throws:
IllegalArgumentException - if the wrong number of values are provided

constructIndexRow

public Object[] constructIndexRow(String colName,
                                  Object value)
Constructs an array of values appropriate for this index from the given column value.

Returns:
the appropriate sparse array of data or null if not all columns for this index were provided

constructIndexRow

public Object[] constructIndexRow(Map<String,?> row)
Constructs an array of values appropriate for this index from the given column values.

Returns:
the appropriate sparse array of data or null if not all columns for this index were provided

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2005-2013 Health Market Science. All Rights Reserved.