import java.awt.Color;\r
import java.util.ArrayList;\r
import java.util.HashSet;\r
-import java.util.Iterator;\r
import java.util.List;\r
import java.util.Map;\r
import java.util.Set;\r
import org.springframework.stereotype.Service;\r
import org.springframework.transaction.annotation.Transactional;\r
\r
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;\r
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
import eu.etaxonomy.cdm.model.common.Language;\r
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
import eu.etaxonomy.cdm.model.description.Distribution;\r
import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;\r
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
import eu.etaxonomy.cdm.model.location.Point;\r
import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;\r
import eu.etaxonomy.cdm.model.occurrence.FieldObservation;\r
-import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;\r
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;\r
import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao;\r
+import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao;\r
\r
/**\r
* @author a.kohlbecker\r
\r
@Autowired\r
private IDescriptionDao dao;\r
- @Autowired\r
+ \r
+\r
+ @Autowired\r
+ private IGeoServiceAreaMapping areaMapping;\r
+ \r
private IDefinedTermDao termDao;\r
+ \r
+ @Autowired\r
+ public void setTermDao(IDefinedTermDao termDao) {\r
+ this.termDao = termDao;\r
+ EditGeoServiceUtilities.setTermDao(termDao);\r
+ }\r
+\r
+ @Autowired\r
+ private IOccurrenceDao occurrenceDao;\r
\r
+ \r
private Set<Feature> getDistributionFeatures() {\r
Set<Feature> distributionFeature = new HashSet<Feature>();\r
Feature feature = (Feature) termDao.findByUuid(Feature.DISTRIBUTION().getUuid());\r
if(backLayer == null){\r
backLayer = DEFAULT_BACK_LAYER;\r
}\r
- String uriParams = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(distributions, presenceAbsenceTermColors, width, height, bbox, backLayer, langs);\r
+ String uriParams = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(distributions, areaMapping, presenceAbsenceTermColors, width, height, bbox, backLayer, null, langs);\r
\r
return uriParams;\r
}\r
String backLayer,\r
List<Language> langs) {\r
\r
- List<TaxonDescription> taxonDescriptions = dao.getTaxonDescriptions(taxon, null, null, null, null, null);\r
+ List<TaxonDescription> taxonDescriptions = dao.getTaxonDescriptions(taxon, null, null, null, null, null, null);\r
\r
Set<Distribution> distCollection = new HashSet<Distribution>();\r
// get descriptions elements for each description\r
if(backLayer == null){\r
backLayer = DEFAULT_BACK_LAYER;\r
}\r
- String uriParams = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(distCollection,\r
- presenceAbsenceTermColors, width, height, bbox, backLayer, langs);\r
+ String uriParams = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(distCollection,areaMapping,\r
+ presenceAbsenceTermColors, width, height, bbox, backLayer, null, langs);\r
\r
return uriParams;\r
}\r
*/\r
@Override\r
public String getOccurrenceServiceRequestParameterString(\r
- List<TaxonDescription> taxonDescriptions,\r
+ List<SpecimenOrObservationBase> specimensOrObersvations,\r
Map<Class<? extends SpecimenOrObservationBase>, Color> specimenOrObservationTypeColors, Boolean doReturnImage,\r
Integer width, Integer height, String bbox, String backLayer) {\r
\r
IndividualsAssociation individualsAssociation;\r
DerivedUnitBase derivedUnit;\r
\r
- for(TaxonDescription taxonDescription : taxonDescriptions){\r
- List<DescriptionElementBase> elemements = dao.getDescriptionElements(taxonDescription, null, IndividualsAssociation.class, null, 0, null);\r
- for (DescriptionElementBase descriptionElementBase : elemements) {\r
- individualsAssociation = (IndividualsAssociation)descriptionElementBase;\r
- if(individualsAssociation.getAssociatedSpecimenOrObservation() != null){\r
- \r
- SpecimenOrObservationBase<?> specimenOrObservation = HibernateProxyHelper.deproxy(individualsAssociation.getAssociatedSpecimenOrObservation(), SpecimenOrObservationBase.class);\r
- \r
- if(specimenOrObservation instanceof FieldObservation){\r
- fieldObservationPoints.add(((FieldObservation)specimenOrObservation).getGatheringEvent().getExactLocation());\r
- } \r
- if(specimenOrObservation instanceof DerivedUnitBase<?>){ \r
- registerDerivedUnitLocations((DerivedUnitBase)specimenOrObservation, derivedUnitPoints);\r
- }\r
- \r
- }\r
- }\r
+ for(SpecimenOrObservationBase specimenOrObservationBase : specimensOrObersvations){\r
+ SpecimenOrObservationBase<?> specimenOrObservation = occurrenceDao.load(specimenOrObservationBase.getUuid());\r
+ \r
+ if(specimenOrObservation instanceof FieldObservation){\r
+ fieldObservationPoints.add(((FieldObservation)specimenOrObservation).getGatheringEvent().getExactLocation());\r
+ } \r
+ if(specimenOrObservation instanceof DerivedUnitBase<?>){ \r
+ registerDerivedUnitLocations((DerivedUnitBase)specimenOrObservation, derivedUnitPoints);\r
+ } \r
}\r
\r
return EditGeoServiceUtilities.getOccurrenceServiceRequestParameterString(\r
List<Point> derivedUnitPoints) {\r
\r
Set<SpecimenOrObservationBase> originals = derivedUnit.getOriginals();\r
- for (SpecimenOrObservationBase original : originals) {\r
- if (original instanceof FieldObservation) {\r
- Point point = ((FieldObservation) original).getGatheringEvent().getExactLocation();\r
- if(point != null){\r
- //FIXME: remove next statement after DerivedUnitFacade or ABCD import is fixed\r
- if(point.getLatitude() == 0.0 && point.getLongitude() == 0.0){\r
- continue;\r
+ if(originals != null){\r
+ for (SpecimenOrObservationBase original : originals) {\r
+ if (original instanceof FieldObservation) {\r
+ Point point = ((FieldObservation) original).getGatheringEvent().getExactLocation();\r
+ if(point != null){\r
+ //FIXME: remove next statement after DerivedUnitFacade or ABCD import is fixed\r
+ if(point.getLatitude() == 0.0 && point.getLongitude() == 0.0){\r
+ continue;\r
+ }\r
+ derivedUnitPoints.add(point);\r
}\r
- derivedUnitPoints.add(point);\r
+ } else {\r
+ registerDerivedUnitLocations((DerivedUnitBase) original, derivedUnitPoints);\r
}\r
- } else {\r
- registerDerivedUnitLocations((DerivedUnitBase) original, derivedUnitPoints);\r
}\r
}\r
\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.ext.geo.IEditGeoService#setMapping(eu.etaxonomy.cdm.model.location.NamedArea, eu.etaxonomy.cdm.ext.geo.GeoServiceArea)\r
+ */\r
+ @Override\r
+ public void setMapping(NamedArea area, GeoServiceArea geoServiceArea) {\r
+ areaMapping.set(area, geoServiceArea);\r
+ \r
+ }\r
+\r
}\r