Project

General

Profile

Download (4 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.cdm.database.update.v30_40;
10

    
11
import java.sql.SQLException;
12
import java.util.List;
13

    
14
import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;
15

    
16
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
17
import eu.etaxonomy.cdm.database.ICdmDataSource;
18
import eu.etaxonomy.cdm.database.update.CaseType;
19
import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;
20
import eu.etaxonomy.cdm.database.update.SchemaUpdateResult;
21
import eu.etaxonomy.cdm.database.update.SchemaUpdaterStepBase;
22
import eu.etaxonomy.cdm.model.name.Rank;
23
import eu.etaxonomy.cdm.model.name.RankClass;
24

    
25
/**
26
 * @author a.mueller
27
 * @since 15.12.2013
28
 */
29
public class RankClassUpdater extends SchemaUpdaterStepBase {
30
	private static final Logger logger = LogManager.getLogger(RankClassUpdater.class);
31

    
32
	private static final String stepName = "Update rank class values";
33

    
34
// **************************** STATIC METHODS ********************************/
35

    
36
	public static final RankClassUpdater NewInstance(List<ISchemaUpdaterStep> stepList){
37
		return new RankClassUpdater(stepList, stepName);
38
	}
39

    
40
	protected RankClassUpdater(List<ISchemaUpdaterStep> stepList, String stepName) {
41
		super(stepList, stepName);
42
	}
43

    
44
	@Override
45
	public void invoke(ICdmDataSource datasource, IProgressMonitor monitor,
46
	        CaseType caseType, SchemaUpdateResult result) throws SQLException {
47

    
48
		try {
49
			//update representation label
50
			String sql;
51
			sql = caseType.replaceTableNames(" SELECT orderindex FROM @@DefinedTermBase@@ WHERE uuid = '%s'");
52
			Integer genusOrderIndex = (Integer)datasource.getSingleValue(String.format(sql, Rank.uuidGenus));
53
			Integer infraGenericOrderIndex = (Integer)datasource.getSingleValue(String.format(sql, Rank.uuidInfragenericTaxon));
54
			Integer speciesOrderIndex = (Integer)datasource.getSingleValue(String.format(sql, Rank.uuidSpecies));
55

    
56
			//suprageneric
57
			sql = caseType.replaceTableNames(
58
					" UPDATE @@DefinedTermBase@@ " +
59
					" SET rankClass = '%s' " +
60
					" WHERE DTYPE = 'Rank' AND orderindex < %d");
61
			datasource.executeUpdate(String.format(sql, RankClass.Suprageneric.getKey(), genusOrderIndex));
62

    
63
			//genus
64
			sql = caseType.replaceTableNames(
65
					" UPDATE @@DefinedTermBase@@ " +
66
					" SET rankClass = '%s' " +
67
					" WHERE DTYPE = 'Rank' AND orderindex = %d");
68
			datasource.executeUpdate(String.format(sql, RankClass.Genus.getKey(), genusOrderIndex));
69

    
70
			//infrageneric
71
			sql = caseType.replaceTableNames(
72
					" UPDATE @@DefinedTermBase@@ " +
73
					" SET rankClass = '%s' " +
74
					" WHERE DTYPE = 'Rank' AND orderindex > %d AND orderindex <= %d");
75
			datasource.executeUpdate(String.format(sql, RankClass.Infrageneric.getKey(), genusOrderIndex, infraGenericOrderIndex));
76

    
77
			//species group
78
			sql = caseType.replaceTableNames(
79
					" UPDATE @@DefinedTermBase@@ " +
80
					" SET rankClass = '%s' " +
81
					" WHERE DTYPE = 'Rank' AND orderindex > %d AND orderindex < %d");
82
			datasource.executeUpdate(String.format(sql, RankClass.SpeciesGroup.getKey(), infraGenericOrderIndex, speciesOrderIndex));
83

    
84
			//species
85
			sql = caseType.replaceTableNames(
86
					" UPDATE @@DefinedTermBase@@ " +
87
					" SET rankClass = '%s' " +
88
					" WHERE DTYPE = 'Rank' AND orderindex = %d");
89
			datasource.executeUpdate(String.format(sql, RankClass.Species.getKey(), speciesOrderIndex));
90

    
91
			//infraspecific
92
			sql = caseType.replaceTableNames(
93
					" UPDATE @@DefinedTermBase@@ " +
94
					" SET rankClass = '%s' " +
95
					" WHERE DTYPE = 'Rank' AND orderindex > %d");
96
			datasource.executeUpdate(String.format(sql, RankClass.Infraspecific.getKey(), speciesOrderIndex));
97

    
98
			return;
99

    
100
		} catch (Exception e) {
101
		    String message = e.getMessage();
102
            monitor.warning(message, e);
103
            logger.warn(message);
104
            result.addException(e, message, this, "invoke");
105
            return;
106
		}
107
	}
108

    
109
}
(3-3/16)