Project

General

Profile

Download (4.71 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.DbImportFeatureCreationMapper;
25
import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping;
26
import eu.etaxonomy.cdm.io.common.mapping.DbImportMultiLanguageTextMapper;
27
import eu.etaxonomy.cdm.io.common.mapping.DbImportTextDataCreationMapper;
28
import eu.etaxonomy.cdm.io.pesi.erms.validation.ErmsNoteImportValidator;
29
import eu.etaxonomy.cdm.model.common.Annotation;
30
import eu.etaxonomy.cdm.model.common.AnnotationType;
31
import eu.etaxonomy.cdm.model.common.CdmBase;
32
import eu.etaxonomy.cdm.model.common.Language;
33
import eu.etaxonomy.cdm.model.description.TextData;
34
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
35

    
36

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

    
46
	private DbImportMapping<ErmsImportState, ErmsImportConfigurator> mapping;
47
	
48
	private static final String pluralString = "notes";
49
	private static final String dbTableName = "notes";
50
	private static final Class<?> cdmTargetClass = TextData.class;
51

    
52
	public ErmsNotesImport(){
53
		super(pluralString, dbTableName, cdmTargetClass);
54
	}
55

    
56

    
57
	/* (non-Javadoc)
58
	 * @see eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase#getRecordQuery(eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator)
59
	 */
60
	@Override
61
	protected String getRecordQuery(ErmsImportConfigurator config) {
62
		String strRecordQuery = 
63
			" SELECT * " + 
64
			" FROM notes " +
65
			" WHERE ( notes.id IN (" + ID_LIST_TOKEN + ") )";
66
		return strRecordQuery;
67
	}
68

    
69
	/* (non-Javadoc)
70
	 * @see eu.etaxonomy.cdm.io.erms.ErmsImportBase#getMapping()
71
	 */
72
	protected DbImportMapping<ErmsImportState, ErmsImportConfigurator> getMapping() {
73
		if (mapping == null){
74
			mapping = new DbImportMapping<ErmsImportState, ErmsImportConfigurator>();
75
			mapping.addMapper(DbImportTextDataCreationMapper.NewInstance("id", NOTES_NAMESPACE, "tu_id", TAXON_NAMESPACE));
76
			mapping.addMapper(DbImportMultiLanguageTextMapper.NewInstance("note", "lan_id", LANGUAGE_NAMESPACE, "Text"));
77
			Language notesNoteLanguage = null;
78
			mapping.addMapper(DbImportAnnotationMapper.NewInstance("note", AnnotationType.EDITORIAL(), notesNoteLanguage));
79
			mapping.addMapper(DbImportFeatureCreationMapper.NewInstance("type", FEATURE_NAMESPACE, "type", "type", "type"));			
80
		}
81
		return mapping;
82
	}
83
	
84

    
85
	@Override
86
	public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs, ErmsImportState state) {
87
		String nameSpace;
88
		Class<?> cdmClass;
89
		Set<String> idSet;
90
		Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
91
		
92
		try{
93
			Set<String> taxonIdSet = new HashSet<String>();
94
			Set<String> languageIdSet = new HashSet<String>();
95
			while (rs.next()){
96
				handleForeignKey(rs, taxonIdSet, "tu_id");
97
				handleForeignKey(rs, languageIdSet, "lan_id");
98
			}
99
			
100
			//taxon map
101
			nameSpace = ErmsTaxonImport.TAXON_NAMESPACE;
102
			cdmClass = TaxonBase.class;
103
			idSet = taxonIdSet;
104
			Map<String, TaxonBase<?>> taxonMap = (Map<String, TaxonBase<?>>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
105
			result.put(nameSpace, taxonMap);
106
			
107
			//language map
108
			nameSpace = LANGUAGE_NAMESPACE;
109
			Map<String, Language> languageMap = new HashMap<String, Language>();
110
			ErmsTransformer transformer = new ErmsTransformer();
111
			for (String lanAbbrev: languageIdSet){
112
				
113
				Language language = transformer.getLanguageByKey(lanAbbrev);
114
				languageMap.put(lanAbbrev, language);
115
			}
116
			result.put(nameSpace, languageMap);
117
			
118
		} catch (SQLException e) {
119
			throw new RuntimeException(e);
120
		}
121
		return result;
122
	}
123

    
124
	@Override
125
	protected boolean doCheck(ErmsImportState state){
126
		IOValidator<ErmsImportState> validator = new ErmsNoteImportValidator();
127
		return validator.validate(state);
128
	}
129
	
130
	@Override
131
	protected boolean isIgnore(ErmsImportState state){
132
		return ! state.getConfig().isDoNotes();
133
	}
134

    
135

    
136

    
137

    
138

    
139
}
(9-9/17)