Project

General

Profile

Download (3.54 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 ? type.getInverseRepresentation(Language.ENGLISH()) : type.getRepresentation(Language.ENGLISH());
88
		}
89
		return result;
90
	}
91
	
92
	
93
	/**
94
	 * returns the label of the TaxonRelationshipType for a given language, if the representation of the language is not available the english representation is returned.
95
	 * @param language
96
	 * @return label
97
	 */
98
	public String getLabel(Language language){
99
		
100
		return getRepresentation(language).getLabel();
101
	}
102
	
103
	public String getDescription(Language language){
104
		return getRepresentation(language).getDescription();
105
	}
106
	
107
	public String getAbbreviatedLabel(){
108
		return getRepresentation(Language.ENGLISH()).getAbbreviatedLabel();
109
	}
110
	
111
	public void setInverse(boolean inverse) {
112
		this.inverse = inverse;
113
	}
114

    
115
	public TaxonRelationshipType getType() {
116
		return type;
117
	}
118

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

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

    
133
	@Override
134
	protected void setDefaultTerms(
135
			TermVocabulary<DefinedTermBase> termVocabulary) {
136
		throw new NotImplementedException();
137
	}
138
	
139
}
(30-30/33)