Project

General

Profile

Download (5.28 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
import java.util.stream.Collectors;
17

    
18
import eu.etaxonomy.cdm.api.service.IVocabularyService;
19
import eu.etaxonomy.cdm.model.description.Feature;
20
import eu.etaxonomy.cdm.model.term.DefinedTerm;
21
import eu.etaxonomy.cdm.model.term.TermTree;
22
import eu.etaxonomy.cdm.model.term.TermType;
23
import eu.etaxonomy.cdm.model.term.TermVocabulary;
24
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
25
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
26
import eu.etaxonomy.taxeditor.store.CdmStore;
27
import eu.etaxonomy.taxeditor.store.TermStore;
28

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

    
35
	private TermType termType;
36
	private Set<TermVocabularyDto> vocabularies;
37

    
38
	// FIXME: the default feature should be move to CdmApplicationState
39
	//        where it is a singleton instance variable
40
	private static TermTree defaultFeatureTree = null;
41
	private static TermTree defaultNameFeatureTree = 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<>();
50
		initialiseVocabularies();
51
	}
52
	public String getName() {
53
		return termType.getLabel();
54
	}
55

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

    
61
	public TermType getTermType() {
62
		return termType;
63
	}
64

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

    
72
	}
73

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

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

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

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

    
100
    public static TermTree getDefaultFeatureTree() {
101
        if(defaultFeatureTree == null) {
102
            List<Feature> features = TermStore.getTerms(Feature.class);
103
//            TermVocabulary voc = CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid());
104
//            List<Feature> nameFeatures = new ArrayList(voc.getTerms());
105
            List<Feature> taxonFeatures = features.stream().filter(f -> f.isAvailableForTaxon())
106
                    .collect(Collectors.toList());
107
//            for (Feature feature: copy){
108
//                if (nameFeatures.contains(feature)){
109
//                    features.remove(feature);
110
//                }
111
//            }
112
            defaultFeatureTree = TermTree.NewInstance(taxonFeatures);
113
        }
114
        return defaultFeatureTree;
115
    }
116

    
117
    public static void resetDefaultFeatureTree(){
118
        defaultFeatureTree = null;
119
    }
120
    public static TermTree getDefaultNameFeatureTree() {
121
        if(defaultNameFeatureTree == null) {
122
//            List<TermVocabularyDto> vocs = new ArrayList<>();
123
//            Set<CdmClass> availableFor = new HashSet<>();
124
//            availableFor.add(CdmClass.TAXON_NAME);
125
//            vocs = CdmStore.getService(IVocabularyService.class).findFeatureVocabularyDtoByTermTypes(availableFor);
126
//            TermVocabulary voc = CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid());
127
//            List<Feature> nameFeatures = new ArrayList(voc.getTerms());
128
//            nameFeatures.remove(Feature.PROTOLOGUE());
129
//            PreferencesUtil.createPreferredFeatureTreeForNameDescription();
130
            defaultNameFeatureTree = PreferencesUtil.getPreferredFeatureTreeForNameDescription(true);
131
          //List<Feature> nameFeatures = CdmStore.getTermManager().getPreferredTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()), null);
132
//            defaultNameFeatureTree = TermTree.NewInstance(nameFeatures);
133
        }
134
        return defaultNameFeatureTree;
135
    }
136

    
137
    public static void resetDefaultNameFeatureTree(){
138
        defaultNameFeatureTree = null;
139
    }
140

    
141
    public static TermTree<?> getPreferredNameFeatureTree(boolean createNew) {
142
        return PreferencesUtil.getPreferredFeatureTreeForNameDescription(createNew);
143
    }
144

    
145
    public static TermTree<?> getPreferredTaxonFeatureTree(boolean createNew) {
146
        return PreferencesUtil.getPreferredFeatureTreeForTaxonDescription(createNew);
147
    }
148
}
(2-2/2)