chemaxon.jchem.db
Class UpdateHandler

java.lang.Object
  extended by chemaxon.util.ErrorHandler
      extended by chemaxon.jchem.db.UpdateHandler
All Implemented Interfaces:
TableTypeConstants, java.io.Serializable

public class UpdateHandler
extends ErrorHandler
implements TableTypeConstants

Provides methods for handling structure tables, e.g.:

Both fix columns (the ones which have "cd_" prefix in their names) and additional columns can be set using the class.

WARNING!
For optimization reasons logs are buffered in UpdateHandler from JChem 5.4.
When you use transactions saveUpdateLogs() must be called in order to flush buffers before you commit!
(close() method performs a call to saveUpdateLogs(), no extra calls are needed.)

Example for insert/update:

    int id;          // cd_id value of compound
    // Additional columns:
    String name;
    Float stock;
    String comments;
    ...
    UpdateHandler uh = new UpdateHandler(conh,
            (isInsertion?
                UpdateHandler.INSERT :
                UpdateHandler.UPDATE),
            structureTableName, "name, stock, comments");
    try {

      uh.setStructure(molfile);
        if(!isInsertion) {
            uh.setID(id);
      }
        uh.setValueForAdditionalColumn(1, name);
        uh.setValueForAdditionalColumn(2, stock);
        uh.setValueForAdditionalColumn(3, comments);
        uh.execute();
    } finally {
        uh.close();
    }
    ...
 

Author:
Ferenc Csizmadia, Szilard Dorant
See Also:
Serialized Form

Nested Class Summary
static class UpdateHandler.RowData
           
 
Field Summary
static int DUPLICATE_FILTERING_OFF
          Constant for 'duplicate filtering' option on import.
static int DUPLICATE_FILTERING_ON
          Constant for 'duplicate filtering' option on import.
static int DUPLICATE_FILTERING_TABLE_OPTION
          Constant for 'duplicate filtering' option on import.
static int INSERT
          Row insertion with automatic cd_id value.
static int INSERT_WITH_ID
          Row insertion with cd_id value set by the application.
static int QUERY_TABLE_ENUMERATION_LIMIT
          Upper limit for enumerating queries when inserting into QUERY tables
static int UPDATE
          Row modification.
 
Fields inherited from class chemaxon.util.ErrorHandler
CLASS_NOT_FOUND_ERROR, DATABASE_SEARCH_ERROR, exception, ILLEGAL_ACCESS_ERROR, INSTANTIATION_ERROR, IO_ERROR, MAX_SEARCH_FREQUENCY_EXCEEDED_ERROR, MOL_FORMAT_ERROR, NO_ERROR, PROPERTY_NOT_SET_ERROR, SQL_ERROR, UNIDENTIFIED_ERROR
 
Fields inherited from interface chemaxon.jchem.db.TableTypeConstants
FP_DEFAULT_BITS_PER_PATTERN, FP_DEFAULT_LENGTH_IN_INTS, FP_DEFAULT_PATTERN_LENGTH, MYSQL_DEFAULT_TABLE_TYPE, MYSQL_FORCE_INNO_DB, MYSQL_FORCE_MYISAM, TABLE_TYPE_ANY_STRUCTURES, TABLE_TYPE_DEFAULT, TABLE_TYPE_EXPLANATIONS, TABLE_TYPE_IS_NOT_SUPPORTED, TABLE_TYPE_MARKUSH_LIBRARIES, TABLE_TYPE_MOLECULES, TABLE_TYPE_NAMES, TABLE_TYPE_QUERY_STRUCTURES, TABLE_TYPE_REACTIONS
 
Constructor Summary
UpdateHandler()
          Zero-arg constructor
UpdateHandler(ConnectionHandler conh, int mode, java.lang.String tableName, java.lang.String additionalColumns)
          Constructor.
UpdateHandler(ConnectionHandler conh, int mode, java.lang.String tableName, java.lang.String additionalColumns, java.lang.String indexedTable, java.lang.String indexedColumn)
          Constructor.
 
Method Summary
static java.lang.Object checkChemTermColValue(java.lang.Object result)
           
 void close()
          Closes the handler (required to call).
 UpdateHandler.RowData createRowData(byte[] molString)
          Calculates row data from molecule string.
 UpdateHandler.RowData createRowData(java.lang.String molString)
          Calculates row data from molecule string.
static void createStructureTable(ConnectionHandler conh, StructureTableOptions options)
          Creates a structure table.
static void deleteRow(ConnectionHandler conh, java.lang.String tableName, int cd_id)
          Deletes the specified rows from a structure table.
static void deleteRow(ConnectionHandler conh, java.lang.String tableName, int cd_id, boolean enableLogging)
          Deletes the specified rows from a structure table.
static void deleteRows(ConnectionHandler conh, java.lang.String tableName, java.lang.String where)
          Deletes the specified rows from a structure table.
static void deleteRows(ConnectionHandler conh, java.lang.String tableName, java.lang.String where, boolean enableLogging)
          Deletes the specified rows from a structure table.
static void dropStructureTable(ConnectionHandler conh, java.lang.String tableName)
          Drops a structure table.
 void execute()
          Executes the update or insert operation.
 int execute(boolean returnLastId)
          Executes the update or insert operation.
 Molecule getMolecule()
          Returns the Molecule that was used during insert or update.
static int getPrecalculatedRowNumber(ConnectionHandler conh, java.lang.String tableName)
           
static int getPreferredTableType(Molecule m)
          Returns the preferred table type for the given molecule object.
 boolean getSetChiralFlag()
          Getter for property setChiralFlag.
 java.lang.String getStructureNameField()
          Get the name of that column which stores the structure names.
static java.lang.String[] getStructureTables(ConnectionHandler conh)
          Collects the names of all structures tables in the database (from the records of the JChemProperties table).
 void init(ConnectionHandler conHandler, int mode, java.lang.String tableName, java.lang.String additionalColumns)
          Initializes the object.
static boolean isInsertable(Molecule m, int tableType, boolean isEmptyStructuresAllowed)
          Decides whether a molecule can be inserted into a table of a given type.
 boolean isLoggingEnabled()
          Shows whether logging is enabled during import.
static boolean recalculateCTColumns(ConnectionHandler ch, java.lang.String tableName, java.lang.String[] columns, ProgressWriter pw)
          Recalculates chemical terms in a structure table in normal mode.
static boolean recalculateCTColumns(ConnectionHandler ch, java.lang.String tableName, java.lang.String[] columns, ProgressWriter pw, int regenerationMode)
          Recalculates chemical terms in a structure table.
static boolean recalculateMDTables(ConnectionHandler ch, java.lang.String tableName, ProgressWriter pw)
          Recalculates molecular descriptors for a structure table / for all structure tables.
static boolean recalculateTable(ConnectionHandler ch, java.lang.String tableName, boolean changeStandardization, java.lang.String standardizerConfig, java.util.Map chemTermColCfg, java.lang.Boolean tautomerDuplicateFiltering, ProgressWriter pw)
          Recalculates generated values in a structure table in normal mode.
static boolean recalculateTable(ConnectionHandler ch, java.lang.String tableName, boolean changeStandardization, java.lang.String standardizerConfig, java.util.Map chemTermColCfg, java.lang.Boolean tautomerDuplicateFiltering, ProgressWriter pw, int regenerationMode)
          Recalculates generated values in a structure table.
static boolean recalculateWithoutCTColumns(ConnectionHandler ch, java.lang.String tableName, boolean changeStandardization, java.lang.String standardizerConfig, java.lang.Boolean tautomerDuplicateFiltering, ProgressWriter pw)
          Recalculates generated values in a structure table but skips Chemical Terms calculations in normal mode.
static boolean recalculateWithoutCTColumns(ConnectionHandler ch, java.lang.String tableName, boolean changeStandardization, java.lang.String standardizerConfig, java.lang.Boolean tautomerDuplicateFiltering, ProgressWriter pw, int regenerationMode)
          Recalculates generated values in a structure table but skips Chemical Terms calculations.
 void saveUpdateLogs()
          Saves the current - possibly buffered - update log(s).
 void setChemTermCalc(boolean isCalcNeeded)
          Enable or disable the chemical terms calculation during the update
 void setDuplicateFiltering(boolean filtering)
          Deprecated. since JChem 5.4. This import option has been table option, instead of this use setDuplicateFiltering(int) method
 void setDuplicateFiltering(int duplicateFilteringOption)
          Sets the duplicate filtering option on import.
 void setEmptyStructuresAllowed(boolean allowed)
          Sets if empty structures are allowed, default is false
 void setID(int id)
          Sets the cd_id value for the structure.
 void setIgnoreChemicalTermsExceptions(boolean ignore)
          Specifies wheather to ignore exceptions during the calcualtion of Chemical Terms columns.
 void setLoggingEnabled(boolean value)
          Enables / disables logging structures during import.
 void setRowData(UpdateHandler.RowData rowData)
          Specifies pre-calculated row data values.
 void setROWID(java.lang.String rowID)
          Sets values for all fix columns in cartridge mode if the mode is INSERT_WITH_ID.
 void setSetChiralFlag(boolean setChiralFlag)
          Sets if chiral flag should be set to true during import.
 void setStandardizationEnabled(boolean allowed)
          Enables or disables standardization.
 void setStructure(byte[] source)
          Sets the source of the input molecule.
 void setStructure(java.lang.String source)
          Sets the source of the input molecule.
 void setStructureNameField(java.lang.String nameField)
          Set the name of that column where the structure name is stored.
 void setValueForAdditionalColumn(int index, java.lang.Object value)
          Sets values for all additional columns Type is defined automatically.
 void setValueForAdditionalColumn(int index, java.lang.Object value, int sqlType)
          Sets values for an additional column.
 
Methods inherited from class chemaxon.util.ErrorHandler
checkError, checkException, getError, getErrorMessage, getException, getStackTrace
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

UPDATE

public static final int UPDATE
Row modification.

See Also:
Constant Field Values

INSERT

public static final int INSERT
Row insertion with automatic cd_id value.

See Also:
Constant Field Values

INSERT_WITH_ID

public static final int INSERT_WITH_ID
Row insertion with cd_id value set by the application.

See Also:
Constant Field Values

DUPLICATE_FILTERING_ON

public static final int DUPLICATE_FILTERING_ON
Constant for 'duplicate filtering' option on import. This value switches on the option.

See Also:
Constant Field Values

DUPLICATE_FILTERING_OFF

public static final int DUPLICATE_FILTERING_OFF
Constant for 'duplicate filtering' option on import. This value switches off the option.

See Also:
Constant Field Values

DUPLICATE_FILTERING_TABLE_OPTION

public static final int DUPLICATE_FILTERING_TABLE_OPTION
Constant for 'duplicate filtering' option on import. This value sets this option as table option.

See Also:
Constant Field Values

QUERY_TABLE_ENUMERATION_LIMIT

public static final int QUERY_TABLE_ENUMERATION_LIMIT
Upper limit for enumerating queries when inserting into QUERY tables

See Also:
Constant Field Values
Constructor Detail

UpdateHandler

public UpdateHandler()
Zero-arg constructor


UpdateHandler

public UpdateHandler(ConnectionHandler conh,
                     int mode,
                     java.lang.String tableName,
                     java.lang.String additionalColumns)
              throws java.sql.SQLException,
                     PropertyNotSetException
Constructor.

Parameters:
conh - ConnectionHandler opened to the database, containing the name of the JChem property table name of the property table.
mode - possible values UPDATE, INSERT, INSERT_WITH_ID. Not all RDBMS-s support INSERT_WITH_ID if cd_id is assigned to be auto incremented,
tableName - name of structure table to be modified
additionalColumns - specify columns that are not created automatically by JChemManager.
Throws:
java.sql.SQLException
PropertyNotSetException

UpdateHandler

public UpdateHandler(ConnectionHandler conh,
                     int mode,
                     java.lang.String tableName,
                     java.lang.String additionalColumns,
                     java.lang.String indexedTable,
                     java.lang.String indexedColumn)
              throws java.sql.SQLException,
                     PropertyNotSetException
Constructor. FOR INTERNAL USE ONLY.

Parameters:
conh - ConnectionHandler opened to the database, containing the name of the JChem property table name of the property table.
mode - possible values UPDATE, INSERT, INSERT_WITH_ID. Not all RDBMS-s support INSERT_WITH_ID if cd_id is assigned to be auto incremented,
tableName - name of structure table to be modified
additionalColumns - specify columns that are not created automatically by JChemManager.
indexedTable - the name of indexed table when used with JChem Cartridge for regular structure tables. Must be null for JChem structure tables.
indexedColumn - the name of indexed column when used with JChem Cartridge for regular structure tables. Must be null for JChem structure tables.
Throws:
java.sql.SQLException
PropertyNotSetException
Since:
JChem JChem 3.0
Method Detail

init

public void init(ConnectionHandler conHandler,
                 int mode,
                 java.lang.String tableName,
                 java.lang.String additionalColumns)
          throws java.sql.SQLException,
                 PropertyNotSetException
Initializes the object. Useful if UpdateHandler is applied as a JavaBean. It should be called immediately after constructing the object.

Parameters:
conHandler - connection handler object.
mode - possible values UPDATE, INSERT, INSERT_WITH_ID. Not all RDBMS-s support INSERT_WITH_ID if cd_id is assigned to be auto incremented,
tableName - name of structure table to be modified
additionalColumns - specify columns that are not created automatically by JChemManager.
Throws:
java.sql.SQLException
PropertyNotSetException
See Also:
ConnectionHandler

getPreferredTableType

public static int getPreferredTableType(Molecule m)
Returns the preferred table type for the given molecule object.

Parameters:
m - The molecule to be imported.
Returns:
One of the following constants
Since:
JChem 3.2.4
See Also:
TableTypeConstants.TABLE_TYPE_MOLECULES, TableTypeConstants.TABLE_TYPE_REACTIONS, TableTypeConstants.TABLE_TYPE_MOLECULES, TableTypeConstants.TABLE_TYPE_MARKUSH_LIBRARIES

isInsertable

public static boolean isInsertable(Molecule m,
                                   int tableType,
                                   boolean isEmptyStructuresAllowed)
Decides whether a molecule can be inserted into a table of a given type.

Parameters:
m - Molecule object to be inserted.
tableType - The type of the table to be inserted into.
isEmptyStructuresAllowed - Is empty structure allowed in the table?
Returns:
true if the molecule is allowed to be inserted into the given table type.
Since:
JChem 3.2.4
See Also:
TableTypeConstants.TABLE_TYPE_MOLECULES, TableTypeConstants.TABLE_TYPE_REACTIONS, TableTypeConstants.TABLE_TYPE_MOLECULES, TableTypeConstants.TABLE_TYPE_QUERY_STRUCTURES, TableTypeConstants.TABLE_TYPE_MARKUSH_LIBRARIES

getMolecule

public Molecule getMolecule()
Returns the Molecule that was used during insert or update.

Returns:
the structure specified in setValuesForFixColumns( ... ) in standardized form, as it was inserted into the database.
NOTE: Should be called only after execute().
Since:
JChem 2.2.1

setROWID

public void setROWID(java.lang.String rowID)
Sets values for all fix columns in cartridge mode if the mode is INSERT_WITH_ID.
FOR INTERNAL USE ONLY.

Parameters:
rowID - the ROWID if the original line in the non-jchem table.

setStructure

public void setStructure(java.lang.String source)
Sets the source of the input molecule.

Parameters:
source - the source of the structure (molfile, SMILES, MRV, etc.)
Since:
JChem 3.2
See Also:
setStructure(byte[])

setStructure

public void setStructure(byte[] source)
Sets the source of the input molecule.

Parameters:
source - the source of the structure (molfile, SMILES, MRV, etc.)
Since:
JChem 3.2
See Also:
setStructure(String)

setID

public void setID(int id)
Sets the cd_id value for the structure. Effective in UPDATE or INSERT_WITH_ID mode.

Parameters:
id - the cd_id value
Since:
JChem 3.2

setIgnoreChemicalTermsExceptions

public void setIgnoreChemicalTermsExceptions(boolean ignore)
Specifies wheather to ignore exceptions during the calcualtion of Chemical Terms columns.

Parameters:
ignore - if set to true, no exceptions will be thrown if a calcualtion for a Chemical Terms column fails. The affected column will have a value of NULL in the database. The default value is false.
Since:
JChem 3.2.6

setLoggingEnabled

public void setLoggingEnabled(boolean value)
Enables / disables logging structures during import.

Parameters:
value - If true (default value), logging is enabled.

isLoggingEnabled

public boolean isLoggingEnabled()
Shows whether logging is enabled during import.

Returns:
True if logging is enabled.

checkChemTermColValue

public static java.lang.Object checkChemTermColValue(java.lang.Object result)

setStructureNameField

public void setStructureNameField(java.lang.String nameField)
Set the name of that column where the structure name is stored.

Parameters:
nameField - Name of the column.

getStructureNameField

public java.lang.String getStructureNameField()
Get the name of that column which stores the structure names.

Returns:
Name of the column.

setValueForAdditionalColumn

public void setValueForAdditionalColumn(int index,
                                        java.lang.Object value,
                                        int sqlType)
                                 throws java.sql.SQLException
Sets values for an additional column. Call setValuesForFixColumns before invoking this method.

Parameters:
index - the index value of the additional column as listed in the constructor starting at 1.
value - the value of the column in the row. It can also be null if the column is declared as NULL.
sqlType - the type of the column as defined in java.sql.Types
Throws:
java.sql.SQLException

setValueForAdditionalColumn

public void setValueForAdditionalColumn(int index,
                                        java.lang.Object value)
                                 throws java.sql.SQLException
Sets values for all additional columns Type is defined automatically.

Parameters:
index - the index value of the additional column as listed in the constructor starting at 1.
value - the value of the column in the row.
Throws:
java.sql.SQLException

setEmptyStructuresAllowed

public void setEmptyStructuresAllowed(boolean allowed)
Sets if empty structures are allowed, default is false

Parameters:
allowed - set to true to enable empty srtuctures

setDuplicateFiltering

@Deprecated
public void setDuplicateFiltering(boolean filtering)
Deprecated. since JChem 5.4. This import option has been table option, instead of this use setDuplicateFiltering(int) method

Sets if duplicate structures are allowed to be inserted into the database.

Parameters:
filtering - set to true to enable filtering. Default setting is false
See Also:
DatabaseProperties.setDuplicateFilteringOption(String, boolean), StructureTableOptions.duplicateFiltering

setDuplicateFiltering

public void setDuplicateFiltering(int duplicateFilteringOption)
Sets the duplicate filtering option on import. See Importer.setDuplicateImportAllowed(int)

Parameters:
duplicateFilteringOption -
  • If set to DUPLICATE_FILTERING_ON does not import molecules that already exist in the table with the same topology. Forces switching ON duplicate filtering regardless of table setting. This checking may slow down the import progress.
  • If set to DUPLICATE_FILTERING_OFF duplicates are allowed. Forces switching OFF duplicate filtering regardless of table setting.
  • If set to DUPLICATE_FILTERING_TABLE_OPTION the value of the table option (StructureTableOptions.duplicateFiltering) controls the filtering of duplicates.
See Also:
DUPLICATE_FILTERING_ON, DUPLICATE_FILTERING_OFF, DUPLICATE_FILTERING_TABLE_OPTION, StructureTableOptions.duplicateFiltering, Importer.setDuplicateImportAllowed(int)

setSetChiralFlag

public void setSetChiralFlag(boolean setChiralFlag)
Sets if chiral flag should be set to true during import. Useful when importing MDL files with missing chiral flag.

Parameters:
setChiralFlag - if set to true, chiral flag is set to true for imported molecules. The default setting is false. since 2.3

getSetChiralFlag

public boolean getSetChiralFlag()
Getter for property setChiralFlag.

Returns:
the value of property setChiralFlag
See Also:
setSetChiralFlag(boolean)

setStandardizationEnabled

public void setStandardizationEnabled(boolean allowed)
Enables or disables standardization. NOTE: if the structure is not already properly standardized, disabling standardization may have unpredictable effects on search results.

Parameters:
allowed - if false, no standardization is performed when inserting structure. Default is value true.

execute

public void execute()
             throws java.sql.SQLException
Executes the update or insert operation. Same as execute(false)

Throws:
java.sql.SQLException

execute

public int execute(boolean returnLastId)
            throws java.sql.SQLException
Executes the update or insert operation.
Stays in the same transaction if Connection.getAutoCommit()==false

Parameters:
returnLastId - if true, then gets the last inserted ID and returns it.
NOTE: works with ORACLE, DB2, MySQL, MSSQLServer, InterBase, PostgreSQL and MSAccess
Returns:
the last inserted id, or zero if returnLastId is false or the operation is update. If duplicateFiltering is on, returns the cd_id of the already existing structure in the database as a negative value. (regardless of returnLastId).
Throws:
java.sql.SQLException

close

public void close()
           throws java.sql.SQLException
Closes the handler (required to call). Closes the prepared statements applied and writes the changes to the log table (required for correct cache update).

Throws:
java.sql.SQLException

saveUpdateLogs

public void saveUpdateLogs()
                    throws java.sql.SQLException
Saves the current - possibly buffered - update log(s). Must be called before committing updates in transaction!

Throws:
java.sql.SQLException

deleteRows

public static void deleteRows(ConnectionHandler conh,
                              java.lang.String tableName,
                              java.lang.String where)
                       throws java.sql.SQLException
Deletes the specified rows from a structure table. Also deletes the appropriate rows from the corresponding Molecular Descriptor tables, if present and needed. (Referential integrity is used to take care of that for most RDBMSs). This method is best suited to delete large number of rows. The IDs of the deleted structures will not be logged individually, therefore the cache update may take some time after the operation. For deleting a small amount of records using deleteRow(chemaxon.util.ConnectionHandler, String, int) is recommended.

Parameters:
conh - connection to the database
tableName - name of structure table to be modified
where - the WHERE part of the SQL statement deleting the rows. E.g. "WHERE cd_id IN (23, 247, 786)". If null or empty string all rows will be deleted.
Throws:
java.sql.SQLException
See Also:
deleteRow(chemaxon.util.ConnectionHandler, String, int)

deleteRows

public static void deleteRows(ConnectionHandler conh,
                              java.lang.String tableName,
                              java.lang.String where,
                              boolean enableLogging)
                       throws java.sql.SQLException
Deletes the specified rows from a structure table. Also deletes the appropriate rows from the corresponding Molecular Descriptor tables, if present and needed. (Referential integrity is used to take care of that for most RDBMSs). This method is best suited to delete large number of rows. The IDs of the deleted structures will not be logged individually, therefore the cache update may take some time after the operation. For deleting a small amount of records using deleteRow(chemaxon.util.ConnectionHandler, String, int) is recommended.

Parameters:
conh - connection to the database
tableName - name of structure table to be modified
where - the WHERE part of the SQL statement deleting the rows. E.g. "WHERE cd_id IN (23, 247, 786)". If null or empty string all rows will be deleted.
enableLogging - set to true if logging the deletion is enabled
Throws:
java.sql.SQLException
See Also:
deleteRow(chemaxon.util.ConnectionHandler, String, int)

deleteRow

public static void deleteRow(ConnectionHandler conh,
                             java.lang.String tableName,
                             int cd_id)
                      throws java.sql.SQLException
Deletes the specified rows from a structure table. Also deletes the appropriate rows from the corresponding Molecular Descriptor tables, if present and needed. (Referential integrity is used to take care of that for most RDBMSs). Use this method to delete relatively small amount of records. The ID of each structure is logged in the update log table providing efficient cache update after the operation. For deleting a large amount of records using deleteRows(chemaxon.util.ConnectionHandler, String, String) is recommended.

Parameters:
conh - connection to the database
tableName - the name of the structure table
cd_id - the cd_id value of the row to be deleted (primary key)
Throws:
java.sql.SQLException
Since:
5.0
See Also:
deleteRows(chemaxon.util.ConnectionHandler, String, String)

deleteRow

public static void deleteRow(ConnectionHandler conh,
                             java.lang.String tableName,
                             int cd_id,
                             boolean enableLogging)
                      throws java.sql.SQLException
Deletes the specified rows from a structure table. Also deletes the appropriate rows from the corresponding Molecular Descriptor tables, if present and needed. (Referential integrity is used to take care of that for most RDBMSs). Use this method to delete relatively small amount of records. if enableLoggingThe ID of each structure is logged in the update log table providing efficient cache update after the operation. For deleting a large amount of records using deleteRows(chemaxon.util.ConnectionHandler, String, String) is recommended.

Parameters:
conh - connection to the database
tableName - the name of the structure table
cd_id - the cd_id value of the row to be deleted (primary key)
enableLogging - set to true if logging the deletion is enabled
Throws:
java.sql.SQLException
Since:
5.0
See Also:
deleteRows(chemaxon.util.ConnectionHandler, String, String)

getStructureTables

public static java.lang.String[] getStructureTables(ConnectionHandler conh)
                                             throws java.sql.SQLException
Collects the names of all structures tables in the database (from the records of the JChemProperties table).

Parameters:
conh - connection to the database
Throws:
java.sql.SQLException

createStructureTable

public static void createStructureTable(ConnectionHandler conh,
                                        StructureTableOptions options)
                                 throws java.sql.SQLException
Creates a structure table.

Parameters:
conh - connection to the database
options - options for table creation
Throws:
java.sql.SQLException
Since:
JChem 5.0
See Also:
StructureTableOptions

dropStructureTable

public static void dropStructureTable(ConnectionHandler conh,
                                      java.lang.String tableName)
                               throws java.sql.SQLException
Drops a structure table.

Parameters:
conh - connection to the database
tableName - name of structure table
Throws:
java.sql.SQLException

recalculateTable

public static boolean recalculateTable(ConnectionHandler ch,
                                       java.lang.String tableName,
                                       boolean changeStandardization,
                                       java.lang.String standardizerConfig,
                                       java.util.Map chemTermColCfg,
                                       java.lang.Boolean tautomerDuplicateFiltering,
                                       ProgressWriter pw)
                                throws UpdateHandlerException
Recalculates generated values in a structure table in normal mode.

Parameters:
ch - ConnectionHandler opened to the database
tableName - the name of the structure table to be regenerated
changeStandardization - changes default standardization if true
standardizerConfig - new standardizer configuration, is set to
chemTermColCfg - colname-to-chemterm map for columns autocalculated based on Chemical Terms. Specify null if there is no change in the column definitions.
tautomerDuplicateFiltering - set to Boolean.TRUE to enable considering tautomers during duplicate filtering. Set to null to keep the current setting (default).
pw - ProgressWriter for monitoring (and if needed cancelling) the progress of regeneration. May be null if no monitoring is necessary.
Returns:
whether any error occured during the regeneration process (true, if not).
Throws:
UpdateHandlerException
Since:
JChem 5.0

recalculateTable

public static boolean recalculateTable(ConnectionHandler ch,
                                       java.lang.String tableName,
                                       boolean changeStandardization,
                                       java.lang.String standardizerConfig,
                                       java.util.Map chemTermColCfg,
                                       java.lang.Boolean tautomerDuplicateFiltering,
                                       ProgressWriter pw,
                                       int regenerationMode)
                                throws UpdateHandlerException
Recalculates generated values in a structure table.

Parameters:
ch - ConnectionHandler opened to the database
tableName - the name of the structure table to be regenerated
changeStandardization - changes default standardization if true
standardizerConfig - new standardizer configuration, is set to
chemTermColCfg - colname-to-chemterm map for columns autocalculated based on Chemical Terms. Specify null if there is no change in the column definitions.
tautomerDuplicateFiltering - set to Boolean.TRUE to enable considering tautomers during duplicate filtering. Set to null to keep the current setting (default).
pw - ProgressWriter for monitoring (and if needed cancelling) the progress of regeneration. May be null if no monitoring is necessary.
regenerationMode - Normal, precalculation or regenerate not precalculated rows (see: RegenerationConstants)
Returns:
whether any error occured during the regeneration process (true, if not).
Throws:
UpdateHandlerException
Since:
JChem 5.0

recalculateCTColumns

public static boolean recalculateCTColumns(ConnectionHandler ch,
                                           java.lang.String tableName,
                                           java.lang.String[] columns,
                                           ProgressWriter pw)
                                    throws UpdateHandlerException
Recalculates chemical terms in a structure table in normal mode.

Parameters:
ch - ConnectionHandler opened to the database
tableName - the name of the structure table to be regenerated
columns - array of chemical terms column names
pw - ProgressWriter for monitoring (and if needed cancelling) the progress of regeneration. May be null if no monitoring is necessary.
Returns:
whether any error occured during the regeneration process (true, if not).
Throws:
UpdateHandlerException
Since:
JChem 5.1.2

recalculateCTColumns

public static boolean recalculateCTColumns(ConnectionHandler ch,
                                           java.lang.String tableName,
                                           java.lang.String[] columns,
                                           ProgressWriter pw,
                                           int regenerationMode)
                                    throws UpdateHandlerException
Recalculates chemical terms in a structure table.

Parameters:
ch - ConnectionHandler opened to the database
tableName - the name of the structure table to be regenerated
columns - array of chemical terms column names
pw - ProgressWriter for monitoring (and if needed cancelling) the progress of regeneration. May be null if no monitoring is necessary.
regenerationMode - Normal, precalculation or regenerate not precalculated rows (see: RegenerationConstants)
Returns:
whether any error occured during the regeneration process (true, if not).
Throws:
UpdateHandlerException
Since:
JChem 5.1.2

recalculateMDTables

public static boolean recalculateMDTables(ConnectionHandler ch,
                                          java.lang.String tableName,
                                          ProgressWriter pw)
                                   throws UpdateHandlerException,
                                          java.sql.SQLException
Recalculates molecular descriptors for a structure table / for all structure tables.

Parameters:
ch - ConnectionHandler opened to the database
tableName - the name of the structure table to be regenerated
pw - ProgressWriter for monitoring (and if needed cancelling) the progress of regeneration. May be null if no monitoring is necessary.
Returns:
whether any error occured during the regeneration process (true, if not).
Throws:
java.sql.SQLException
UpdateHandlerException
Since:
JChem 5.3.2

recalculateWithoutCTColumns

public static boolean recalculateWithoutCTColumns(ConnectionHandler ch,
                                                  java.lang.String tableName,
                                                  boolean changeStandardization,
                                                  java.lang.String standardizerConfig,
                                                  java.lang.Boolean tautomerDuplicateFiltering,
                                                  ProgressWriter pw)
                                           throws UpdateHandlerException
Recalculates generated values in a structure table but skips Chemical Terms calculations in normal mode.

Parameters:
ch - ConnectionHandler opened to the database
tableName - the name of the structure table to be regenerated
changeStandardization - changes default standardization if true
standardizerConfig - new standardizer configuration, is set to
tautomerDuplicateFiltering - set to Boolean.TRUE to enable considering tautomers during duplicate filtering. Set to null to keep the current setting (default).
pw - ProgressWriter for monitoring (and if needed cancelling) the progress of regeneration. May be null if no monitoring is necessary.
Returns:
whether any error occured during the regeneration process (true, if not).
Throws:
UpdateHandlerException
Since:
JChem 5.2.4

recalculateWithoutCTColumns

public static boolean recalculateWithoutCTColumns(ConnectionHandler ch,
                                                  java.lang.String tableName,
                                                  boolean changeStandardization,
                                                  java.lang.String standardizerConfig,
                                                  java.lang.Boolean tautomerDuplicateFiltering,
                                                  ProgressWriter pw,
                                                  int regenerationMode)
                                           throws UpdateHandlerException
Recalculates generated values in a structure table but skips Chemical Terms calculations.

Parameters:
ch - ConnectionHandler opened to the database
tableName - the name of the structure table to be regenerated
changeStandardization - changes default standardization if true
standardizerConfig - new standardizer configuration, is set to
tautomerDuplicateFiltering - set to Boolean.TRUE to enable considering tautomers during duplicate filtering. Set to null to keep the current setting (default).
pw - ProgressWriter for monitoring (and if needed cancelling) the progress of regeneration. May be null if no monitoring is necessary.
regenerationMode - Normal, precalculation or regenerate not precalculated rows (see: RegenerationConstants)
Returns:
whether any error occured during the regeneration process (true, if not).
Throws:
UpdateHandlerException
Since:
JChem 5.2.4

createRowData

public UpdateHandler.RowData createRowData(java.lang.String molString)
                                    throws UpdateHandlerException,
                                           MolFormatException
Calculates row data from molecule string.

NOTE: Not thread safe ! Multiple threads should use multiple UpdateHandler instances to call this method.

Parameters:
molString - the source of the structure
Throws:
UpdateHandlerException
MolFormatException
Since:
JChem 3.2
See Also:
setRowData(chemaxon.jchem.db.UpdateHandler.RowData)

createRowData

public UpdateHandler.RowData createRowData(byte[] molString)
                                    throws UpdateHandlerException,
                                           MolFormatException
Calculates row data from molecule string.

NOTE: Not thread safe ! Multiple threads should use multiple UpdateHandler instances to call this method.

Parameters:
molString - the source of the structure
Throws:
UpdateHandlerException
MolFormatException
Since:
JChem 3.2
See Also:
setRowData(chemaxon.jchem.db.UpdateHandler.RowData)

setRowData

public void setRowData(UpdateHandler.RowData rowData)
                throws java.sql.SQLException
Specifies pre-calculated row data values. Subtitutes setValueForFixColumns() and setValueForAdditionalColumn calls. Useful if the data is calculated in a multi-thread environment.

Parameters:
rowData - the RowData object
Throws:
java.sql.SQLException
Since:
JChem 3.2
See Also:
createRowData(String)

setChemTermCalc

public void setChemTermCalc(boolean isCalcNeeded)
Enable or disable the chemical terms calculation during the update

Parameters:
isCalcNeeded - boolean

getPrecalculatedRowNumber

public static int getPrecalculatedRowNumber(ConnectionHandler conh,
                                            java.lang.String tableName)
                                     throws java.sql.SQLException
Throws:
java.sql.SQLException