15 |
15 |
import java.util.HashMap;
|
16 |
16 |
import java.util.HashSet;
|
17 |
17 |
import java.util.Map;
|
|
18 |
import java.util.Map.Entry;
|
18 |
19 |
import java.util.Set;
|
19 |
20 |
import java.util.UUID;
|
20 |
21 |
|
... | ... | |
80 |
81 |
protected void doInvoke(RedListGefaesspflanzenImportState state) {
|
81 |
82 |
Classification gesamtListe = makeClassification("Gesamtliste", state.getConfig().getClassificationUuid(), "Gesamtliste", null, RedListUtil.gesamtListeReferenceUuid, state);
|
82 |
83 |
Classification checkliste = makeClassification("Checkliste", RedListUtil.checkListClassificationUuid, "Checkliste", null, RedListUtil.checkListReferenceUuid, state);
|
83 |
|
makeClassification("E", RedListUtil.uuidClassificationE, "Ehrendorfer", null, RedListUtil.uuidClassificationReferenceE, state);
|
84 |
|
makeClassification("W", RedListUtil.uuidClassificationW, "Wisskirchen (Standardliste)", 1998, RedListUtil.uuidClassificationReferenceW, state);
|
85 |
|
makeClassification("K", RedListUtil.uuidClassificationK, "Korneck (Rote Liste)", 1996, RedListUtil.uuidClassificationReferenceK, state);
|
86 |
|
makeClassification("AW", RedListUtil.uuidClassificationAW, "Atlas (Westdeutschland)", 1988, RedListUtil.uuidClassificationReferenceAW, state);
|
87 |
|
makeClassification("AO", RedListUtil.uuidClassificationAO, "Atlas (Ostdeutschland)", 1996, RedListUtil.uuidClassificationReferenceAO, state);
|
88 |
|
makeClassification("R", RedListUtil.uuidClassificationR, "Rothmaler", 2011, RedListUtil.uuidClassificationReferenceR, state);
|
89 |
|
makeClassification("O", RedListUtil.uuidClassificationO, "Oberdorfer", 2001, RedListUtil.uuidClassificationReferenceO, state);
|
90 |
|
makeClassification("S", RedListUtil.uuidClassificationS, "Schmeil-Fitschen", 2011, RedListUtil.uuidClassificationReferenceS, state);
|
|
84 |
makeClassification("Ehrendorfer", RedListUtil.uuidClassificationE, "Ehrendorfer", null, RedListUtil.uuidClassificationReferenceE, state);
|
|
85 |
makeClassification("Wisskirchen (Standardliste)", RedListUtil.uuidClassificationW, "Wisskirchen (Standardliste)", 1998, RedListUtil.uuidClassificationReferenceW, state);
|
|
86 |
makeClassification("Korneck (Rote Liste)", RedListUtil.uuidClassificationK, "Korneck (Rote Liste)", 1996, RedListUtil.uuidClassificationReferenceK, state);
|
|
87 |
makeClassification("Atlas (Westdeutschland)", RedListUtil.uuidClassificationAW, "Atlas (Westdeutschland)", 1988, RedListUtil.uuidClassificationReferenceAW, state);
|
|
88 |
makeClassification("Atlas (Ostdeutschland)", RedListUtil.uuidClassificationAO, "Atlas (Ostdeutschland)", 1996, RedListUtil.uuidClassificationReferenceAO, state);
|
|
89 |
makeClassification("Rothmaler", RedListUtil.uuidClassificationR, "Rothmaler", 2011, RedListUtil.uuidClassificationReferenceR, state);
|
|
90 |
makeClassification("Oberdorfer", RedListUtil.uuidClassificationO, "Oberdorfer", 2001, RedListUtil.uuidClassificationReferenceO, state);
|
|
91 |
makeClassification("Schmeil-Fitschen", RedListUtil.uuidClassificationS, "Schmeil-Fitschen", 2011, RedListUtil.uuidClassificationReferenceS, state);
|
91 |
92 |
importFamilies(gesamtListe, checkliste, state);
|
92 |
93 |
super.doInvoke(state);
|
93 |
94 |
}
|
... | ... | |
139 |
140 |
logger.info("Update classification (1000 nodes)");
|
140 |
141 |
getClassificationService().saveOrUpdate(gesamtListeClassification);
|
141 |
142 |
getClassificationService().saveOrUpdate(checklistClassification);
|
|
143 |
getClassificationService().saveOrUpdate(classificationE);
|
|
144 |
getClassificationService().saveOrUpdate(classificationW);
|
|
145 |
getClassificationService().saveOrUpdate(classificationK);
|
|
146 |
getClassificationService().saveOrUpdate(classificationAW);
|
|
147 |
getClassificationService().saveOrUpdate(classificationAO);
|
|
148 |
getClassificationService().saveOrUpdate(classificationR);
|
|
149 |
getClassificationService().saveOrUpdate(classificationO);
|
|
150 |
getClassificationService().saveOrUpdate(classificationS);
|
142 |
151 |
return true;
|
143 |
152 |
}
|
144 |
153 |
|
... | ... | |
165 |
174 |
|
166 |
175 |
//Gesamtliste
|
167 |
176 |
TaxonBase<?> taxonBaseGL = state.getRelatedObject(RedListUtil.TAXON_GESAMTLISTE_NAMESPACE, String.valueOf(id), TaxonBase.class);
|
168 |
|
TaxonBase<?> parentBaseGL = state.getRelatedObject(RedListUtil.TAXON_GESAMTLISTE_NAMESPACE, parentId, TaxonBase.class);
|
169 |
|
if(parentBaseGL!=null && !parentBaseGL.isInstanceOf(Taxon.class)){
|
170 |
|
RedListUtil.logMessage(id, parentBaseGL+" is no taxon but is a parent of "+taxonBaseGL+" (Gesamtliste)", logger);
|
|
177 |
Taxon parentGL = state.getRelatedObject(RedListUtil.TAXON_GESAMTLISTE_NAMESPACE, parentId, Taxon.class);
|
|
178 |
if(parentGL!=null && !parentGL.isInstanceOf(Taxon.class)){
|
|
179 |
RedListUtil.logMessage(id, parentGL+" is no taxon but is a parent of "+taxonBaseGL+" (Gesamtliste)", logger);
|
171 |
180 |
}
|
172 |
|
Taxon parentGL = (Taxon) state.getRelatedObject(RedListUtil.TAXON_GESAMTLISTE_NAMESPACE, parentId, TaxonBase.class);
|
173 |
181 |
//add to family if no parent found
|
174 |
|
if(parentBaseGL==null){
|
|
182 |
if(parentGL==null){
|
175 |
183 |
if(!taxonBaseGL.isInstanceOf(Taxon.class)){
|
176 |
184 |
RedListUtil.logMessage(id, taxonBaseGL+" has no parent but is not a taxon.", logger);
|
177 |
185 |
}
|
178 |
186 |
else{
|
179 |
|
Taxon family = HibernateProxyHelper.deproxy(getTaxonService().load(state.getFamilyMap().get(familieString)), Taxon.class);
|
|
187 |
Taxon family = (Taxon) state.getRelatedObject(RedListUtil.FAMILY_NAMESPACE, familieString);
|
180 |
188 |
gesamtListeClassification.addParentChild(family, HibernateProxyHelper.deproxy(taxonBaseGL, Taxon.class), null, null);
|
181 |
189 |
}
|
182 |
190 |
}
|
... | ... | |
187 |
195 |
|
188 |
196 |
//Checkliste
|
189 |
197 |
TaxonBase<?> taxonBaseCL = state.getRelatedObject(RedListUtil.TAXON_CHECKLISTE_NAMESPACE, String.valueOf(id), TaxonBase.class);
|
190 |
|
TaxonBase<?> parentBaseCL = state.getRelatedObject(RedListUtil.TAXON_CHECKLISTE_NAMESPACE, parentId, TaxonBase.class);
|
191 |
|
if(parentBaseCL!=null && !parentBaseCL.isInstanceOf(Taxon.class)){
|
192 |
|
RedListUtil.logMessage(id, parentBaseCL+" is no taxon but is a parent of "+taxonBaseCL+" (Checkliste)", logger);
|
|
198 |
Taxon parentCL = state.getRelatedObject(RedListUtil.TAXON_CHECKLISTE_NAMESPACE, parentId, Taxon.class);
|
|
199 |
if(parentCL!=null && !parentCL.isInstanceOf(Taxon.class)){
|
|
200 |
RedListUtil.logMessage(id, parentCL+" is no taxon but is a parent of "+taxonBaseCL+" (Checkliste)", logger);
|
193 |
201 |
}
|
194 |
|
Taxon parentCL = (Taxon) state.getRelatedObject(RedListUtil.TAXON_CHECKLISTE_NAMESPACE, parentId, TaxonBase.class);
|
195 |
202 |
if(taxonBaseCL!=null){//null check necessary because not all taxa exist in the checklist
|
196 |
203 |
//add to family if no parent found
|
197 |
204 |
if(parentCL==null){
|
... | ... | |
199 |
206 |
RedListUtil.logMessage(id, taxonBaseCL+" has no parent but is not a taxon.", logger);
|
200 |
207 |
}
|
201 |
208 |
else{
|
202 |
|
Taxon family = HibernateProxyHelper.deproxy(getTaxonService().load(state.getFamilyMap().get(familieString)), Taxon.class);
|
|
209 |
Taxon family = (Taxon) state.getRelatedObject(RedListUtil.FAMILY_NAMESPACE, familieString);
|
203 |
210 |
checklistClassification.addParentChild(family, HibernateProxyHelper.deproxy(taxonBaseCL, Taxon.class), null, null);
|
204 |
211 |
}
|
205 |
212 |
}
|
... | ... | |
229 |
236 |
addTaxonToClassification(classificationS, RedListUtil.CLASSIFICATION_NAMESPACE_S, relationS, taxonBaseGL, taxonBaseCL, id, state);
|
230 |
237 |
}
|
231 |
238 |
|
|
239 |
|
|
240 |
|
232 |
241 |
private void addTaxonToClassification(Classification classification, String classificationNamespace, String relationString, final TaxonBase<?> gesamtListeTaxon, final TaxonBase<?> checklisteTaxon, long id, RedListGefaesspflanzenImportState state){
|
233 |
242 |
Taxon taxon = HibernateProxyHelper.deproxy(state.getRelatedObject(classificationNamespace, String.valueOf(id), TaxonBase.class), Taxon.class);
|
234 |
243 |
//add concept relation to gesamtliste and checkliste
|
... | ... | |
356 |
365 |
} catch (SQLException e) {
|
357 |
366 |
e.printStackTrace();
|
358 |
367 |
}
|
|
368 |
//add taxa and their parent taxa
|
359 |
369 |
result.put(RedListUtil.TAXON_GESAMTLISTE_NAMESPACE, (Map<String, TaxonBase>) getCommonService().getSourcedObjectsByIdInSource(TaxonBase.class, idSet, RedListUtil.TAXON_GESAMTLISTE_NAMESPACE));
|
360 |
370 |
result.put(RedListUtil.TAXON_CHECKLISTE_NAMESPACE, (Map<String, TaxonBase>) getCommonService().getSourcedObjectsByIdInSource(TaxonBase.class, idSet, RedListUtil.TAXON_CHECKLISTE_NAMESPACE));
|
361 |
371 |
result.put(RedListUtil.CLASSIFICATION_NAMESPACE_E, (Map<String, TaxonBase>) getCommonService().getSourcedObjectsByIdInSource(TaxonBase.class, idSet, RedListUtil.CLASSIFICATION_NAMESPACE_E));
|
... | ... | |
366 |
376 |
result.put(RedListUtil.CLASSIFICATION_NAMESPACE_R, (Map<String, TaxonBase>) getCommonService().getSourcedObjectsByIdInSource(TaxonBase.class, idSet, RedListUtil.CLASSIFICATION_NAMESPACE_R));
|
367 |
377 |
result.put(RedListUtil.CLASSIFICATION_NAMESPACE_O, (Map<String, TaxonBase>) getCommonService().getSourcedObjectsByIdInSource(TaxonBase.class, idSet, RedListUtil.CLASSIFICATION_NAMESPACE_O));
|
368 |
378 |
result.put(RedListUtil.CLASSIFICATION_NAMESPACE_S, (Map<String, TaxonBase>) getCommonService().getSourcedObjectsByIdInSource(TaxonBase.class, idSet, RedListUtil.CLASSIFICATION_NAMESPACE_S));
|
|
379 |
|
|
380 |
//add families
|
|
381 |
Map<String, Taxon> familyMap = new HashMap<String, Taxon>();
|
|
382 |
for (Entry<String, UUID> entry: state.getFamilyMap().entrySet()) {
|
|
383 |
familyMap.put(entry.getKey(), HibernateProxyHelper.deproxy(getTaxonService().load(entry.getValue()), Taxon.class));
|
|
384 |
}
|
|
385 |
result.put(RedListUtil.FAMILY_NAMESPACE, familyMap);
|
369 |
386 |
return result;
|
370 |
387 |
}
|
371 |
388 |
|
#5488 Improve import of family taxa