// $Id$\r
/**\r
-* Copyright (C) 2009 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
+ * Copyright (C) 2009 EDIT\r
+ * European Distributed Institute of Taxonomy\r
+ * http://www.e-taxonomy.eu\r
+ *\r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
package eu.etaxonomy.cdm.ext.geo;\r
\r
import java.awt.Color;\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.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
@Service\r
-@Transactional(readOnly=true)\r
-public class EditGeoService implements IEditGeoService{\r
- public static final Logger logger = Logger.getLogger(EditGeoService.class);\r
- \r
- private static final String DEFAULT_BACK_LAYER = "tdwg4";\r
-\r
- @Autowired\r
- private IDescriptionDao dao;\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
- distributionFeature.add(feature);\r
- return distributionFeature;\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.ext.IEditGeoService#getEditGeoServiceUrlParameterString(java.util.List, java.util.Map, int, int, java.lang.String, java.lang.String, java.util.List)\r
- */\r
- public String getDistributionServiceRequestParameterString(\r
- List<TaxonDescription> taxonDescriptions,\r
- Map<PresenceAbsenceTermBase<?>, Color> presenceAbsenceTermColors,\r
- int width, int height, String bbox, String backLayer,\r
- List<Language> langs) {\r
- Set<Distribution> distributions = new HashSet<Distribution>();\r
- for(TaxonDescription taxonDescription : taxonDescriptions){\r
- List<Distribution> result = (List)dao.getDescriptionElements(taxonDescription, getDistributionFeatures(), Distribution.class, null, null, null);\r
- distributions.addAll(result);\r
- }\r
- \r
- if(backLayer == null){\r
- backLayer = DEFAULT_BACK_LAYER;\r
- }\r
- String uriParams = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(distributions, presenceAbsenceTermColors, width, height, bbox, backLayer, langs);\r
-\r
- return uriParams;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.ext.IEditGeoService#getEditGeoServiceUrlParameterString(eu.etaxonomy.cdm.model.description.TaxonDescription, java.util.Map, int, int, java.lang.String, java.lang.String)\r
- */\r
- public String getDistributionServiceRequestParameterString(\r
- TaxonDescription taxonDescription,\r
- Map<PresenceAbsenceTermBase<?>, Color> presenceAbsenceTermColors,\r
- int width, int height, String bbox, String backLayer,\r
- List<Language> langs) {\r
- \r
- List<TaxonDescription> taxonDescriptions = new ArrayList<TaxonDescription>();\r
- taxonDescriptions.add(taxonDescription);\r
- \r
- return getDistributionServiceRequestParameterString(taxonDescriptions, presenceAbsenceTermColors, width, height, bbox, backLayer, langs);\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.api.service.IEditGeoService#getEditGeoServiceUrlParameterString(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Map, int, int, java.lang.String, java.lang.String)\r
- */\r
- public String getDistributionServiceRequestParameterString(Taxon taxon,\r
- Map<PresenceAbsenceTermBase<?>, Color> presenceAbsenceTermColors, int width, int height, String bbox,\r
- String backLayer,\r
- List<Language> langs) {\r
- \r
- List<TaxonDescription> taxonDescriptions = dao.getTaxonDescriptions(taxon, null, null, null, null, null);\r
- \r
- Set<Distribution> distCollection = new HashSet<Distribution>();\r
- // get descriptions elements for each description\r
- for (TaxonDescription td : taxonDescriptions) {\r
- List<Distribution> dists = (List)dao.getDescriptionElements(td, getDistributionFeatures(), Distribution.class, null, null, null);\r
- distCollection.addAll(dists);\r
- }\r
- // generate the uri parameter string\r
- if(backLayer == null){\r
- backLayer = DEFAULT_BACK_LAYER;\r
- }\r
- String uriParams = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(distCollection,\r
- presenceAbsenceTermColors, width, height, bbox, backLayer, langs);\r
-\r
- return uriParams;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.ext.geo.IEditGeoService#getOccurrenceServiceRequestParameterString(eu.etaxonomy.cdm.model.description.TaxonDescription, java.util.Map, int, int, java.lang.String, java.lang.String)\r
- */\r
- @Override\r
- public String getOccurrenceServiceRequestParameterString(\r
- List<SpecimenOrObservationBase> specimensOrObersvations,\r
- Map<Class<? extends SpecimenOrObservationBase>, Color> specimenOrObservationTypeColors, Boolean doReturnImage,\r
- Integer width, Integer height, String bbox, String backLayer) {\r
- \r
- List<Point> fieldObservationPoints = new ArrayList<Point>();\r
- List<Point> derivedUnitPoints = new ArrayList<Point>();\r
- \r
- IndividualsAssociation individualsAssociation;\r
- DerivedUnitBase derivedUnit;\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
- fieldObservationPoints, derivedUnitPoints,\r
- specimenOrObservationTypeColors, doReturnImage , width,\r
- height, bbox, backLayer);\r
-\r
- }\r
-\r
- /**\r
- * @param derivedUnit\r
- * @param derivedUnitPoints\r
- */\r
- private void registerDerivedUnitLocations(DerivedUnitBase<?> derivedUnit,\r
- List<Point> derivedUnitPoints) {\r
-\r
- Set<SpecimenOrObservationBase> originals = derivedUnit.getOriginals();\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
- } else {\r
- registerDerivedUnitLocations((DerivedUnitBase) original, derivedUnitPoints);\r
- }\r
- }\r
- }\r
-\r
- }\r
+@Transactional(readOnly = true)\r
+public class EditGeoService implements IEditGeoService {\r
+ public static final Logger logger = Logger.getLogger(EditGeoService.class);\r
+\r
+ private static final String DEFAULT_BACK_LAYER = "tdwg4";\r
+\r
+ @Autowired\r
+ private IDescriptionDao dao;\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
+ private Set<Feature> getDistributionFeatures() {\r
+ Set<Feature> distributionFeature = new HashSet<Feature>();\r
+ Feature feature = (Feature) termDao.findByUuid(Feature.DISTRIBUTION().getUuid());\r
+ distributionFeature.add(feature);\r
+ return distributionFeature;\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ *\r
+ * @see\r
+ * eu.etaxonomy.cdm.ext.IEditGeoService#getEditGeoServiceUrlParameterString\r
+ * (java.util.List, java.util.Map, int, int, java.lang.String,\r
+ * java.lang.String, java.util.List)\r
+ */\r
+ @Override\r
+ public String getDistributionServiceRequestParameterString(List<TaxonDescription> taxonDescriptions,\r
+ Map<PresenceAbsenceTermBase<?>, Color> presenceAbsenceTermColors, int width, int height, String bbox,\r
+ String backLayer, List<Language> langs) {\r
+\r
+ Set<Distribution> distributions = new HashSet<Distribution>();\r
+ for (TaxonDescription taxonDescription : taxonDescriptions) {\r
+ List<Distribution> result = (List) dao.getDescriptionElements(taxonDescription, getDistributionFeatures(),\r
+ Distribution.class, null, null, null);\r
+ distributions.addAll(result);\r
+ }\r
+\r
+ String uriParams = getDistributionServiceRequestParameterString(distributions, presenceAbsenceTermColors,\r
+ width, height, bbox, backLayer, langs);\r
+\r
+ return uriParams;\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.ext.geo.IEditGeoService#getDistributionServiceRequestParameterString(java.util.Set, java.util.Map, int, int, java.lang.String, java.lang.String, java.util.List)\r
+ */\r
+ @Override\r
+ public String getDistributionServiceRequestParameterString(Set<Distribution> distributions,\r
+ Map<PresenceAbsenceTermBase<?>, Color> presenceAbsenceTermColors, int width, int height, String bbox,\r
+ String backLayer, List<Language> langs) {\r
+\r
+ if (backLayer == null) {\r
+ backLayer = DEFAULT_BACK_LAYER;\r
+ }\r
+ String uriParams = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(distributions,\r
+ areaMapping, presenceAbsenceTermColors, width, height, bbox, backLayer, null, langs);\r
+ return uriParams;\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ *\r
+ * @see\r
+ * eu.etaxonomy.cdm.ext.IEditGeoService#getEditGeoServiceUrlParameterString\r
+ * (eu.etaxonomy.cdm.model.description.TaxonDescription, java.util.Map, int,\r
+ * int, java.lang.String, java.lang.String)\r
+ */\r
+ @Override\r
+ @Deprecated\r
+ public String getDistributionServiceRequestParameterString(TaxonDescription taxonDescription,\r
+ Map<PresenceAbsenceTermBase<?>, Color> presenceAbsenceTermColors, int width, int height, String bbox,\r
+ String backLayer, List<Language> langs) {\r
+\r
+ List<TaxonDescription> taxonDescriptions = new ArrayList<TaxonDescription>();\r
+ taxonDescriptions.add(taxonDescription);\r
+\r
+ return getDistributionServiceRequestParameterString(taxonDescriptions, presenceAbsenceTermColors, width,\r
+ height, bbox, backLayer, langs);\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ *\r
+ * @see eu.etaxonomy.cdm.ext.geo.IEditGeoService#\r
+ * getOccurrenceServiceRequestParameterString\r
+ * (eu.etaxonomy.cdm.model.description.TaxonDescription, java.util.Map, int,\r
+ * int, java.lang.String, java.lang.String)\r
+ */\r
+ @Override\r
+ public String getOccurrenceServiceRequestParameterString(List<SpecimenOrObservationBase> specimensOrObersvations,\r
+ Map<Class<? extends SpecimenOrObservationBase>, Color> specimenOrObservationTypeColors,\r
+ Boolean doReturnImage, Integer width, Integer height, String bbox, String backLayer) {\r
+\r
+ List<Point> fieldObservationPoints = new ArrayList<Point>();\r
+ List<Point> derivedUnitPoints = new ArrayList<Point>();\r
+\r
+ IndividualsAssociation individualsAssociation;\r
+ DerivedUnitBase derivedUnit;\r
+\r
+ for (SpecimenOrObservationBase specimenOrObservationBase : specimensOrObersvations) {\r
+ SpecimenOrObservationBase<?> specimenOrObservation = occurrenceDao\r
+ .load(specimenOrObservationBase.getUuid());\r
+\r
+ if (specimenOrObservation instanceof FieldObservation) {\r
+ fieldObservationPoints.add(((FieldObservation) specimenOrObservation).getGatheringEvent()\r
+ .getExactLocation());\r
+ }\r
+ if (specimenOrObservation instanceof DerivedUnitBase<?>) {\r
+ registerDerivedUnitLocations((DerivedUnitBase) specimenOrObservation, derivedUnitPoints);\r
+ }\r
+ }\r
+\r
+ return EditGeoServiceUtilities.getOccurrenceServiceRequestParameterString(fieldObservationPoints,\r
+ derivedUnitPoints, specimenOrObservationTypeColors, doReturnImage, width, height, bbox, backLayer);\r
+\r
+ }\r
+\r
+ /**\r
+ * @param derivedUnit\r
+ * @param derivedUnitPoints\r
+ */\r
+ private void registerDerivedUnitLocations(DerivedUnitBase<?> derivedUnit, List<Point> derivedUnitPoints) {\r
+\r
+ Set<SpecimenOrObservationBase> originals = derivedUnit.getOriginals();\r
+ if (originals != null) {\r
+ for (SpecimenOrObservationBase original : originals) {\r
+ if (original instanceof FieldObservation) {\r
+ if (((FieldObservation) original).getGatheringEvent() != null) {\r
+ Point point = ((FieldObservation) original).getGatheringEvent().getExactLocation();\r
+ if (point != null) {\r
+ // FIXME: remove next statement after\r
+ // 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
+ }\r
+ } else {\r
+ registerDerivedUnitLocations((DerivedUnitBase) original, derivedUnitPoints);\r
+ }\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ *\r
+ * @see\r
+ * eu.etaxonomy.cdm.ext.geo.IEditGeoService#setMapping(eu.etaxonomy.cdm.\r
+ * 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