Project

General

Profile

Download (6.15 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.Map;
16

    
17
import org.apache.log4j.Logger;
18
import org.springframework.stereotype.Component;
19

    
20
import eu.etaxonomy.cdm.io.common.IImportConfigurator;
21
import eu.etaxonomy.cdm.io.common.IOValidator;
22
import eu.etaxonomy.cdm.io.common.mapping.DbIgnoreMapper;
23
import eu.etaxonomy.cdm.io.common.mapping.DbImportAnnotationMapper;
24
import eu.etaxonomy.cdm.io.common.mapping.DbImportDoiMapper;
25
import eu.etaxonomy.cdm.io.common.mapping.DbImportExtensionMapper;
26
import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping;
27
import eu.etaxonomy.cdm.io.common.mapping.DbImportObjectCreationMapper;
28
import eu.etaxonomy.cdm.io.common.mapping.DbImportStringMapper;
29
import eu.etaxonomy.cdm.io.common.mapping.DbImportTimePeriodMapper;
30
import eu.etaxonomy.cdm.io.common.mapping.DbImportTruncatedStringMapper;
31
import eu.etaxonomy.cdm.io.common.mapping.IMappingImport;
32
import eu.etaxonomy.cdm.io.pesi.erms.validation.ErmsReferenceImportValidator;
33
import eu.etaxonomy.cdm.model.common.AnnotationType;
34
import eu.etaxonomy.cdm.model.common.CdmBase;
35
import eu.etaxonomy.cdm.model.common.ExtensionType;
36
import eu.etaxonomy.cdm.model.common.Language;
37
import eu.etaxonomy.cdm.model.reference.Reference;
38
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
39

    
40
/**
41
 * @author a.mueller
42
 * @since 20.02.2010
43
 */
44
@Component
45
public class ErmsReferenceImport
46
            extends ErmsImportBase<Reference>
47
            implements IMappingImport<Reference, ErmsImportState>{
48

    
49
    private static final long serialVersionUID = -2345972558542643378L;
50
    private static final Logger logger = Logger.getLogger(ErmsReferenceImport.class);
51

    
52
	private DbImportMapping<ErmsImportState, ErmsImportConfigurator> mapping;
53

    
54
	private static final String pluralString = "sources";
55
	private static final String dbTableName = "sources";
56
	private static final Class cdmTargetClass = Reference.class;
57

    
58
	public ErmsReferenceImport(){
59
		super(pluralString, dbTableName, cdmTargetClass);
60
	}
61

    
62
	@Override
63
	protected String getRecordQuery(ErmsImportConfigurator config) {
64
		String strRecordQuery =
65
			" SELECT * " +
66
			" FROM sources " +
67
			" WHERE ( sources.id IN (" + ID_LIST_TOKEN + ") )";
68
		return strRecordQuery;
69
	}
70

    
71
	@Override
72
    protected DbImportMapping<ErmsImportState, ErmsImportConfigurator> getMapping() {
73
		if (mapping == null){
74
			mapping = new DbImportMapping<>();
75

    
76
			mapping.addMapper(DbImportObjectCreationMapper.NewInstance(this, "id", REFERENCE_NAMESPACE)); //id
77
			ExtensionType imisExtType = getExtensionType( ErmsTransformer.uuidExtImis, "imis", "imis", "imis");
78
			mapping.addMapper(DbImportExtensionMapper.NewInstance("imis_id", imisExtType));
79

    
80
			ExtensionType truncatedExtType = getExtensionType( ErmsTransformer.uuidExtTruncatedCache, "truncated cache", "truncated cache", "truncated cache");
81
            mapping.addMapper(DbImportTruncatedStringMapper.NewInstance("source_name", "titleCache", truncatedExtType, 800, true));
82
            mapping.addMapper(DbImportStringMapper.NewInstance("source_abstract", "referenceAbstract"));
83
            mapping.addMapper(DbImportStringMapper.NewInstance("source_title", "title"));
84
            mapping.addMapper(DbImportAnnotationMapper.NewInstance("source_note", AnnotationType.EDITORIAL(), Language.DEFAULT()));
85
			mapping.addMapper(DbImportTimePeriodMapper.NewVerbatimInstance("source_year", "datePublished"));
86
			mapping.addMapper(DbImportDoiMapper.NewInstance("source_doi", "doi"));
87

    
88
			//TODO handle as External Link once they are available for Reference
89
			logger.warn("Handle source_link as ExternalLink once available for class Reference");
90
			mapping.addMapper(DbImportExtensionMapper.NewInstance("source_link", ExtensionType.URL()));
91
			//TODO parse  authors
92
			ExtensionType extTypeAuthor = getExtensionType(ErmsTransformer.uuidExtAuthor, "Reference author", "Reference author", null);
93
			mapping.addMapper(DbImportExtensionMapper.NewInstance("source_author", extTypeAuthor));
94

    
95
			//not yet implemented
96

    
97
			mapping.addMapper(DbIgnoreMapper.NewInstance("source_type", "Handled by ObjectCreateMapper - but mapping not yet fully correct. See comments there."));
98
			mapping.addMapper(DbIgnoreMapper.NewInstance("source_orig_fn", "Currently not needed. Holds information about pdf files."));
99
			mapping.addMapper(DbIgnoreMapper.NewInstance("source_openaccess", "Currently not needed. Holds information about open access of the source."));
100

    
101
		}
102
		return mapping;
103
	}
104

    
105
	@Override
106
    public Reference createObject(ResultSet rs, ErmsImportState state) throws SQLException {
107
		int id = rs.getInt("id");
108
		String type = rs.getString("source_type");
109
		Reference ref;
110
		if (type.equalsIgnoreCase("p")){
111
			//TDOO is this correct? maybe mark as 'publication'
112
			ref = ReferenceFactory.newGeneric();
113
		}else if (type.equalsIgnoreCase("d")){
114
			ref = ReferenceFactory.newDatabase();
115
		}else if (type.equalsIgnoreCase("e")){
116
			//TODO is this correct, maybe mark as "informal"
117
			ref = ReferenceFactory.newGeneric();
118
		}else if (type.equalsIgnoreCase("i")){
119
			//TODO is this correct?
120
			ref = ReferenceFactory.newGeneric();
121
		}else{
122
			ref = ReferenceFactory.newGeneric();
123
			logger.warn("Unknown reference type: " + type + ". Created generic instead.");
124
		}
125

    
126
		return ref;
127
	}
128

    
129
	@Override
130
    public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs, ErmsImportState state) {
131
		Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<>();
132
		return result;  //not needed
133
	}
134

    
135
	@Override
136
	protected boolean doCheck(ErmsImportState state){
137
		IOValidator<ErmsImportState> validator = new ErmsReferenceImportValidator();
138
		return validator.validate(state);
139
	}
140

    
141
	@Override
142
    protected boolean isIgnore(ErmsImportState state){
143
		return state.getConfig().getDoReferences() != IImportConfigurator.DO_REFERENCES.ALL;
144
	}
145
}
(11-11/17)