1 |
ec34ece7
|
Andreas Müller
|
/**
|
2 |
|
|
* Copyright (C) 2009 EDIT
|
3 |
531fc7bc
|
Andreas Müller
|
* European Distributed Institute of Taxonomy
|
4 |
ec34ece7
|
Andreas Müller
|
* http://www.e-taxonomy.eu
|
5 |
531fc7bc
|
Andreas Müller
|
*
|
6 |
ec34ece7
|
Andreas Müller
|
* 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 |
|
|
package eu.etaxonomy.cdm.io.dwca.in;
|
10 |
|
|
|
11 |
|
|
import java.util.ArrayList;
|
12 |
|
|
import java.util.HashSet;
|
13 |
|
|
import java.util.List;
|
14 |
|
|
import java.util.Map;
|
15 |
|
|
import java.util.Set;
|
16 |
|
|
|
17 |
|
|
import org.apache.log4j.Logger;
|
18 |
|
|
|
19 |
1baa10df
|
Andreas Müller
|
import eu.etaxonomy.cdm.io.stream.IPartitionableConverter;
|
20 |
|
|
import eu.etaxonomy.cdm.io.stream.IReader;
|
21 |
|
|
import eu.etaxonomy.cdm.io.stream.ListReader;
|
22 |
|
|
import eu.etaxonomy.cdm.io.stream.MappedCdmBase;
|
23 |
|
|
import eu.etaxonomy.cdm.io.stream.PartitionableConverterBase;
|
24 |
202541e6
|
Alexander Oppermann
|
import eu.etaxonomy.cdm.io.stream.StreamItem;
|
25 |
1baa10df
|
Andreas Müller
|
import eu.etaxonomy.cdm.io.stream.terms.TermUri;
|
26 |
ec34ece7
|
Andreas Müller
|
import eu.etaxonomy.cdm.model.common.CdmBase;
|
27 |
|
|
import eu.etaxonomy.cdm.model.reference.Reference;
|
28 |
|
|
import eu.etaxonomy.cdm.model.taxon.Taxon;
|
29 |
|
|
|
30 |
|
|
/**
|
31 |
|
|
* @author a.mueller
|
32 |
53db84af
|
Andreas Müller
|
* @since 22.11.2011
|
33 |
ec34ece7
|
Andreas Müller
|
*
|
34 |
|
|
*/
|
35 |
531fc7bc
|
Andreas Müller
|
public class GbifImageCsv2CdmConverter extends PartitionableConverterBase<DwcaDataImportConfiguratorBase, DwcaDataImportStateBase<DwcaDataImportConfiguratorBase>>
|
36 |
202541e6
|
Alexander Oppermann
|
implements IPartitionableConverter<StreamItem, IReader<CdmBase>, String>{
|
37 |
531fc7bc
|
Andreas Müller
|
|
38 |
ec34ece7
|
Andreas Müller
|
@SuppressWarnings("unused")
|
39 |
|
|
private static final Logger logger = Logger.getLogger(GbifImageCsv2CdmConverter.class);
|
40 |
|
|
|
41 |
|
|
private static final String CORE_ID = "coreId";
|
42 |
531fc7bc
|
Andreas Müller
|
|
43 |
ec34ece7
|
Andreas Müller
|
/**
|
44 |
|
|
* @param state
|
45 |
|
|
*/
|
46 |
202541e6
|
Alexander Oppermann
|
public GbifImageCsv2CdmConverter(DwcaDataImportStateBase state) {
|
47 |
ec34ece7
|
Andreas Müller
|
super(state);
|
48 |
|
|
}
|
49 |
|
|
|
50 |
531fc7bc
|
Andreas Müller
|
@Override
|
51 |
1eaef993
|
Andreas Müller
|
public IReader<MappedCdmBase<? extends CdmBase>> map(StreamItem item ){
|
52 |
|
|
List<MappedCdmBase<? extends CdmBase>> resultList = new ArrayList<>();
|
53 |
531fc7bc
|
Andreas Müller
|
|
54 |
ec34ece7
|
Andreas Müller
|
Map<String, String> csv = item.map;
|
55 |
531fc7bc
|
Andreas Müller
|
Reference sourceReference = state.getTransactionalSourceReference();
|
56 |
ec34ece7
|
Andreas Müller
|
String sourceReferecenDetail = null;
|
57 |
531fc7bc
|
Andreas Müller
|
|
58 |
ec34ece7
|
Andreas Müller
|
String id = getSourceId(item);
|
59 |
|
|
Taxon taxon = getTaxonBase(id, item, Taxon.class, state);
|
60 |
|
|
if (taxon != null){
|
61 |
531fc7bc
|
Andreas Müller
|
|
62 |
ec34ece7
|
Andreas Müller
|
// xxx;
|
63 |
|
|
|
64 |
|
|
}else{
|
65 |
|
|
String message = "Can't retrieve taxon from database for id '%s'";
|
66 |
|
|
fireWarningEvent(String.format(message, id), item, 12);
|
67 |
|
|
}
|
68 |
531fc7bc
|
Andreas Müller
|
|
69 |
ec34ece7
|
Andreas Müller
|
//return
|
70 |
1eaef993
|
Andreas Müller
|
return new ListReader<>(resultList);
|
71 |
ec34ece7
|
Andreas Müller
|
}
|
72 |
|
|
|
73 |
|
|
|
74 |
531fc7bc
|
Andreas Müller
|
|
75 |
ec34ece7
|
Andreas Müller
|
|
76 |
|
|
@Override
|
77 |
202541e6
|
Alexander Oppermann
|
public String getSourceId(StreamItem item) {
|
78 |
ec34ece7
|
Andreas Müller
|
String id = item.get(CORE_ID);
|
79 |
|
|
return id;
|
80 |
|
|
}
|
81 |
|
|
|
82 |
531fc7bc
|
Andreas Müller
|
|
83 |
ec34ece7
|
Andreas Müller
|
//********************** PARTITIONABLE **************************************/
|
84 |
|
|
|
85 |
|
|
@Override
|
86 |
202541e6
|
Alexander Oppermann
|
protected void makeForeignKeysForItem(StreamItem item, Map<String, Set<String>> fkMap) {
|
87 |
ec34ece7
|
Andreas Müller
|
String value;
|
88 |
|
|
String key;
|
89 |
|
|
//taxon
|
90 |
|
|
if ( hasValue(value = item.get(CORE_ID))){
|
91 |
|
|
key = TermUri.DWC_TAXON.toString();
|
92 |
|
|
Set<String> keySet = getKeySet(key, fkMap);
|
93 |
|
|
keySet.add(value);
|
94 |
|
|
}
|
95 |
531fc7bc
|
Andreas Müller
|
|
96 |
ec34ece7
|
Andreas Müller
|
}
|
97 |
531fc7bc
|
Andreas Müller
|
|
98 |
|
|
|
99 |
ec34ece7
|
Andreas Müller
|
@Override
|
100 |
|
|
public Set<String> requiredSourceNamespaces() {
|
101 |
1eaef993
|
Andreas Müller
|
Set<String> result = new HashSet<>();
|
102 |
ec34ece7
|
Andreas Müller
|
result.add(TermUri.DWC_TAXON.toString());
|
103 |
|
|
return result;
|
104 |
|
|
}
|
105 |
531fc7bc
|
Andreas Müller
|
|
106 |
ec34ece7
|
Andreas Müller
|
//******************* TO STRING ******************************************/
|
107 |
531fc7bc
|
Andreas Müller
|
|
108 |
ec34ece7
|
Andreas Müller
|
@Override
|
109 |
|
|
public String toString(){
|
110 |
|
|
return this.getClass().getName();
|
111 |
|
|
}
|
112 |
|
|
|
113 |
|
|
|
114 |
|
|
}
|