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
* @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
}\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
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
}\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
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