*/
package eu.etaxonomy.taxeditor.model;
+import org.apache.commons.lang.NotImplementedException;
+
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* @author n.hoffmann
* @version 1.0
*
*/
-public class TaxonRelationshipTypeInverseContainer {
+public class TaxonRelationshipTypeInverseContainer extends DefinedTermBase<DefinedTermBase> {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 7225140304186547675L;
private boolean inverse;
private TaxonRelationshipType type;
+
+ /**
+ *
+ * @param sourceTaxon
+ * @param relationship
+ * @return
+ */
+ public static TaxonRelationshipTypeInverseContainer CreateFromSource(Taxon sourceTaxon, TaxonRelationship relationship){
+ return new TaxonRelationshipTypeInverseContainer(relationship.getType(), isRelationshipInverse(sourceTaxon, relationship));
+ }
+
+ /**
+ *
+ * @param sourceTaxon
+ * @param relationship
+ * @return
+ */
+ public static Taxon RelatedTaxon(Taxon sourceTaxon, TaxonRelationship relationship){
+ return isRelationshipInverse(sourceTaxon, relationship) ? relationship.getFromTaxon() : relationship.getToTaxon();
+ }
+
+ /**
+ *
+ * @param sourceTaxon
+ * @param relationship
+ * @return
+ */
+ private static boolean isRelationshipInverse(Taxon sourceTaxon, TaxonRelationship relationship){
+ return relationship.getFromTaxon().equals(sourceTaxon) ? false : true;
+ }
+
+ /**
+ *
+ * @param type
+ * @param inverse
+ */
public TaxonRelationshipTypeInverseContainer(TaxonRelationshipType type, boolean inverse){
this.inverse = inverse;
this.setType(type);
return inverse;
}
+ /**
+ * returns the representation for the given language, when there is no representation for this language available, the english version is returned.
+ * @param language
+ * @return representation
+ *
+ */
public Representation getRepresentation(Language language){
- return inverse ? type.getInverseRepresentation(language) : type.getRepresentation(language);
+ Representation result;
+ result = inverse ? type.getInverseRepresentation(language) : type.getRepresentation(language);
+ if (result == null){
+ result = inverse ?
+ type.getInverseRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish)) :
+ type.getRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish));
+ }
+ return result;
}
+
+ /**
+ * returns the label of the TaxonRelationshipType for a given language, if the representation of the language is not available the english representation is returned.
+ * @param language
+ * @return label
+ */
public String getLabel(Language language){
+
return getRepresentation(language).getLabel();
}
return getRepresentation(language).getDescription();
}
- public String getAbbreviatedLabel(Language language){
- return getRepresentation(language).getAbbreviatedLabel();
+ public String getAbbreviatedLabel(){
+ return getRepresentation(Language.getLanguageFromUuid(Language.uuidEnglish)).getAbbreviatedLabel();
}
public void setInverse(boolean inverse) {
this.type = type;
}
-
+ @Override
+ public String getTitleCache() {
+ return String.format("%s (%s)", getLabel(CdmStore.getDefaultLanguage()), getAbbreviatedLabel());
+ }
+
+ @Override
+ public void resetTerms() {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ protected void setDefaultTerms(
+ TermVocabulary<DefinedTermBase> termVocabulary) {
+ throw new NotImplementedException();
+ }
}