|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.healthmarketscience.jackcess.impl.DatabaseImpl
public class DatabaseImpl
| Nested Class Summary | |
|---|---|
static class |
DatabaseImpl.FileFormatDetails
Internal details for each FileForrmat |
| Nested classes/interfaces inherited from interface com.healthmarketscience.jackcess.Database |
|---|
Database.FileFormat |
| Field Summary | |
|---|---|
static String |
DEFAULT_RESOURCE_PATH
the default value for the resource path used to load classpath resources. |
static int |
HIDDEN_OBJECT_FLAG
this object is hidden |
static String |
RO_CHANNEL_MODE
read-only channel access mode |
static String |
RW_CHANNEL_MODE
read/write channel access mode |
| Fields inherited from interface com.healthmarketscience.jackcess.Database |
|---|
ALLOW_AUTONUM_INSERT_PROPERTY, BROKEN_NIO_PROPERTY, CHARSET_PROPERTY_PREFIX, COLUMN_ORDER_PROPERTY, DEFAULT_AUTO_SYNC, DEFAULT_COLUMN_ORDER, FK_ENFORCE_PROPERTY, RESOURCE_PATH_PROPERTY, TIMEZONE_PROPERTY |
| Constructor Summary | |
|---|---|
protected |
DatabaseImpl(File file,
FileChannel channel,
boolean closeChannel,
boolean autoSync,
Database.FileFormat fileFormat,
Charset charset,
TimeZone timeZone,
CodecProvider provider)
Create a new database by reading it in from a FileChannel. |
| Method Summary | |
|---|---|
void |
close()
Close the database file (and any linked databases). |
static DatabaseImpl |
create(Database.FileFormat fileFormat,
File mdbFile,
FileChannel channel,
boolean autoSync,
Charset charset,
TimeZone timeZone)
Create a new Database for the given fileFormat |
void |
createLinkedTable(String name,
String linkedDbName,
String linkedTableName)
Create a new table in this database |
void |
createTable(String name,
List<ColumnBuilder> columns)
Deprecated. use TableBuilder instead |
void |
createTable(String name,
List<ColumnBuilder> columns,
List<IndexBuilder> indexes)
Deprecated. use TableBuilder instead |
void |
flush()
Flushes any current changes to the database file (and any linked databases) to disk. |
TableImpl |
getAccessControlEntries()
|
Charset |
getCharset()
Gets currently configured Charset (always non- null). |
Table.ColumnOrder |
getColumnOrder()
Gets currently configured Table.ColumnOrder (always non-null). |
ColumnValidatorFactory |
getColumnValidatorFactory()
Gets currently configured ColumnValidatorFactory (always non- null). |
String |
getDatabasePassword()
|
PropertyMap |
getDatabaseProperties()
|
static boolean |
getDefaultAllowAutoNumberInsert()
Returns the default allow auto number insert policy. |
static Charset |
getDefaultCharset(JetFormat format)
Returns the default Charset for the given JetFormat. |
short |
getDefaultCodePage()
|
static Table.ColumnOrder |
getDefaultColumnOrder()
Returns the default Table.ColumnOrder. |
static boolean |
getDefaultEnforceForeignKeys()
Returns the default enforce foreign-keys policy. |
ColumnImpl.SortOrder |
getDefaultSortOrder()
|
static TimeZone |
getDefaultTimeZone()
Returns the default TimeZone. |
ErrorHandler |
getErrorHandler()
Gets the currently configured ErrorHandler (always non- null). |
File |
getFile()
Returns the File underlying this Database |
Database.FileFormat |
getFileFormat()
Returns the FileFormat of this database (which may involve inspecting the database itself). |
static DatabaseImpl.FileFormatDetails |
getFileFormatDetails(Database.FileFormat fileFormat)
|
JetFormat |
getFormat()
|
Map<String,Database> |
getLinkedDatabases()
Returns an unmodifiable view of the currently loaded linked databases, mapped from the linked database file name to the linked database. |
LinkResolver |
getLinkResolver()
Gets the currently configured LinkResolver (always non- null). |
String |
getName()
|
PageChannel |
getPageChannel()
|
PropertyMaps |
getPropertiesForObject(int objectId)
|
List<Query> |
getQueries()
Finds all the queries in the database. |
List<Relationship> |
getRelationships()
Finds all the relationships in the database in non-system tables. |
List<Relationship> |
getRelationships(Table table)
Finds all the relationships in the database for the given table. |
List<Relationship> |
getRelationships(TableImpl table1,
TableImpl table2)
|
List<Relationship> |
getRelationships(Table table1,
Table table2)
Finds all the relationships in the database between the given tables. |
protected static InputStream |
getResourceAsStream(String resourceName)
|
PropertyMap |
getSummaryProperties()
|
TableImpl |
getSystemCatalog()
|
TableImpl |
getSystemComplexColumns()
|
List<Relationship> |
getSystemRelationships()
Finds all the relationships in the database, including system tables. |
TableImpl |
getSystemTable(String tableName)
Returns a reference to any available table in this access database, including system tables. |
Set<String> |
getSystemTableNames()
|
TableImpl |
getTable(int tableDefPageNumber)
|
TableImpl |
getTable(String name)
|
protected TableImpl |
getTable(String name,
boolean includeSystemTables)
|
TableMetaData |
getTableMetaData(String name)
|
Set<String> |
getTableNames()
|
TimeZone |
getTimeZone()
Gets currently configured TimeZone (always non- null). |
PropertyMap |
getUserDefinedProperties()
|
boolean |
isAllowAutoNumberInsert()
Gets current allow auto number insert policy. |
static boolean |
isBlank(String name)
Returns true if the given string is null or all blank
space, false otherwise. |
boolean |
isEnforceForeignKeys()
Gets current foreign-key enforcement policy. |
boolean |
isLinkedTable(Table table)
Returns true if this Database links to the given Table, false otherwise. |
Iterator<Table> |
iterator()
|
Iterator<Table> |
iterator(TableIterableBuilder builder)
|
TableIterableBuilder |
newIterable()
Convenience method for constructing a new TableIterableBuilder for this cursor. |
static DatabaseImpl |
open(File mdbFile,
boolean readOnly,
FileChannel channel,
boolean autoSync,
Charset charset,
TimeZone timeZone,
CodecProvider provider)
Open an existing Database. |
PropertyMaps |
readProperties(byte[] propsBytes,
int objectId,
RowIdImpl rowId)
|
void |
setAllowAutoNumberInsert(Boolean allowAutoNumInsert)
Sets the new auto number insert policy for the database (unless overridden at the Table level). |
void |
setCharset(Charset newCharset)
Sets a new Charset. |
void |
setColumnOrder(Table.ColumnOrder newColumnOrder)
Sets a new Table.ColumnOrder. |
void |
setColumnValidatorFactory(ColumnValidatorFactory newFactory)
Sets a new ColumnValidatorFactory. |
void |
setEnforceForeignKeys(Boolean newEnforceForeignKeys)
Sets a new foreign-key enforcement policy. |
void |
setErrorHandler(ErrorHandler newErrorHandler)
Sets a new ErrorHandler. |
void |
setLinkResolver(LinkResolver newLinkResolver)
Sets a new LinkResolver. |
void |
setTimeZone(TimeZone newTimeZone)
Sets a new TimeZone. |
static String |
toLookupName(String name)
|
String |
toString()
|
protected static void |
transferDbFrom(FileChannel channel,
InputStream in)
Copies the given db InputStream to the given channel using the most efficient means possible. |
static void |
validateIdentifierName(String name,
int maxLength,
String identifierType)
Validates an identifier name. |
void |
validateNewTableName(String name)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final String DEFAULT_RESOURCE_PATH
public static final int HIDDEN_OBJECT_FLAG
public static final String RO_CHANNEL_MODE
public static final String RW_CHANNEL_MODE
| Constructor Detail |
|---|
protected DatabaseImpl(File file,
FileChannel channel,
boolean closeChannel,
boolean autoSync,
Database.FileFormat fileFormat,
Charset charset,
TimeZone timeZone,
CodecProvider provider)
throws IOException
file - the File to which the channel is connectedchannel - File channel of the database. This needs to be a
FileChannel instead of a ReadableByteChannel because we need to
randomly jump around to various points in the file.autoSync - whether or not to enable auto-syncing on write. if
true, writes will be immediately flushed to disk.
This leaves the database in a (fairly) consistent state
on each write, but can be very inefficient for many
updates. if false, flushing to disk happens at
the jvm's leisure, which can be much faster, but may
leave the database in an inconsistent state if failures
are encountered during writing. Writes may be flushed at
any time using flush().fileFormat - version of new database (if known)charset - Charset to use, if null, uses defaulttimeZone - TimeZone to use, if null, uses default
IOException| Method Detail |
|---|
public static DatabaseImpl open(File mdbFile,
boolean readOnly,
FileChannel channel,
boolean autoSync,
Charset charset,
TimeZone timeZone,
CodecProvider provider)
throws IOException
true, the file will be opened read-only.
mdbFile - File containing the databasereadOnly - iff true, force opening file in read-only
modechannel - pre-opened FileChannel. if provided explicitly, it will
not be closed by this Database instanceautoSync - whether or not to enable auto-syncing on write. if
true, writes will be immediately flushed to disk.
This leaves the database in a (fairly) consistent state
on each write, but can be very inefficient for many
updates. if false, flushing to disk happens at
the jvm's leisure, which can be much faster, but may
leave the database in an inconsistent state if failures
are encountered during writing. Writes may be flushed at
any time using flush().charset - Charset to use, if null, uses defaulttimeZone - TimeZone to use, if null, uses defaultprovider - CodecProvider for handling page encoding/decoding, may be
null if no special encoding is necessary
IOException
public static DatabaseImpl create(Database.FileFormat fileFormat,
File mdbFile,
FileChannel channel,
boolean autoSync,
Charset charset,
TimeZone timeZone)
throws IOException
fileFormat - version of new database.mdbFile - Location to write the new database to. If this file
already exists, it will be overwritten.channel - pre-opened FileChannel. if provided explicitly, it will
not be closed by this Database instanceautoSync - whether or not to enable auto-syncing on write. if
true, writes will be immediately flushed to disk.
This leaves the database in a (fairly) consistent state
on each write, but can be very inefficient for many
updates. if false, flushing to disk happens at
the jvm's leisure, which can be much faster, but may
leave the database in an inconsistent state if failures
are encountered during writing. Writes may be flushed at
any time using flush().charset - Charset to use, if null, uses defaulttimeZone - TimeZone to use, if null, uses default
IOExceptionpublic File getFile()
Database
getFile in interface Databasepublic String getName()
public PageChannel getPageChannel()
public JetFormat getFormat()
public TableImpl getSystemCatalog()
public TableImpl getAccessControlEntries()
throws IOException
IOException
public TableImpl getSystemComplexColumns()
throws IOException
IOExceptionpublic ErrorHandler getErrorHandler()
Databasenull).
This will be used to handle all errors unless overridden at the Table or
Cursor level.
getErrorHandler in interface Databasepublic void setErrorHandler(ErrorHandler newErrorHandler)
Databasenull, resets to the
ErrorHandler.DEFAULT.
setErrorHandler in interface Databasepublic LinkResolver getLinkResolver()
Databasenull).
This will be used to handle all linked database loading.
getLinkResolver in interface Databasepublic void setLinkResolver(LinkResolver newLinkResolver)
Databasenull, resets to the
LinkResolver.DEFAULT.
setLinkResolver in interface Databasepublic Map<String,Database> getLinkedDatabases()
Database
getLinkedDatabases in interface Database
public boolean isLinkedTable(Table table)
throws IOException
Databasetrue if this Database links to the given Table, false otherwise.
isLinkedTable in interface DatabaseIOExceptionpublic TimeZone getTimeZone()
Databasenull).
getTimeZone in interface Databasepublic void setTimeZone(TimeZone newTimeZone)
Databasenull, resets to the default value.
setTimeZone in interface Databasepublic Charset getCharset()
Databasenull).
getCharset in interface Databasepublic void setCharset(Charset newCharset)
Databasenull, resets to the default value.
setCharset in interface Databasepublic Table.ColumnOrder getColumnOrder()
DatabaseTable.ColumnOrder (always non-null).
getColumnOrder in interface Databasepublic void setColumnOrder(Table.ColumnOrder newColumnOrder)
Databasenull, resets to the default value.
setColumnOrder in interface Databasepublic boolean isEnforceForeignKeys()
Database
isEnforceForeignKeys in interface Databasepublic void setEnforceForeignKeys(Boolean newEnforceForeignKeys)
Databasenull, resets to
the default value.
setEnforceForeignKeys in interface Databasepublic boolean isAllowAutoNumberInsert()
Databasetrue allows the caller to optionally set the value explicitly when
adding or updating rows (if a value is not provided, it will still be
handled internally by the Table). This value can be set database-wide
using Database.setAllowAutoNumberInsert(java.lang.Boolean) and/or on a per-table basis using
Table.setAllowAutoNumberInsert(java.lang.Boolean) (and/or on a jvm-wide using the
Database.ALLOW_AUTONUM_INSERT_PROPERTY system property). Note that
enabling this feature should be done with care to reduce the
chances of screwing up the database.
isAllowAutoNumberInsert in interface Databasepublic void setAllowAutoNumberInsert(Boolean allowAutoNumInsert)
Databasenull, resets to the default
value.
setAllowAutoNumberInsert in interface Databasepublic ColumnValidatorFactory getColumnValidatorFactory()
Databasenull).
getColumnValidatorFactory in interface Databasepublic void setColumnValidatorFactory(ColumnValidatorFactory newFactory)
Databasenull, resets to the
default value. The configured ColumnValidatorFactory will be used to
create ColumnValidator instances on any user tables loaded from
this point onward (this will not be used for system tables).
setColumnValidatorFactory in interface Database
public Database.FileFormat getFileFormat()
throws IOException
Database
getFileFormat in interface DatabaseIOException
public ColumnImpl.SortOrder getDefaultSortOrder()
throws IOException
IOException
public short getDefaultCodePage()
throws IOException
IOException
public PropertyMaps readProperties(byte[] propsBytes,
int objectId,
RowIdImpl rowId)
throws IOException
null result).
IOException
public Set<String> getTableNames()
throws IOException
getTableNames in interface DatabaseIOException
public Set<String> getSystemTableNames()
throws IOException
getSystemTableNames in interface DatabaseDatabase.getSystemTable(java.lang.String).
Extreme care should be taken if modifying these tables
directly!.
IOExceptionpublic Iterator<Table> iterator()
iterator in interface Databaseiterator in interface Iterable<Table>public Iterator<Table> iterator(TableIterableBuilder builder)
public TableIterableBuilder newIterable()
Database
newIterable in interface Database
public TableImpl getTable(String name)
throws IOException
getTable in interface Databasename - User table name (case-insensitive)
IOException
public TableMetaData getTableMetaData(String name)
throws IOException
getTableMetaData in interface Databasename - Table name (case-insensitive), may be any table type
(i.e. includes system or linked tables).
IOException
public TableImpl getTable(int tableDefPageNumber)
throws IOException
tableDefPageNumber - the page number of a table definition
IOException
protected TableImpl getTable(String name,
boolean includeSystemTables)
throws IOException
name - Table nameincludeSystemTables - whether to consider returning a system table
IOException
@Deprecated
public void createTable(String name,
List<ColumnBuilder> columns)
throws IOException
TableBuilder instead
name - Name of the table to createcolumns - List of Columns in the table
IOException
@Deprecated
public void createTable(String name,
List<ColumnBuilder> columns,
List<IndexBuilder> indexes)
throws IOException
TableBuilder instead
name - Name of the table to createcolumns - List of Columns in the tableindexes - List of IndexBuilders describing indexes for the table
IOException
public void createLinkedTable(String name,
String linkedDbName,
String linkedTableName)
throws IOException
Database
createLinkedTable in interface Databasename - Name of the table to create in this databaselinkedDbName - path to the linked databaselinkedTableName - name of the table in the linked database
IOException
public List<Relationship> getRelationships(Table table1,
Table table2)
throws IOException
Database
getRelationships in interface DatabaseIOException
public List<Relationship> getRelationships(TableImpl table1,
TableImpl table2)
throws IOException
IOException
public List<Relationship> getRelationships(Table table)
throws IOException
Database
getRelationships in interface DatabaseIOException
public List<Relationship> getRelationships()
throws IOException
Database
getRelationships in interface DatabaseIOException
public List<Relationship> getSystemRelationships()
throws IOException
Database
getSystemRelationships in interface DatabaseIOException
public List<Query> getQueries()
throws IOException
Database
getQueries in interface DatabaseIOException
public TableImpl getSystemTable(String tableName)
throws IOException
DatabaseWarning, this method is not designed for common use, only for the occassional time when access to a system table is necessary. Messing with system tables can strip the paint off your house and give your whole family a permanent, orange afro. You have been warned.
getSystemTable in interface DatabasetableName - Table name, may be a system table
null if it doesn't exist
IOException
public PropertyMap getDatabaseProperties()
throws IOException
getDatabaseProperties in interface DatabaseIOException
public PropertyMap getSummaryProperties()
throws IOException
getSummaryProperties in interface DatabaseIOException
public PropertyMap getUserDefinedProperties()
throws IOException
getUserDefinedProperties in interface DatabaseIOException
public PropertyMaps getPropertiesForObject(int objectId)
throws IOException
IOException
public String getDatabasePassword()
throws IOException
getDatabasePassword in interface Databasenull if none set.
IOException
public void flush()
throws IOException
Database
flush in interface Databaseflush in interface FlushableIOException
public void close()
throws IOException
Database
close in interface Databaseclose in interface CloseableIOException
public void validateNewTableName(String name)
throws IOException
IOException
public static void validateIdentifierName(String name,
int maxLength,
String identifierType)
public static boolean isBlank(String name)
true if the given string is null or all blank
space, false otherwise.
public String toString()
toString in class Objectpublic static String toLookupName(String name)
public static TimeZone getDefaultTimeZone()
TimeZone.getDefault(), but can be
overridden using the system property
"com.healthmarketscience.jackcess.timeZone".
public static Charset getDefaultCharset(JetFormat format)
"com.healthmarketscience.jackcess.charset.VERSION_3".
public static Table.ColumnOrder getDefaultColumnOrder()
Database.DEFAULT_COLUMN_ORDER, but can be overridden using the system
property "com.healthmarketscience.jackcess.columnOrder".
public static boolean getDefaultEnforceForeignKeys()
true, but can be overridden using the system
property "com.healthmarketscience.jackcess.enforceForeignKeys".
public static boolean getDefaultAllowAutoNumberInsert()
false, but can be overridden using the system
property "com.healthmarketscience.jackcess.allowAutoNumberInsert".
protected static void transferDbFrom(FileChannel channel,
InputStream in)
throws IOException
IOException
protected static InputStream getResourceAsStream(String resourceName)
throws IOException
IOExceptionpublic static DatabaseImpl.FileFormatDetails getFileFormatDetails(Database.FileFormat fileFormat)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||