Project

General

Profile

Download (4.57 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2007 EDIT
4
* European Distributed Institute of Taxonomy
5
* http://www.e-taxonomy.eu
6
*
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10

    
11
package eu.etaxonomy.taxeditor.newWizard;
12

    
13
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
14
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
15
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
16
import eu.etaxonomy.cdm.model.media.Media;
17
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
18
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
19
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
20
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
21
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
22
import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
23
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
24
import eu.etaxonomy.taxeditor.store.CdmStore;
25
import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseWizardPage;
26
import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralWizardPage;
27
import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralWizardPage;
28
import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitWizardPage;
29
import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage;
30

    
31
/**
32
 * <p>NewDerivedUnitBaseWizard class.</p>
33
 *
34
 * @author n.hoffmann
35
 * @created Jun 16, 2010
36
 * @version 1.0
37
 */
38
public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOrObservationBase> implements IDerivedUnitFacadePart{
39
	private SpecimenOrObservationType specOrObsType = null;
40

    
41
	public NewDerivedUnitBaseWizard() {
42
		super();
43
	}
44

    
45
	public NewDerivedUnitBaseWizard(SpecimenOrObservationType specOrObsType) {
46
		super();
47
		this.specOrObsType = specOrObsType;
48
	}
49
	/** {@inheritDoc} */
50
	@Override
51
	public void addPages() {
52
	    DerivedUnitFacade facade = null;
53
	    try {
54
	        if(getEntity() instanceof DerivedUnit) {
55
	            facade = DerivedUnitFacade.NewInstance((DerivedUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
56
	            addPage(new DerivedUnitGeneralWizardPage(formFactory, getConversationHolder(), facade));
57
	            addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade));
58
	            addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade));
59
	            addPage(new DerivedUnitBaseWizardPage(formFactory, getConversationHolder(), facade));
60
	        }
61
	        else if(getEntity() instanceof FieldUnit){
62
	            facade = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
63
	            addPage(new FieldUnitGeneralWizardPage(formFactory, getConversationHolder(), facade));
64
	            addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade));
65
	            addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade));
66
	        }
67
	    } catch (DerivedUnitFacadeNotSupportedException e) {
68
	        // we should never get here
69
	        throw new IllegalStateException();
70
	    }
71
	}
72

    
73
    /*
74
     * (non-Javadoc)
75
     *
76
     * @see eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard#
77
     * createNewEntity()
78
     */
79
    /** {@inheritDoc} */
80
    @Override
81
    protected SpecimenOrObservationBase createNewEntity() {
82
        if (specOrObsType == null) {
83
            return DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
84
        } else {
85
            if (SpecimenOrObservationType.Media.equals(specOrObsType)
86
                    || ((specOrObsType.getKindOf() != null) && specOrObsType.getKindOf().equals(SpecimenOrObservationType.Media))) {
87
	            MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(specOrObsType);
88
	            //a MediaSpecimen with no media attached does not make sense. Hence, we add one
89
                mediaSpecimen.setMediaSpecimen(Media.NewInstance());
90
                return mediaSpecimen;
91
            } else if (specOrObsType.equals(SpecimenOrObservationType.FieldUnit)) {
92
                return FieldUnit.NewInstance();
93
            } else {
94
                return DerivedUnit.NewInstance(specOrObsType);
95
            }
96
        }
97
    }
98

    
99
	/* (non-Javadoc)
100
	 * @see eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard#saveEntity()
101
	 */
102
	/** {@inheritDoc} */
103
	@Override
104
	protected void saveEntity() {
105
		CdmStore.getService(IOccurrenceService.class).saveOrUpdate(getEntity());
106
	}
107

    
108
	@Override
109
	protected String getEntityName() {
110
		return "Specimen";
111
	}
112

    
113

    
114
}
(8-8/22)