X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/1e2ff9ee581e9129435098e4453f9aa2fd70b3e9..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 194bc3c7a..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 @@ -3,18 +3,26 @@ */ package eu.etaxonomy.taxeditor.newWizard; +import java.util.HashSet; +import java.util.Set; import java.util.UUID; import org.apache.commons.lang.StringUtils; +import eu.etaxonomy.cdm.api.application.CdmApplicationState; +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; import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.store.CdmStore; -import eu.etaxonomy.taxeditor.store.StoreUtil; import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeWizardPage; /** @@ -26,89 +34,132 @@ import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeWizardPage; */ public class NewTaxonNodeWizard extends AbstractNewEntityWizard{ - private TaxonNodeWizardPage taxonNodePage; - private boolean openEmptyEditor; - private UUID generatedTaxonNodeUuid; - - @Override - public void addPages() { - taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity()); - addPage(taxonNodePage); - } - - @Override - protected void saveEntity() { - if(taxonNodePage.getTaxon() == null || StringUtils.isEmpty(taxonNodePage.getTaxon().getName().getFullTitleCache())){ - openEmptyEditor = true; - }else{ - getConversationHolder().bind(); - ITaxonTreeNode parent = getParentTreeNode(); - Taxon taxon = taxonNodePage.getTaxon(); - try{ - TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference()); - generatedTaxonNodeUuid = CdmStore.getService(ITaxonNodeService.class).saveOrUpdate(taxonNode); - }catch(IllegalArgumentException e){ - StoreUtil.warningDialog("Taxon already exists in classfication", getClass(), e.getMessage()); - } - } - } - - @Override - protected ITaxonTreeNode createNewEntity() { - if(getSelection() != null){ - Object selectedObject = getSelection().getFirstElement(); - if(selectedObject instanceof ITaxonTreeNode){ - ITaxonTreeNode treeNode = (ITaxonTreeNode) selectedObject; - - if(treeNode instanceof Classification){ - return CdmStore.getService(IClassificationService.class).load(treeNode.getUuid()); - } - else if(treeNode instanceof TaxonNode){ - return CdmStore.getService(ITaxonNodeService.class).load(treeNode.getUuid()); - } - } - } - - return null; - } - - /** - *

openInEditor

- * - * @return a boolean. - */ - public boolean openInEditor(){ - return taxonNodePage.openInEditor(); - } - - /** - *

openEmpty

- * - * @return a boolean. - */ - public boolean openEmpty(){ - return openInEditor() && openEmptyEditor; - } - - /** - *

getTaxonNode

- * - * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object. - */ - public TaxonNode getTaxonNode(){ - if(generatedTaxonNodeUuid != null){ - return CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid); - } - return null; - } - - public ITaxonTreeNode getParentTreeNode(){ - return taxonNodePage.getParentTreeNode(); - } - - @Override - protected String getEntityName() { - return "Taxon"; - } + private TaxonNodeWizardPage taxonNodePage; + private boolean openEmptyEditor; + private UUID generatedTaxonNodeUuid; + private IWizardPageListener wizardPageListener; + + @Override + public void addPages() { + taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity(), wizardPageListener); + addPage(taxonNodePage); + } + + @Override + protected void saveEntity() { + if(taxonNodePage.getTaxon() == null || StringUtils.isEmpty(taxonNodePage.getTaxon().getName().getFullTitleCache())){ + openEmptyEditor = true; + }else{ + getConversationHolder().bind(); + ITaxonTreeNode parent = getParentTreeNode(); + Taxon taxon = taxonNodePage.getTaxon(); + Reference sec = taxon.getSec(); + taxon.setSec(null); + try{ + 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(); + 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(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()); + } + } + } + + @Override + protected ITaxonTreeNode createNewEntity() { + if(getSelection() != null){ + Object selectedObject = getSelection().getFirstElement(); + if(selectedObject instanceof ITaxonTreeNode){ + ITaxonTreeNode treeNode = (ITaxonTreeNode) selectedObject; + + if(treeNode instanceof Classification){ + return CdmStore.getService(IClassificationService.class).load(treeNode.getUuid()); + } + else if(treeNode instanceof TaxonNode){ + return CdmStore.getService(ITaxonNodeService.class).load(treeNode.getUuid()); + } + } + } + + return null; + } + + /** + *

openInEditor

+ * + * @return a boolean. + */ + public boolean openInEditor(){ + return taxonNodePage.openInEditor(); + } + + /** + *

openEmpty

+ * + * @return a boolean. + */ + public boolean openEmpty(){ + return openInEditor() && openEmptyEditor; + } + + /** + *

getTaxonNode

+ * + * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object. + */ + public TaxonNode getTaxonNode(){ + if(generatedTaxonNodeUuid != null){ + return CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid); + } + return null; + } + + public ITaxonTreeNode getParentTreeNode(){ + return taxonNodePage.getParentTreeNode(); + } + + @Override + protected String getEntityName() { + return "Taxon"; + } + + public void addWizardPageListener(IWizardPageListener wizardPageListener){ + this.wizardPageListener = wizardPageListener; + } } \ No newline at end of file