merging in latest changes from trunk
[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 * @param sourceTaxon
35 * @param relationship
36 * @return
37 */
38 public static TaxonRelationshipTypeInverseContainer CreateFromSource(Taxon sourceTaxon, TaxonRelationship relationship){
39 return new TaxonRelationshipTypeInverseContainer(relationship.getType(), isRelationshipInverse(sourceTaxon, relationship));
40 }
41
42 /**
43 *
44 * @param sourceTaxon
45 * @param relationship
46 * @return
47 */
48 public static Taxon RelatedTaxon(Taxon sourceTaxon, TaxonRelationship relationship){
49 return isRelationshipInverse(sourceTaxon, relationship) ? relationship.getFromTaxon() : relationship.getToTaxon();
50 }
51
52 /**
53 *
54 * @param sourceTaxon
55 * @param relationship
56 * @return
57 */
58 private static boolean isRelationshipInverse(Taxon sourceTaxon, TaxonRelationship relationship){
59 return relationship.getFromTaxon().equals(sourceTaxon) ? false : true;
60 }
61
62 /**
63 *
64 * @param type
65 * @param inverse
66 */
67 public TaxonRelationshipTypeInverseContainer(TaxonRelationshipType type, boolean inverse){
68 this.inverse = inverse;
69 this.setType(type);
70 }
71
72 public boolean isInverse() {
73 return inverse;
74 }
75
76 public Representation getRepresentation(Language language){
77 return inverse ? type.getInverseRepresentation(language) : type.getRepresentation(language);
78 }
79
80 public String getLabel(Language language){
81 return getRepresentation(language).getLabel();
82 }
83
84 public String getDescription(Language language){
85 return getRepresentation(language).getDescription();
86 }
87
88 public String getAbbreviatedLabel(){
89 return getRepresentation(Language.ENGLISH()).getAbbreviatedLabel();
90 }
91
92 public void setInverse(boolean inverse) {
93 this.inverse = inverse;
94 }
95
96 public TaxonRelationshipType getType() {
97 return type;
98 }
99
100 public void setType(TaxonRelationshipType type) {
101 this.type = type;
102 }
103
104 @Override
105 public String getTitleCache() {
106 return String.format("%s (%s)", getLabel(CdmStore.getDefaultLanguage()), getAbbreviatedLabel());
107 }
108
109 @Override
110 public void resetTerms() {
111 throw new NotImplementedException();
112 }
113
114 @Override
115 protected void setDefaultTerms(
116 TermVocabulary<DefinedTermBase> termVocabulary) {
117 throw new NotImplementedException();
118 }
119
120 }