org.tmatesoft.sqljet.core.internal.table
Class SqlJetTable

java.lang.Object
  extended by org.tmatesoft.sqljet.core.internal.table.SqlJetTable
All Implemented Interfaces:
ISqlJetTable

public class SqlJetTable
extends java.lang.Object
implements ISqlJetTable

Implementation of ISqlJetTable.


Constructor Summary
SqlJetTable(SqlJetDb db, ISqlJetBtree btree, java.lang.String tableName, boolean write)
           
 
Method Summary
 void clear()
          Clear table.
 SqlJetDb getDataBase()
          Get database connection.
 ISqlJetTableDef getDefinition()
          Get table's schema definition.
 ISqlJetIndexDef getIndexDef(java.lang.String name)
          Get definition of index by name.
 java.util.Set<ISqlJetIndexDef> getIndexesDefs()
          Returns definitions of indices used in this table.
 java.util.Set<java.lang.String> getIndexesNames()
          Get table indexes names.
 java.lang.String getPrimaryKeyIndexName()
          Returns name of primary key index.
 long insert(java.lang.Object... values)
           Add new record to the table with specified values.
 long insertByFieldNames(java.util.Map<java.lang.String,java.lang.Object> values)
           Insert record by values by names of fields.
 long insertByFieldNamesOr(SqlJetConflictAction onConflict, java.util.Map<java.lang.String,java.lang.Object> values)
           Insert record by values by names of fields.
 long insertOr(SqlJetConflictAction onConflict, java.lang.Object... values)
           Add new record to the table with specified values.
 long insertWithRowId(long rowId, java.lang.Object... values)
           Inserts record at specified rowId.
 long insertWithRowIdOr(SqlJetConflictAction onConflict, long rowId, java.lang.Object... values)
           Inserts record at specified rowId.
 ISqlJetCursor lookup(java.lang.String indexName, java.lang.Object... key)
           Open cursor for records which have found by key on index.
 ISqlJetCursor open()
           Open cursor for all table records.
 ISqlJetCursor order(java.lang.String indexName)
           Open cursors which sorts table by index.
 ISqlJetCursor scope(java.lang.String indexName, java.lang.Object[] firstKey, java.lang.Object[] lastKey)
           Open cursor which restricts table to some scope of index values.
 ISqlJetCursor scope(java.lang.String indexName, SqlJetScope scope)
           Open cursor which restricts table to some scope of index values.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SqlJetTable

public SqlJetTable(SqlJetDb db,
                   ISqlJetBtree btree,
                   java.lang.String tableName,
                   boolean write)
            throws SqlJetException
Throws:
SqlJetException
Method Detail

getDataBase

public SqlJetDb getDataBase()
Description copied from interface: ISqlJetTable
Get database connection.

Specified by:
getDataBase in interface ISqlJetTable
Returns:
the database connection.

getPrimaryKeyIndexName

public java.lang.String getPrimaryKeyIndexName()
                                        throws SqlJetException
Description copied from interface: ISqlJetTable
Returns name of primary key index. For tables with INTEGER PRIMARY KEY and tables without primary key it returns null. This method could be used in ISqlJetTable.lookup(String, Object...), ISqlJetTable.scope(String, Object[], Object[]) or ISqlJetTable.order(String) methods at first parameter.

Specified by:
getPrimaryKeyIndexName in interface ISqlJetTable
Returns:
the primaryKeyIndex name of index or null if table haven't primary key or have INTEGER PRIMARY KEY.
Throws:
SqlJetException

getDefinition

public ISqlJetTableDef getDefinition()
                              throws SqlJetException
Description copied from interface: ISqlJetTable
Get table's schema definition.

Specified by:
getDefinition in interface ISqlJetTable
Throws:
SqlJetException

getIndexesDefs

public java.util.Set<ISqlJetIndexDef> getIndexesDefs()
                                              throws SqlJetException
Description copied from interface: ISqlJetTable
Returns definitions of indices used in this table.

Specified by:
getIndexesDefs in interface ISqlJetTable
Returns:
definitions of indices used in this table.
Throws:
SqlJetException

getIndexesNames

public java.util.Set<java.lang.String> getIndexesNames()
                                                throws SqlJetException
Description copied from interface: ISqlJetTable
Get table indexes names.

Specified by:
getIndexesNames in interface ISqlJetTable
Returns:
names of table indexes.
Throws:
SqlJetException

getIndexDef

public ISqlJetIndexDef getIndexDef(java.lang.String name)
                            throws SqlJetException
Description copied from interface: ISqlJetTable
Get definition of index by name.

Specified by:
getIndexDef in interface ISqlJetTable
Parameters:
name - name of index.
Returns:
definition of index.
Throws:
SqlJetException

open

public ISqlJetCursor open()
                   throws SqlJetException
Description copied from interface: ISqlJetTable

Open cursor for all table records.

Cursors can be opened only within active transaction. When transaction ends all cursors will be closed.

Specified by:
open in interface ISqlJetTable
Returns:
cursor for all table records.
Throws:
SqlJetException

lookup

public ISqlJetCursor lookup(java.lang.String indexName,
                            java.lang.Object... key)
                     throws SqlJetException
Description copied from interface: ISqlJetTable

Open cursor for records which have found by key on index.

If indexName is NULL then primary key will be used.

Cursors can be opened only within active transaction. When transaction ends all cursors will be closed.

Specified by:
lookup in interface ISqlJetTable
Parameters:
indexName - Name of the searched index. If null then primary key will be used.
key - Key for the index lookup.
Returns:
cursor for records which have found by key on index.
Throws:
SqlJetException

insert

public long insert(java.lang.Object... values)
            throws SqlJetException
Description copied from interface: ISqlJetTable

Add new record to the table with specified values.

Values must be specified by position in table structure. If table have INTEGER PRIMARY KEY column then this column could be null and in this case it value will be defined automatically.

If field has DEFAULT value then it could be passed as null. If fields have DEFAULT value and are last in table structure then they could be not specified.

All relevant indexes are updated automatically.

Returns ROWID of inserted record.

Can be used without of active transaction, in this case method begins and ends own internal transaction.

Specified by:
insert in interface ISqlJetTable
Parameters:
values - Values for the new record.
Returns:
ROWID of inserted record.
Throws:
SqlJetException

insertByFieldNames

public long insertByFieldNames(java.util.Map<java.lang.String,java.lang.Object> values)
                        throws SqlJetException
Description copied from interface: ISqlJetTable

Insert record by values by names of fields.

If table have INTEGER PRIMARY KEY column then this column could be null or even not specified and in this case it value will be defined automatically.

The ROWID of record could be passed by any of this names: ROWID, _ROWID_, OID. ROWID could be specified even if table haven't INTEGER PRIMARY KEY column.

All relevant indexes are updated automatically.

Returns ROWID of inserted record.

Can be used without of active transaction, in this case method begins and ends own internal transaction.

Specified by:
insertByFieldNames in interface ISqlJetTable
Parameters:
values - map of field names with values.
Returns:
ROWID of inserted record.
Throws:
SqlJetException

insertWithRowId

public long insertWithRowId(long rowId,
                            java.lang.Object... values)
                     throws SqlJetException
Description copied from interface: ISqlJetTable

Inserts record at specified rowId. If rowId is 0 then it generates new rowId.

If table has INTEGER PRIMARY KEY column and rowId isn't 0 then value for this field will be ignored and could be specified just as null. If table has INTEGER PRIMARY KEY column and rowId is 0 then value for this field used as rowId.

If field has DEFAULT value then it could be passed as null. If fields have DEFAULT value and are last in table structure then they could be not specified.

All relevant indexes are updated automatically.

Returns ROWID of inserted record.

Can be used without of active transaction, in this case method begins and ends own internal transaction.

Specified by:
insertWithRowId in interface ISqlJetTable
Parameters:
rowId - ROWID of record.
values - Values for the new record.
Throws:
SqlJetException

insertOr

public long insertOr(SqlJetConflictAction onConflict,
                     java.lang.Object... values)
              throws SqlJetException
Description copied from interface: ISqlJetTable

Add new record to the table with specified values.

Values must be specified by position in table structure.

If table have INTEGER PRIMARY KEY column then this column could be null and in this case it value will be defined automatically.

If field has DEFAULT value then it could be passed as null. If fields have DEFAULT value and are last in table structure then they could be not specified.

All relevant indexes are updated automatically.

Returns ROWID of inserted record.

Can be used without of active transaction, in this case method begins and ends own internal transaction.

Implements ON CONFLICT clause. See SqlJetConflictAction.

Specified by:
insertOr in interface ISqlJetTable
Parameters:
onConflict - SqlJetConflictAction.
values - Values for the new record.
Returns:
ROWID of inserted record.
Throws:
SqlJetException

insertByFieldNamesOr

public long insertByFieldNamesOr(SqlJetConflictAction onConflict,
                                 java.util.Map<java.lang.String,java.lang.Object> values)
                          throws SqlJetException
Description copied from interface: ISqlJetTable

Insert record by values by names of fields.

If table have INTEGER PRIMARY KEY column then this column could be null or even not specified and in this case it value will be defined automatically.

The ROWID of record could be passed by any of this names: ROWID, _ROWID_, OID. ROWID could be specified even if table haven't INTEGER PRIMARY KEY column.

All relevant indexes are updated automatically.

Returns ROWID of inserted record.

Can be used without of active transaction, in this case method begins and ends own internal transaction.

Implements ON CONFLICT clause. See SqlJetConflictAction.

Specified by:
insertByFieldNamesOr in interface ISqlJetTable
Parameters:
onConflict - SqlJetConflictAction.
values - Values for the new record.
Returns:
ROWID of inserted record.
Throws:
SqlJetException

insertWithRowIdOr

public long insertWithRowIdOr(SqlJetConflictAction onConflict,
                              long rowId,
                              java.lang.Object... values)
                       throws SqlJetException
Description copied from interface: ISqlJetTable

Inserts record at specified rowId.

If rowId is 0 then it generates new rowId.

If table has INTEGER PRIMARY KEY column and rowId isn't 0 then value for this field will be ignored and could be specified just as null. If table has INTEGER PRIMARY KEY column and rowId is 0 then value for this field used as rowId.

If field has DEFAULT value then it could be passed as null. If fields have DEFAULT value and are last in table structure then they could be not specified.

All relevant indexes are updated automatically.

Returns ROWID of inserted record.

Can be used without of active transaction, in this case method begins and ends own internal transaction.

Implements ON CONFLICT clause. See SqlJetConflictAction.

Specified by:
insertWithRowIdOr in interface ISqlJetTable
Parameters:
onConflict - SqlJetConflictAction.
rowId - ROWID of record.
values - Values for the new record.
Returns:
ROWID of inserted record.
Throws:
SqlJetException

order

public ISqlJetCursor order(java.lang.String indexName)
                    throws SqlJetException
Description copied from interface: ISqlJetTable

Open cursors which sorts table by index.

If indexName is NULL then primary key will be used.

Cursors can be opened only within active transaction. When transaction ends all cursors will be closed.

Specified by:
order in interface ISqlJetTable
Parameters:
indexName - name of index which defines ordering.If null then primary key will be used.
Returns:
cursor sorted by index.
Throws:
SqlJetException

scope

public ISqlJetCursor scope(java.lang.String indexName,
                           java.lang.Object[] firstKey,
                           java.lang.Object[] lastKey)
                    throws SqlJetException
Description copied from interface: ISqlJetTable

Open cursor which restricts table to some scope of index values.

Scope is specified as pair of index keys. First key means start of scope and last key means end of scope. One of these keys (or even both) could be NULL. In this case scope is open from one side (or both sides). If first key is less of last key then cursor will be in reversed order. If indexName is NULL then primary key will be used.

Cursors can be opened only within active transaction. When transaction ends all cursors will be closed.

Specified by:
scope in interface ISqlJetTable
Parameters:
indexName - Name of the searched index. If null then primary key will be used.
firstKey - first key of scope. Could be NULL.
lastKey - first key of scope. Could be NULL.
Returns:
cursor which have defined scope of rows.
Throws:
SqlJetException

scope

public ISqlJetCursor scope(java.lang.String indexName,
                           SqlJetScope scope)
                    throws SqlJetException
Description copied from interface: ISqlJetTable

Open cursor which restricts table to some scope of index values.

Scope is specified as pair of index keys. First key means start of scope and last key means end of scope. One of these keys (or even both) could be NULL. In this case scope is open from one side (or both sides). If first key is less of last key then cursor will be in reversed order. If indexName is NULL then primary key will be used.

Cursors can be opened only within active transaction. When transaction ends all cursors will be closed.

Specified by:
scope in interface ISqlJetTable
Parameters:
indexName - Name of the searched index. If null then primary key will be used.
scope - structure that contains both left and right bounds of the requested scope.
Returns:
cursor which have defined scope of rows.
Throws:
SqlJetException

clear

public void clear()
           throws SqlJetException
Description copied from interface: ISqlJetTable
Clear table. It fast delete of all rows in table.

Specified by:
clear in interface ISqlJetTable
Throws:
SqlJetException