add MarkerTypes to descriptionService scopes
[cdmlib.git] / cdmlib-ext / src / main / java / eu / etaxonomy / cdm / ext / geo / EditGeoService.java
index 2a023fb03845baa52722a37ee2e7ef9a20087e11..0605b428dc6044349590696a74cbd5ff8112fa6f 100644 (file)
@@ -12,7 +12,6 @@ package eu.etaxonomy.cdm.ext.geo;
 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
@@ -22,23 +21,21 @@ import org.springframework.beans.factory.annotation.Autowired;
 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
@@ -54,9 +51,23 @@ public class EditGeoService implements IEditGeoService{
 \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
@@ -81,7 +92,7 @@ public class EditGeoService implements IEditGeoService{
                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
@@ -109,7 +120,7 @@ public class EditGeoService implements IEditGeoService{
                        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
@@ -121,8 +132,8 @@ public class EditGeoService implements IEditGeoService{
                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
@@ -132,7 +143,7 @@ public class EditGeoService implements IEditGeoService{
         */\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
@@ -142,23 +153,15 @@ public class EditGeoService implements IEditGeoService{
                        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
@@ -176,21 +179,32 @@ public class EditGeoService implements IEditGeoService{
                        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