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