minor
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / database / update / TableCreator.java
index 499888f336a33c4fa5af4b85447556cb3b63aedf..2a9f1aebde54cbfac79ae610924bf72ab990d67e 100644 (file)
@@ -141,6 +141,7 @@ public class TableCreator extends SchemaUpdaterStepBase<TableCreator> implements
        }\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
@@ -172,9 +173,14 @@ public class TableCreator extends SchemaUpdaterStepBase<TableCreator> implements
                        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
@@ -221,30 +227,33 @@ public class TableCreator extends SchemaUpdaterStepBase<TableCreator> implements
                }\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
@@ -260,7 +269,13 @@ public class TableCreator extends SchemaUpdaterStepBase<TableCreator> implements
                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