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
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
\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
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