Project

General

Profile

Download (21.4 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.v41_47;
11

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

    
15
import org.apache.log4j.Logger;
16

    
17
import eu.etaxonomy.cdm.database.update.ColumnAdder;
18
import eu.etaxonomy.cdm.database.update.ColumnNameChanger;
19
import eu.etaxonomy.cdm.database.update.ColumnRemover;
20
import eu.etaxonomy.cdm.database.update.ISchemaUpdater;
21
import eu.etaxonomy.cdm.database.update.ISchemaUpdaterStep;
22
import eu.etaxonomy.cdm.database.update.IndexRenamer;
23
import eu.etaxonomy.cdm.database.update.MnTableCreator;
24
import eu.etaxonomy.cdm.database.update.SchemaUpdaterBase;
25
import eu.etaxonomy.cdm.database.update.SimpleSchemaUpdaterStep;
26
import eu.etaxonomy.cdm.database.update.TableCreator;
27
import eu.etaxonomy.cdm.database.update.TableNameChanger;
28
import eu.etaxonomy.cdm.database.update.UniqueIndexDropper;
29
import eu.etaxonomy.cdm.database.update.v40_41.SchemaUpdater_40_41;
30
import eu.etaxonomy.cdm.database.update.v47_49.SchemaUpdater_47_49;
31

    
32
/**
33
 * @author a.mueller
34
 * @since 09.05.2017
35
 *
36
 */
37
public class SchemaUpdater_41_47 extends SchemaUpdaterBase {
38

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

    
44
	// ********************** FACTORY METHOD *************************************
45

    
46
	public static SchemaUpdater_41_47 NewInstance() {
47
		return new SchemaUpdater_41_47();
48
	}
49

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

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

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

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

    
68
	    //#6600 remove unique indexes from Rights MN tables
69
        removeUniqueIndexForRights(stepList);
70

    
71
        //#5149 remove unique index on Sequence_Reference.citations_id
72
        tableName = "Sequence_Reference";
73
        String columnName = "citations_id";
74
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
75
        stepList.add(step);
76

    
77

    
78
        //#6340 nom status invalid updater
79
        step = NomStatusInvalidUpdater.NewInstance();
80
        stepList.add(step);
81

    
82
		//#6529
83
		//Extend WorkingSet to allow a more fine grained definiton of taxon set
84
		//min rank
85
        stepName = "Add minRank column";
86
        tableName = "WorkingSet";
87
        newColumnName = "minRank_id";
88
        String referencedTable = "DefinedTermBase";
89
        step = ColumnAdder.NewIntegerInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL, referencedTable);
90
        stepList.add(step);
91

    
92
        //max rank
93
        stepName = "Add maxRank column";
94
        tableName = "WorkingSet";
95
        newColumnName = "maxRank_id";
96
        referencedTable = "DefinedTermBase";
97
        step = ColumnAdder.NewIntegerInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL, referencedTable);
98
        stepList.add(step);
99

    
100
        //subtree filter
101
        stepName= "Add geo filter MN table to WorkingSet";
102
        String firstTableName = "WorkingSet";
103
        String secondTableAlias = "NamedArea";
104
        String secondTableName = "DefinedTermBase";
105
        String attributeName = "geoFilter";
106
        boolean isList = ! IS_LIST;
107
        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, secondTableName, secondTableAlias, attributeName, INCLUDE_AUDIT, isList, IS_M_TO_M);
108
        stepList.add(step);
109

    
110
        //subtree filter
111
        stepName= "Add subtree filter MN table to WorkingSet";
112
        firstTableName = "WorkingSet";
113
        secondTableName = "TaxonNode";
114
        secondTableAlias = null;
115
        attributeName = "taxonSubtreeFilter";
116
        isList = ! IS_LIST;
117
        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, secondTableName, secondTableAlias, attributeName, INCLUDE_AUDIT, isList, IS_M_TO_M);
118
        stepList.add(step);
119

    
120
        //#6258
121
        stepName = "Add Registration table";
122
        tableName = "Registration";
123
        String[] columnNames = new String[]{"identifier","specificIdentifier","registrationDate","status",
124
                "institution_id","name_id","submitter_id"};
125
        String[] referencedTables = new String[]{null, null, null, null,
126
                "AgentBase","TaxonNameBase","UserAccount"};
127
        String[] columnTypes = new String[]{"string_255","string_255","datetime","string_10","int","int","int"};
128
        step = TableCreator.NewAnnotatableInstance(stepName, tableName,
129
                columnNames, columnTypes, referencedTables, INCLUDE_AUDIT);
130
        stepList.add(step);
131

    
132
        //add blockedBy_id
133
        stepName= "Add blockedBy_id to Registration";
134
        firstTableName = "Registration";
135
        secondTableName = "Registration";
136
        attributeName = "blockedBy";
137
        isList = ! IS_LIST;
138
        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, secondTableName, null, attributeName, INCLUDE_AUDIT, isList, IS_M_TO_M);
139
        stepList.add(step);
140

    
141
        //add type designations
142
        stepName= "Add type designations to Registration";
143
        firstTableName = "Registration";
144
        String firstColumnName = "registrations";
145
        secondTableName = "TypeDesignationBase";
146
        attributeName = "typeDesignations";
147
        isList = false;
148
        step = MnTableCreator.NewMnInstance(stepName, firstTableName, null, firstColumnName, secondTableName, null, attributeName, INCLUDE_AUDIT, isList, IS_M_TO_M);
149
        stepList.add(step);
150

    
151
        //#5258
152
        //Add "accessed" to Reference
153
        stepName = "Add 'accessed' to Reference";
154
        tableName = "Reference";
155
        newColumnName = "accessed";
156
        step = ColumnAdder.NewDateTimeInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL);
157
        stepList.add(step);
158

    
159
        //#6618 Add structure column to DefinedTermBase (Character)
160
        stepName = "Add structure column to DefinedTermBase (Character)";
161
        tableName = "DefinedTermBase";
162
        newColumnName = "structure_id";
163
        referencedTable = "FeatureNode";
164
        step = ColumnAdder.NewIntegerInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL, referencedTable);
165
        stepList.add(step);
166

    
167
        //#6618 Add property column to DefinedTermBase (Character)
168
        stepName = "Add property column to DefinedTermBase (Character)";
169
        tableName = "DefinedTermBase";
170
        newColumnName = "property_id";
171
        referencedTable = "FeatureNode";
172
        step = ColumnAdder.NewIntegerInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL, referencedTable);
173
        stepList.add(step);
174

    
175
        //#6361 and children
176
        mergeTaxonName(stepList);
177

    
178
        //#6535 update termtype for CdmMetaData (int => string)
179
        updateTermTypeForCdmMetaDataPropertyName(stepList);
180

    
181
        //##6661 Add initials to agent base
182
        stepName = "Add initials to AgentBase";
183
        tableName = "AgentBase";
184
        newColumnName = "initials";
185
        int length = 80;
186
        step = ColumnAdder.NewStringInstance(stepName, tableName, newColumnName, length, INCLUDE_AUDIT);
187
        stepList.add(step);
188

    
189
        stepName = "Update initials and firstname";
190
        step = InitialsUpdater.NewInstance();
191
        stepList.add(step);
192

    
193
        //#6663
194
        //Add "lastRetrieved" to Reference
195
        stepName = "Add 'lastRetrieved' to Reference";
196
        tableName = "Reference";
197
        newColumnName = "lastRetrieved";
198
        step = ColumnAdder.NewDateTimeInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL);
199
        stepList.add(step);
200

    
201
        stepName = "Add externalId to Reference";
202
        tableName = "Reference";
203
        newColumnName = "externalId";
204
        length = 255;
205
        step = ColumnAdder.NewStringInstance(stepName, tableName, newColumnName, length, INCLUDE_AUDIT);
206
        stepList.add(step);
207

    
208
        stepName = "Add externalLink to Reference";
209
        tableName = "Reference";
210
        newColumnName = "externalLink";
211
        step = ColumnAdder.NewClobInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT);
212
        stepList.add(step);
213

    
214
        stepName = "Add authorityType to Reference";
215
        tableName = "Reference";
216
        newColumnName = "authorityType";
217
        length = 10;
218
        step = ColumnAdder.NewStringInstance(stepName, tableName, newColumnName, length, INCLUDE_AUDIT);
219
        stepList.add(step);
220

    
221
        //#6472 add key to IntextReference
222
        stepName = "Add key to IntextReference";
223
        tableName = "IntextReference";
224
        newColumnName = "key_id";
225
        referencedTable = "PolytomousKey";
226
        step = ColumnAdder.NewIntegerInstance(stepName, tableName, newColumnName, INCLUDE_AUDIT, !NOT_NULL, referencedTable);
227
        stepList.add(step);
228

    
229
        //#5817 rename relationshipTermBase_inverseRepresentation
230
        stepName = "Rename relationshipTermBase_inverseRepresentation";
231
        String oldName = "RelationshipTermBase_inverseRepresentation";
232
        String newName = "TermBase_inverseRepresentation";
233
        step = TableNameChanger.NewInstance(stepName, oldName, newName, INCLUDE_AUDIT);
234
        stepList.add(step);
235

    
236
        //#5817 rename TermBase_inverseRepresentation.relationshipTermBase_id
237
        stepName = "Rename relationshipTermBase_inverseRepresentation.relationshipTermBase_id";
238
        tableName = newName;
239
        String oldColumnName = "relationshipTermBase_id";
240
        newColumnName = "term_id";
241
        step = ColumnNameChanger.NewIntegerInstance(stepName, tableName, oldColumnName, newColumnName, INCLUDE_AUDIT);
242
        stepList.add(step);
243

    
244
        //#6226 remove orphaned PolytomousKeyNodes
245
        stepName = "remove orphaned PolytomousKeyNodes";
246
        String query = " DELETE FROM @@PolytomousKeyNode@@ WHERE key_id NOT IN (SELECT id FROM @@PolytomousKey@@)";
247
        String aud_query = " DELETE FROM @@PolytomousKeyNode_AUD@@ WHERE key_id NOT IN (SELECT id FROM @@PolytomousKey_AUD@@)";
248
        step = SimpleSchemaUpdaterStep.NewExplicitAuditedInstance(stepName, query, aud_query, -99);
249
        stepList.add(step);
250

    
251
        //#6226 remove orphaned key statements
252
        step = OrphanedKeyStatementRemover.NewInstance();
253
        stepList.add(step);
254

    
255
        return stepList;
256
    }
257

    
258
    /**
259
     * @param stepList
260
     */
261
	//#6600 remove Unique indexes from Rights MN tables
262
    private void removeUniqueIndexForRights(List<ISchemaUpdaterStep> stepList) {
263
        String tableName;
264
        ISchemaUpdaterStep step;
265

    
266
        tableName = "AgentBase_RightsInfo";
267
        String columnName = "rights_id";
268
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
269
        stepList.add(step);
270

    
271
        tableName = "Classification_RightsInfo";
272
        columnName = "rights_id";
273
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
274
        stepList.add(step);
275

    
276
        tableName = "Collection_RightsInfo";
277
        columnName = "rights_id";
278
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
279
        stepList.add(step);
280

    
281
        tableName = "DefinedTermBase_RightsInfo";
282
        columnName = "rights_id";
283
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
284
        stepList.add(step);
285

    
286
        tableName = "DescriptionBase_RightsInfo";
287
        columnName = "rights_id";
288
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
289
        stepList.add(step);
290

    
291
        tableName = "FeatureTree_RightsInfo";
292
        columnName = "rights_id";
293
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
294
        stepList.add(step);
295

    
296
        tableName = "Media_RightsInfo";
297
        columnName = "rights_id";
298
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
299
        stepList.add(step);
300

    
301
        tableName = "PolytomousKey_RightsInfo";
302
        columnName = "rights_id";
303
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
304
        stepList.add(step);
305

    
306
        tableName = "Reference_RightsInfo";
307
        columnName = "rights_id";
308
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
309
        stepList.add(step);
310

    
311
        tableName = "SpecimenOrObservationBase_RightsInfo";
312
        columnName = "rights_id";
313
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
314
        stepList.add(step);
315

    
316
        tableName = "TaxonBase_RightsInfo";
317
        columnName = "rights_id";
318
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
319
        stepList.add(step);
320

    
321
        tableName = "TaxonNameBase_RightsInfo";
322
        columnName = "rights_id";
323
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
324
        stepList.add(step);
325

    
326
        tableName = "TermVocabulary_RightsInfo";
327
        columnName = "rights_id";
328
        step = UniqueIndexDropper.NewInstance(tableName, columnName, !INCLUDE_AUDIT);
329
        stepList.add(step);
330
    }
331

    
332

    
333
    /**
334
     * #6535 update termtype for CdmMetaData (int => string)
335
     */
336
    private void updateTermTypeForCdmMetaDataPropertyName(List<ISchemaUpdaterStep> stepList) {
337
        String stepName = "Rename CdmMetaData.propertyName column";
338
        String tableName = "CdmMetaData";
339
        String oldColumnName = "propertyName";
340
        String newColumnName = "propertyNameOld";
341
        ISchemaUpdaterStep step = ColumnNameChanger.NewIntegerInstance(stepName, tableName, oldColumnName, newColumnName, ! INCLUDE_AUDIT);
342
        stepList.add(step);
343

    
344
        //... create new column
345
        stepName = "Create new CdmMetaData.propertyName column";
346
        tableName = "CdmMetaData";
347
        newColumnName = "propertyName";
348
        step = ColumnAdder.NewStringInstance(stepName, tableName, newColumnName, 20, ! INCLUDE_AUDIT);
349
        stepList.add(step);
350

    
351
        updateSingleTermTypeForCdmMetaDataPropertyName(stepList, "SCHEMA_VERSION", 0);
352
        updateSingleTermTypeForCdmMetaDataPropertyName(stepList, "TERM_VERSION", 1 );
353
        updateSingleTermTypeForCdmMetaDataPropertyName(stepList, "CREATED", 2 );
354
        updateSingleTermTypeForCdmMetaDataPropertyName(stepList, "CREATE_NOTE", 3 );
355
        updateSingleTermTypeForCdmMetaDataPropertyName(stepList, "INST_NAME", 4 );
356
        updateSingleTermTypeForCdmMetaDataPropertyName(stepList, "INST_ID", 5 );
357

    
358
        //... create new column
359
        stepName = "Remove column CdmMetaData.propertyNameOld";
360
        tableName = "CdmMetaData";
361
        oldColumnName = "propertyNameOld";
362
        step = ColumnRemover.NewInstance(stepName, tableName, oldColumnName, ! INCLUDE_AUDIT);
363
        stepList.add(step);
364

    
365
    }
366

    
367

    
368
    /**
369
     * @param stepList
370
     * @param name
371
     * @param index
372
     */
373
    private void updateSingleTermTypeForCdmMetaDataPropertyName(List<ISchemaUpdaterStep> stepList,
374
            String name, int index) {
375
        String stepName = "Update value for " + name;
376
        String query = "UPDATE @@CdmMetaData@@ SET propertyName = '"+name+"' WHERE propertyNameOld = "+index;
377
        ISchemaUpdaterStep step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, -99);
378
        stepList.add(step);
379

    
380
    }
381

    
382
    /**
383
     * #6361 and children
384
     */
385
    private void mergeTaxonName(List<ISchemaUpdaterStep> stepList) {
386

    
387
        //#6367 Add nameType column to TaxonNameBase
388
        String stepName = "Add nameType column to TaxonNameBase";
389
        String tableName = "TaxonNameBase";
390
        String newColumnName = "nameType";
391
        int length = 15;
392
        ISchemaUpdaterStep step = ColumnAdder.NewStringInstance(stepName, tableName, newColumnName, length, INCLUDE_AUDIT);
393
        stepList.add(step);
394

    
395
        //#6367 #6368
396
        updateNameTypes(stepList);
397

    
398
        // update anamorphic
399
        stepName = "Update anamorphic ";
400
        String query = "UPDATE @@TaxonNameBase@@ tnb "
401
                + " SET anamorphic = @FALSE@ "
402
                + " WHERE anamorphic IS NULL " ;
403
        SimpleSchemaUpdaterStep simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonNameBase", -99);
404
        stepList.add(simpleStep);
405

    
406
        //#6368 Remove DTYPE
407
        stepName = "Remove DTYPE from TaxonNameBase";
408
        tableName = "TaxonNameBase";
409
        String oldColumnName = "DTYPE";
410
        step = ColumnRemover.NewInstance(stepName, tableName, oldColumnName, INCLUDE_AUDIT);
411
        stepList.add(step);
412

    
413
        //#6368
414
        changeTaxonNameTableName(stepList);
415

    
416
        //#6717 update index names
417
        step = IndexRenamer.NewStringInstance("TaxonName",
418
                "taxonNameBaseNameCacheIndex", "taxonNameNameCacheIndex", "nameCache", 255);
419
        stepList.add(step);
420

    
421
        step = IndexRenamer.NewStringInstance("TaxonName",
422
                "taxonNameBaseTitleCacheIndex", "taxonNameTitleCacheIndex", "titleCache", 333);
423
        stepList.add(step);
424

    
425
    }
426

    
427
    /**
428
     * #6368
429
     */
430
    private void changeTaxonNameTableName(List<ISchemaUpdaterStep> stepList) {
431

    
432
        //Update
433
        String oldName = "TaxonNameBase";
434
        changeSingleTaxonNameTableName(stepList, oldName);
435

    
436
        oldName = "TaxonNameBase_Annotation";
437
        changeSingleTaxonNameTableName(stepList, oldName);
438

    
439
        oldName = "TaxonNameBase_Credit";
440
        changeSingleTaxonNameTableName(stepList, oldName);
441

    
442
        oldName = "TaxonNameBase_Extension";
443
        changeSingleTaxonNameTableName(stepList, oldName);
444

    
445
        oldName = "TaxonNameBase_Identifier";
446
        changeSingleTaxonNameTableName(stepList, oldName);
447

    
448
        oldName = "TaxonNameBase_Marker";
449
        changeSingleTaxonNameTableName(stepList, oldName);
450

    
451
        oldName = "TaxonNameBase_NomenclaturalStatus";
452
        changeSingleTaxonNameTableName(stepList, oldName);
453

    
454
        oldName = "TaxonNameBase_OriginalSourceBase";
455
        changeSingleTaxonNameTableName(stepList, oldName);
456

    
457
        oldName = "TaxonNameBase_RightsInfo";
458
        changeSingleTaxonNameTableName(stepList, oldName);
459

    
460
        oldName = "TaxonNameBase_TypeDesignationBase";
461
        changeSingleTaxonNameTableName(stepList, oldName);
462

    
463
        //hibernate sequence
464
        String stepName = "Update hibernate sequence entry name for TaxonNameBase";
465
        String query = "UPDATE hibernate_sequences SET sequence_name = 'TaxonName' WHERE sequence_name = 'TaxonNameBase'";
466
        ISchemaUpdaterStep step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, -99);
467
        stepList.add(step);
468

    
469
        //grantedauthority for taxonnamebase
470
        stepName = "Update GrantedAuthorityImpl for TaxonNameBase";
471
        query = "UPDATE GrantedAuthorityImpl " +
472
                " SET authority = Replace (authority, 'TAXONNAMEBASE','TAXONNAME') " +
473
                " WHERE authority like '%TAXONNAMEBASE%' ";
474
        step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, -99);
475
        stepList.add(step);
476

    
477

    
478
        //LSIDAuthority_namespaces for taxonnamebase
479
        stepName = "Upate LSIDAuthority_namespaces for TaxonNameBase";
480
        query = "UPDATE LSIDAuthority_namespaces " +
481
                " SET namespaces_element = Replace (namespaces_element, 'TaxonNameBase','TaxonName') " +
482
                " WHERE namespaces_element like '%TaxonNameBase%' ";
483
        step = SimpleSchemaUpdaterStep.NewNonAuditedInstance(stepName, query, -99);
484
        stepList.add(step);
485
    }
486

    
487
    /**
488
     * @param #6368
489
     */
490
    private void changeSingleTaxonNameTableName(List<ISchemaUpdaterStep> stepList, String oldTableName) {
491
        String stepName = "Rename " +  oldTableName;
492
        String newTableName = oldTableName.replace("TaxonNameBase", "TaxonName");
493
        ISchemaUpdaterStep step = TableNameChanger.NewInstance(stepName, oldTableName, newTableName, INCLUDE_AUDIT);
494
        stepList.add(step);
495

    
496
        if (oldTableName.contains("_")){
497
            stepName = "Rename " +  oldTableName + ".taxonNameBase_id";
498
            String oldColumnName = "TaxonNameBase_id";
499
            String newColumnName = "TaxonName_id";
500
            step = ColumnNameChanger.NewIntegerInstance(stepName, newTableName, oldColumnName, newColumnName, INCLUDE_AUDIT);
501
            stepList.add(step);
502
        }
503
    }
504

    
505
    /**
506
     * #6367
507
     */
508
    private void updateNameTypes(List<ISchemaUpdaterStep> stepList) {
509
        updateSingleNameType(stepList, "ViralName", "ICVCN");
510
        updateSingleNameType(stepList, "NonViralName", "NonViral");
511
        updateSingleNameType(stepList, "BotanicalName", "ICNAFP");
512
        updateSingleNameType(stepList, "ZoologicalName", "ICZN");
513
        updateSingleNameType(stepList, "CultivarPlantName", "ICNCP");
514
        updateSingleNameType(stepList, "BacterialName", "ICNB");
515
    }
516

    
517
    /**
518
     * @param uuid the uuid
519
     * @param oldSymbol
520
     * @param newSybol
521
     */
522
    private void updateSingleNameType(List<ISchemaUpdaterStep> stepList,
523
            String dtype, String nameType) {
524

    
525
        String stepName = "Update nameType for " + dtype;
526
        String query = "UPDATE @@TaxonNameBase@@ tnb "
527
                + " SET nameType = '" + nameType + "'"
528
                + " WHERE dtype = '" + dtype + "'" ;
529
        SimpleSchemaUpdaterStep simpleStep = SimpleSchemaUpdaterStep.NewAuditedInstance(stepName, query, "TaxonNameBase", -99);
530
        stepList.add(simpleStep);
531
    }
532

    
533
    @Override
534
	public ISchemaUpdater getNextUpdater() {
535
		return SchemaUpdater_47_49.NewInstance() ;
536
	}
537

    
538
	@Override
539
	public ISchemaUpdater getPreviousUpdater() {
540
		return SchemaUpdater_40_41.NewInstance();
541
	}
542

    
543
}
(4-4/4)