org.pentaho.di.core.database
Class MSAccessDatabaseMeta

java.lang.Object
  extended by org.pentaho.di.core.database.BaseDatabaseMeta
      extended by org.pentaho.di.core.database.MSAccessDatabaseMeta
All Implemented Interfaces:
Cloneable, DatabaseInterface

public class MSAccessDatabaseMeta
extends BaseDatabaseMeta
implements DatabaseInterface

Contains MySQL specific information through static final members

Since:
11-mrt-2005
Author:
Matt

Field Summary
 
Fields inherited from class org.pentaho.di.core.database.BaseDatabaseMeta
ATTRIBUTE_CLUSTER_DBNAME_PREFIX, ATTRIBUTE_CLUSTER_HOSTNAME_PREFIX, ATTRIBUTE_CLUSTER_PASSWORD_PREFIX, ATTRIBUTE_CLUSTER_PORT_PREFIX, ATTRIBUTE_CLUSTER_USERNAME_PREFIX, ATTRIBUTE_FORCE_IDENTIFIERS_TO_LOWERCASE, ATTRIBUTE_FORCE_IDENTIFIERS_TO_UPPERCASE, ATTRIBUTE_INITIAL_POOL_SIZE, ATTRIBUTE_IS_CLUSTERED, ATTRIBUTE_MAXIMUM_POOL_SIZE, ATTRIBUTE_MSSQL_DOUBLE_DECIMAL_SEPARATOR, ATTRIBUTE_POOLING_PARAMETER_PREFIX, ATTRIBUTE_PORT_NUMBER, ATTRIBUTE_PREFERRED_SCHEMA_NAME, ATTRIBUTE_PREFIX_EXTRA_OPTION, ATTRIBUTE_QUOTE_ALL_FIELDS, ATTRIBUTE_SQL_CONNECT, ATTRIBUTE_SUPPORTS_BOOLEAN_DATA_TYPE, ATTRIBUTE_USE_POOLING, ATTRIBUTE_USE_RESULT_STREAMING, AUTOINCREMENT_SQL_FOR_BATCH_ID, poolingParameters, SELECT_COUNT_STATEMENT, SEQUENCE_FOR_BATCH_ID
 
Constructor Summary
MSAccessDatabaseMeta()
           
 
Method Summary
 boolean checkIndexExists(Database database, String schemaName, String tableName, String[] idx_fields)
          Verifies on the specified database connection if an index exists on the fields with the specified name.
 int[] getAccessTypeList()
          Get the list of possible access types for a database.
 String getAddColumnStatement(String tablename, ValueMetaInterface v, String tk, boolean use_autoinc, String pk, boolean semicolon)
          Generates the SQL statement to add a column to the specified table
 String getDriverClass()
          Obtain the name of the JDBC driver class that we need to use!
 String getDropColumnStatement(String tablename, ValueMetaInterface v, String tk, boolean use_autoinc, String pk, boolean semicolon)
          Generates the SQL statement to drop a column from the specified table
 String getEndQuote()
           
 String getFieldDefinition(ValueMetaInterface v, String tk, String pk, boolean use_autoinc, boolean add_fieldname, boolean add_cr)
          Describe a Value as a field in the database.
 int getMaxTextFieldLength()
          Get the maximum length of a text field for this database connection.
 String getModifyColumnStatement(String tablename, ValueMetaInterface v, String tk, boolean use_autoinc, String pk, boolean semicolon)
          Generates the SQL statement to modify a column in the specified table
 int getNotFoundTK(boolean use_autoinc)
          Get the not found technical key.
 String[] getReservedWords()
           
 String getSchemaTableCombination(String schema_name, String table_part)
          Get the schema-table combination to query the right table.
 String getSQLInsertAutoIncUnknownDimensionRow(String schemaTable, String keyField, String versionField)
          Get the SQL to insert a new empty unknown record in a dimension.
 String getStartQuote()
           
 String getTruncateTableStatement(String tableName)
           
 String getURL(String hostname, String port, String databaseName)
           
 String[] getUsedLibraries()
           
 boolean isFetchSizeSupported()
          Checks whether or not the command setFetchSize() is supported by the JDBC driver...
 boolean supportsBitmapIndex()
           
 boolean supportsGetBlob()
           
 boolean supportsSetCharacterStream()
          See if this database supports the setCharacterStream() method on a PreparedStatement.
 boolean supportsSetLong()
           
 boolean supportsSynonyms()
           
 boolean supportsTransactions()
           
 boolean supportsViews()
           
 
Methods inherited from class org.pentaho.di.core.database.BaseDatabaseMeta
addExtraOption, clone, generateColumnAlias, getAccessType, getAttributes, getBackwardsCompatibleSchemaTableCombination, getBackwardsCompatibleTable, getConnectionPoolingProperties, getConnectSQL, getDatabaseFactoryName, getDatabaseName, getDatabasePortNumberString, getDataTablespace, getDataTablespaceDDL, getDefaultDatabasePort, getExtraOptionIndicator, getExtraOptions, getExtraOptionSeparator, getExtraOptionsHelpText, getExtraOptionValueSeparator, getFunctionAverage, getFunctionCount, getFunctionMaximum, getFunctionMinimum, getFunctionSum, getHostname, getIndexTablespace, getIndexTablespaceDDL, getInitialPoolSize, getLimitClause, getMaxColumnsInIndex, getMaximumPoolSize, getMaxVARCHARLength, getName, getNextBatchId, getNextBatchIdUsingAutoIncSQL, getNextBatchIdUsingLockTables, getNextBatchIdUsingSequence, getObjectId, getPartitioningInformation, getPassword, getPluginId, getPluginName, getPreferredSchemaName, getSelectCountStatement, getServername, getSQLColumnExists, getSQLCurrentSequenceValue, getSQLListOfProcedures, getSQLListOfSchemas, getSQLListOfSequences, getSQLLockTables, getSQLNextSequenceValue, getSQLQueryFields, getSQLSequenceExists, getSQLTableExists, getSQLUnlockTables, getSynonymTypes, getTablespaceDDL, getTableTypes, getUsername, getValueFromResultSet, getViewTypes, getXulOverlayFile, isChanged, isDefaultingToUppercase, isDisplaySizeTwiceThePrecision, isExplorable, isForcingIdentifiersToLowerCase, isForcingIdentifiersToUpperCase, isMySQLVariant, isPartitioned, isQuoteAllFields, isRequiringTransactionsOnQueries, isStreamingResults, isSystemTable, isUsingConnectionPool, isUsingDoubleDecimalAsSchemaTableSeparator, needsPlaceHolder, needsToLockAllTables, parseStatements, quoteReservedWords, quoteSQLString, releaseSavepoint, requiresCastToVariousForIsNull, requiresCreateTablePrimaryKeyAppend, setAccessType, setAttributes, setChanged, setConnectionPoolingProperties, setConnectSQL, setDatabaseName, setDatabasePortNumberString, setDataTablespace, setForcingIdentifiersToLowerCase, setForcingIdentifiersToUpperCase, setHostname, setIndexTablespace, setInitialPoolSize, setMaximumPoolSize, setName, setObjectId, setPartitioned, setPartitioningInformation, setPassword, setPluginId, setPluginName, setPreferredSchemaName, setQuoteAllFields, setServername, setStreamingResults, setSupportsBooleanDataType, setUsername, setUsingConnectionPool, setUsingDoubleDecimalAsSchemaTableSeparator, supportsAutoInc, supportsBatchUpdates, supportsBooleanDataType, supportsCatalogs, supportsEmptyTransactions, supportsErrorHandling, supportsErrorHandlingOnBatchUpdates, supportsFloatRoundingOnUpdate, supportsNewLinesInSQL, supportsOptionsInURL, supportsPreparedStatementMetadataRetrieval, supportsRepository, supportsResultSetMetadataRetrievalOnly, supportsSchemas, supportsSequenceNoMaxValueOption, supportsSequences, supportsSetMaxRows, supportsTimeStampToDateConversion, useSafePoints, useSchemaNameForTableList
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.pentaho.di.core.database.DatabaseInterface
addExtraOption, clone, generateColumnAlias, getAccessType, getAttributes, getConnectionPoolingProperties, getConnectSQL, getDatabaseFactoryName, getDatabaseName, getDatabasePortNumberString, getDataTablespace, getDataTablespaceDDL, getDefaultDatabasePort, getExtraOptionIndicator, getExtraOptions, getExtraOptionSeparator, getExtraOptionsHelpText, getExtraOptionValueSeparator, getFunctionAverage, getFunctionCount, getFunctionMaximum, getFunctionMinimum, getFunctionSum, getHostname, getIndexTablespace, getIndexTablespaceDDL, getInitialPoolSize, getLimitClause, getMaxColumnsInIndex, getMaximumPoolSize, getMaxVARCHARLength, getName, getNextBatchId, getObjectId, getPartitioningInformation, getPassword, getPluginId, getPluginName, getPreferredSchemaName, getSelectCountStatement, getServername, getSQLColumnExists, getSQLCurrentSequenceValue, getSQLListOfProcedures, getSQLListOfSchemas, getSQLListOfSequences, getSQLLockTables, getSQLNextSequenceValue, getSQLQueryFields, getSQLSequenceExists, getSQLTableExists, getSQLUnlockTables, getSynonymTypes, getTableTypes, getUsername, getValueFromResultSet, getViewTypes, getXulOverlayFile, isChanged, isDefaultingToUppercase, isDisplaySizeTwiceThePrecision, isExplorable, isForcingIdentifiersToLowerCase, isForcingIdentifiersToUpperCase, isMySQLVariant, isPartitioned, isQuoteAllFields, isRequiringTransactionsOnQueries, isStreamingResults, isSystemTable, isUsingConnectionPool, isUsingDoubleDecimalAsSchemaTableSeparator, needsPlaceHolder, needsToLockAllTables, parseStatements, quoteReservedWords, quoteSQLString, releaseSavepoint, requiresCastToVariousForIsNull, requiresCreateTablePrimaryKeyAppend, setAccessType, setAttributes, setChanged, setConnectionPoolingProperties, setConnectSQL, setDatabaseName, setDatabasePortNumberString, setDataTablespace, setForcingIdentifiersToLowerCase, setForcingIdentifiersToUpperCase, setHostname, setIndexTablespace, setInitialPoolSize, setMaximumPoolSize, setName, setObjectId, setPartitioned, setPartitioningInformation, setPassword, setPluginId, setPluginName, setPreferredSchemaName, setQuoteAllFields, setServername, setStreamingResults, setSupportsBooleanDataType, setUsername, setUsingConnectionPool, setUsingDoubleDecimalAsSchemaTableSeparator, supportsAutoInc, supportsBatchUpdates, supportsBooleanDataType, supportsCatalogs, supportsEmptyTransactions, supportsErrorHandling, supportsErrorHandlingOnBatchUpdates, supportsFloatRoundingOnUpdate, supportsNewLinesInSQL, supportsOptionsInURL, supportsPreparedStatementMetadataRetrieval, supportsRepository, supportsResultSetMetadataRetrievalOnly, supportsSchemas, supportsSequenceNoMaxValueOption, supportsSequences, supportsSetMaxRows, supportsTimeStampToDateConversion, useSafePoints, useSchemaNameForTableList
 

Constructor Detail

MSAccessDatabaseMeta

public MSAccessDatabaseMeta()
Method Detail

getAccessTypeList

public int[] getAccessTypeList()
Description copied from interface: DatabaseInterface
Get the list of possible access types for a database.

Specified by:
getAccessTypeList in interface DatabaseInterface
Specified by:
getAccessTypeList in class BaseDatabaseMeta
Returns:
the list of possible access types for a database.

supportsSetCharacterStream

public boolean supportsSetCharacterStream()
Description copied from class: BaseDatabaseMeta
See if this database supports the setCharacterStream() method on a PreparedStatement.

Specified by:
supportsSetCharacterStream in interface DatabaseInterface
Overrides:
supportsSetCharacterStream in class BaseDatabaseMeta
Returns:
true if we can set a Stream on a field in a PreparedStatement. False if not.

getNotFoundTK

public int getNotFoundTK(boolean use_autoinc)
Description copied from interface: DatabaseInterface
Get the not found technical key.

Specified by:
getNotFoundTK in interface DatabaseInterface
Overrides:
getNotFoundTK in class BaseDatabaseMeta
Parameters:
use_autoinc - Whether or not we want to use an auto increment field
Returns:
the lowest possible technical key to be used as the NOT FOUND row in a slowly changing dimension.
See Also:
DatabaseInterface.getNotFoundTK(boolean)

getDriverClass

public String getDriverClass()
Description copied from interface: DatabaseInterface
Obtain the name of the JDBC driver class that we need to use!

Specified by:
getDriverClass in interface DatabaseInterface
Returns:
the name of the JDBC driver class for the specific database

getURL

public String getURL(String hostname,
                     String port,
                     String databaseName)
Specified by:
getURL in interface DatabaseInterface
Parameters:
hostname - the hostname
port - the port as a string
databaseName - the database name
Returns:
the URL to use for connecting to the database.

isFetchSizeSupported

public boolean isFetchSizeSupported()
Checks whether or not the command setFetchSize() is supported by the JDBC driver...

Specified by:
isFetchSizeSupported in interface DatabaseInterface
Overrides:
isFetchSizeSupported in class BaseDatabaseMeta
Returns:
true is setFetchSize() is supported!

getSchemaTableCombination

public String getSchemaTableCombination(String schema_name,
                                        String table_part)
Description copied from class: BaseDatabaseMeta
Get the schema-table combination to query the right table. Usually that is SCHEMA.TABLENAME, however there are exceptions to this rule...

Specified by:
getSchemaTableCombination in interface DatabaseInterface
Overrides:
getSchemaTableCombination in class BaseDatabaseMeta
Parameters:
schema_name - The schema name
table_part - The tablename
Returns:
the schema-table combination to query the right table.
See Also:
DatabaseInterface.getSchemaTableCombination(java.lang.String, java.lang.String)

getMaxTextFieldLength

public int getMaxTextFieldLength()
Get the maximum length of a text field for this database connection. This includes optional CLOB, Memo and Text fields. (the maximum!)

Specified by:
getMaxTextFieldLength in interface DatabaseInterface
Overrides:
getMaxTextFieldLength in class BaseDatabaseMeta
Returns:
The maximum text field length for this database type. (mostly CLOB_LENGTH)

supportsTransactions

public boolean supportsTransactions()
Specified by:
supportsTransactions in interface DatabaseInterface
Overrides:
supportsTransactions in class BaseDatabaseMeta
Returns:
true if the database supports transactions.

supportsBitmapIndex

public boolean supportsBitmapIndex()
Specified by:
supportsBitmapIndex in interface DatabaseInterface
Overrides:
supportsBitmapIndex in class BaseDatabaseMeta
Returns:
true if the database supports bitmap indexes

supportsSetLong

public boolean supportsSetLong()
Specified by:
supportsSetLong in interface DatabaseInterface
Overrides:
supportsSetLong in class BaseDatabaseMeta
Returns:
true if the database JDBC driver supports the setLong command

supportsViews

public boolean supportsViews()
Specified by:
supportsViews in interface DatabaseInterface
Overrides:
supportsViews in class BaseDatabaseMeta
Returns:
true if the database supports views

supportsSynonyms

public boolean supportsSynonyms()
Specified by:
supportsSynonyms in interface DatabaseInterface
Overrides:
supportsSynonyms in class BaseDatabaseMeta
Returns:
true if the database supports synonyms

getTruncateTableStatement

public String getTruncateTableStatement(String tableName)
Specified by:
getTruncateTableStatement in interface DatabaseInterface
Overrides:
getTruncateTableStatement in class BaseDatabaseMeta
Parameters:
tableName - The table to be truncated.
Returns:
The SQL statement to truncate a table: remove all rows from it without a transaction

getAddColumnStatement

public String getAddColumnStatement(String tablename,
                                    ValueMetaInterface v,
                                    String tk,
                                    boolean use_autoinc,
                                    String pk,
                                    boolean semicolon)
Generates the SQL statement to add a column to the specified table

Specified by:
getAddColumnStatement in interface DatabaseInterface
Parameters:
tablename - The table to add
v - The column defined as a value
tk - the name of the technical key field
use_autoinc - whether or not this field uses auto increment
pk - the name of the primary key field
semicolon - whether or not to add a semi-colon behind the statement.
Returns:
the SQL statement to add a column to the specified table

getDropColumnStatement

public String getDropColumnStatement(String tablename,
                                     ValueMetaInterface v,
                                     String tk,
                                     boolean use_autoinc,
                                     String pk,
                                     boolean semicolon)
Generates the SQL statement to drop a column from the specified table

Specified by:
getDropColumnStatement in interface DatabaseInterface
Overrides:
getDropColumnStatement in class BaseDatabaseMeta
Parameters:
tablename - The table to add
v - The column defined as a value
tk - the name of the technical key field
use_autoinc - whether or not this field uses auto increment
pk - the name of the primary key field
semicolon - whether or not to add a semi-colon behind the statement.
Returns:
the SQL statement to drop a column from the specified table

getModifyColumnStatement

public String getModifyColumnStatement(String tablename,
                                       ValueMetaInterface v,
                                       String tk,
                                       boolean use_autoinc,
                                       String pk,
                                       boolean semicolon)
Generates the SQL statement to modify a column in the specified table

Specified by:
getModifyColumnStatement in interface DatabaseInterface
Parameters:
tablename - The table to add
v - The column defined as a value
tk - the name of the technical key field
use_autoinc - whether or not this field uses auto increment
pk - the name of the primary key field
semicolon - whether or not to add a semi-colon behind the statement.
Returns:
the SQL statement to modify a column in the specified table

getFieldDefinition

public String getFieldDefinition(ValueMetaInterface v,
                                 String tk,
                                 String pk,
                                 boolean use_autoinc,
                                 boolean add_fieldname,
                                 boolean add_cr)
Description copied from interface: DatabaseInterface
Describe a Value as a field in the database.

Specified by:
getFieldDefinition in interface DatabaseInterface
Parameters:
v - The value to describe
tk - The field that's going to be the technical key
pk - The field that's going to be the primary key
use_autoinc - Use autoincrement or not
add_fieldname - Add the fieldname to the definition or not
add_cr - Add a cariage return at the end of the definition or not.
Returns:
a value described as a field in this database.

getReservedWords

public String[] getReservedWords()
Specified by:
getReservedWords in interface DatabaseInterface
Overrides:
getReservedWords in class BaseDatabaseMeta
Returns:
an array of reserved words for the database type...

getStartQuote

public String getStartQuote()
Specified by:
getStartQuote in interface DatabaseInterface
Overrides:
getStartQuote in class BaseDatabaseMeta
Returns:
The start quote sequence, mostly just double quote, but sometimes [, ...

getEndQuote

public String getEndQuote()
Specified by:
getEndQuote in interface DatabaseInterface
Overrides:
getEndQuote in class BaseDatabaseMeta
Returns:
The end quote sequence, mostly just double quote, but sometimes ], ...

getUsedLibraries

public String[] getUsedLibraries()
Specified by:
getUsedLibraries in interface DatabaseInterface
Returns:
the required libraries (in libext) for this database connection.

supportsGetBlob

public boolean supportsGetBlob()
Specified by:
supportsGetBlob in interface DatabaseInterface
Overrides:
supportsGetBlob in class BaseDatabaseMeta
Returns:
true if the database JDBC driver supports getBlob on the resultset. If not we must use getBytes() to get the data.

checkIndexExists

public boolean checkIndexExists(Database database,
                                String schemaName,
                                String tableName,
                                String[] idx_fields)
                         throws KettleDatabaseException
Verifies on the specified database connection if an index exists on the fields with the specified name.

Specified by:
checkIndexExists in interface DatabaseInterface
Overrides:
checkIndexExists in class BaseDatabaseMeta
Parameters:
database - a connected database
schemaName -
tableName -
idxFields -
Returns:
true if the index exists, false if it doesn't.
Throws:
KettleException
KettleDatabaseException

getSQLInsertAutoIncUnknownDimensionRow

public String getSQLInsertAutoIncUnknownDimensionRow(String schemaTable,
                                                     String keyField,
                                                     String versionField)
Get the SQL to insert a new empty unknown record in a dimension.

Specified by:
getSQLInsertAutoIncUnknownDimensionRow in interface DatabaseInterface
Overrides:
getSQLInsertAutoIncUnknownDimensionRow in class BaseDatabaseMeta
Parameters:
schemaTable - the schema-table name to insert into
keyField - The key field
versionField - the version field
Returns:
the SQL to insert the unknown record into the SCD.