ref #6595 Initial commit of migrated/refactored classes (not working)
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / e4 / container / AbstractHomotypicalGroupContainerE4.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.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 }
54 }
55
56 protected boolean redrawNeeded(HomotypicalGroup homotypicalGroup) {
57 Taxon taxon = getEditor().getTaxon();
58 homotypicalGroup = HibernateProxyHelper.deproxy(homotypicalGroup, HomotypicalGroup.class);
59 List<Synonym> synonyms = taxon.getSynonymsInGroup(homotypicalGroup);
60
61 List<Synonym> presentSynonyms = new ArrayList<Synonym>();
62
63 for(AbstractGroupedContainerE4 container : getGroupedContainers()){
64 if(container.getData() instanceof Synonym){
65 presentSynonyms.add((Synonym) container.getData());
66 }
67 }
68
69 boolean result = ! (presentSynonyms.containsAll(synonyms) && synonyms.containsAll(presentSynonyms));
70
71 return result;
72 }
73
74 public HomotypicalGroup getGroup() {
75 return group;
76 }
77 }