commit bad14dbc76b3b028c7e2ca083756ed5165b3a131
Author: Andreas Müller <a.mueller@bgbm.org>
Date:   Fri Mar 23 15:40:55 2018 +0100

    fix #7328 Add label provider for GatheringEvent in referencing objects view

diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java
index 1c8ab34b0..b54b5d8a4 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java
@@ -18,10 +18,12 @@ import java.util.Set;
 import org.apache.commons.lang.StringUtils;
 import org.hibernate.LazyInitializationException;
 
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.service.DefaultCategoricalDescriptionBuilder;
 import eu.etaxonomy.cdm.api.service.DefaultQuantitativeDescriptionBuilder;
 import eu.etaxonomy.cdm.api.service.DescriptionBuilder;
 import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
@@ -34,6 +36,7 @@ import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
 import eu.etaxonomy.cdm.model.common.RelationshipBase;
 import eu.etaxonomy.cdm.model.common.RelationshipTermBase;
 import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.description.CategoricalData;
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;
@@ -62,6 +65,7 @@ import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
 import eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
+import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
@@ -252,6 +256,8 @@ public class DescriptionHelper {
 		    resultString = getCache((TaxonNode) element);
 		}else if (element instanceof DeterminationEvent) {
 		    resultString = getCache((DeterminationEvent) element);
+		}else if (element instanceof GatheringEvent){
+			resultString = getCache((GatheringEvent) element);
 		}else if (element instanceof Marker) {
 			Marker marker = (Marker) element;
 			MarkerType type = marker.getMarkerType();
@@ -275,6 +281,58 @@ public class DescriptionHelper {
 		}
 		return resultString;
 	}
+	
+	private static String getCache(GatheringEvent gatheringEvent){
+		String ALTITUDE_PREFIX = "alt. ";
+		final String METER = "m";
+
+		String result = "";
+
+		//collector
+		AgentBase<?> collector = CdmBase.deproxy(gatheringEvent.getCollector());
+		String collectorStr = collector == null? null : collector.getTitleCache();
+		result = CdmUtils.concat(", ", result, collectorStr);
+		
+		//gathering period
+		TimePeriod gatheringPeriod = gatheringEvent.getTimeperiod();
+		result = CdmUtils.concat(", ", result, (gatheringPeriod == null? null : gatheringPeriod.toString()));
+		
+		//country
+		String strCountry = null;
+		NamedArea country = gatheringEvent.getCountry();
+		Representation repCountry = country == null ? null : country.getRepresentation(Language.DEFAULT());
+		strCountry = repCountry == null ? null: repCountry.getLabel();
+		result = CdmUtils.concat(", ", result, strCountry);
+
+		//locality
+		LanguageString locality = gatheringEvent.getLocality();
+		if (locality != null) {
+			result = CdmUtils.concat(", ", result, locality.getText());
+		}
+
+		//elevation
+		String elevationStr;
+		if (isNotBlank(gatheringEvent.getAbsoluteElevationText())){
+			elevationStr = gatheringEvent.getAbsoluteElevationText();
+		}else{
+			String text = gatheringEvent.getAbsoluteElevationText();
+			Integer min = gatheringEvent.getAbsoluteElevation();
+			Integer max = gatheringEvent.getAbsoluteElevationMax();
+			elevationStr = DerivedUnitFacade.distanceString(min, max, text, METER);
+		}
+		if (isNotBlank(elevationStr)){
+			result = CdmUtils.concat(", " , result, ALTITUDE_PREFIX);
+			result += elevationStr;
+		}
+
+		//exact locality
+		if (gatheringEvent.getExactLocation() != null){
+			String exactLocation = gatheringEvent.getExactLocation().toSexagesimalString(false, false);
+			result = CdmUtils.concat(", ", result, exactLocation);
+		}
+
+		return result;
+	}
 
 
 	private static String getCache(DeterminationEvent detEvent) {
