Project

General

Profile

Download (3.93 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 *
3
 */
4
package eu.etaxonomy.taxeditor.model;
5

    
6
import org.apache.commons.lang3.NotImplementedException;
7

    
8
import eu.etaxonomy.cdm.model.common.Language;
9
import eu.etaxonomy.cdm.model.taxon.Taxon;
10
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
11
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
12
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
13
import eu.etaxonomy.cdm.model.term.Representation;
14
import eu.etaxonomy.cdm.model.term.TermVocabulary;
15
import eu.etaxonomy.taxeditor.store.CdmStore;
16

    
17
/**
18
 * @author n.hoffmann
19
 * @created Nov 30, 2011
20
 */
21
public class TaxonRelationshipTypeInverseContainer extends DefinedTermBase<DefinedTermBase> {
22

    
23
	private static final long serialVersionUID = 7225140304186547675L;
24
	private boolean inverse;
25
	private TaxonRelationshipType type;
26

    
27

    
28
	/**
29
	 *
30
	 * @param sourceTaxon
31
	 * @param relationship
32
	 * @return
33
	 */
34
	public static TaxonRelationshipTypeInverseContainer CreateFromSource(Taxon sourceTaxon, TaxonRelationship relationship){
35
		return new TaxonRelationshipTypeInverseContainer(relationship.getType(), isRelationshipInverse(sourceTaxon, relationship));
36
	}
37

    
38
	/**
39
	 *
40
	 * @param sourceTaxon
41
	 * @param relationship
42
	 * @return
43
	 */
44
	public static Taxon RelatedTaxon(Taxon sourceTaxon, TaxonRelationship relationship){
45
		return isRelationshipInverse(sourceTaxon, relationship) ? relationship.getFromTaxon() : relationship.getToTaxon();
46
	}
47

    
48
	/**
49
	 *
50
	 * @param sourceTaxon
51
	 * @param relationship
52
	 * @return
53
	 */
54
	private static boolean isRelationshipInverse(Taxon sourceTaxon, TaxonRelationship relationship){
55
		return relationship.getFromTaxon().equals(sourceTaxon) ? false : true;
56
	}
57

    
58
	/**
59
	 *
60
	 * @param type
61
	 * @param inverse
62
	 */
63
	public TaxonRelationshipTypeInverseContainer(TaxonRelationshipType type, boolean inverse){
64
		this.inverse = inverse;
65
		this.setType(type);
66
	}
67

    
68
	public boolean isInverse() {
69
		return inverse;
70
	}
71

    
72
	/**
73
	 * returns the representation for the given language, when there is no representation for this language available, the english version is returned.
74
	 * @param language
75
	 * @return representation
76
	 *
77
	 */
78
	@Override
79
    public Representation getRepresentation(Language language){
80
		Representation result;
81
		result = inverse ? type.getInverseRepresentation(language) : type.getRepresentation(language);
82
		if (result == null){
83
			result = inverse ?
84
					type.getInverseRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish)) :
85
						type.getRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish));
86
			if (result == null){
87
			    if (inverse){
88
			        result = type.getInverseRepresentations().isEmpty() ? null : type.getInverseRepresentations().iterator().next();
89
			    }else{
90
			        result = type.getRepresentations().isEmpty() ? null : type.getRepresentations().iterator().next();
91
			    }
92
			}
93
		}
94
		return result;
95
	}
96

    
97

    
98
	/**
99
	 * returns the label of the TaxonRelationshipType for a given language, if the representation of the language is not available the english representation is returned.
100
	 * @param language
101
	 * @return label
102
	 */
103
	@Override
104
    public String getLabel(Language language){
105
		return getRepresentation(language).getLabel();
106
	}
107

    
108
	@Override
109
    public String getDescription(Language language){
110
		return getRepresentation(language).getDescription();
111
	}
112

    
113
	public String getAbbreviatedLabel(){
114
		return getRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish)).getAbbreviatedLabel();
115
	}
116

    
117
	public void setInverse(boolean inverse) {
118
		this.inverse = inverse;
119
	}
120

    
121
	public TaxonRelationshipType getType() {
122
		return type;
123
	}
124

    
125
	public void setType(TaxonRelationshipType type) {
126
		this.type = type;
127
	}
128

    
129
	@Override
130
	public String getTitleCache() {
131
		return String.format("%s (%s)", getLabel(CdmStore.getDefaultLanguage()), getAbbreviatedLabel());
132
	}
133

    
134
	@Override
135
	public void resetTerms() {
136
		throw new NotImplementedException();
137
	}
138

    
139
	@Override
140
	protected void setDefaultTerms(
141
			TermVocabulary<DefinedTermBase> termVocabulary) {
142
		throw new NotImplementedException();
143
	}
144

    
145
}
(38-38/41)