12 |
12 |
import java.sql.ResultSet;
|
13 |
13 |
import java.sql.SQLException;
|
14 |
14 |
import java.util.HashMap;
|
|
15 |
import java.util.HashSet;
|
15 |
16 |
import java.util.Map;
|
|
17 |
import java.util.Set;
|
16 |
18 |
|
17 |
19 |
import org.apache.log4j.Logger;
|
18 |
20 |
import org.springframework.stereotype.Component;
|
... | ... | |
23 |
25 |
import eu.etaxonomy.cdm.model.common.CdmBase;
|
24 |
26 |
import eu.etaxonomy.cdm.model.taxon.Classification;
|
25 |
27 |
import eu.etaxonomy.cdm.model.taxon.Synonym;
|
|
28 |
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
|
26 |
29 |
import eu.etaxonomy.cdm.model.taxon.Taxon;
|
27 |
30 |
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
|
28 |
31 |
|
... | ... | |
89 |
92 |
|
90 |
93 |
private void makeSingleTaxonNode(RedListGefaesspflanzenImportState state, ResultSet rs, Classification classification)
|
91 |
94 |
throws SQLException {
|
92 |
|
long id = rs.getLong("NAMNR");
|
93 |
|
long parentId = rs.getLong("LOWER");
|
|
95 |
String id = String.valueOf(rs.getLong("NAMNR"));
|
|
96 |
String parentId = String.valueOf(rs.getLong("LOWER"));
|
94 |
97 |
String gueltString = rs.getString("GUELT");
|
95 |
98 |
|
96 |
|
TaxonBase taxonBase = getTaxonService().load(state.getTaxonMap().get(id));
|
97 |
|
Taxon parent = (Taxon) getTaxonService().load(state.getTaxonMap().get(parentId));
|
|
99 |
TaxonBase taxonBase = state.getRelatedObject(Namespace.TAXON_NAMESPACE, id, TaxonBase.class);
|
|
100 |
Taxon parent = (Taxon) state.getRelatedObject(Namespace.TAXON_NAMESPACE, parentId, TaxonBase.class);
|
98 |
101 |
|
99 |
102 |
if(taxonBase.isInstanceOf(Taxon.class)){
|
100 |
103 |
classification.addParentChild(parent, (Taxon)taxonBase, null, null);
|
101 |
104 |
}
|
102 |
105 |
else if(taxonBase.isInstanceOf(Synonym.class)){
|
103 |
106 |
if(gueltString.equals("b")){
|
104 |
|
//TODO
|
|
107 |
parent.addHomotypicSynonym((Synonym) taxonBase, null, null);
|
|
108 |
parent.getName().addBasionym(taxonBase.getName());
|
105 |
109 |
}
|
106 |
110 |
else{
|
107 |
111 |
//TODO: how to correctly add a synonym?
|
108 |
|
parent.addHomotypicSynonym((Synonym) taxonBase, null, null);
|
|
112 |
parent.addSynonym((Synonym) taxonBase, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF(), null, null);
|
|
113 |
// parent.addSynonym((Synonym) taxonBase, SynonymRelationshipType.SYNONYM_OF(), null, null);
|
109 |
114 |
}
|
110 |
115 |
}
|
111 |
116 |
}
|
... | ... | |
114 |
119 |
public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs,
|
115 |
120 |
RedListGefaesspflanzenImportState state) {
|
116 |
121 |
Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<>();
|
|
122 |
|
|
123 |
Set<String> idSet = new HashSet<String>();
|
|
124 |
try {
|
|
125 |
while (rs.next()){
|
|
126 |
idSet.add(String.valueOf(rs.getLong("NAMNR")));
|
|
127 |
idSet.add(String.valueOf(rs.getLong("LOWER")));
|
|
128 |
}
|
|
129 |
} catch (SQLException e) {
|
|
130 |
e.printStackTrace();
|
|
131 |
}
|
|
132 |
Map<String, TaxonBase> taxonMap = (Map<String, TaxonBase>) getCommonService().getSourcedObjectsByIdInSource(TaxonBase.class, idSet, Namespace.TAXON_NAMESPACE);
|
|
133 |
result.put(Namespace.TAXON_NAMESPACE, taxonMap);
|
117 |
134 |
return result;
|
118 |
135 |
}
|
119 |
136 |
|
speed up classification import