1
2
3
4
5
6
7
8
9
10 package eu.etaxonomy.cdm.io.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.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
35
36
37
38 @Component
39 public class ErmsImageImport extends ErmsImportBase<TextData> {
40 @SuppressWarnings("unused")
41 private static final Logger logger = Logger.getLogger(ErmsImageImport.class);
42
43 private DbImportMapping mapping;
44
45
46 private int modCount = 10000;
47 private static final String pluralString = "images";
48 private static final String dbTableName = "images";
49 private static final Class cdmTargetClass = Media.class;
50
51 public ErmsImageImport(){
52 super(pluralString, dbTableName, cdmTargetClass);
53 }
54
55
56
57
58
59 @Override
60 protected String getIdQuery() {
61 String strIdQuery =
62 " SELECT tu_id, img_thumb " +
63 " FROM images " +
64 " ORDER BY tu_id, img_thumb, img_url ";
65 return strIdQuery;
66 }
67
68
69
70
71
72 @Override
73 protected String getRecordQuery(ErmsImportConfigurator config) {
74 String strRecordQuery =
75 " SELECT * " +
76 " FROM images " +
77 " WHERE ( images.tu_id IN (" + ID_LIST_TOKEN + ") AND " +
78 " images.img_thumb IN (" + ID_LIST_TOKEN + ") )";
79 return strRecordQuery;
80 }
81
82
83
84
85 protected DbImportMapping getMapping() {
86 if (mapping == null){
87 mapping = new DbImportMapping();
88
89 String idAttribute = null;
90 boolean isOneTextData = true;
91 mapping.addMapper(DbImportImageCreationMapper.NewInstance(idAttribute, IMAGE_NAMESPACE, "tu_id", ErmsTaxonImport.TAXON_NAMESPACE, isOneTextData));
92 mapping.addMapper(DbImportMediaMapper.NewInstance("img_url", "img_thumb"));
93 }
94 return mapping;
95 }
96
97
98
99
100 public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {
101 String nameSpace;
102 Class cdmClass;
103 Set<String> idSet;
104 Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
105
106 try{
107 Set<String> taxonIdSet = new HashSet<String>();
108 Set<String> languageIdSet = new HashSet<String>();
109 while (rs.next()){
110 handleForeignKey(rs, taxonIdSet, "tu_id");
111 }
112
113
114 nameSpace = ErmsTaxonImport.TAXON_NAMESPACE;
115 cdmClass = TaxonBase.class;
116 idSet = taxonIdSet;
117 Map<String, TaxonBase> taxonMap = (Map<String, TaxonBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
118 result.put(nameSpace, taxonMap);
119
120 } catch (SQLException e) {
121 throw new RuntimeException(e);
122 }
123 return result;
124 }
125
126
127
128
129 @Override
130 protected boolean doCheck(ErmsImportState state){
131 IOValidator<ErmsImportState> validator = new ErmsImageImportValidator();
132 return validator.validate(state);
133 }
134
135
136
137
138
139 protected boolean isIgnore(ErmsImportState state){
140 return ! state.getConfig().isDoImages();
141 }
142
143
144
145
146
147 }