Revision 3ef2e1bd
Added by Andreas Müller over 7 years ago
cdm-pesi/src/main/java/eu/etaxonomy/cdm/app/pesi/merging/FaunaEuErmsMergeActivator.java | ||
---|---|---|
28 | 28 |
import eu.etaxonomy.cdm.model.common.Extension; |
29 | 29 |
import eu.etaxonomy.cdm.model.common.IdentifiableSource; |
30 | 30 |
import eu.etaxonomy.cdm.model.common.Marker; |
31 |
import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction; |
|
32 | 31 |
import eu.etaxonomy.cdm.model.description.Distribution; |
33 | 32 |
import eu.etaxonomy.cdm.model.description.Feature; |
34 | 33 |
import eu.etaxonomy.cdm.model.description.TaxonDescription; |
... | ... | |
37 | 36 |
import eu.etaxonomy.cdm.model.name.ZoologicalName; |
38 | 37 |
import eu.etaxonomy.cdm.model.reference.Reference; |
39 | 38 |
import eu.etaxonomy.cdm.model.taxon.Synonym; |
40 |
import eu.etaxonomy.cdm.model.taxon.SynonymRelationship; |
|
41 | 39 |
import eu.etaxonomy.cdm.model.taxon.Taxon; |
42 | 40 |
import eu.etaxonomy.cdm.model.taxon.TaxonBase; |
43 | 41 |
import eu.etaxonomy.cdm.model.taxon.TaxonNode; |
... | ... | |
225 | 223 |
// update nameRelationships -> if the nameRelationship does not exist, then create a new one with ermsAcc as relatedTo TaxonName |
226 | 224 |
updateNameRelationships(ermsAccFaEuSyn); |
227 | 225 |
|
228 |
//delete all synonymRelationships of FaunaEu Syn
|
|
226 |
//delete all synonyms of FaunaEu Syn |
|
229 | 227 |
for (List<String> rowList: ermsAccFaEuSyn){ |
230 | 228 |
UUID faunaUUID = UUID.fromString(rowList.get(faunaEuUuid)); |
231 | 229 |
//UUID ermsUUID = UUID.fromString(rowList.get(ermsUuid)); |
232 | 230 |
Synonym syn = (Synonym)appCtrInit.getTaxonService().find(faunaUUID); |
233 |
appCtrInit.getTaxonService().deleteSynonymRelationships(syn);
|
|
231 |
appCtrInit.getTaxonService().deleteSynonym(syn, null);
|
|
234 | 232 |
} |
235 | 233 |
|
236 | 234 |
//merge the infos of |
237 |
|
|
238 |
|
|
239 | 235 |
} |
240 | 236 |
|
241 | 237 |
private void mergeErmsSynFaunaEuAcc (List<List<String>> ermsAccFaEuSyn){ |
242 |
//occurence: verkn�pfe statt dem Fauna Europaea Taxon das akzeptierte Taxon, des Synonyms mit der Occurence (CDM -> distribution) |
|
243 |
//suche distribution (�ber das Taxon der TaxonDescription), dessen Taxon, das entsprechende Fauna Eu Taxon ist und verkn�pfe es mit dem akzeptieren Taxon des Erms Syn |
|
244 |
Taxon taxonFaunaEu = null; |
|
245 |
Taxon taxonErms = null; |
|
246 |
Synonym synErms = null; |
|
238 |
//occurence: verknüpfe statt dem Fauna Europaea Taxon das akzeptierte Taxon, des Synonyms mit der Occurence (CDM -> distribution) |
|
239 |
//suche distribution (über das Taxon der TaxonDescription), dessen Taxon, das entsprechende Fauna Eu Taxon ist und verkn�pfe es mit dem akzeptieren Taxon des Erms Syn |
|
247 | 240 |
for (List<String> row: ermsAccFaEuSyn){ |
248 |
taxonFaunaEu = (Taxon)appCtrInit.getTaxonService().find(UUID.fromString(row.get(faunaEuUuid)));
|
|
249 |
synErms = (Synonym)appCtrInit.getTaxonService().find(UUID.fromString(row.get(ermsUuid))); |
|
241 |
Taxon taxonFaunaEu = (Taxon)appCtrInit.getTaxonService().find(UUID.fromString(row.get(faunaEuUuid)));
|
|
242 |
Synonym synErms = (Synonym)appCtrInit.getTaxonService().find(UUID.fromString(row.get(ermsUuid)));
|
|
250 | 243 |
synErms = HibernateProxyHelper.deproxy(synErms, Synonym.class); |
251 |
Set<SynonymRelationship> synRel=synErms.getSynonymRelations(); |
|
252 |
|
|
253 |
if (synRel.size()>1){ |
|
254 |
//TODO: which Relationship?? |
|
255 |
Iterator<SynonymRelationship> iterator = synRel.iterator(); |
|
256 |
taxonErms = iterator.next().getAcceptedTaxon(); |
|
257 |
}else if (synRel.size() == 1){ |
|
258 |
Iterator<SynonymRelationship> iterator = synRel.iterator(); |
|
259 |
taxonErms = iterator.next().getAcceptedTaxon(); |
|
260 |
} else { |
|
261 |
taxonErms = null; |
|
262 |
logger.debug("There is no SynonymRelationship for the synonym" + synErms.getTitleCache()); |
|
244 |
Taxon taxonErms = synErms.getAcceptedTaxon(); |
|
245 |
|
|
246 |
if (taxonErms == null){ |
|
247 |
logger.debug("There is no accepted taxon for the synonym" + synErms.getTitleCache()); |
|
263 | 248 |
} |
264 | 249 |
|
265 | 250 |
Set<Feature> features = new HashSet<Feature>(); |
... | ... | |
374 | 359 |
taxonFaunaEu = (Taxon)appCtrInit.getTaxonService().find(UUID.fromString(row.get(faunaEuUuid))); |
375 | 360 |
synErms = (Synonym)appCtrInit.getTaxonService().find(UUID.fromString(row.get(ermsUuid))); |
376 | 361 |
acceptedTaxa.clear(); |
377 |
acceptedTaxa.addAll( synErms.getAcceptedTaxa());
|
|
362 |
acceptedTaxa.add( synErms.getAcceptedTaxon());
|
|
378 | 363 |
if (!acceptedTaxa.isEmpty()){ |
379 | 364 |
taxonErms = acceptedTaxa.iterator().next(); |
380 | 365 |
if (acceptedTaxa.size() > 1){ |
... | ... | |
386 | 371 |
} |
387 | 372 |
|
388 | 373 |
if (taxonErms != null){ |
389 |
List<SynonymRelationship> relTaxonFaunaEu = appCtrInit.getTaxonService().listSynonymRelationships(taxonFaunaEu, null, 100, 0, null, null, Direction.relatedTo); |
|
390 |
List<SynonymRelationship> relTaxonErms = appCtrInit.getTaxonService().listSynonymRelationships(taxonErms, null, 100, 0, null, null, Direction.relatedTo); |
|
374 |
List<Synonym> synsTaxonFaunaEu = appCtrInit.getTaxonService().getSynonyms(taxonFaunaEu, null, 1000, 0, null, null); |
|
375 |
|
|
376 |
List<Synonym> synsTaxonErms = appCtrInit.getTaxonService().getSynonyms(taxonErms, null, 1000, 0, null, null); |
|
391 | 377 |
|
392 |
List<SynonymRelationship> deleteRel = new ArrayList<SynonymRelationship>(); |
|
393 |
for (SynonymRelationship relFauEu: relTaxonFaunaEu){ |
|
394 |
//TODO: wenn es noch keine SynonymRelationship gibt zu einem Synonym mit gleichem Namen, dann erzeuge die SynonymRelationship vom FaunaEuSyn (des FaunaEu Taxons, dass identischen Namen hat) zum akzeptierten Taxon des Erms Syn |
|
378 |
List<Synonym> deleteRel = new ArrayList<>(); |
|
379 |
for (Synonym synFauEu: synsTaxonFaunaEu){ |
|
380 |
//TODO: wenn es noch keine SynonymRelationship gibt zu einem Synonym mit gleichem Namen, |
|
381 |
//dann erzeuge die SynonymRelationship vom FaunaEuSyn (des FaunaEu Taxons, das |
|
382 |
//identischen Namen hat) zum akzeptierten Taxon des Erms Syn |
|
395 | 383 |
boolean createNewRelationship = true; |
396 |
for (SynonymRelationship relErms: relTaxonErms){
|
|
397 |
if (relErms.getSynonym().getTitleCache().equals(relFauEu.getSynonym().getTitleCache())){
|
|
384 |
for (Synonym relErms: synsTaxonErms){
|
|
385 |
if (relErms.getTitleCache().equals(synFauEu.getTitleCache())){
|
|
398 | 386 |
//es gibt schon eine Relationship zu einem Synonym mit dem gleichen Namen wie das FaunaEu Synonym, also Relationship l�schen. |
399 | 387 |
createNewRelationship = false; |
400 | 388 |
break; |
401 | 389 |
} |
402 | 390 |
} |
403 | 391 |
if (createNewRelationship){ |
404 |
taxonErms.addSynonym(relFauEu.getSynonym(), relFauEu.getType());
|
|
392 |
taxonErms.addSynonym(synFauEu, synFauEu.getType());
|
|
405 | 393 |
} |
406 | 394 |
|
407 |
deleteRel.add(relFauEu);
|
|
395 |
deleteRel.add(synFauEu);
|
|
408 | 396 |
} |
409 | 397 |
} |
410 | 398 |
|
... | ... | |
477 | 465 |
//if name, rank, and status (accepted) are the same, then move the synonyms of faunaEu taxon to the erms taxon |
478 | 466 |
|
479 | 467 |
private void moveFaunaEuSynonymsToErmsTaxon(Taxon faunaEu, Taxon erms){ |
480 |
Set<SynonymRelationship> synRel =faunaEu.getSynonymRelations(); |
|
481 |
Iterator<SynonymRelationship> synRelIterator = synRel.iterator(); |
|
482 |
SynonymRelationship rel; |
|
468 |
Set<Synonym> syns =faunaEu.getSynonyms(); |
|
469 |
Iterator<Synonym> synRelIterator = syns.iterator(); |
|
483 | 470 |
while (synRelIterator.hasNext()){ |
484 |
rel = synRelIterator.next();
|
|
485 |
faunaEu.removeSynonym(rel.getSynonym());
|
|
486 |
erms.addSynonym(rel.getSynonym(), rel.getType());
|
|
471 |
Synonym syn = synRelIterator.next();
|
|
472 |
faunaEu.removeSynonym(syn);
|
|
473 |
erms.addSynonym(syn, syn.getType());
|
|
487 | 474 |
} |
488 | 475 |
} |
489 | 476 |
|
Also available in: Unified diff
ref #5974 Remove synonym relationships (not finished yet)