Merge branch 'hotfix/5.45.1'
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / e4 / container / ContainerFactory.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.editor.name.e4.container;
5
6 import java.util.ArrayList;
7 import java.util.List;
8
9 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
10 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
11 import eu.etaxonomy.cdm.model.taxon.Taxon;
12 import eu.etaxonomy.taxeditor.editor.name.e4.TaxonEditor;
13
14 /**
15 *
16 * @author pplitzner
17 * @date Aug 24, 2017
18 *
19 */
20 public class ContainerFactory {
21
22 public static void createOrUpdateAcceptedTaxonsHomotypicGroup(
23 TaxonEditor taxonEditor) {
24
25 if(taxonEditor.getAcceptedGroup() == null){
26 taxonEditor.setAcceptedGroup(new AcceptedGroup(taxonEditor, taxonEditor.getTaxon().getHomotypicGroup()));
27 }
28 else{
29 taxonEditor.getAcceptedGroup().redraw(taxonEditor.getTaxon().getHomotypicGroup());
30 }
31
32 }
33
34 public static void createOrUpdateHeterotypicSynonymyGroups(
35 TaxonEditor taxonEditor) {
36 List<HomotypicalSynonymGroup> retainedGroups = new ArrayList<>();
37
38 List<HomotypicalSynonymGroup> heterotypicSynonymGroups = taxonEditor.getHeterotypicSynonymGroups();
39
40 if (heterotypicSynonymGroups != null) {
41
42 for(HomotypicalSynonymGroup group : heterotypicSynonymGroups){
43 retainedGroups.add(group);
44 }
45 }
46
47 for(HomotypicalGroup homotypicalGroup : taxonEditor.getTaxon().getHeterotypicSynonymyGroups()){
48 homotypicalGroup = HibernateProxyHelper.deproxy(homotypicalGroup, HomotypicalGroup.class);
49 HomotypicalSynonymGroup group = createOrUpdateHeterotypicSynonymyGroup(taxonEditor, homotypicalGroup);
50
51 retainedGroups.remove(group);
52 }
53
54 for(HomotypicalSynonymGroup retainedGroup : retainedGroups){
55 taxonEditor.removeGroup(retainedGroup);
56 }
57 }
58
59
60 public static HomotypicalSynonymGroup createOrUpdateHeterotypicSynonymyGroup(
61 TaxonEditor taxonEditor, HomotypicalGroup homotypicalGroup){
62 HomotypicalSynonymGroup group = null;
63 if(taxonEditor.getHomotypicalGroupContainer(homotypicalGroup) == null){
64 group = new HomotypicalSynonymGroup(taxonEditor, homotypicalGroup);
65 taxonEditor.addHeterotypicSynonymGroup(group);
66 if(taxonEditor.getMisappliedGroup() != null){
67 group.getControl().moveAbove(taxonEditor.getMisappliedGroup().getControl());
68 }
69 }
70 else{
71 group = taxonEditor.getHomotypicalGroupContainer(homotypicalGroup);
72 group.redraw(homotypicalGroup);
73 }
74
75 return group;
76 }
77
78 public static void createOrUpdateMisapplicationsGroup(
79 TaxonEditor taxonEditor) {
80 MisappliedGroup group = taxonEditor.getMisappliedGroup();
81 Taxon taxon = HibernateProxyHelper.deproxy(taxonEditor.getTaxon(), Taxon.class);
82
83 if(taxon.getMisappliedNames(true).isEmpty() && taxon.getProParteAndPartialSynonyms().isEmpty()){
84 taxonEditor.removeGroup(group);
85 taxonEditor.setMisapplicationsGroup(null);
86 }else{
87 if(group == null){
88 taxonEditor.setMisapplicationsGroup(new MisappliedGroup(taxonEditor));
89 }else{
90 group.redraw();
91 }
92 }
93
94 }
95
96 public static void setMenuToAllContainers(TaxonEditor taxonEditor){
97 if (taxonEditor == null) {
98 return;
99 }
100 if (taxonEditor.getAcceptedGroup() != null){
101 taxonEditor.getAcceptedGroup().setMenuToGroup();
102 }
103 if (taxonEditor.getTaxon() != null){
104 for(HomotypicalGroup homotypicalGroup : taxonEditor.getTaxon().getHeterotypicSynonymyGroups()){
105 homotypicalGroup = HibernateProxyHelper.deproxy(homotypicalGroup, HomotypicalGroup.class);
106 HomotypicalSynonymGroup group = taxonEditor.getHomotypicalGroupContainer(homotypicalGroup);
107 if (group != null){
108 group.setMenuToGroup();
109 }
110 }
111 if (taxonEditor.getMisappliedGroup() != null){
112 taxonEditor.getMisappliedGroup().setMenuToGroup();
113 }
114 }
115 }
116
117 }