adapt master to develop
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / newWizard / NewTaxonNodeWizard.java
index 553438baeb2c118f7dbff14010d7161bfadd71ae..206eb8a1d9d35ea69d771c07c9b23cf4b491556f 100644 (file)
@@ -1,94 +1,99 @@
 /**
- *
- */
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
 package eu.etaxonomy.taxeditor.newWizard;
 
+import java.util.Map;
 import java.util.UUID;
 
 import javax.inject.Inject;
 
-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.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
-import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
-import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.api.service.dto.CreateTaxonDTO;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.reference.NamedSource;
 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.model.taxon.TaxonNodeStatus;
 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeWizardPage;
 
 /**
- * <p>NewTaxonNodeWizard class.</p>
+ * NewTaxonNodeWizard class.
  *
  * @author n.hoffmann
  * @created Sep 15, 2009
- * @version 1.0
  */
-public class NewTaxonNodeWizard extends AbstractNewEntityWizard<TaxonNode>{
+public class NewTaxonNodeWizard extends AbstractNewEntityWizardParentChild<TaxonNode>{
 
     private TaxonNodeWizardPage taxonNodePage;
     private boolean openEmptyEditor;
     private UUID generatedTaxonNodeUuid;
     private IWizardPageListener wizardPageListener;
     private boolean isOpenInEditor = false;
+    private boolean success = true;
 
-    /**
-     * <p>Constructor for AbstractNewEntityWizard.</p>
-     *
-     * @param <T> a T object.
-     */
     @Inject
     public NewTaxonNodeWizard(){
         setWindowTitle(Messages.TaxonNodeWizardPage_new);
     }
 
-
     @Override
     public void addPages() {
-        taxonNodePage = new TaxonNodeWizardPage(formFactory, getConversationHolder(), getEntity(), wizardPageListener, true);
+        taxonNodePage = new TaxonNodeWizardPage(formFactory, getParentEntity(), wizardPageListener, true);
         addPage(taxonNodePage);
-
     }
 
     @Override
     protected void saveEntity() {
-        Taxon taxon = taxonNodePage.createTaxon();
-        if(taxon == null || StringUtils.isEmpty(taxon.getName().getFullTitleCache())){
+        CreateTaxonDTO taxon = taxonNodePage.createTaxon();
+        if(taxon == null ){
             openEmptyEditor = true;
         }else{
-            getConversationHolder().bind();
-//            ITaxonTreeNode parent = getParentTreeNode();
-            try{
-               UUID parentNodeUuid;
-//             if(parent instanceof Classification){
-//                 parentNodeUuid = ((Classification) parent).getRootNode().getUuid();
-//             }
-//             else{
-//                 parentNodeUuid = parent.getUuid();
-//             }
-               UpdateResult result;
-               result = CdmStore.getService(ITaxonNodeService.class).saveNewTaxonNode(getEntity());
+           try{
+               UpdateResult result;
+               TaxonNode parent = getParentEntity();
+
+               Map<Language, LanguageString> notes = ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).getMultiLanguageTextExcludedNotes();
+               NamedSource source = parent.getSource().checkEmpty()? null: parent.getSource();
+
+               TaxonNodeStatus status = ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).getTaxonNodeStatus();
+               if (status == null){
+                   notes = null;
+               }
+
+               result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parent.getUuid(),
+                       taxon, source, parent.getMicroReference(), status, notes);
+
+
                if (result.isOk()){
                    this.setEntity((TaxonNode)result.getCdmEntity());
-                   CdmApplicationState.getCurrentDataChangeService()
-                                .fireChangeEvent(new CdmChangeEvent(Action.Create, result.getUpdatedObjects(), NewTaxonNodeWizard.class), true);
+                    CdmApplicationState.getCurrentDataChangeService()
+                             .fireChangeEvent(new CdmChangeEvent(Action.Create, result.getUpdatedObjects(), NewTaxonNodeWizard.class), true);
 
                     }else{
+                        setSuccess(false);
                         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){
@@ -97,33 +102,6 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<TaxonNode>{
         }
     }
 
-    @Override
-    protected TaxonNode createNewEntity() {
-        if(getSelection() != null){
-            Object selectedObject = getSelection().getFirstElement();
-            if(selectedObject instanceof TaxonNodeDto){
-                TaxonNodeDto taxonNodeDto = (TaxonNodeDto) selectedObject;
-               TaxonNode node =  CdmStore.getService(ITaxonNodeService.class).load(taxonNodeDto.getUuid());
-               Reference sec = node.getTaxon() != null? node.getTaxon().getSec():null;
-               Taxon newTaxon = Taxon.NewInstance(TaxonNameFactory.NewNameInstance(PreferencesUtil.getPreferredNomenclaturalCode(), null), sec);
-               TaxonNode child = node.addChildTaxon(newTaxon, null, null);
-
-                return child;
-
-            }
-        }
-
-        return null;
-    }
-
-
-    /**
-     * <p>
-     * openInEditor
-     * </p>
-     *
-     * @return a boolean.
-     */
     public boolean openInEditor() {
         return isOpenInEditor ;
     }
@@ -132,20 +110,10 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<TaxonNode>{
         this.isOpenInEditor = isOpenInEditor;
     }
 
-    /**
-     * <p>openEmpty</p>
-     *
-     * @return a boolean.
-     */
     public boolean openEmpty(){
         return openInEditor() && openEmptyEditor;
     }
 
-    /**
-     * <p>getTaxonNode</p>
-     *
-     * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
-     */
     public TaxonNode getTaxonNode(){
         if(generatedTaxonNodeUuid != null){
             return CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
@@ -166,6 +134,22 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<TaxonNode>{
         this.wizardPageListener = wizardPageListener;
     }
 
+    public boolean isSuccess() {
+        return success;
+    }
 
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
 
-}
+    @Override
+    public void createParentEntity() {
+        Object selectedObject = getSelection().getFirstElement();
+        if(selectedObject instanceof TaxonNodeDto){
+            if(selectedObject instanceof TaxonNodeDto){
+                TaxonNodeDto taxonNodeDto = (TaxonNodeDto) selectedObject;
+                setParentEntity(CdmStore.getService(ITaxonNodeService.class).load(taxonNodeDto.getUuid()));
+            }
+        }
+    }
+}
\ No newline at end of file