Project

General

Profile

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

    
10
package eu.etaxonomy.taxeditor.newWizard;
11

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

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

    
38
    public NewDerivedUnitBaseWizard() {
39
        super();
40
    }
41

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

    
70
    /** {@inheritDoc} */
71
    @Override
72
    protected SpecimenOrObservationBase createNewEntity() {
73
        if (specOrObsType == null) {
74
            return DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
75
        } else {
76
            if (SpecimenOrObservationType.Media.equals(specOrObsType)
77
                    || ((specOrObsType.getKindOf() != null) && specOrObsType.getKindOf().equals(SpecimenOrObservationType.Media))) {
78
                MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(specOrObsType);
79
                //a MediaSpecimen with no media attached does not make sense. Hence, we add one
80
                mediaSpecimen.setMediaSpecimen(Media.NewInstance());
81
                return mediaSpecimen;
82
            } else if (specOrObsType.equals(SpecimenOrObservationType.FieldUnit)) {
83
                return FieldUnit.NewInstance();
84
            } else {
85
                return DerivedUnit.NewInstance(specOrObsType);
86
            }
87
        }
88
    }
89

    
90

    
91
	/** {@inheritDoc} */
92
	@Override
93
	protected void saveEntity() {
94
	    setEntity(CdmStore.getService(IOccurrenceService.class).merge(getEntity()));
95

    
96
	}
97

    
98

    
99
    @Override
100
    protected String getEntityName() {
101
        return "Specimen";
102
    }
103

    
104
}
(8-8/23)