Revision 3e76d987
Added by Andreas Müller over 12 years ago
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
bugfix for changeSynonymToAcceptedTaxon (#2556)