Project

General

Profile

Download (3.23 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2015 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
package eu.etaxonomy.taxeditor.ui.section.occurrence.association;
10

    
11
import java.util.ArrayList;
12
import java.util.Collection;
13
import java.util.List;
14
import java.util.Set;
15

    
16
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
17
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
18
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
19
import eu.etaxonomy.cdm.model.name.TaxonName;
20
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
21
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
22
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
23

    
24
/**
25
 * @author pplitzner
26
 * @date Oct 29, 2015
27
 *
28
 */
29
public class DerivedUnitTypeDesignationSection extends AbstractEntityCollectionSection<DerivedUnitFacade, SpecimenTypeDesignation> {
30

    
31
    private Collection<SpecimenTypeDesignation> typeDesignations;
32

    
33
    public DerivedUnitTypeDesignationSection(CdmFormFactory formFactory,
34
            ConversationHolder conversation, ICdmFormElement parentElement, int style) {
35
        super(formFactory, conversation, parentElement, "Type Designations", style);
36
    }
37

    
38
    /** {@inheritDoc} */
39
    @Override
40
    public Collection<SpecimenTypeDesignation> getCollection(DerivedUnitFacade entity) {
41
        typeDesignations = entity.innerDerivedUnit().getSpecimenTypeDesignations();
42
        return typeDesignations;
43
    }
44

    
45
    /** {@inheritDoc} */
46
    @Override
47
    public SpecimenTypeDesignation createNewElement() {
48
        return SpecimenTypeDesignation.NewInstance();
49
    }
50

    
51
    /** {@inheritDoc} */
52
    @Override
53
    public void addElement(SpecimenTypeDesignation element) {
54
        element.setTypeSpecimen(getEntity().innerDerivedUnit());
55
        typeDesignations.add(element);
56
    }
57

    
58
    /** {@inheritDoc} */
59
    @Override
60
    public void removeElement(SpecimenTypeDesignation element) {
61
        List<SpecimenTypeDesignation> toRemove = new ArrayList<SpecimenTypeDesignation>();
62
        for (SpecimenTypeDesignation specimenTypeDesignation : typeDesignations) {
63
            if(element.equals(specimenTypeDesignation)){
64
                toRemove.add(specimenTypeDesignation);
65
            }
66
        }
67
        for (SpecimenTypeDesignation specimenTypeDesignation : toRemove) {
68
            specimenTypeDesignation.removeType();
69
            Set<TaxonName> names = specimenTypeDesignation.getTypifiedNames();
70
            for (TaxonName taxonNameBase : names) {
71
                taxonNameBase.removeTypeDesignation(specimenTypeDesignation);
72
            }
73
        }
74
        typeDesignations.removeAll(toRemove);
75
    }
76

    
77
    /** {@inheritDoc} */
78
    @Override
79
    public String getEmptyString() {
80
        return "No type designation yet.";
81
    }
82

    
83
    /** {@inheritDoc} */
84
    @Override
85
    protected String getTooltipString() {
86
        return "Add a type designation";
87
    }
88

    
89
    /**
90
     * {@inheritDoc}
91
     */
92
    @Override
93
    public SpecimenTypeDesignation addExisting() {
94
        return null;
95
    }
96

    
97
    /**
98
     * {@inheritDoc}
99
     */
100
    @Override
101
    public boolean allowAddExisting() {
102
        return false;
103
    }
104

    
105

    
106
}
(2-2/4)