- not running imports and exports deleted from menu
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / model / TaxonRelationshipTypeInverseContainer.java
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 }