ref #6190 removing svn property place holder in first line of code - java files
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / container / AbstractHomotypicalGroupContainer.java
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.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.TaxonNameEditor;
20
21 /**
22 * @author n.hoffmann
23 * @created Jan 21, 2011
24 * @version 1.0
25 */
26 public abstract class AbstractHomotypicalGroupContainer extends AbstractGroup {
27
28 private HomotypicalGroup group;
29
30 /**
31 * @param editor
32 */
33 public AbstractHomotypicalGroupContainer(TaxonNameEditor editor, HomotypicalGroup group) {
34 super(editor);
35 this.group = group;
36
37 createContent();
38 }
39
40 protected abstract void createSynonymContainer();
41
42 protected List<Synonym> getSynonyms(){
43 Taxon taxon = getEditor().getTaxon();
44 return taxon.getSynonymsInGroup(getGroup());
45 }
46
47 /**
48 * @param group the group to set
49 */
50 public void setGroup(HomotypicalGroup group) {
51 this.group = group;
52 }
53
54 public void redraw(HomotypicalGroup homotypicalGroup){
55 if(redrawNeeded(homotypicalGroup)){
56 setGroup(homotypicalGroup);
57 redraw();
58 }
59 }
60
61 /**
62 *
63 * @param homotypicalGroup
64 * @return
65 */
66 protected boolean redrawNeeded(HomotypicalGroup homotypicalGroup) {
67 Taxon taxon = getEditor().getTaxon();
68 homotypicalGroup = HibernateProxyHelper.deproxy(homotypicalGroup, HomotypicalGroup.class);
69 List<Synonym> synonyms = taxon.getSynonymsInGroup(homotypicalGroup);
70
71 List<Synonym> presentSynonyms = new ArrayList<Synonym>();
72
73 for(AbstractGroupedContainer container : getGroupedContainers()){
74 if(container.getData() instanceof Synonym){
75 presentSynonyms.add((Synonym) container.getData());
76 }
77 }
78
79 boolean result = ! (presentSynonyms.containsAll(synonyms) && synonyms.containsAll(presentSynonyms));
80
81 return result;
82 }
83
84 /**
85 * @return the group
86 */
87 public HomotypicalGroup getGroup() {
88 return group;
89 }
90 }