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