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