From: Katja Luther Date: Fri, 26 Aug 2016 10:40:18 +0000 (+0200) Subject: fix #5869 use the service method to create new taxonnode to avoid multiple representa... X-Git-Tag: 4.3.0^2~59 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/d3b9767bbf64115a686087af680e831aa1693329 fix #5869 use the service method to create new taxonnode to avoid multiple representation exception when reuse taxon --- diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java index e8dfc5547..36da70672 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java @@ -21,8 +21,10 @@ import eu.etaxonomy.cdm.model.taxon.Classification; import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.cdm.persistence.dto.MergeResult; import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.store.CdmStore; +import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeDetailElement; import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeWizardPage; /** @@ -64,42 +66,40 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard{ else{ parentNodeUuid = parent.getUuid(); } - UpdateResult result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parentNodeUuid, taxon, parent.getReference(), parent.getMicroReference()); - - //TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference()); - - /* if(CdmStore.getCurrentSessionManager().isRemoting()) { - taxonNode = CdmStore.getService(ITaxonNodeService.class).merge(taxonNode); - } else { - taxonNode = CdmStore.getService(ITaxonNodeService.class).save(taxonNode); - }*/ - if (result.isOk()){ - generatedTaxonNodeUuid = result.getCdmEntity().getUuid(); - TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid); - taxonNode.getTaxon().setSec(sec); - CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true); - Set affectedObjects = new HashSet(); - if (result.getUpdatedObjects().iterator().hasNext()){ - TaxonNode parentNode = (TaxonNode)result.getUpdatedObjects().iterator().next(); - if(parentNode.getParent() == null) { - affectedObjects.add(taxonNode.getClassification()); - } - affectedObjects.add(parentNode); - } - if(CdmStore.getCurrentSessionManager().isRemoting()) { - CdmApplicationState.getCurrentDataChangeService() - .fireChangeEvent(new CdmChangeEvent(Action.Create, affectedObjects, NewTaxonNodeWizard.class), true); - } - }else{ - if (!result.isOk()){ - if (!result.getExceptions().isEmpty()){ - MessagingUtils.error(getClass(), "Taxon could not be created", result.getExceptions().iterator().next()); - }else{ - MessagingUtils.warn(getClass(), "Taxon could not be created"); - } - } - } - }catch(IllegalArgumentException e){ + UpdateResult result; + + if (taxon.getId() == 0){ + result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parentNodeUuid, taxon, parent.getReference(), parent.getMicroReference()); + }else{ + result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parentNodeUuid, taxon.getUuid(), parent.getReference(), parent.getMicroReference()); + } + if (result.isOk()){ + generatedTaxonNodeUuid = result.getCdmEntity().getUuid(); + TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid); + taxonNode.getTaxon().setSec(sec); + CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true); + Set affectedObjects = new HashSet(); + if (result.getUpdatedObjects().iterator().hasNext()){ + TaxonNode parentNode = (TaxonNode)result.getUpdatedObjects().iterator().next(); + if(parentNode.getParent() == null) { + affectedObjects.add(taxonNode.getClassification()); + } + affectedObjects.add(parentNode); + } + if(CdmStore.getCurrentSessionManager().isRemoting()) { + CdmApplicationState.getCurrentDataChangeService() + .fireChangeEvent(new CdmChangeEvent(Action.Create, affectedObjects, NewTaxonNodeWizard.class), true); + } + }else{ + if (!result.isOk()){ + if (!result.getExceptions().isEmpty()){ + MessagingUtils.error(getClass(), "Taxon could not be created", result.getExceptions().iterator().next()); + }else{ + MessagingUtils.warn(getClass(), "Taxon could not be created"); + } + } + } + }catch(IllegalArgumentException e){ MessagingUtils.warningDialog("Taxon already exists in classfication", getClass(), e.getMessage()); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java index 7da137dc9..1ecc93934 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java @@ -185,7 +185,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement