Project

General

Profile

Download (3.66 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(7-7/11)