Project

General

Profile

Download (7.83 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 * Copyright (C) 2007 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

    
10
package eu.etaxonomy.cdm.database.update.v47_49;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import org.apache.log4j.Logger;
17

    
18
import eu.etaxonomy.cdm.database.update.ClassBaseTypeUpdater;
19
import eu.etaxonomy.cdm.database.update.ColumnAdder;
20
import eu.etaxonomy.cdm.database.update.ColumnNameChanger;
21
import eu.etaxonomy.cdm.database.update.ISchemaUpdater;
22
import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;
23
import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
24
import eu.etaxonomy.cdm.database.update.SimpleSchemaUpdaterStep;
25
import eu.etaxonomy.cdm.database.update.TableNameChanger;
26
import eu.etaxonomy.cdm.database.update.TermRepresentationUpdater;
27
import eu.etaxonomy.cdm.database.update.v33_34.UsernameConstraintUpdater;
28
import eu.etaxonomy.cdm.database.update.v41_47.SchemaUpdater_41_47;
29

    
30
/**
31
/**
32
 * @author a.mueller
33
 * @date 09.06.2017
34
 *
35
 */
36
public class SchemaUpdater_47_49 extends SchemaUpdaterBase {
37

    
38
	@SuppressWarnings("unused")
39
	private static final Logger logger = Logger.getLogger(SchemaUpdater_47_49.class);
40
	private static final String endSchemaVersion = "4.9.0.0.20170710";
41
	private static final String startSchemaVersion = "4.7.0.0.201710040000";
42

    
43
	// ********************** FACTORY METHOD *************************************
44

    
45
	public static SchemaUpdater_47_49 NewInstance() {
46
		return new SchemaUpdater_47_49();
47
	}
48

    
49
	/**
50
	 * @param startSchemaVersion
51
	 * @param endSchemaVersion
52
	 */
53
	protected SchemaUpdater_47_49() {
54
		super(startSchemaVersion, endSchemaVersion);
55
	}
56

    
57
	@Override
58
	protected List<ISchemaUpdaterStep> getUpdaterList() {
59

    
60
		String stepName;
61
		String tableName;
62
		ISchemaUpdaterStep step;
63
		String newColumnName;
64
		String query;
65

    
66
		List<ISchemaUpdaterStep> stepList = new ArrayList<>();
67

    
68
		//#7109 nom. valid => nom. val.
69
		stepName = "nom valid => nom. val. (abbrevLabel)";
70
		UUID uuidTerm = UUID.fromString("bd036217-5499-4ccd-8f4c-72e06158db93");
71
		UUID uuidLanguage = UUID.fromString("160a5b6c-87f5-4422-9bda-78cd404c179e");
72
		step = TermRepresentationUpdater.NewInstance(stepName, uuidTerm,
73
		        null, null, "nom. val.", uuidLanguage);
74
		stepList.add(step);
75

    
76
		//... idInVoc
77
		stepName = "nom valid => nom. val. (idInVocabulary)";
78
        query = "UPDATE @@DefinedTermBase@@ "
79
                + " SET idInVocabulary = 'nom. val.' "
80
                + " WHERE uuid = '" + uuidTerm + "'";
81
		tableName = "DefinedTermBase";
82
		step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, tableName, -99);
83
		stepList.add(step);
84

    
85
		//#7096 Add second symbol attribute to DefinedTermBase
86
		stepName = "Add second symbol to DefinedTermBase";
87
		tableName = "DefinedTermBase";
88
		newColumnName = "symbol2";
89
		int length = 30;
90
		step = ColumnAdder.NewStringInstance(stepName, tableName, newColumnName, length, INCLUDE_AUDIT);
91
		stepList.add(step);
92

    
93
		//#6879 Update uuid and name for admin user group
94
	    stepName = "Update uuid and name for admin user group";
95
        query = "UPDATE @@PermissionGroup@@ "
96
                + " SET uuid='1739df71-bf73-4dc6-8320-aaaf72cb555f', name='Admin' "
97
                + " WHERE  name='admin' or name='Admin'";
98
        tableName = "PermissionGroup";
99
        step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, tableName, -99);
100
        stepList.add(step);
101

    
102
        //#7405 Rename WorkingSet to DescriptiveDataSet
103
        String oldTableName = "WorkingSet";
104
        changeSingleWorkingSetTableName(stepList, oldTableName);
105

    
106
        oldTableName = "WorkingSet_Annotation";
107
        changeSingleWorkingSetTableName(stepList, oldTableName);
108

    
109
        oldTableName = "WorkingSet_DescriptionBase";
110
        changeSingleWorkingSetTableName(stepList, oldTableName);
111

    
112
        oldTableName = "WorkingSet_Marker";
113
        changeSingleWorkingSetTableName(stepList, oldTableName);
114

    
115
        oldTableName = "WorkingSet_NamedArea";
116
        changeSingleWorkingSetTableName(stepList, oldTableName);
117

    
118
        oldTableName = "WorkingSet_Representation";
119
        changeSingleWorkingSetTableName(stepList, oldTableName);
120

    
121
        oldTableName = "WorkingSet_TaxonNode";
122
        changeSingleWorkingSetTableName(stepList, oldTableName);
123

    
124
        stepName = "Update hibernate_sequences for WorkingSet renaming";
125
        query = " UPDATE hibernate_sequences "
126
                + " SET sequence_name = 'DescriptiveDataSet' "
127
                + " WHERE sequence_name = WorkingSet";
128
        step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, -99);
129
        stepList.add(step);
130

    
131
        //#2335 Make WorkingSet IdentifiableEntity
132
        stepName = "Make DescriptiveDataSet IdentifiableEntity";
133
        tableName = "DescriptiveDataSet";
134
        step = ClassBaseTypeUpdater.NewAnnotatableToIdentifiableInstance(stepName, tableName, INCLUDE_AUDIT);
135
        stepList.add(step);
136

    
137
        //TODO add titleCache updater, but maybe not necessary as real data does not really exist
138
        //except for Campanula test data, and it is easy to update via TaxEditor cache updater
139

    
140

    
141
        //#7374 Set titleCache of feature trees to protected
142
        stepName = "Set titleCache of feature trees to protected";
143
        query = "UPDATE @@FeatureTree@@ "
144
                + " SET protectedTitleCache = @TRUE@ ";
145
        tableName = "FeatureTree";
146
        step = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, tableName, -99);
147
        stepList.add(step);
148

    
149

    
150
        //#7238 rename lastName and firstName
151
        stepName = "rename lastName";
152
        tableName = "AgentBase";
153
        String oldColumnName = "lastname";
154
        newColumnName = "familyName";
155
        step = ColumnNameChanger.NewClobInstance(stepName, tableName, oldColumnName, newColumnName, INCLUDE_AUDIT);
156
        stepList.add(step);
157

    
158
        //... firstName
159
        stepName = "rename firstName";
160
        tableName = "AgentBase";
161
        oldColumnName = "firstname";
162
        newColumnName = "givenName";
163
        step = ColumnNameChanger.NewClobInstance(stepName, tableName, oldColumnName, newColumnName, INCLUDE_AUDIT);
164
        stepList.add(step);
165

    
166
        //#7210 Add salt field for User
167
        stepName = "Add salt field for User";
168
        tableName = "UserAccount";
169
        newColumnName = "salt";
170
        step = ColumnAdder.NewStringInstance(stepName, tableName, newColumnName, length, INCLUDE_AUDIT);
171
        stepList.add(step);
172

    
173

    
174

    
175
        //7276  Make User.emailAddress a unique field
176
        //TODO H2 / PostGreSQL / SQL Server
177
        //User.email unique
178
        stepName = "Update User.emailAdress unique index";
179
        tableName = "UserAccount";
180
        String columnName = "emailAddress";
181
        step = UsernameConstraintUpdater.NewInstance(stepName, tableName, columnName);
182
        stepList.add(step);
183

    
184
        return stepList;
185
    }
186

    
187
    /**
188
     * @param #6368
189
     */
190
    private void changeSingleWorkingSetTableName(List<ISchemaUpdaterStep> stepList, String oldTableName) {
191
        String stepName = "Rename " +  oldTableName;
192
        String newTableName = oldTableName.replace("WorkingSet", "DescriptiveDataSet");
193
        ISchemaUpdaterStep step = TableNameChanger.NewInstance(stepName, oldTableName, newTableName, INCLUDE_AUDIT);
194
        stepList.add(step);
195

    
196
        if (oldTableName.contains("_")){
197
            stepName = "Rename " +  oldTableName + ".workingSet_id";
198
            String oldColumnName = "WorkingSet_id";
199
            String newColumnName = "DescriptiveDataSet_id";
200
            step = ColumnNameChanger.NewIntegerInstance(stepName, newTableName, oldColumnName, newColumnName, INCLUDE_AUDIT);
201
            stepList.add(step);
202
        }
203
    }
204

    
205

    
206
    @Override
207
	public ISchemaUpdater getNextUpdater() {
208
		return null;
209
	}
210

    
211
	@Override
212
	public ISchemaUpdater getPreviousUpdater() {
213
		return SchemaUpdater_41_47.NewInstance();
214
	}
215

    
216
}
    (1-1/1)