X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/18358a529a0a508bad94a1a2ba23582b89d81385..248f5a5acb7a26396fb469a59ff0a8c4a09646cf:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java 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 735bb0870..2478bf5a1 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 @@ -14,7 +14,9 @@ import eu.etaxonomy.cdm.api.application.CdmChangeEvent; import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action; import eu.etaxonomy.cdm.api.service.IClassificationService; import eu.etaxonomy.cdm.api.service.ITaxonNodeService; +import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.cdm.model.taxon.Classification; import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode; import eu.etaxonomy.cdm.model.taxon.Taxon; @@ -51,28 +53,47 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard{ getConversationHolder().bind(); ITaxonTreeNode parent = getParentTreeNode(); Taxon taxon = taxonNodePage.getTaxon(); + Reference sec = taxon.getSec(); + taxon.setSec(null); try{ - TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference()); - taxonNode = CdmStore.getService(ITaxonNodeService.class).merge(taxonNode); - generatedTaxonNodeUuid = taxonNode.getUuid(); + UUID parentNodeUuid; + if(parent instanceof Classification){ + parentNodeUuid = ((Classification) parent).getRootNode().getUuid(); + } + 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); + }*/ + 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(); - //FIXME:Remoting Hack for now - need to generalise this - // by making the affected objects a set of ICdmBase - // Also, this needs to be moved to the new operations - // architecture. - - TaxonNode parentNode = taxonNode.getParent(); - if(parentNode.getParent() == null) { - affectedObjects.add(taxonNode.getClassification()); + if (result.getUpdatedObjects().iterator().hasNext()){ + TaxonNode parentNode = (TaxonNode)result.getUpdatedObjects().iterator().next(); + if(parentNode.getParent() == null) { + affectedObjects.add(taxonNode.getClassification()); + } + if(parentNode instanceof TaxonNode) { + affectedObjects.add(parentNode); + } } - if(parentNode instanceof TaxonNode) { - affectedObjects.add(parentNode); - } - CdmApplicationState.getCurrentDataChangeService() - .fireChangeEvent(new CdmChangeEvent(Action.Create, affectedObjects, NewTaxonNodeWizard.class), true); + + if(CdmStore.getCurrentSessionManager().isRemoting()) { + CdmApplicationState.getCurrentDataChangeService() + .fireChangeEvent(new CdmChangeEvent(Action.Create, affectedObjects, NewTaxonNodeWizard.class), true); + } }catch(IllegalArgumentException e){ MessagingUtils.warningDialog("Taxon already exists in classfication", getClass(), e.getMessage()); }