- */
- return result;
- }
-
- @Override
- @Transactional(readOnly = false)
- public UpdateResult swapSynonymAndAcceptedTaxonNewUuid(Synonym synonym, Taxon acceptedTaxon, boolean setNameInSource){
- UpdateResult result = new UpdateResult();
- acceptedTaxon.removeSynonym(synonym);
- TaxonName synonymName = synonym.getName();
- TaxonName taxonName = HibernateProxyHelper.deproxy(acceptedTaxon.getName());
-
- boolean sameHomotypicGroup = synonymName.getHomotypicalGroup().equals(taxonName.getHomotypicalGroup());
- synonymName.removeTaxonBase(synonym);
-
- //taxonName.removeTaxonBase(acceptedTaxon);
-
- List<Synonym> synonyms = new ArrayList<>();
- for (Synonym syn: acceptedTaxon.getSynonyms()){
- syn = HibernateProxyHelper.deproxy(syn, Synonym.class);
- synonyms.add(syn);
- }
- for (Synonym syn: synonyms){
- acceptedTaxon.removeSynonym(syn);
- }
- Taxon newTaxon = acceptedTaxon.clone(true, true, false, true);
-// newTaxon.getDescriptions().clear();
-
- Set<TaxonDescription> descriptionsToCopy = new HashSet<>(acceptedTaxon.getDescriptions());
- for (TaxonDescription description: descriptionsToCopy){
- newTaxon.addDescription(description);
- }
-
- newTaxon.setName(synonymName);
-
- newTaxon.setPublish(synonym.isPublish());
- for (Synonym syn: synonyms){
- if (!syn.getName().equals(newTaxon.getName())){
- newTaxon.addSynonym(syn, syn.getType());
- }
- }
-
- //move all data to new taxon
- //Move Taxon RelationShips to new Taxon
- for(TaxonRelationship taxonRelationship : newTaxon.getTaxonRelations()){
- newTaxon.removeTaxonRelation(taxonRelationship);
- }