Project

General

Profile

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

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

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

    
17
/**
18
 * @author n.hoffmann
19
 * @created Nov 30, 2011
20
 * @version 1.0
21
 *
22
 */
23
public class TaxonRelationshipTypeInverseContainer extends DefinedTermBase<DefinedTermBase> {
24
	
25
	/**
26
	 * 
27
	 */
28
	private static final long serialVersionUID = 7225140304186547675L;
29
	private boolean inverse;
30
	private TaxonRelationshipType type;
31
	
32
	
33
	/**
34
	 * 
35
	 * @param sourceTaxon
36
	 * @param relationship
37
	 * @return
38
	 */
39
	public static TaxonRelationshipTypeInverseContainer CreateFromSource(Taxon sourceTaxon, TaxonRelationship relationship){
40
		return new TaxonRelationshipTypeInverseContainer(relationship.getType(), isRelationshipInverse(sourceTaxon, relationship));
41
	}
42
	
43
	/**
44
	 * 
45
	 * @param sourceTaxon
46
	 * @param relationship
47
	 * @return
48
	 */
49
	public static Taxon RelatedTaxon(Taxon sourceTaxon, TaxonRelationship relationship){
50
		return isRelationshipInverse(sourceTaxon, relationship) ? relationship.getFromTaxon() : relationship.getToTaxon();
51
	}
52
	
53
	/**
54
	 * 
55
	 * @param sourceTaxon
56
	 * @param relationship
57
	 * @return
58
	 */
59
	private static boolean isRelationshipInverse(Taxon sourceTaxon, TaxonRelationship relationship){
60
		return relationship.getFromTaxon().equals(sourceTaxon) ? false : true;
61
	}
62
	
63
	/**
64
	 * 
65
	 * @param type
66
	 * @param inverse
67
	 */
68
	public TaxonRelationshipTypeInverseContainer(TaxonRelationshipType type, boolean inverse){
69
		this.inverse = inverse;
70
		this.setType(type);
71
	}
72
	
73
	public boolean isInverse() {
74
		return inverse;
75
	}
76

    
77
	/**
78
	 * returns the representation for the given language, when there is no representation for this language available, the english version is returned.
79
	 * @param language
80
	 * @return representation
81
	 * 
82
	 */
83
	public Representation getRepresentation(Language language){
84
		Representation result;
85
		result = inverse ? type.getInverseRepresentation(language) : type.getRepresentation(language);
86
		if (result == null){
87
			result = inverse ? 
88
					type.getInverseRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish)) : 
89
						type.getRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish));
90
		}
91
		return result;
92
	}
93
	
94
	
95
	/**
96
	 * returns the label of the TaxonRelationshipType for a given language, if the representation of the language is not available the english representation is returned.
97
	 * @param language
98
	 * @return label
99
	 */
100
	public String getLabel(Language language){
101
		
102
		return getRepresentation(language).getLabel();
103
	}
104
	
105
	public String getDescription(Language language){
106
		return getRepresentation(language).getDescription();
107
	}
108
	
109
	public String getAbbreviatedLabel(){
110
		return getRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish)).getAbbreviatedLabel();
111
	}
112
	
113
	public void setInverse(boolean inverse) {
114
		this.inverse = inverse;
115
	}
116

    
117
	public TaxonRelationshipType getType() {
118
		return type;
119
	}
120

    
121
	public void setType(TaxonRelationshipType type) {
122
		this.type = type;
123
	}
124
	
125
	@Override
126
	public String getTitleCache() {
127
		return String.format("%s (%s)", getLabel(CdmStore.getDefaultLanguage()), getAbbreviatedLabel());
128
	}
129

    
130
	@Override
131
	public void resetTerms() {
132
		throw new NotImplementedException();
133
	}
134

    
135
	@Override
136
	protected void setDefaultTerms(
137
			TermVocabulary<DefinedTermBase> termVocabulary) {
138
		throw new NotImplementedException();
139
	}
140
	
141
}
(35-35/38)