getting all SpecimenOrObservationBases for a Taxon
[cdmlib.git] / cdmlib-ext / src / main / java / eu / etaxonomy / cdm / ext / geo / EditGeoService.java
index 2a023fb03845baa52722a37ee2e7ef9a20087e11..f97137775cd12f9b48bee146f8622c67185f30ee 100644 (file)
@@ -23,6 +23,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;\r
 \r
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;\r
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
+import eu.etaxonomy.cdm.api.service.OccurrenceServiceImpl;\r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
@@ -39,6 +41,7 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 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,8 +57,12 @@ public class EditGeoService implements IEditGeoService{
 \r
        @Autowired\r
        private IDescriptionDao dao;\r
+       \r
        @Autowired\r
        private IDefinedTermDao termDao;\r
+       \r
+       @Autowired\r
+       private IOccurrenceDao occurrenceDao;\r
 \r
        private Set<Feature> getDistributionFeatures() {\r
                Set<Feature> distributionFeature = new HashSet<Feature>();\r
@@ -132,7 +139,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 +149,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