Merge branch 'develop' into LibrAlign
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / editor / definedterm / input / TermEditorInput.java
1 /**
2 * Copyright (C) 2009 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 package eu.etaxonomy.taxeditor.editor.definedterm.input;
10
11 import java.util.ArrayList;
12 import java.util.Arrays;
13 import java.util.HashSet;
14 import java.util.List;
15 import java.util.Set;
16
17 import eu.etaxonomy.cdm.api.service.IVocabularyService;
18 import eu.etaxonomy.cdm.model.common.DefinedTerm;
19 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
20 import eu.etaxonomy.cdm.model.common.TermType;
21 import eu.etaxonomy.cdm.model.common.TermVocabulary;
22 import eu.etaxonomy.cdm.model.description.Feature;
23 import eu.etaxonomy.cdm.model.description.FeatureTree;
24 import eu.etaxonomy.taxeditor.store.CdmStore;
25 import eu.etaxonomy.taxeditor.store.TermStore;
26
27
28
29 /**
30 * @author n.hoffmann
31 * @date Jan 24, 2012
32 *
33 */
34 public class TermEditorInput extends AbstractDefinedTermEditorInput<DefinedTerm> {
35
36 private TermType termType;
37 private Set<TermVocabulary<DefinedTermBase>> vocabularies;
38
39 // FIXME: the default feature should be move to CdmApplicationState
40 // where it is a singleton instance variable
41 private static FeatureTree defaultFeatureTree = null;
42
43 private List<String> termClasses = Arrays.asList(new String[]{
44 DefinedTerm.class.getName()
45 });
46
47 public TermEditorInput(TermType termType) {
48 this.termType = termType;
49 vocabularies = new HashSet<TermVocabulary<DefinedTermBase>>();
50 initialiseVocabularies();
51 }
52 /* (non-Javadoc)
53 * @see org.eclipse.ui.IEditorInput#getName()
54 */
55 @Override
56 public String getName() {
57 return termType.getMessage();
58 }
59
60 /* (non-Javadoc)
61 * @see eu.etaxonomy.taxeditor.editor.definedterm.input.AbstractDefinedTermEditorInput#getTermClasses()
62 */
63 @Override
64 public List<String> getTermClasses() {
65 return termClasses;
66 }
67
68 public TermType getTermType() {
69 return termType;
70 }
71
72 public void initialiseVocabularies() {
73 if(vocabularies != null) {
74 vocabularies.clear();
75 }
76 List<TermVocabulary<DefinedTermBase>> vocs = CdmStore.getService(IVocabularyService.class).findByTermType(termType);
77 vocabularies.addAll(vocs);
78 }
79
80 public Set<TermVocabulary<DefinedTermBase>> getVocabularies() {
81 return vocabularies;
82 }
83
84 public void updateDefaultFeatureTree() {
85 for(TermVocabulary vocab : getVocabularies()) {
86 if(vocab != null && TermType.Feature.equals(vocab.getTermType())) {
87 defaultFeatureTree = null;
88 }
89 }
90 }
91 /**
92 * {@inheritDoc}
93 */
94 @Override
95 public Set<TermVocabulary<DefinedTermBase>> getRootEntities() {
96 return getVocabularies();
97 }
98 /**
99 * {@inheritDoc}
100 */
101 @Override
102 public void merge() {
103 CdmStore.getService(IVocabularyService.class).merge(new ArrayList<TermVocabulary>(getRootEntities()), true);
104 updateDefaultFeatureTree();
105 }
106
107 public static FeatureTree getDefaultFeatureTree() {
108 if(defaultFeatureTree == null) {
109 defaultFeatureTree = FeatureTree.NewInstance(TermStore.getTerms(Feature.class));
110 }
111 return defaultFeatureTree;
112 }
113 }