fix #7395: add check for Nonviral nomenclatutal code in checkForDeletableParts
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / selection / EditFromSelectionWizard.java
index adcbfeccd6afe4583ec11dd29ceb3a88432d5f04..426fb750c88b34bbd18a80b2e37f2ee4bfc2bb62 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
  * Copyright (C) 2007 EDIT
  * European Distributed Institute of Taxonomy
@@ -29,18 +28,21 @@ import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.molecular.Amplification;
 import eu.etaxonomy.cdm.model.molecular.Primer;
-import eu.etaxonomy.cdm.model.name.NonViralName;
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.model.TextHelper;
 import eu.etaxonomy.taxeditor.newWizard.AmplificationGeneralWizardPage;
+import eu.etaxonomy.taxeditor.newWizard.PolytomousKeyWizardPage;
 import eu.etaxonomy.taxeditor.newWizard.PrimerWizardPage;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
@@ -57,6 +59,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralWizardPage
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.taxon.TaxonWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.user.UserDetailWizardPage;
 
 /**
@@ -73,7 +76,7 @@ public class EditFromSelectionWizard extends Wizard implements
        private CdmBase rootElement;
 
        public EditFromSelectionWizard(EntitySelectionElement selectionElement) {
-        if (CdmStore.isActive() && CdmStore.getCurrentSessionManager().isRemoting()) {
+        if (CdmStore.isActive()) {
             previousCdmEntitySession = CdmStore.getCurrentSessionManager().getActiveSession();
             cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
             cdmEntitySession.bind();
@@ -92,7 +95,6 @@ public class EditFromSelectionWizard extends Wizard implements
                //check if entity has already been persisted
                if(entity.getId()==0){
                        rootElement = entity;
-                       cdmEntitySession.addNewCdmEntity(rootElement);
                }
                else{
                        IService<CdmBase> service = CdmStore.getService(entity);
@@ -102,17 +104,24 @@ public class EditFromSelectionWizard extends Wizard implements
                        addPage(new ReferenceWizardPage(formFactory,
                                        selectionElement.getConversationHolder(),
                                        (HibernateProxyHelper.deproxy(rootElement, Reference.class))));
-               } else if (rootElement.isInstanceOf(Team.class)) {
+               } else if (rootElement.isInstanceOf(Team.class) && selectionElement instanceof EntitySelectionElementWithAbbreviatedTitle<?>) {
                        addPage(new TeamWizardPage(formFactory,
-                                       selectionElement.getConversationHolder(), HibernateProxyHelper.deproxy(rootElement, Team.class)));
-               } else if (rootElement.isInstanceOf(Person.class)) {
+                                       selectionElement.getConversationHolder(), HibernateProxyHelper.deproxy(rootElement, Team.class), true));
+               } else if (rootElement.isInstanceOf(Team.class) && !(selectionElement instanceof EntitySelectionElementWithAbbreviatedTitle<?>)) {
+            addPage(new TeamWizardPage(formFactory,
+                    selectionElement.getConversationHolder(), HibernateProxyHelper.deproxy(rootElement, Team.class), false));
+        } else if (rootElement.isInstanceOf(Person.class)) {
                        addPage(new PersonWizardPage(formFactory,
                                        selectionElement.getConversationHolder(), HibernateProxyHelper.deproxy(rootElement, Person.class)));
-               } else if (rootElement.isInstanceOf(NonViralName.class)) {
+               } else if (rootElement.isInstanceOf(TaxonName.class)) {
                        addPage(new NonViralNameWizardPage(formFactory,
                                        selectionElement.getConversationHolder(),
-                                       HibernateProxyHelper.deproxy(rootElement, NonViralName.class)));
-               } else if (rootElement.isInstanceOf(SpecimenOrObservationBase.class)) {
+                                       HibernateProxyHelper.deproxy(rootElement, TaxonName.class)));
+               } else if (rootElement.isInstanceOf(TaxonBase.class)) {
+            addPage(new TaxonWizardPage(formFactory,
+                    selectionElement.getConversationHolder(),
+                    HibernateProxyHelper.deproxy(rootElement, TaxonBase.class)));
+        }  else if (rootElement.isInstanceOf(SpecimenOrObservationBase.class)) {
 
                        DerivedUnitFacade facade;
                        try {
@@ -162,6 +171,10 @@ public class EditFromSelectionWizard extends Wizard implements
             addPage(new AmplificationGeneralWizardPage(formFactory,
                     selectionElement.getConversationHolder(),
                     HibernateProxyHelper.deproxy(rootElement, Amplification.class)));
+        } else if (rootElement instanceof PolytomousKey) {
+            addPage(new PolytomousKeyWizardPage(formFactory,
+                    selectionElement.getConversationHolder(),
+                    HibernateProxyHelper.deproxy(rootElement, PolytomousKey.class)));
         } else {
                        MessagingUtils.warningDialog("Missing interface", this,
                                        "No detail element for current selection");
@@ -175,10 +188,14 @@ public class EditFromSelectionWizard extends Wizard implements
            IService<CdmBase> service = CdmStore.getService(rootElement);
            if(rootElement.getId()!=0){
                service.merge(rootElement, true);
+
+           }else{
+               rootElement = service.save(rootElement);
            }
            if(previousCdmEntitySession!=null){
-               selectionElement.setEntity(previousCdmEntitySession.load(rootElement, true));
-           }
+            selectionElement.setEntity(previousCdmEntitySession.load(rootElement, true));
+        }
+
                return true;
        }
 
@@ -202,9 +219,10 @@ public class EditFromSelectionWizard extends Wizard implements
         super.dispose();
         if(cdmEntitySession != null) {
             cdmEntitySession.dispose();
+            cdmEntitySession = null;
         }
         if(previousCdmEntitySession!=null){
-            previousCdmEntitySession.dispose();
+            previousCdmEntitySession.bind();
         }
     }