- added more parameters to DerivateHierarchyDTO
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / OccurrenceServiceImpl.java
index f20265c5f306f633289a2df26d474703857ee67b..ab2512baaeb6cdfe761893bbcf4b75f659b3e830 100644 (file)
@@ -59,6 +59,8 @@ import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.IndividualsAssociation;\r
 import eu.etaxonomy.cdm.model.location.Country;\r
 import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;\r
 import eu.etaxonomy.cdm.model.molecular.DnaSample;\r
 import eu.etaxonomy.cdm.model.molecular.Sequence;\r
 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;\r
@@ -66,6 +68,7 @@ import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;\r
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;\r
 import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;\r
+import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
@@ -312,9 +315,9 @@ public class OccurrenceServiceImpl extends IdentifiableServiceBase<SpecimenOrObs
 \r
     private DerivateHierarchyDTO assembleDerivateHierarchyDTO(FieldUnit fieldUnit, Taxon associatedTaxon){\r
         DerivateHierarchyDTO dto = new DerivateHierarchyDTO();\r
-//        TaxonNameBase name = associatedTaxon.getName();\r
-//        name = HibernateProxyHelper.deproxy(name, TaxonNameBase.class);\r
-//        dto.setType(!name.getTypeDesignations().isEmpty());\r
+        //        TaxonNameBase name = associatedTaxon.getName();\r
+        //        name = HibernateProxyHelper.deproxy(name, TaxonNameBase.class);\r
+        //        dto.setType(!name.getTypeDesignations().isEmpty());\r
         dto.setFieldUnit(fieldUnit);\r
 \r
         if(fieldUnit.getGatheringEvent()!=null){\r
@@ -324,21 +327,59 @@ public class OccurrenceServiceImpl extends IdentifiableServiceBase<SpecimenOrObs
             dto.setCollection((gatheringEvent.getActor()!=null?gatheringEvent.getActor():"") + fieldUnit.getFieldNumber()!=null?fieldUnit.getFieldNumber():"");\r
         }\r
 \r
+        dto.setTaxonName(associatedTaxon.getName().getFullTitleCache());\r
         //get derivatives\r
         Collection<DerivedUnit> derivedUnits = new ArrayList<DerivedUnit>();\r
         getDerivedUnitsFor(fieldUnit, derivedUnits);\r
+\r
         for (DerivedUnit derivedUnit : derivedUnits) {\r
-            if(derivedUnit.getKindOfUnit()!=null && derivedUnit.getKindOfUnit().getUuid().equals(UUID.fromString("acda15be-c0e2-4ea8-8783-b9b0c4ad7f03"))){\r
-                dto.setHasSpecimenScan(true);\r
-                break;\r
+            if(derivedUnit instanceof DnaSample){//.getRecordBasis()==SpecimenOrObservationType.DnaSample){\r
+                dto.setHasDna(true);\r
+\r
+                DnaSample dna = (DnaSample)derivedUnit;\r
+                if(dna.getBankNumber()!=null){\r
+                    dto.getMolecularData().add(dna.getBankNumber());\r
+                }\r
+            }\r
+            if(derivedUnit instanceof MediaSpecimen){\r
+                dto.setHasDna(true);\r
+\r
+                MediaSpecimen media = (MediaSpecimen)derivedUnit;\r
+                String mediaUriString = getMediaUriString(media);\r
+                if(media.getKindOfUnit()!=null){\r
+                    if(media.getKindOfUnit().getUuid().equals(UUID.fromString("acda15be-c0e2-4ea8-8783-b9b0c4ad7f03"))){\r
+                        dto.setHasSpecimenScan(true);\r
+                        if(mediaUriString!=null){\r
+                            dto.getSpecimenScans().add(mediaUriString);\r
+                        }\r
+                    }\r
+                    if(media.getKindOfUnit().getUuid().equals(UUID.fromString("detailImageUUid"))){\r
+                        dto.setHasDetailImage(true);\r
+                        if(mediaUriString!=null){\r
+                            dto.getDetailImages().add(mediaUriString);\r
+                        }\r
+                    }\r
+                }\r
             }\r
         }\r
-\r
-        dto.setNumberOfDerivates(derivedUnits.size());\r
-\r
         return dto;\r
     }\r
 \r
+private String getMediaUriString(MediaSpecimen mediaSpecimen){\r
+       String mediaUri = null;\r
+       Collection<MediaRepresentation> mediaRepresentations = mediaSpecimen.getMediaSpecimen().getRepresentations();\r
+       if(mediaRepresentations!=null && !mediaRepresentations.isEmpty()){\r
+               Collection<MediaRepresentationPart> mediaRepresentationParts = mediaRepresentations.iterator().next().getParts();\r
+               if(mediaRepresentationParts!=null && !mediaRepresentationParts.isEmpty()){\r
+                       MediaRepresentationPart part = mediaRepresentationParts.iterator().next();\r
+                       if(part.getUri()!=null){\r
+                               mediaUri = part.getUri().toASCIIString();\r
+                       }\r
+               }\r
+       }\r
+       return mediaUri;\r
+}\r
+\r
     private void getDerivedUnitsFor(SpecimenOrObservationBase<?> specimen, Collection<DerivedUnit> derivedUnits){\r
         for(DerivationEvent derivationEvent:specimen.getDerivationEvents()){\r
             for(DerivedUnit derivative:derivationEvent.getDerivatives()){\r