ref #6913 Remove workbench and selection handling from edit/new wizards
[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 ?
88 type.getInverseRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish)) :
89 type.getRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish));
90 }
91 return result;
92 }
93
94
95 /**
96 * returns the label of the TaxonRelationshipType for a given language, if the representation of the language is not available the english representation is returned.
97 * @param language
98 * @return label
99 */
100 public String getLabel(Language language){
101
102 return getRepresentation(language).getLabel();
103 }
104
105 public String getDescription(Language language){
106 return getRepresentation(language).getDescription();
107 }
108
109 public String getAbbreviatedLabel(){
110 return getRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish)).getAbbreviatedLabel();
111 }
112
113 public void setInverse(boolean inverse) {
114 this.inverse = inverse;
115 }
116
117 public TaxonRelationshipType getType() {
118 return type;
119 }
120
121 public void setType(TaxonRelationshipType type) {
122 this.type = type;
123 }
124
125 @Override
126 public String getTitleCache() {
127 return String.format("%s (%s)", getLabel(CdmStore.getDefaultLanguage()), getAbbreviatedLabel());
128 }
129
130 @Override
131 public void resetTerms() {
132 throw new NotImplementedException();
133 }
134
135 @Override
136 protected void setDefaultTerms(
137 TermVocabulary<DefinedTermBase> termVocabulary) {
138 throw new NotImplementedException();
139 }
140
141 }