- Fixed the creation of a single FieldUnit via context-menu in the bulk editor which...
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / newWizard / NewDerivedUnitBaseWizard.java
index 0b4c9bf950612fc6756a278146d3c76198dcbf47..260beaf7b4b8f95707fa6d1d735561672e8d2340 100644 (file)
@@ -14,11 +14,14 @@ import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GeneralWizardPage;
@@ -30,7 +33,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.GeneralWizardPage;
  * @created Jun 16, 2010
  * @version 1.0
  */
-public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<DerivedUnit> {
+public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOrObservationBase> {
        private SpecimenOrObservationType specOrObsType = null;
 
        public NewDerivedUnitBaseWizard() {
@@ -44,54 +47,47 @@ public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<DerivedUni
        /** {@inheritDoc} */
        @Override
        public void addPages() {
-           DerivedUnitFacade facade = getFacade();
-           try {
-               if(getEntity() != null) {
-                   facade = DerivedUnitFacade.NewInstance(getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
-               }
-           } catch (DerivedUnitFacadeNotSupportedException e) {
-               // w should never get here
-               throw new IllegalStateException();
-           }
-        addPage(new GeneralWizardPage(formFactory, getConversationHolder(), facade));
-               addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade));
-               addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade));
-               addPage(new DerivedUnitBaseWizardPage(formFactory, getConversationHolder(), facade));
-
+           DerivedUnitFacade facade = null;
+        try {
+            if(getEntity() instanceof DerivedUnit) {
+                facade = DerivedUnitFacade.NewInstance((DerivedUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
+                addPage(new GeneralWizardPage(formFactory, getConversationHolder(), facade));
+                addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade));
+                addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade));
+                addPage(new DerivedUnitBaseWizardPage(formFactory, getConversationHolder(), facade));
+            }
+            else if(getEntity() instanceof FieldUnit){
+                facade = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
+                addPage(new FieldUnitGeneralWizardPage(formFactory, getConversationHolder(), facade));
+                addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade));
+                addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade));
+            }
+        } catch (DerivedUnitFacadeNotSupportedException e) {
+            // we should never get here
+            throw new IllegalStateException();
+        }
        }
 
-       /**
-        * @return
-        */
-       private DerivedUnitFacade getFacade() {
-               try {
-                       if(getEntity() != null) {
-                               return DerivedUnitFacade.NewInstance(getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
-                       }
-               } catch (DerivedUnitFacadeNotSupportedException e) {
-                       // w should never get here
-                       throw new IllegalStateException();
-               }
-               return null;
-       }
 
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard#createNewEntity()
         */
        /** {@inheritDoc} */
        @Override
-       protected DerivedUnit createNewEntity() {
-               if(specOrObsType == null) {
-                       return DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
-               } else {
-                       if(SpecimenOrObservationType.Media.equals(specOrObsType) ||
-                                       ((specOrObsType.getKindOf() != null) &&
-                                       specOrObsType.getKindOf().equals(SpecimenOrObservationType.Media))) {
-                               return MediaSpecimen.NewInstance(SpecimenOrObservationType.Media);
-                       } else {
-                               return DerivedUnit.NewInstance(specOrObsType);
-                       }
-               }
+       protected SpecimenOrObservationBase createNewEntity() {
+           if(specOrObsType == null) {
+               return DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+           } else {
+               if(SpecimenOrObservationType.Media.equals(specOrObsType) ||
+                       ((specOrObsType.getKindOf() != null) &&
+                               specOrObsType.getKindOf().equals(SpecimenOrObservationType.Media))) {
+                   return MediaSpecimen.NewInstance(SpecimenOrObservationType.Media);
+               } else if (specOrObsType.equals(SpecimenOrObservationType.FieldUnit)) {
+                   return FieldUnit.NewInstance();
+               } else {
+                   return DerivedUnit.NewInstance(specOrObsType);
+               }
+           }
        }
 
        /* (non-Javadoc)