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
.ResultSet
;
13 import java
.sql
.SQLException
;
14 import java
.util
.ArrayList
;
15 import java
.util
.List
;
16 import java
.util
.UUID
;
18 import org
.apache
.commons
.lang
.StringUtils
;
19 import org
.apache
.log4j
.Logger
;
21 import eu
.etaxonomy
.cdm
.common
.monitor
.IProgressMonitor
;
22 import eu
.etaxonomy
.cdm
.database
.DatabaseTypeEnum
;
23 import eu
.etaxonomy
.cdm
.database
.ICdmDataSource
;
24 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
31 public abstract class SchemaUpdaterStepBase
<T
extends SchemaUpdaterStepBase
<T
>> implements ISchemaUpdaterStep
{
32 private static final Logger logger
= Logger
.getLogger(SchemaUpdaterStepBase
.class);
34 protected String stepName
;
37 //************************ CONSTRUCTOR ***********************************/
39 protected SchemaUpdaterStepBase(String stepName
){
40 this.setStepName(stepName
);
44 * @see eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep#invoke(eu.etaxonomy.cdm.database.ICdmDataSource, eu.etaxonomy.cdm.common.IProgressMonitor)
46 public abstract Integer
invoke (ICdmDataSource datasource
, IProgressMonitor monitor
) throws SQLException
;
49 * @see eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep#setStepName(java.lang.String)
51 public void setStepName(String stepName
) {
52 this.stepName
= stepName
;
56 * @see eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep#getStepName()
58 public String
getStepName() {
64 protected String
getBoolean(boolean value
, ICdmDataSource datasource
) {
66 DatabaseTypeEnum type
= datasource
.getDatabaseType();
67 int intValue
= value
== true?
1 : 0;
68 if (type
.equals(DatabaseTypeEnum
.MySQL
)){
69 result
= "b'"+intValue
+"'";
70 }else if (type
.equals(DatabaseTypeEnum
.PostgreSQL
)){
71 result
= "'"+intValue
+"'";
72 }else if (type
.equals(DatabaseTypeEnum
.H2
)){
73 result
= value
== true ?
"TRUE" : "FALSE";
74 }else if (type
.equals(DatabaseTypeEnum
.SqlServer2005
)){
75 logger
.warn("SQLServer boolean not tested yet");
76 result
= "b'"+intValue
+"'";
78 throw new RuntimeException("Database type not supported for boolean" + type
.getName());
83 protected Integer
getEnglishLanguageId(ICdmDataSource datasource
, IProgressMonitor monitor
) throws SQLException
{
84 return getLanguageId(Language
.uuidEnglish
, datasource
, monitor
);
92 * @throws SQLException
94 protected Integer
getLanguageId(UUID uuidLanguage
, ICdmDataSource datasource
, IProgressMonitor monitor
) throws SQLException
{
96 Integer langId
= null;
97 String sqlLangId
= " SELECT id FROM DefinedTermBase WHERE uuid = '" + uuidLanguage
+ "'";
98 rs
= datasource
.executeQuery(sqlLangId
);
100 langId
= rs
.getInt("id");
102 String warning
= "Term for language (" + uuidLanguage
+ ") does not exist!";
103 monitor
.warning(warning
);
109 public List
<ISchemaUpdaterStep
> getInnerSteps(){
110 return new ArrayList
<ISchemaUpdaterStep
>();
114 public String
toString(){
115 if (StringUtils
.isNotBlank(stepName
)){
118 return super.toString();