Project

General

Profile

Download (5.34 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
138
    }
139

    
140
    public static void resetDefaultNameFeatureTree(){
141
        defaultNameFeatureTree = null;
142
    }
143

    
144
    /**
145
     * @return
146
     */
147
    public static TermTree<?> getPreferredNameFeatureTree(boolean createNew) {
148

    
149
        return PreferencesUtil.getPreferredFeatureTreeForNameDescription(createNew);
150

    
151
    }
152

    
153
    public static TermTree<?> getPreferredTaxonFeatureTree(boolean createNew) {
154

    
155
        return PreferencesUtil.getPreferredFeatureTreeForTaxonDescription(createNew);
156

    
157
    }
158
}
(2-2/2)