Project

General

Profile

Download (3.88 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 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.model;
10

    
11
import org.apache.commons.lang3.NotImplementedException;
12

    
13
import eu.etaxonomy.cdm.model.common.Language;
14
import eu.etaxonomy.cdm.model.taxon.Taxon;
15
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
16
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
17
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
18
import eu.etaxonomy.cdm.model.term.Representation;
19
import eu.etaxonomy.cdm.model.term.TermVocabulary;
20
import eu.etaxonomy.taxeditor.store.CdmStore;
21

    
22
/**
23
 * @author n.hoffmann
24
 * @created Nov 30, 2011
25
 */
26
public class TaxonRelationshipTypeInverseContainer  {
27

    
28
	private static final long serialVersionUID = 7225140304186547675L;
29

    
30
	private boolean inverse;
31
	private TaxonRelationshipType type;
32

    
33
	public static TaxonRelationshipTypeInverseContainer CreateFromSource(Taxon sourceTaxon, TaxonRelationship relationship){
34
		return new TaxonRelationshipTypeInverseContainer(relationship.getType(), isRelationshipInverse(sourceTaxon, relationship));
35
	}
36

    
37
	public static Taxon RelatedTaxon(Taxon sourceTaxon, TaxonRelationship relationship){
38
		return isRelationshipInverse(sourceTaxon, relationship) ? relationship.getFromTaxon() : relationship.getToTaxon();
39
	}
40

    
41
	private static boolean isRelationshipInverse(Taxon sourceTaxon, TaxonRelationship relationship){
42
		return relationship.getFromTaxon().equals(sourceTaxon) ? false : true;
43
	}
44

    
45
	public TaxonRelationshipTypeInverseContainer(TaxonRelationshipType type, boolean inverse){
46
		this.inverse = inverse;
47
		this.setType(type);
48
	}
49

    
50
	public boolean isInverse() {
51
		return inverse;
52
	}
53

    
54
	/**
55
	 * Returns the representation for the given language, when there is no representation for this language available, the english version is returned.
56
	 * @param language
57
	 * @return representation
58
	 */
59
//	@Override
60
    public Representation getRepresentation(Language language){
61
		Representation result;
62
		result = inverse ? type.getInverseRepresentation(language) : type.getRepresentation(language);
63
		if (result == null){
64
			result = inverse ?
65
					type.getInverseRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish)) :
66
						type.getRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish));
67
			if (result == null){
68
			    if (inverse){
69
			        result = type.getInverseRepresentations().isEmpty() ? null : type.getInverseRepresentations().iterator().next();
70
			    }else{
71
			        result = type.getRepresentations().isEmpty() ? null : type.getRepresentations().iterator().next();
72
			    }
73
			}
74
		}
75
		return result;
76
	}
77

    
78

    
79
	/**
80
	 * Returns the label of the TaxonRelationshipType for a given language, if the representation of the language is not available the english representation is returned.
81
	 * @param language
82
	 * @return label
83
	 */
84
//	@Override
85
    public String getLabel(Language language){
86
		return getRepresentation(language).getLabel();
87
	}
88

    
89
//	@Override
90
    public String getDescription(Language language){
91
		return getRepresentation(language).getDescription();
92
	}
93

    
94
	public String getAbbreviatedLabel(){
95
		return getRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish)).getAbbreviatedLabel();
96
	}
97

    
98
	public void setInverse(boolean inverse) {
99
		this.inverse = inverse;
100
	}
101

    
102
	public TaxonRelationshipType getType() {
103
		return type;
104
	}
105

    
106
	public void setType(TaxonRelationshipType type) {
107
		this.type = type;
108
	}
109

    
110
//	@Override
111
	public String getTitleCache() {
112
		return String.format("%s (%s)", getLabel(CdmStore.getDefaultLanguage()), getAbbreviatedLabel());
113
	}
114

    
115
//	@Override
116
	public void resetTerms() {
117
		throw new NotImplementedException();
118
	}
119

    
120
//	@Override
121
	protected void setDefaultTerms(
122
			TermVocabulary<DefinedTermBase> termVocabulary) {
123
		throw new NotImplementedException();
124
	}
125
}
(38-38/41)