adapt master to develop
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / association / DerivedUnitTypeDesignationSection.java
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.Comparator;
14 import java.util.HashSet;
15 import java.util.List;
16 import java.util.Set;
17
18 import eu.etaxonomy.cdm.facade.DerivedUnitFacade;
19 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
20 import eu.etaxonomy.cdm.model.name.TaxonName;
21 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
22 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
23 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
24 import eu.etaxonomy.taxeditor.ui.section.DefaultCdmBaseComparator;
25
26 /**
27 * @author pplitzner
28 * @date Oct 29, 2015
29 */
30 public class DerivedUnitTypeDesignationSection extends AbstractEntityCollectionSection<DerivedUnitFacade, SpecimenTypeDesignation> {
31
32 private Collection<SpecimenTypeDesignation> typeDesignations;
33
34 public DerivedUnitTypeDesignationSection(CdmFormFactory formFactory,
35 ICdmFormElement parentElement, int style) {
36 super(formFactory, parentElement, "Type Designations", style);
37 }
38
39 @Override
40 public Collection<SpecimenTypeDesignation> getCollection(DerivedUnitFacade entity) {
41 typeDesignations = entity.innerDerivedUnit().getSpecimenTypeDesignations();
42 return typeDesignations;
43 }
44
45 @Override
46 public Comparator<SpecimenTypeDesignation> getComparator() {
47 return new DefaultCdmBaseComparator<>();
48 }
49
50 @Override
51 public SpecimenTypeDesignation createNewElement() {
52 return SpecimenTypeDesignation.NewInstance();
53 }
54
55 @Override
56 public void addElement(SpecimenTypeDesignation element) {
57 element.setTypeSpecimen(getEntity().innerDerivedUnit());
58 typeDesignations.add(element);
59 }
60
61 @Override
62 public void removeElement(SpecimenTypeDesignation element) {
63 List<SpecimenTypeDesignation> toRemove = new ArrayList<SpecimenTypeDesignation>();
64 for (SpecimenTypeDesignation specimenTypeDesignation : typeDesignations) {
65 if(element.equals(specimenTypeDesignation)){
66 toRemove.add(specimenTypeDesignation);
67 }
68 }
69 for (SpecimenTypeDesignation specimenTypeDesignation : toRemove) {
70 specimenTypeDesignation.removeType();
71 Set<TaxonName> names;
72 names = new HashSet();
73 names.addAll(specimenTypeDesignation.getTypifiedNames());
74 for (TaxonName taxonNameBase : names) {
75 taxonNameBase.removeTypeDesignation(specimenTypeDesignation);
76 }
77 }
78 typeDesignations.removeAll(toRemove);
79 }
80
81 @Override
82 public String getEmptyString() {
83 return "No type designation yet.";
84 }
85
86 @Override
87 protected String getTooltipString() {
88 return "Add a type designation";
89 }
90
91 @Override
92 public SpecimenTypeDesignation addExisting() {
93 return null;
94 }
95
96 @Override
97 public boolean allowAddExisting() {
98 return false;
99 }
100 }