Project

General

Profile

Download (2.66 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_31;
10

    
11
import org.apache.log4j.Logger;
12

    
13
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
14
import eu.etaxonomy.cdm.database.ICdmDataSource;
15
import eu.etaxonomy.cdm.database.update.CaseType;
16
import eu.etaxonomy.cdm.database.update.ITermUpdaterStep;
17
import eu.etaxonomy.cdm.database.update.SchemaUpdaterStepBase;
18

    
19
/**
20
 * @author a.mueller
21
 * @date 15.12.2010
22
 */
23
public class LanguageLabelUpdater extends SchemaUpdaterStepBase<LanguageLabelUpdater> implements ITermUpdaterStep{
24
	@SuppressWarnings("unused")
25
	private static final Logger logger = Logger.getLogger(LanguageLabelUpdater.class);
26

    
27
	private static final String stepName = "Update language labels by full language name";
28
	
29
// **************************** STATIC METHODS ********************************/
30

    
31
	public static final LanguageLabelUpdater NewInstance(){
32
		return new LanguageLabelUpdater(stepName);	
33
	}
34

    
35
	protected LanguageLabelUpdater(String stepName) {
36
		super(stepName);
37
	}
38

    
39
	@Override
40
	public Integer invoke(ICdmDataSource datasource, IProgressMonitor monitor, CaseType caseType)  {
41
		
42
		try {
43
			//update representation label
44
			String sql;
45
			sql = " UPDATE @@Representation@@ " + 
46
				" SET label = text " +
47
				" WHERE id IN ( SELECT MN.representations_id " +
48
					" FROM @@DefinedTermBase@@ lang " +
49
					" INNER JOIN @@DefinedTermBase_Representation@@ MN ON lang.id = MN.DefinedTermBase_id " +
50
					" WHERE lang.DTYPE = 'Language' " +
51
					" )";
52
			datasource.executeUpdate(caseType.replaceTableNames(sql));
53
			
54
			//update term titleCache
55
			sql = " UPDATE @@DefinedTermBase@@ dtb " + 
56
				  " SET titleCache = " +  
57
						" ( " +
58
						" SELECT rep.label  " +
59
						" FROM @@DefinedTermBase_Representation@@ MN " + 
60
						" INNER JOIN @@Representation@@ rep ON MN.representations_id = rep.id " +
61
						" WHERE dtb.id = MN.DefinedTermBase_id AND rep.language_id = @langId) " + 
62
					" WHERE dtb.DTYPE = 'Language'";
63
			String englishId = String.valueOf(getEnglishLanguageId(datasource, monitor, caseType));
64
			if (englishId == null){
65
				throw new NullPointerException("English id could not be found");
66
			}
67
			sql = sql.replace("@langId", englishId);
68
			datasource.executeUpdate(caseType.replaceTableNames(sql));
69
			
70
			return 0;
71
		} catch (Exception e) {
72
			monitor.warning(e.getMessage(), e);
73
			logger.warn(e.getMessage());
74
			return null;
75
		}
76
	}
77

    
78
	
79
}
(1-1/8)