minor
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / database / update / TableCreator.java
index 48f65fec6ee80078ffdb9d20b26cf19a30b4a644..2a9f1aebde54cbfac79ae610924bf72ab990d67e 100644 (file)
@@ -17,7 +17,7 @@ import java.util.List;
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.log4j.Logger;\r
 \r
-import eu.etaxonomy.cdm.common.IProgressMonitor;\r
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
 import eu.etaxonomy.cdm.database.DatabaseTypeEnum;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 \r
@@ -26,8 +26,7 @@ import eu.etaxonomy.cdm.database.ICdmDataSource;
  * @date 16.09.2010\r
  *\r
  */\r
-public class TableCreator extends SchemaUpdaterStepBase implements ISchemaUpdaterStep {\r
-       @SuppressWarnings("unused")\r
+public class TableCreator extends SchemaUpdaterStepBase<TableCreator> implements ISchemaUpdaterStep {\r
        private static final Logger logger = Logger.getLogger(TableCreator.class);\r
        \r
        private static final boolean SORT_INDEX = true;\r
@@ -142,6 +141,7 @@ public class TableCreator extends SchemaUpdaterStepBase implements ISchemaUpdate
        }\r
 \r
        private boolean createTable(String tableName, boolean isAudit, ICdmDataSource datasource, IProgressMonitor monitor) throws DatabaseTypeNotSupportedException {\r
+               boolean result = true;\r
                String updateQuery = "CREATE TABLE @tableName (";\r
                if (isAudit){\r
                        updateQuery += " REV integer not null, revtype tinyint, ";\r
@@ -173,9 +173,14 @@ public class TableCreator extends SchemaUpdaterStepBase implements ISchemaUpdate
                        updateQuery += " ENGINE=MYISAM DEFAULT CHARSET=utf8 ";\r
                }\r
                logger.debug(updateQuery);\r
-               datasource.executeUpdate(updateQuery);\r
-               createForeignKeys(tableName, isAudit, datasource, monitor);\r
-               return true;\r
+               try {\r
+                       datasource.executeUpdate(updateQuery);\r
+               } catch (SQLException e) {\r
+                       logger.error(e);\r
+                       result = false;\r
+               }\r
+               result &= createForeignKeys(tableName, isAudit, datasource, monitor);\r
+               return result;\r
        }\r
 \r
 \r
@@ -222,30 +227,33 @@ public class TableCreator extends SchemaUpdaterStepBase implements ISchemaUpdate
                }\r
        }\r
        \r
-       private void createForeignKeys(String tableName, boolean isAudit, ICdmDataSource datasource, IProgressMonitor monitor) {\r
+       private boolean createForeignKeys(String tableName, boolean isAudit, ICdmDataSource datasource, IProgressMonitor monitor) {\r
+               boolean result = true;\r
                if (includeCdmBaseAttributes){\r
                        String attribute = "updatedby";\r
                        String referencedTable = "UserAccount";\r
-                       makeForeignKey(tableName, datasource, attribute, referencedTable);\r
+                       result &= makeForeignKey(tableName, datasource, attribute, referencedTable);\r
                        \r
                        attribute = "createdby";\r
                        referencedTable = "UserAccount";\r
-                       makeForeignKey(tableName, datasource, attribute, referencedTable);                      \r
+                       result &= makeForeignKey(tableName, datasource, attribute, referencedTable);                    \r
                \r
                }\r
                if (isAudit){\r
                        String attribute = "REV";\r
                        String referencedTable = "AuditEvent";\r
-                       makeForeignKey(tableName, datasource, attribute, referencedTable);\r
+                       result &= makeForeignKey(tableName, datasource, attribute, referencedTable);\r
                }\r
                for (ColumnAdder adder : this.columnAdders){\r
                        if (adder.getReferencedTable() != null){\r
-                               makeForeignKey(tableName, datasource, adder.getNewColumnName(), adder.getReferencedTable()); \r
+                               result &= makeForeignKey(tableName, datasource, adder.getNewColumnName(), adder.getReferencedTable()); \r
                        }\r
                }\r
+               return result;\r
        }\r
 \r
-       public static void makeForeignKey(String tableName, ICdmDataSource datasource, String attribute, String referencedTable) {\r
+       public static boolean makeForeignKey(String tableName, ICdmDataSource datasource, String attribute, String referencedTable) {\r
+               boolean result = true;\r
                String index = "FK@tableName_@attribute";\r
                index = index.replace("@tableName", tableName);\r
                index = index.replace("@attribute", attribute);\r
@@ -261,7 +269,13 @@ public class TableCreator extends SchemaUpdaterStepBase implements ISchemaUpdate
                updateQuery = updateQuery.replace("@referencedTable", referencedTable);\r
                \r
                logger.debug(updateQuery);\r
-               datasource.executeUpdate(updateQuery);\r
+               try {\r
+                       datasource.executeUpdate(updateQuery);\r
+               } catch (SQLException e) {\r
+                       logger.error(e);\r
+                       result = false;\r
+               }\r
+               return result;\r
        }\r
 \r
 \r