Project

General

Profile

Download (3.71 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2018 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.ui.combo;
10

    
11
import java.util.ArrayList;
12
import java.util.List;
13

    
14
import eu.etaxonomy.cdm.model.common.Language;
15
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
16
import eu.etaxonomy.cdm.model.term.Representation;
17
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
18
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
19
import eu.etaxonomy.taxeditor.store.CdmStore;
20

    
21
/**
22
 * @author k.luther
23
 * @since 15.10.2018
24
 */
25
public class InverseTermWrapper {
26

    
27
    private String label;
28
    private NameRelationshipType term;
29
    boolean isInverse;
30

    
31
    boolean useAbbrevLabel;
32

    
33
    InverseTermWrapper(NameRelationshipType term, boolean isInverse, boolean useAbbrevLabel){
34
        this.term = term;
35
        this.isInverse = isInverse;
36
        this.useAbbrevLabel = useAbbrevLabel;
37
        if (isInverse){
38
            this.label = getInverseLabel(term);
39
        }else{
40
            this.label = getLabel( term);
41
        }
42
    }
43

    
44
    public NameRelationshipType getTerm() {
45
        return term;
46
    }
47
    public void setTerm(NameRelationshipType term) {
48
        this.term = term;
49
    }
50

    
51
    public String getLabel() {
52
        return label;
53
    }
54
    public void setLabel(String label) {
55
        this.label = label;
56
    }
57

    
58
    public boolean isInverse() {
59
        return isInverse;
60
    }
61
    public void setInverse(boolean isInverse) {
62
        this.isInverse = isInverse;
63
    }
64

    
65
    private String getInverseLabel(NameRelationshipType term) {
66
        if (term == null){
67
            return "";
68
        }else{
69
            String termLabel = null;
70
            List<Language> languages = new ArrayList<>();
71

    
72
            languages.add(CdmStore.getDefaultLanguage());
73
            Representation rep = term.getPreferredInverseRepresentation(languages);
74
            if (useAbbrevLabel){
75
                termLabel = rep.getAbbreviatedLabel();
76
                if (termLabel == null){
77
                    termLabel = rep.getLabel();
78
                }
79

    
80
            }else{
81
                termLabel = rep.getLabel();
82
            }
83
            if (termLabel == null){
84
                termLabel = term.getInverseLabel();
85
            }
86

    
87
            return termLabel;
88
        }
89
    }
90

    
91
    /**
92
     * May be overridden by derived classes if the desired label string does not
93
     * reside in term.getLabel();
94
     *
95
     * @param term
96
     *            a T object.
97
     * @return a {@link java.lang.String} object.
98
     */
99
    protected String getLabel(NameRelationshipType term) {
100
        if (term == null){
101
            return "";
102
        }else{
103
            String termLabel = null;
104
            Representation rep = term.getPreferredRepresentation(CdmStore.getDefaultLanguage());
105
            if (useAbbrevLabel){
106
                termLabel = rep.getAbbreviatedLabel();
107
                if (termLabel == null){
108
                    termLabel = rep.getLabel();
109
                }
110
            }else{
111
                termLabel = rep.getLabel();
112
            }
113
            if (termLabel == null){
114
                termLabel = term.getLabel();
115
            }
116
            if(PreferencesUtil.getBooleanValue(IPreferenceKeys.SHOW_VOCABULARY_ID_FOR_TERM_LABELS)
117
                && term.getVocabulary()!=null){
118
                String vocLabel = term.getVocabulary().getLabel(CdmStore.getDefaultLanguage());
119
                if (vocLabel == null){
120
                    vocLabel = term.getVocabulary().getLabel();
121
                }
122
                termLabel += " ["+vocLabel+"]";
123
            }
124
            return termLabel;
125
        }
126
    }
127
}
(4-4/8)