Project

General

Profile

Download (4.73 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.model.term.VocabularyEnum;
25
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
26
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
27
import eu.etaxonomy.taxeditor.store.CdmStore;
28
import eu.etaxonomy.taxeditor.store.TermStore;
29

    
30

    
31

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

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

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

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

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

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

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

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

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

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

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

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

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

    
120
    public static TermTree getDefaultNameFeatureTree() {
121
        if(defaultNameFeatureTree == null) {
122
            TermVocabulary voc = CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid());
123
            List<Feature> nameFeatures = new ArrayList(voc.getTerms());
124
            nameFeatures.remove(Feature.PROTOLOGUE());
125
          //List<Feature> nameFeatures = CdmStore.getTermManager().getPreferredTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()), null);
126
            defaultNameFeatureTree = TermTree.NewInstance(nameFeatures);
127
        }
128
        return defaultNameFeatureTree;
129

    
130
    }
131

    
132
    /**
133
     * @return
134
     */
135
    public static TermTree<?> getPreferredNameFeatureTree(boolean createNew) {
136

    
137
        return PreferencesUtil.getPreferredFeatureTreeForNameDescription(createNew);
138

    
139
    }
140

    
141
    public static TermTree<?> getPreferredTaxonFeatureTree(boolean createNew) {
142

    
143
        return PreferencesUtil.getPreferredFeatureTreeForTaxonDescription(createNew);
144

    
145
    }
146
}
(2-2/2)