]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-2497: A post-init task now creates indexes on inAuthority (where relevant...
authorAron Roberts <aron@socrates.berkeley.edu>
Sat, 5 Feb 2011 00:32:26 +0000 (00:32 +0000)
committerAron Roberts <aron@socrates.berkeley.edu>
Sat, 5 Feb 2011 00:32:26 +0000 (00:32 +0000)
3rdparty/nuxeo/nuxeo-database-templates/mysql/collectionspace_mysql/config/default-repository-config.xml
services/common/src/main/config/services/tenant-bindings.xml
services/common/src/main/java/org/collectionspace/services/common/init/AddIndices.java
services/common/src/main/java/org/collectionspace/services/common/init/InitHandler.java
services/common/src/main/java/org/collectionspace/services/common/init/ModifyFieldDatatypes.java
services/common/src/main/java/org/collectionspace/services/common/storage/DatabaseProductType.java
services/common/src/main/java/org/collectionspace/services/common/storage/JDBCTools.java

index 3cc77ca228ae7853bd01c56a912d78f59945b284..85ed84cd9ae2f671a6b7a8cf39c366b60b290bd9 100644 (file)
           <!-- =========================================================== -->
           <!-- Storage Location / Location -->
           <!-- =========================================================== -->
-          <field type="largetext">locations_common:displayName</field>
           <field type="largetext">locations_common:name</field>
           <!-- conditionNote will be made part of a repeatable group of fields in a future release -->
           <field type="largetext">locations_common:conditionNote</field>
index cb39e0bff203182d13ba9223b24533389651a11a..b4a7f89c2bffad031af6bc27b982dfa3e011b0f2 100644 (file)
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.vocabulary.nuxeo.VocabularyValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.vocabularies_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.vocabularies_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object name="Vocabulary" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.vocabulary.nuxeo.VocabularyItemValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.vocabularyitems_common</service:table>
+                        <service:col>inauthority</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.vocabularyitems_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.vocabularyitems_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object name="Vocabularyitem" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.organization.nuxeo.OrgAuthorityValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.orgauthorities_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.orgauthorities_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Orgauthority" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.organization.nuxeo.OrganizationValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.organizations_common</service:table>
+                        <service:col>inauthority</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.organizations_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.organizations_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Organization" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.person.nuxeo.PersonAuthorityValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.personauthorities_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.personauthorities_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Personauthority" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.person.nuxeo.PersonValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.persons_common</service:table>
+                        <service:col>inauthority</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.persons_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.persons_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Person" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:documentHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.location.nuxeo.LocationAuthorityDocumentModelHandler
             </service:documentHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.locationauthorities_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.locationauthorities_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Locationauthority" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.location.nuxeo.LocationValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.locations_common</service:table>
+                        <service:col>inauthority</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.locations_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.locations_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Locationitem" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
         </tenant:serviceBindings>
         <!-- end media service meta-data -->
 
-
         <!-- begin movement service meta-data -->
         <tenant:serviceBindings name="Movements" type="procedure" version="0.1">
             <!-- other URI paths using which this service could be accessed -->
             <service:documentHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.vocabulary.nuxeo.VocabularyDocumentModelHandler
             </service:documentHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.vocabularies_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.vocabularies_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object name="Vocabulary" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.vocabulary.nuxeo.VocabularyItemValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.vocabularyitems_common</service:table>
+                        <service:col>inauthority</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.vocabularyitems_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.vocabularyitems_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object name="Vocabularyitem" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.organization.nuxeo.OrgAuthorityValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.orgauthorities_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.orgauthorities_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Orgauthority" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.organization.nuxeo.OrganizationValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.organizations_common</service:table>
+                        <service:col>inauthority</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.organizations_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.organizations_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Organization" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
                         <types:item><types:key>authRef</types:key><types:value>contactNames|contactName</types:value></types:item>
                         <types:item><types:key>authRef</types:key><types:value>subBodies|subBody</types:value></types:item>
                     </service:properties>
-
                     <service:content contentType="application/xml">
                         <service:xmlContent
                             namespaceURI="http://collectionspace.org/services/organization"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.person.nuxeo.PersonAuthorityValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.personauthorities_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.personauthorities_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Personauthority" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.person.nuxeo.PersonValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.persons_common</service:table>
+                        <service:col>inauthority</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.persons_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.persons_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Person" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:documentHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.location.nuxeo.LocationAuthorityDocumentModelHandler
             </service:documentHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.locationauthorities_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.locationauthorities_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Locationauthority" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
             <service:validatorHandler xmlns:service='http://collectionspace.org/services/common/service'>
                 org.collectionspace.services.location.nuxeo.LocationValidatorHandler
             </service:validatorHandler>
+            <service:initHandler xmlns:service='http://collectionspace.org/services/common/service'>
+                <service:classname>org.collectionspace.services.common.init.AddIndices</service:classname>
+                <service:params>
+                    <service:field>
+                        <service:table>nuxeo.locations_common</service:table>
+                        <service:col>inauthority</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.locations_common</service:table>
+                        <service:col>displayname</service:col>
+                    </service:field>
+                    <service:field>
+                        <service:table>nuxeo.locations_common</service:table>
+                        <service:col>shortidentifier</service:col>
+                    </service:field>
+                </service:params>
+            </service:initHandler>
             <service:object id="1" name="Locationitem" version="0.1"
                             xmlns:service='http://collectionspace.org/services/common/service'>
                 <service:part id="0" control_group="Managed"
index 0b8a9b6f89bf2ed0273ea19fb7ae499cac60eeca..512e5d762cbf28c66186d0bd97f945d6466a3fcd 100755 (executable)
@@ -22,10 +22,16 @@ import org.collectionspace.services.common.service.ServiceBindingType;
 import org.collectionspace.services.common.service.InitHandler.Params.Field;\r
 import org.collectionspace.services.common.service.InitHandler.Params.Property;\r
 import org.collectionspace.services.common.storage.DatabaseProductType;\r
+import org.collectionspace.services.common.storage.JDBCTools;\r
 \r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
+import java.sql.Connection;\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.sql.Statement;\r
+\r
 import java.util.List;\r
 \r
 /**\r
@@ -82,7 +88,7 @@ public class AddIndices extends InitHandler implements IInitHandler {
         //todo: all post-init tasks for services, or delegate to services that override.\r
         int rows = 0;\r
         String sql = "";\r
-        logger.info("Creating indicies for designated fields in " + sbt.getName()\r
+        logger.info("Creating indicies, as needed, for designated fields in " + sbt.getName()\r
                 + " for repository domain " + sbt.getRepositoryDomain().trim() + "...");\r
 \r
         for (Field field : fields) {\r
@@ -92,10 +98,10 @@ public class AddIndices extends InitHandler implements IInitHandler {
             if(Tools.notEmpty(param) && (param.indexOf(',')>-1)){\r
                 String[] fieldNames = param.split(",");\r
                 for (String fn: fieldNames){\r
-                    addOneIndex(tableName, fn);\r
+                    rows = addOneIndex(tableName, fn);\r
                 }\r
             } else {\r
-                addOneIndex(tableName, fieldName);\r
+                rows = addOneIndex(tableName, fieldName);\r
             }\r
         }\r
     }\r
@@ -103,20 +109,34 @@ public class AddIndices extends InitHandler implements IInitHandler {
     private int addOneIndex(String tableName, String columnName){\r
         int rows = 0;\r
         String sql = "";\r
+        String indexName = columnName + INDEX_SUFFIX;\r
         try {\r
-            DatabaseProductType databaseProductType = getDatabaseProductType();\r
+            DatabaseProductType databaseProductType = JDBCTools.getDatabaseProductType();\r
             // TODO: Consider refactoring this 'if' statement to a general-purpose\r
             // mechanism for retrieving and populating catalog/DDL-type SQL statements\r
             // appropriate to a particular database product.\r
             if (databaseProductType == DatabaseProductType.MYSQL) {\r
-                sql = "CREATE INDEX " + columnName + INDEX_SUFFIX + " ON " + tableName + " (" + columnName + ")";\r
+                // If the index already exists, do nothing.\r
+                if (indexExists(databaseProductType, tableName, indexName)) {\r
+                    // FIXME: Can add the option to drop and re-create an index here.\r
+                    // See MySQL documentation on DROP INDEX.\r
+                } else {\r
+                    sql = "CREATE INDEX " + indexName + " ON " + tableName + " (" + columnName + ")";\r
+                }\r
             } else if (databaseProductType == DatabaseProductType.POSTGRESQL) {\r
-                sql = "CREATE INDEX ON " + tableName + " (" + columnName + ")";\r
+                if (indexExists(databaseProductType, tableName, indexName)) {\r
+                    // FIXME: Can add the option to reindex an existing index here.\r
+                    // See PostgreSQL documentation on REINDEX.\r
+                } else {\r
+                    sql = "CREATE INDEX ON " + tableName + " (" + columnName + ")";\r
+                }\r
             } else {\r
                 throw new Exception("Unrecognized database system " + databaseProductType);\r
             }\r
-            rows = executeUpdate(sql);\r
-            logger.info("Index added to column ("+columnName+") on table ("+tableName+")");\r
+            if (sql != null && ! sql.trim().isEmpty()) {\r
+                rows = JDBCTools.executeUpdate(sql);\r
+                logger.info("Index added to column ("+columnName+") on table ("+tableName+")");\r
+            }\r
             return rows;\r
         } catch (Throwable e) {\r
             logger.info("Index NOT added to column ("+columnName+") on table ("+tableName+") SQL: "+sql+" ERROR: "+e);\r
@@ -124,4 +144,52 @@ public class AddIndices extends InitHandler implements IInitHandler {
         }\r
     }\r
 \r
+    private boolean indexExists(DatabaseProductType databaseProductType,\r
+            String tableName, String indexName) {\r
+        boolean indexExists = false;\r
+        int rows = 0;\r
+        String sql = "";\r
+        Connection conn = null;\r
+        Statement stmt = null;\r
+        ResultSet rs = null;\r
+        try {\r
+            if (databaseProductType == DatabaseProductType.MYSQL) {\r
+                sql = "SHOW INDEX FROM " + tableName + " WHERE key_name='"\r
+                        + indexName + "'";\r
+                conn = JDBCTools.getConnection(JDBCTools.getDefaultRepositoryName());\r
+                stmt = conn.createStatement();\r
+                rs = stmt.executeQuery(sql);\r
+                if (rs.last()) {\r
+                   rows = rs.getRow();\r
+                }\r
+                rs.close();\r
+                stmt.close();\r
+                conn.close();\r
+                if (rows > 0) {\r
+                    indexExists = true;\r
+                }\r
+            } else if (databaseProductType == DatabaseProductType.POSTGRESQL) {\r
+                // FIXME: Add comparable logic for PostgreSQL.\r
+            }\r
+        } catch (Exception e) {\r
+            logger.debug("Error when identifying whether index exists in table "\r
+                    + tableName + ":" + e.getMessage());\r
+        } finally {\r
+            try {\r
+                if (rs != null) {\r
+                    conn.close();\r
+                }\r
+                if (conn != null) {\r
+                    conn.close();\r
+                }\r
+                if (stmt != null) {\r
+                    stmt.close();\r
+                }\r
+            } catch (SQLException sqle) {\r
+                logger.debug("SQL Exception closing statement/connection in AddIndices: " + sqle.getLocalizedMessage());\r
+            }\r
+        }\r
+        return indexExists;\r
+    }\r
+\r
 }\r
index bd574ab6d215b6e7bfe2a7802f53bf14b9143688..f97a56a9c963c874340bc2c98def80a2875293d6 100755 (executable)
@@ -26,7 +26,7 @@ import org.collectionspace.services.common.service.InitHandler.Params.Property;
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
-import java.sql.*;\r
+import java.sql.ResultSet;\r
 import java.util.List;\r
 \r
 /** Concrete class which does nothing, but subclasses may override to do\r
@@ -68,11 +68,4 @@ public class InitHandler implements IInitHandler {
         }\r
     }\r
 \r
-    public int executeUpdate(String sql) throws Exception {\r
-        return JDBCTools.executeUpdate(sql);\r
-    }\r
-\r
-    public DatabaseProductType getDatabaseProductType() throws Exception {\r
-        return JDBCTools.getDatabaseProductType();\r
-    }\r
 }\r
index c0fcea3d716bee5481130003c78feee61e13c12f..0e72c503decdd08cc10afc811d52ebe8b41e0816 100644 (file)
@@ -27,6 +27,7 @@ import org.collectionspace.services.common.service.ServiceBindingType;
 import org.collectionspace.services.common.service.InitHandler.Params.Field;
 import org.collectionspace.services.common.service.InitHandler.Params.Property;
 import org.collectionspace.services.common.storage.DatabaseProductType;
+import org.collectionspace.services.common.storage.JDBCTools;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -51,7 +52,7 @@ public class ModifyFieldDatatypes extends InitHandler implements IInitHandler {
                     + " for repository domain " + sbt.getRepositoryDomain().trim() + "...");
         }
         try {
-            DatabaseProductType databaseProductType = getDatabaseProductType();
+            DatabaseProductType databaseProductType = JDBCTools.getDatabaseProductType();
             String datatype = "";
             for (Field field : fields) {
                 datatype = getDatatypeFromLogicalType(databaseProductType, field.getType());
@@ -65,7 +66,7 @@ public class ModifyFieldDatatypes extends InitHandler implements IInitHandler {
                 } else {
                     throw new Exception("Unrecognized database system.");
                 }
-                rows = executeUpdate(sql);
+                rows = JDBCTools.executeUpdate(sql);
             }
         } catch (Exception e) {
             throw e;
index 20adc55501e64905361f9fe5f626d4a9d8fd945a..a76a196016af4c0bc66d5c73397cd923226ef953 100644 (file)
@@ -32,9 +32,13 @@ public class DatabaseProductType {
         propertiesFileName = name + PROPERTIES_FILE_SUFFIX;
     }
 
+    public String getName() {
+        return name;
+    }
+
     @Override
     public String toString() {
-        return name;
+        return getName();
     }
 
     public String getPropertiesFileName() {
index 6dab8730c1420d5279307bca400ffc743dad1b97..2b9e9230da17328977d55aa6c2b4bd0b8da197ea 100755 (executable)
@@ -117,14 +117,14 @@ public class JDBCTools {
             SQLException tempException = sqle;\r
             String msg = "";\r
             while (null != tempException) {       // SQLExceptions can be chained. Loop to log all.\r
-                if (! msg.isEmpty()){\r
-                    msg = msg +"::next::";\r
+                if (!msg.isEmpty()) {\r
+                    msg = msg + "::next::";\r
                 }\r
                 msg = msg + sqle.getLocalizedMessage();\r
                 logger.debug("SQL Exception: " + msg);\r
                 tempException = tempException.getNextException();\r
             }\r
-            throw new RuntimeException("SQL problem in executeUpdate: "+msg, sqle);\r
+            throw new RuntimeException("SQL problem in executeUpdate: " + msg, sqle);\r
         } finally {\r
             try {\r
                 if (conn != null) {\r
@@ -159,19 +159,19 @@ public class JDBCTools {
         }\r
         return productName;\r
     }\r
-    \r
-        public static DatabaseProductType getDatabaseProductType() throws Exception {\r
-            DatabaseProductType productType = DatabaseProductType.UNRECOGNIZED;\r
-            String productName = getDatabaseProductName();\r
-            if (productName.matches("(?i).*mysql.*")) {\r
-                productType = DatabaseProductType.MYSQL;\r
-            } else if (productName.matches("(?i).*postgresql.*")) {\r
-                productType = DatabaseProductType.POSTGRESQL;\r
-            } else {\r
-                throw new Exception("Unrecognized database system " + productName);\r
-            }\r
-            return productType;\r
+\r
+    public static DatabaseProductType getDatabaseProductType() throws Exception {\r
+        DatabaseProductType productType = DatabaseProductType.UNRECOGNIZED;\r
+        String productName = getDatabaseProductName();\r
+        if (productName.matches("(?i).*mysql.*")) {\r
+            productType = DatabaseProductType.MYSQL;\r
+        } else if (productName.matches("(?i).*postgresql.*")) {\r
+            productType = DatabaseProductType.POSTGRESQL;\r
+        } else {\r
+            throw new Exception("Unrecognized database system " + productName);\r
         }\r
+        return productType;\r
+    }\r
 \r
     public static String getDefaultRepositoryName() {\r
         return ServiceMain.DEFAULT_REPOSITORY_NAME;\r