3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.database
.update
;
12 import java
.sql
.SQLException
;
13 import java
.util
.List
;
15 import org
.apache
.log4j
.Logger
;
17 import eu
.etaxonomy
.cdm
.common
.monitor
.IProgressMonitor
;
18 import eu
.etaxonomy
.cdm
.database
.ICdmDataSource
;
21 * Base class for updating a schema.
27 public abstract class SchemaUpdaterBase
extends UpdaterBase
<ISchemaUpdaterStep
, ISchemaUpdater
> implements ISchemaUpdater
{
28 @SuppressWarnings("unused")
29 private static final Logger logger
= Logger
.getLogger(SchemaUpdaterBase
.class);
31 public static boolean INCLUDE_AUDIT
= true;
32 protected static boolean INCLUDE_CDM_BASE
= true;
34 // private List<ISchemaUpdaterStep> list;
37 protected abstract List
<ISchemaUpdaterStep
> getUpdaterList();
40 protected SchemaUpdaterBase(String startSchemaVersion
, String endSchemaVersion
){
41 this.startVersion
= startSchemaVersion
;
42 this.targetVersion
= endSchemaVersion
;
43 list
= getUpdaterList();
47 protected boolean updateVersion(ICdmDataSource datasource
, IProgressMonitor monitor
) throws SQLException
{
48 int intSchemaVersion
= 0;
49 String sqlUpdateSchemaVersion
= "UPDATE CdmMetaData SET value = '" + this.targetVersion
+ "' WHERE propertyname = " + intSchemaVersion
;
51 int n
= datasource
.executeUpdate(sqlUpdateSchemaVersion
);
54 } catch (Exception e
) {
55 monitor
.warning("Error when trying to set new schemaversion: ", e
);
56 throw new SQLException(e
);
61 protected String
getCurrentVersion(ICdmDataSource datasource
, IProgressMonitor monitor
) throws SQLException
{
62 int intSchemaVersion
= 0;
63 String sqlSchemaVersion
= "SELECT value FROM CdmMetaData WHERE propertyname = " + intSchemaVersion
;
65 String value
= (String
)datasource
.getSingleValue(sqlSchemaVersion
);
67 } catch (SQLException e
) {
68 monitor
.warning("Error when trying to receive schemaversion: ", e
);