Project

General

Profile

Download (3.86 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.common.RelationshipTermBase;
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 RelationshipTermBase term;
29
    boolean isInverse;
30

    
31
    boolean useAbbrevLabel;
32

    
33
    InverseTermWrapper(RelationshipTermBase 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 RelationshipTermBase getTerm() {
45
        return term;
46
    }
47
    public void setTerm(RelationshipTermBase 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(RelationshipTermBase 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 (rep != null){
75
                if (useAbbrevLabel){
76
                    termLabel = rep.getAbbreviatedLabel();
77
                    if (termLabel == null){
78
                        termLabel = rep.getLabel();
79
                    }
80
                }else{
81
                    termLabel = rep.getLabel();
82
                }
83
            }
84
            if (termLabel == null){
85
                termLabel = term.getInverseLabel();
86
            }
87

    
88
            return termLabel;
89
        }
90
    }
91

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