Project

General

Profile

« Previous | Next » 

Revision 3e76d987

Added by Andreas Müller over 12 years ago

bugfix for changeSynonymToAcceptedTaxon (#2556)

View differences:

cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Synonym.java
269 269

  
270 270
	/**
271 271
	 * Replaces ALL accepted taxa of this synonym by the new accepted taxon.
272
	 * The citation information (citation /microcitation) is kept of the synonym relationship
272
	 * The citation information (citation /microcitation) of the synonym relationship
273 273
	 * is kept.
274 274
	 * @param newAcceptedTaxon
275 275
	 * 			the new accepted taxon
......
292 292
		for (SynonymRelationship rel : rels){
293 293
			Taxon oldAcceptedTaxon = rel.getAcceptedTaxon();
294 294
			oldAcceptedTaxon.getSynonymRelations().remove(rel);
295
			rel.setAcceptedTaxon(newAcceptedTaxon);
296
			newAcceptedTaxon.getSynonymRelations().add(rel);
297
			rel.setType(relType);
295
			rel.getSynonym().getSynonymRelations().remove(rel);
296
			SynonymRelationship newRel = (SynonymRelationship)rel.clone();
297
			newRel.setAcceptedTaxon(newAcceptedTaxon);
298
			newAcceptedTaxon.getSynonymRelations().add(newRel);
299
			newRel.setType(relType);
298 300
		}
299 301
	}
300 302
//*********************** CLONE ********************************************************/
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java
166 166
	@Transactional(readOnly = false)
167 167
	public void swapSynonymAndAcceptedTaxon(Synonym synonym, Taxon acceptedTaxon){
168 168
		
169
		TaxonNameBase synonymName = synonym.getName();
169
		TaxonNameBase<?,?> synonymName = synonym.getName();
170 170
		synonymName.removeTaxonBase(synonym);
171
		TaxonNameBase taxonName = acceptedTaxon.getName();
171
		TaxonNameBase<?,?> taxonName = acceptedTaxon.getName();
172 172
		taxonName.removeTaxonBase(acceptedTaxon);
173 173
		
174 174
		synonym.setName(taxonName);
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceImplTest.java
132 132
	}
133 133
	
134 134
	@Test
135
	public final void testMakeSynonymTaxon(){
135
	public final void testChangeSynonymToAcceptedTaxon(){
136 136
		Rank rank = Rank.SPECIES();
137 137
		//HomotypicalGroup group = HomotypicalGroup.NewInstance();
138 138
		Taxon tax1 = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test1", null, null, null, null, null, null, null), null);
139 139
		Taxon tax2 = Taxon.NewInstance(BotanicalName.NewInstance(rank, "Test3", null, null, null, null, null, null, null), null);
140 140
		Synonym synonym = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test2", null, null, null, null, null, null, null), null);
141
		Synonym synonym2 = Synonym.NewInstance(BotanicalName.NewInstance(rank, "Test4", null, null, null, null, null, null, null), null);
142
		synonym2.getName().setHomotypicalGroup(synonym.getHomotypicGroup());
141 143
		//tax2.addHeterotypicSynonymName(synonym.getName());
142 144
		tax2.addSynonym(synonym, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());
143
		BotanicalName name = (BotanicalName)synonym.getName();
144
		UUID uuidTaxon = service.save(tax1);
145
		tax2.addSynonym(synonym2, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());
146
		
147
		service.save(tax1);
145 148
		UUID uuidSyn = service.save(synonym);
146
		UUID uuidGenus = service.save(tax2);
149
		service.save(synonym2);
150
		service.save(tax2);
147 151
		
148
		Taxon tax = service.changeSynonymToAcceptedTaxon(synonym, tax2, true, true, null, null);
152
		service.changeSynonymToAcceptedTaxon(synonym, tax2, true, true, null, null);
153
		//test flush (resave deleted object)
149 154
		TaxonBase<?> syn = service.find(uuidSyn);
150 155
		assertNull(syn);
151 156
		

Also available in: Unified diff