Project

General

Profile

Download (4.63 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
 * @author n.hoffmann
33
 * @created Jun 16, 2010
34
 * @version 1.0
35
 */
36
public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOrObservationBase> implements IDerivedUnitFacadePart{
37
    private SpecimenOrObservationType specOrObsType = null;
38

    
39
    public NewDerivedUnitBaseWizard() {
40
        super();
41
        CdmStore.getCurrentSessionManager().bindNullSession();
42
    }
43

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

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

    
92

    
93
	/** {@inheritDoc} */
94
	@Override
95
	protected void saveEntity() {
96
	    if(CdmStore.getCurrentSessionManager().isRemoting()) {
97
	        CdmStore.getService(IOccurrenceService.class).merge(getEntity(), true);
98
	    } else {
99
	        CdmStore.getService(IOccurrenceService.class).save(getEntity());
100
	    }
101
	}
102

    
103

    
104
    @Override
105
    protected String getEntityName() {
106
        return "Specimen";
107
    }
108

    
109
}
(8-8/23)