merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / newWizard / NewDerivedUnitBaseWizard.java
index d132f0544eb0b3beb48ff8a99753768ec1dd666d..8ddca70ed37560264b2412554c245b348f9c8968 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* 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.
 */
@@ -13,14 +13,19 @@ package eu.etaxonomy.taxeditor.newWizard;
 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.DerivedUnitBase;
-import eu.etaxonomy.cdm.model.occurrence.Specimen;
+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.FieldObservationWizardPage;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.GeneralWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitDetailsWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldObservationDetailsWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldObservationGeneralWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailsWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenDetailsWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenGeneralWizardPage;
 
 /**
  * <p>NewDerivedUnitBaseWizard class.</p>
@@ -29,39 +34,64 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.GeneralWizardPage;
  * @created Jun 16, 2010
  * @version 1.0
  */
-public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<DerivedUnitBase> {
-       
-       /** {@inheritDoc} */
-       @Override
-       public void addPages() {
-               addPage(new GeneralWizardPage(formFactory, getConversationHolder(), getFacade()));
-               addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), getFacade()));
-               addPage(new FieldObservationWizardPage(formFactory, getConversationHolder(), getFacade()));
-               addPage(new DerivedUnitBaseWizardPage(formFactory, getConversationHolder(), getFacade()));
+public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOrObservationBase<?>> {
+       private SpecimenOrObservationType specOrObsType = null;
+
+       public NewDerivedUnitBaseWizard() {
+               super();
        }
-       
-       /**
-        * @return
-        */
-       private DerivedUnitFacade getFacade() {
-               try {
-                       return DerivedUnitFacade.NewInstance(getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
-               } catch (DerivedUnitFacadeNotSupportedException e) {
-                       // w should never get here
-                       throw new IllegalStateException();
-               }
+
+       public NewDerivedUnitBaseWizard(SpecimenOrObservationType specOrObsType) {
+               super();
+               this.specOrObsType = specOrObsType;
        }
+       /** {@inheritDoc} */
+       @Override
+    public void addPages() {
+        DerivedUnitFacade derivedUnitFacade = null;
+        try {
+            if (getEntity() != null) {
+                if(getEntity() instanceof FieldUnit){
+                    derivedUnitFacade = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit)getEntity());
+
+                    addPage(new FieldObservationGeneralWizardPage(formFactory, getConversationHolder(), derivedUnitFacade));
+                    addPage(new GatheringEventDetailsWizardPage(formFactory, getConversationHolder(), derivedUnitFacade));
+                    addPage(new FieldObservationDetailsWizardPage(formFactory, getConversationHolder(), derivedUnitFacade));
+                }
+                else if(getEntity() instanceof DerivedUnit){
+                    derivedUnitFacade = DerivedUnitFacade.NewInstance((DerivedUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
+
+                    addPage(new SpecimenGeneralWizardPage(formFactory, getConversationHolder(), derivedUnitFacade));
+                    addPage(new SpecimenDetailsWizardPage(formFactory, getConversationHolder(), derivedUnitFacade));
+                    addPage(new DerivedUnitDetailsWizardPage(formFactory, getConversationHolder(), derivedUnitFacade));
+                }
+            }
+        } catch (DerivedUnitFacadeNotSupportedException e) {
+            // we should never get here
+            throw new IllegalStateException();
+        }
+
+    }
 
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard#createNewEntity()
         */
        /** {@inheritDoc} */
        @Override
-       protected DerivedUnitBase createNewEntity() {
-               // TODO we do want to create different derivates of DerivedUnitBase but go with specimen for testing 
-               // at the moment
-               // FIXME add wizard page that handles the selection of derived unit type
-               return Specimen.NewInstance();
+       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 == SpecimenOrObservationType.FieldUnit){
+                           return FieldUnit.NewInstance();
+                       } else {
+                               return DerivedUnit.NewInstance(specOrObsType);
+                       }
+               }
        }
 
        /* (non-Javadoc)
@@ -77,6 +107,6 @@ public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<DerivedUni
        protected String getEntityName() {
                return "Specimen";
        }
-       
-       
+
+
 }