Project

General

Profile

« Previous | Next » 

Revision 3ef2e1bd

Added by Andreas Müller over 7 years ago

ref #5974 Remove synonym relationships (not finished yet)

View differences:

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