Project

General

Profile

Download (2.26 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 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

    
10
package eu.etaxonomy.taxeditor.editor.name.e4.container;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14

    
15
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
16
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
17
import eu.etaxonomy.cdm.model.taxon.Synonym;
18
import eu.etaxonomy.cdm.model.taxon.Taxon;
19
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
20

    
21
/**
22
 *
23
 * @author pplitzner
24
 * @date Aug 24, 2017
25
 *
26
 */
27
public abstract class AbstractHomotypicalGroupContainerE4 extends AbstractGroupE4 {
28

    
29
	private HomotypicalGroup group;
30

    
31
	public AbstractHomotypicalGroupContainerE4(TaxonNameEditorE4 editor, HomotypicalGroup group) {
32
		super(editor);
33
		this.group = group;
34

    
35
		createContent();
36
	}
37

    
38
	protected abstract void createSynonymContainer();
39

    
40
	protected List<Synonym> getSynonyms(){
41
		Taxon taxon = getEditor().getTaxon();
42
		return taxon.getSynonymsInGroup(getGroup());
43
	}
44

    
45
	public void setGroup(HomotypicalGroup group) {
46
		this.group = group;
47
	}
48

    
49
	public void redraw(HomotypicalGroup homotypicalGroup){
50
		if(redrawNeeded(homotypicalGroup)){
51
			setGroup(homotypicalGroup);
52
			redraw();
53
		}else{
54
		    setMenuToGroup();
55
		}
56
	}
57

    
58
	protected boolean redrawNeeded(HomotypicalGroup homotypicalGroup) {
59
		Taxon taxon = getEditor().getTaxon();
60
		homotypicalGroup = HibernateProxyHelper.deproxy(homotypicalGroup, HomotypicalGroup.class);
61
		List<Synonym> synonyms = taxon.getSynonymsInGroup(homotypicalGroup);
62

    
63
		List<Synonym> presentSynonyms = new ArrayList<Synonym>();
64
		List<AbstractGroupedContainerE4> containers = getGroupedContainers();
65
		if (containers == null || containers.isEmpty() || (containers.get(0) == null && containers.size() == 1)){
66
		    return true;
67
		}
68
		for(AbstractGroupedContainerE4 container : getGroupedContainers()){
69
			if(container.getData() instanceof Synonym){
70
				presentSynonyms.add((Synonym) container.getData());
71
			}
72
		}
73

    
74
		boolean result = ! (presentSynonyms.containsAll(synonyms) && synonyms.containsAll(presentSynonyms));
75

    
76
		return result;
77
	}
78

    
79
	public HomotypicalGroup getGroup() {
80
		return group;
81
	}
82
}
(3-3/11)