Project

General

Profile

Download (3.96 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.DbImportImageCreationMapper;
24
import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping;
25
import eu.etaxonomy.cdm.io.common.mapping.DbImportMediaMapper;
26
import eu.etaxonomy.cdm.io.pesi.erms.validation.ErmsImageImportValidator;
27
import eu.etaxonomy.cdm.model.common.CdmBase;
28
import eu.etaxonomy.cdm.model.description.TextData;
29
import eu.etaxonomy.cdm.model.media.Media;
30
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
31

    
32

    
33
/**
34
 * @author a.mueller
35
 * @created 20.02.2010
36
 */
37
@Component
38
public class ErmsImageImport  extends ErmsImportBase<TextData> {
39
	@SuppressWarnings("unused")
40
	private static final Logger logger = Logger.getLogger(ErmsImageImport.class);
41

    
42
	private DbImportMapping<ErmsImportState, ErmsImportConfigurator> mapping;
43
	
44
	private static final String pluralString = "images";
45
	private static final String dbTableName = "images";
46
	private static final Class<?> cdmTargetClass = Media.class;
47
	private static final int devideCountBy = 10;
48

    
49
	public ErmsImageImport(){
50
		super(pluralString, dbTableName, cdmTargetClass);
51
	}
52

    
53
	@Override
54
	protected String getIdQuery() {
55
		String strIdQuery = 
56
			" SELECT tu_id, img_thumb " +   //tu_id is not a key
57
			" FROM images " + 
58
			" ORDER BY tu_id, img_thumb, img_url ";
59
		return strIdQuery;
60
	}
61

    
62

    
63
	@Override
64
	protected String getRecordQuery(ErmsImportConfigurator config) {
65
		String strRecordQuery = 
66
			" SELECT * " + 
67
			" FROM images " +
68
			" WHERE ( images.tu_id IN (" + ID_LIST_TOKEN + ") AND " +
69
				"  images.img_thumb IN (" + ID_LIST_TOKEN + ")  )";
70
		return strRecordQuery;
71
	}
72

    
73
	@Override
74
	protected DbImportMapping<ErmsImportState, ErmsImportConfigurator> getMapping() {
75
		if (mapping == null){
76
			mapping = new DbImportMapping<ErmsImportState, ErmsImportConfigurator>();
77
			//TODO do we need to add to TaxonNameBase too?
78
			String idAttribute = null;
79
			boolean isOneTextData = true;
80
			mapping.addMapper(DbImportImageCreationMapper.NewInstance(idAttribute, IMAGE_NAMESPACE, "tu_id", ErmsTaxonImport.TAXON_NAMESPACE, isOneTextData));
81
			mapping.addMapper(DbImportMediaMapper.NewInstance("img_url", "img_thumb"));
82
		}
83
		return mapping;
84
	}
85
	
86
	@Override
87
	public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs, ErmsImportState state) {
88
		String nameSpace;
89
		Class<?> cdmClass;
90
		Set<String> idSet;
91
		Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
92
		
93
		try{
94
			Set<String> taxonIdSet = new HashSet<String>();
95
			while (rs.next()){
96
				handleForeignKey(rs, taxonIdSet, "tu_id");
97
			}
98
			
99
			//taxon map
100
			nameSpace = ErmsTaxonImport.TAXON_NAMESPACE;
101
			cdmClass = TaxonBase.class;
102
			idSet = taxonIdSet;
103
			Map<String, TaxonBase<?>> taxonMap = (Map<String, TaxonBase<?>>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
104
			result.put(nameSpace, taxonMap);
105
			
106
		} catch (SQLException e) {
107
			throw new RuntimeException(e);
108
		}
109
		return result;
110
	}
111
	
112
	@Override
113
	protected int divideCountBy() { return devideCountBy;}
114
	
115

    
116
	@Override
117
	protected boolean doCheck(ErmsImportState state){
118
		IOValidator<ErmsImportState> validator = new ErmsImageImportValidator();
119
		return validator.validate(state);
120
	}
121

    
122
	
123
	@Override
124
	protected boolean isIgnore(ErmsImportState state){
125
		return ! state.getConfig().isDoImages();
126
	}
127

    
128

    
129

    
130

    
131

    
132
}
(3-3/17)