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;
/**
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<CdmBase> affectedObjects = new HashSet<CdmBase>();
- 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<CdmBase> affectedObjects = new HashSet<CdmBase>();
+ 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());
}
}