Project

General

Profile

Download (3.92 KB) Statistics
| Branch: | Tag: | Revision:
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.description.Feature;
19
import eu.etaxonomy.cdm.model.term.DefinedTerm;
20
import eu.etaxonomy.cdm.model.term.FeatureTree;
21
import eu.etaxonomy.cdm.model.term.TermType;
22
import eu.etaxonomy.cdm.model.term.TermVocabulary;
23
import eu.etaxonomy.cdm.model.term.VocabularyEnum;
24
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
25
import eu.etaxonomy.taxeditor.store.CdmStore;
26
import eu.etaxonomy.taxeditor.store.TermStore;
27

    
28

    
29

    
30
/**
31
 * @author n.hoffmann
32
 * @date Jan 24, 2012
33
 *
34
 */
35
public class TermEditorInput extends AbstractDefinedTermEditorInput<DefinedTerm> {
36

    
37
	private TermType termType;
38
	private Set<TermVocabularyDto> vocabularies;
39

    
40
	// FIXME: the default feature should be move to CdmApplicationState
41
	//        where it is a singleton instance variable
42
	private static FeatureTree defaultFeatureTree = null;
43
	private static FeatureTree defaultNameFeatureTree = null;
44

    
45
	private List<String> termClasses = Arrays.asList(new String[]{
46
			DefinedTerm.class.getName()
47
	});
48

    
49
	public TermEditorInput(TermType termType) {
50
		this.termType = termType;
51
		vocabularies = new HashSet<TermVocabularyDto>();
52
		initialiseVocabularies();
53
	}
54
	public String getName() {
55
		return termType.getMessage();
56
	}
57

    
58
	@Override
59
	public List<String> getTermClasses() {
60
		return termClasses;
61
	}
62

    
63
	public TermType getTermType() {
64
		return termType;
65
	}
66

    
67
	public void initialiseVocabularies() {
68
		if(vocabularies != null) {
69
			vocabularies.clear();
70
		}
71
		List<TermVocabularyDto> vocs = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(termType);
72
		vocabularies.addAll(vocs);
73
	}
74

    
75
	public Set<TermVocabularyDto> getVocabularies() {
76
		return vocabularies;
77
	}
78

    
79
	public void updateDefaultFeatureTree() {
80
	    for(TermVocabularyDto vocab : getVocabularies()) {
81
	        if(vocab != null && TermType.Feature.equals(vocab.getTermType())) {
82
	            defaultFeatureTree = null;
83
	            return;
84
	        }
85
	    }
86
	}
87

    
88
	@Override
89
    public Set<TermVocabularyDto>  getRootEntities() {
90
        return getVocabularies();
91
    }
92

    
93
	@Override
94
    public void merge() {
95
	    List<TermVocabulary> vocabularies = new ArrayList<>();
96
	    getRootEntities().forEach(vocDto->vocabularies.add(CdmStore.getService(IVocabularyService.class).load(vocDto.getUuid())));
97
        CdmStore.getService(IVocabularyService.class).merge(vocabularies, true);
98
        updateDefaultFeatureTree();
99
    }
100

    
101
    public static FeatureTree getDefaultFeatureTree() {
102
        if(defaultFeatureTree == null) {
103
            List<Feature> features = TermStore.getTerms(Feature.class);
104
            List<Feature> nameFeatures = CdmStore.getTermManager().getPreferredTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()), null);
105
            List<Feature> copy = new ArrayList(features);
106
            for (Feature feature: copy){
107
                if (nameFeatures.contains(feature)){
108
                    features.remove(feature);
109
                }
110
            }
111
            defaultFeatureTree = FeatureTree.NewInstance(features);
112
        }
113
        return defaultFeatureTree;
114
    }
115

    
116
    public static FeatureTree getDefaultNameFeatureTree() {
117
        if(defaultNameFeatureTree == null) {
118
            List<Feature> nameFeatures = CdmStore.getTermManager().getPreferredTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()), null);
119
            defaultNameFeatureTree = FeatureTree.NewInstance(nameFeatures);
120
        }
121
        return defaultNameFeatureTree;
122
    }
123
}
(2-2/2)