Project

General

Profile

Download (5.09 KB) Statistics
| Branch: | 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.io.pesi.erms;
11

    
12
import java.sql.ResultSet;
13
import java.sql.SQLException;
14
import java.util.HashMap;
15
import java.util.HashSet;
16
import java.util.Map;
17
import java.util.Set;
18

    
19
import org.apache.log4j.Logger;
20
import org.springframework.stereotype.Component;
21

    
22
import eu.etaxonomy.cdm.io.common.IOValidator;
23
import eu.etaxonomy.cdm.io.common.mapping.DbImportAnnotationMapper;
24
import eu.etaxonomy.cdm.io.common.mapping.DbImportCommonNameCreationMapper;
25
import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping;
26
import eu.etaxonomy.cdm.io.common.mapping.DbImportObjectMapper;
27
import eu.etaxonomy.cdm.io.common.mapping.DbImportStringMapper;
28
import eu.etaxonomy.cdm.io.pesi.erms.validation.ErmsReferenceImportValidator;
29
import eu.etaxonomy.cdm.model.common.AnnotationType;
30
import eu.etaxonomy.cdm.model.common.CdmBase;
31
import eu.etaxonomy.cdm.model.common.Language;
32
import eu.etaxonomy.cdm.model.description.CommonTaxonName;
33
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
34

    
35

    
36
/**
37
 * @author a.mueller
38
 * @created 20.02.2010
39
 * @version 1.0
40
 */
41
@Component
42
public class ErmsVernacularImport  extends ErmsImportBase<CommonTaxonName> {
43
	@SuppressWarnings("unused")
44
	private static final Logger logger = Logger.getLogger(ErmsVernacularImport.class);
45

    
46
	private DbImportMapping mapping;
47
	
48
	
49
	private int modCount = 10000;
50
	private static final String pluralString = "vernaculars";
51
	private static final String dbTableName = "vernaculars";
52
	private static final Class cdmTargetClass = CommonTaxonName.class;
53

    
54
	public ErmsVernacularImport(){
55
		super(pluralString, dbTableName, cdmTargetClass);
56
	}
57

    
58

    
59
	/* (non-Javadoc)
60
	 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)
61
	 */
62
	@Override
63
	protected String getRecordQuery(ErmsImportConfigurator config) {
64
		String strRecordQuery = 
65
			" SELECT vernaculars.*, tu.tu_acctaxon, tu.id  " + 
66
			" FROM vernaculars INNER JOIN tu ON vernaculars.tu_id = tu.id  " +
67
			" WHERE ( vernaculars.id IN (" + ID_LIST_TOKEN + ") )";
68
		return strRecordQuery;
69
	}
70

    
71
	/* (non-Javadoc)
72
	 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getMapping()
73
	 */
74
	protected DbImportMapping getMapping() {
75
		if (mapping == null){
76
			mapping = new DbImportMapping();
77
			
78
			mapping.addMapper(DbImportCommonNameCreationMapper.NewInstance("id", VERNACULAR_NAMESPACE, "tu_id", ErmsTaxonImport.TAXON_NAMESPACE));
79
			
80
			mapping.addMapper(DbImportObjectMapper.NewInstance("lan_id", "language", LANGUAGE_NAMESPACE));
81
			mapping.addMapper(DbImportStringMapper.NewInstance("vername", "name"));
82
			mapping.addMapper(DbImportAnnotationMapper.NewInstance("note", AnnotationType.EDITORIAL(), Language.DEFAULT()));
83
		}
84
		return mapping;
85
	}
86
	
87
	/* (non-Javadoc)
88
	 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
89
	 */
90
	public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {
91
		String nameSpace;
92
		Class cdmClass;
93
		Set<String> idSet;
94
		Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
95
		
96
		try{
97
			Set<String> taxonIdSet = new HashSet<String>();
98
			Set<String> languageIdSet = new HashSet<String>();
99
			while (rs.next()){
100
				handleForeignKey(rs, taxonIdSet, "tu_id");
101
				handleForeignKey(rs, languageIdSet, "lan_id");
102
			}
103
			
104
			//taxon map
105
			nameSpace = ErmsTaxonImport.TAXON_NAMESPACE;
106
			cdmClass = TaxonBase.class;
107
			idSet = taxonIdSet;
108
			Map<String, TaxonBase> taxonMap = (Map<String, TaxonBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
109
			result.put(nameSpace, taxonMap);
110
			
111
			//language map
112
			nameSpace = LANGUAGE_NAMESPACE;
113
			Map<String, Language> languageMap = new HashMap<String, Language>();
114
			ErmsTransformer transformer = new ErmsTransformer();
115
			for (String lanAbbrev: languageIdSet){
116
				Language language = null;
117
				try {
118
					language = transformer.getLanguageByKey(lanAbbrev);
119
				} catch (IllegalArgumentException e) {
120
					e.printStackTrace();
121
				}
122
				languageMap.put(lanAbbrev, language);
123
			}
124
			result.put(nameSpace, languageMap);
125
			
126
		} catch (SQLException e) {
127
			throw new RuntimeException(e);
128
		}
129
		return result;
130
	}
131
	
132
	/* (non-Javadoc)
133
	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)
134
	 */
135
	@Override
136
	protected boolean doCheck(ErmsImportState state){
137
		IOValidator<ErmsImportState> validator = new ErmsReferenceImportValidator();
138
		return validator.validate(state);
139
	}
140
	
141
	
142
	/* (non-Javadoc)
143
	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
144
	 */
145
	protected boolean isIgnore(ErmsImportState state){
146
		return ! state.getConfig().isDoVernaculars();
147
	}
148

    
149

    
150

    
151

    
152

    
153
}
(16-16/17)