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
.v31_33
;
12 import java
.sql
.ResultSet
;
13 import java
.sql
.SQLException
;
15 import org
.apache
.log4j
.Logger
;
17 import eu
.etaxonomy
.cdm
.common
.monitor
.IProgressMonitor
;
18 import eu
.etaxonomy
.cdm
.database
.ICdmDataSource
;
19 import eu
.etaxonomy
.cdm
.database
.update
.ITermUpdaterStep
;
20 import eu
.etaxonomy
.cdm
.database
.update
.SchemaUpdaterStepBase
;
21 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
22 import eu
.etaxonomy
.cdm
.model
.name
.RankClass
;
28 public class RankClassUpdater
extends SchemaUpdaterStepBase
<RankClassUpdater
> implements ITermUpdaterStep
{
29 @SuppressWarnings("unused")
30 private static final Logger logger
= Logger
.getLogger(RankClassUpdater
.class);
32 private static final String stepName
= "Update rank class values";
34 // **************************** STATIC METHODS ********************************/
36 public static final RankClassUpdater
NewInstance(){
37 return new RankClassUpdater(stepName
);
40 protected RankClassUpdater(String stepName
) {
45 public Integer
invoke(ICdmDataSource datasource
, IProgressMonitor monitor
) throws SQLException
{
48 //update representation label
50 sql
= " SELECT orderindex FROM DefinedTermBase WHERE uuid = '%s'";
51 Integer genusOrderIndex
= (Integer
)datasource
.getSingleValue(String
.format(sql
, Rank
.uuidGenus
));
52 Integer infraGenericOrderIndex
= (Integer
)datasource
.getSingleValue(String
.format(sql
, Rank
.uuidInfragenericTaxon
));
53 Integer speciesOrderIndex
= (Integer
)datasource
.getSingleValue(String
.format(sql
, Rank
.uuidSpecies
));
56 sql
= " UPDATE DefinedTermBase dtb " +
57 " SET dtb.rankClass = '%s' " +
58 " WHERE dtb.DTYPE = 'Rank' AND dtb.orderindex < %d";
59 datasource
.executeUpdate(String
.format(sql
, RankClass
.Suprageneric
.getKey(), genusOrderIndex
));
63 sql
= " UPDATE DefinedTermBase dtb " +
64 " SET dtb.rankClass = '%s' " +
65 " WHERE dtb.DTYPE = 'Rank' AND dtb.orderindex = %d";
66 datasource
.executeUpdate(String
.format(sql
, RankClass
.Genus
.getKey(), genusOrderIndex
));
69 sql
= " UPDATE DefinedTermBase dtb " +
70 " SET dtb.rankClass = '%s' " +
71 " WHERE dtb.DTYPE = 'Rank' AND dtb.orderindex > %d AND dtb.orderindex <= %d";
72 datasource
.executeUpdate(String
.format(sql
, RankClass
.Infrageneric
.getKey(), genusOrderIndex
, infraGenericOrderIndex
));
75 sql
= " UPDATE DefinedTermBase dtb " +
76 " SET dtb.rankClass = '%s' " +
77 " WHERE dtb.DTYPE = 'Rank' AND dtb.orderindex > %d AND dtb.orderindex < %d";
78 datasource
.executeUpdate(String
.format(sql
, RankClass
.SpeciesGroup
.getKey(), infraGenericOrderIndex
, speciesOrderIndex
));
81 sql
= " UPDATE DefinedTermBase dtb " +
82 " SET dtb.rankClass = '%s' " +
83 " WHERE dtb.DTYPE = 'Rank' AND dtb.orderindex = %d";
84 datasource
.executeUpdate(String
.format(sql
, RankClass
.Species
.getKey(), speciesOrderIndex
));
87 sql
= " UPDATE DefinedTermBase dtb " +
88 " SET dtb.rankClass = '%s' " +
89 " WHERE dtb.DTYPE = 'Rank' AND dtb.orderindex > %d";
90 datasource
.executeUpdate(String
.format(sql
, RankClass
.Infraspecific
.getKey(), speciesOrderIndex
));
94 } catch (Exception e
) {
95 monitor
.warning(e
.getMessage(), e
);
96 logger
.warn(e
.getMessage());