return results;\r
}\r
\r
-\r
- @Override\r
- public List<SpecimenNodeWrapper> listUuidAndTitleCacheByAssociatedTaxon(List<UUID> taxonNodeUuids,\r
- Integer limit, Integer start, List<OrderHint> orderHints){\r
-\r
- String queryString = "SELECT "\r
+ private List<SpecimenNodeWrapper> queryIndividualAssociatedSpecimen(List<UUID> taxonNodeUuids,\r
+ Integer limit, Integer start, List<OrderHint> orderHintss){\r
+ String queryString = "SELECT "\r
+ "de.associatedSpecimenOrObservation.uuid, "\r
+ "de.associatedSpecimenOrObservation.id, "\r
+ "de.associatedSpecimenOrObservation.titleCache, "\r
+ "tn "\r
- + " FROM DescriptionElementBase AS de" +\r
- " LEFT JOIN de.inDescription AS d" +\r
- " LEFT JOIN d.taxon AS t" +\r
- " JOIN t.taxonNodes AS tn" +\r
- " WHERE d.class = 'TaxonDescription' "\r
+ + "FROM DescriptionElementBase AS de "\r
+ + "LEFT JOIN de.inDescription AS d "\r
+ + "LEFT JOIN d.taxon AS t "\r
+ + "JOIN t.taxonNodes AS tn "\r
+ + "WHERE d.class = 'TaxonDescription' "\r
+ "AND tn.uuid in (:taxonNodeUuids) "\r
;\r
+ Query query = getSession().createQuery(queryString);\r
+\r
+ query.setParameterList("taxonNodeUuids", taxonNodeUuids);\r
+\r
+ if(limit != null) {\r
+ if(start != null) {\r
+ query.setFirstResult(start);\r
+ } else {\r
+ query.setFirstResult(0);\r
+ }\r
+ query.setMaxResults(limit);\r
+ }\r
+\r
+ List<SpecimenNodeWrapper> list = new ArrayList<>();\r
+ List<Object[]> result = query.list();\r
+ for(Object[] object : result){\r
+ list.add(new SpecimenNodeWrapper(\r
+ new UuidAndTitleCache<SpecimenOrObservationBase>(\r
+ (UUID) object[0],\r
+ (Integer) object[1],\r
+ (String) object[2]),\r
+ (TaxonNode)object[3]));\r
+ }\r
+ return list;\r
+ }\r
+\r
+ private List<SpecimenNodeWrapper> queryTypeSpecimen(List<UUID> taxonNodeUuids,\r
+ Integer limit, Integer start, List<OrderHint> orderHints){\r
+ String queryString = "SELECT "\r
+ + "td.typeSpecimen.uuid, "\r
+ + "td.typeSpecimen.id, "\r
+ + "td.typeSpecimen.titleCache, "\r
+ + "tn "\r
+ + "FROM SpecimenTypeDesignation AS td "\r
+ + "LEFT JOIN td.typifiedNames AS tn "\r
+ + "LEFT JOIN tn.taxonBases AS t "\r
+ + "JOIN t.taxonNodes AS tn "\r
+ + "WHERE tn.uuid in (:taxonNodeUuids) "\r
+ ;\r
+ Query query = getSession().createQuery(queryString);\r
+\r
+ query.setParameterList("taxonNodeUuids", taxonNodeUuids);\r
+\r
+ if(limit != null) {\r
+ if(start != null) {\r
+ query.setFirstResult(start);\r
+ } else {\r
+ query.setFirstResult(0);\r
+ }\r
+ query.setMaxResults(limit);\r
+ }\r
+\r
+ List<SpecimenNodeWrapper> list = new ArrayList<>();\r
+ List<Object[]> result = query.list();\r
+ for(Object[] object : result){\r
+ list.add(new SpecimenNodeWrapper(\r
+ new UuidAndTitleCache<SpecimenOrObservationBase>(\r
+ (UUID) object[0],\r
+ (Integer) object[1],\r
+ (String) object[2]),\r
+ (TaxonNode)object[3]));\r
+ }\r
+ return list;\r
+ }\r
+\r
+ private List<SpecimenNodeWrapper> queryTaxonDeterminations(List<UUID> taxonNodeUuids,\r
+ Integer limit, Integer start, List<OrderHint> orderHints){\r
+ String queryString = "SELECT "\r
+ + "det.identifiedUnit.uuid, "\r
+ + "det.identifiedUnit.id, "\r
+ + "det.identifiedUnit.titleCache, "\r
+ + "tn "\r
+ + "FROM DeterminationEvent AS det "\r
+ + "LEFT JOIN det.taxon AS t "\r
+ + "JOIN t.taxonNodes AS tn "\r
+ + "WHERE tn.uuid in (:taxonNodeUuids) "\r
+ ;\r
+ Query query = getSession().createQuery(queryString);\r
+\r
+ query.setParameterList("taxonNodeUuids", taxonNodeUuids);\r
+\r
+ if(limit != null) {\r
+ if(start != null) {\r
+ query.setFirstResult(start);\r
+ } else {\r
+ query.setFirstResult(0);\r
+ }\r
+ query.setMaxResults(limit);\r
+ }\r
\r
+ List<SpecimenNodeWrapper> list = new ArrayList<>();\r
+ List<Object[]> result = query.list();\r
+ for(Object[] object : result){\r
+ list.add(new SpecimenNodeWrapper(\r
+ new UuidAndTitleCache<SpecimenOrObservationBase>(\r
+ (UUID) object[0],\r
+ (Integer) object[1],\r
+ (String) object[2]),\r
+ (TaxonNode)object[3]));\r
+ }\r
+ return list;\r
+ }\r
+\r
+ private List<SpecimenNodeWrapper> queryTaxonNameDeterminations(List<UUID> taxonNodeUuids,\r
+ Integer limit, Integer start, List<OrderHint> orderHints){\r
+ String queryString = "SELECT "\r
+ + "det.identifiedUnit.uuid, "\r
+ + "det.identifiedUnit.id, "\r
+ + "det.identifiedUnit.titleCache, "\r
+ + "tn "\r
+ + "FROM DeterminationEvent AS det "\r
+ + "LEFT JOIN det.taxonName AS n "\r
+ + "LEFT JOIN n.taxonBases AS t "\r
+ + "JOIN t.taxonNodes AS tn "\r
+ + "WHERE tn.uuid in (:taxonNodeUuids) "\r
+ ;\r
Query query = getSession().createQuery(queryString);\r
\r
query.setParameterList("taxonNodeUuids", taxonNodeUuids);\r
return list;\r
}\r
\r
+ @Override\r
+ public List<SpecimenNodeWrapper> listUuidAndTitleCacheByAssociatedTaxon(List<UUID> taxonNodeUuids,\r
+ Integer limit, Integer start, List<OrderHint> orderHints){\r
+\r
+ List<SpecimenNodeWrapper> list = new ArrayList<>();\r
+ list.addAll(queryIndividualAssociatedSpecimen(taxonNodeUuids, limit, start, orderHints));\r
+ list.addAll(queryTaxonDeterminations(taxonNodeUuids, limit, start, orderHints));\r
+ list.addAll(queryTaxonNameDeterminations(taxonNodeUuids, limit, start, orderHints));\r
+ list.addAll(queryTypeSpecimen(taxonNodeUuids, limit, start, orderHints));\r
+\r
+ return list;\r
+ }\r
+\r
@Override\r
public <T extends SpecimenOrObservationBase> List<UuidAndTitleCache<SpecimenOrObservationBase>> listUuidAndTitleCacheByAssociatedTaxon(Class<T> clazz, Taxon associatedTaxon,\r
Integer limit, Integer start, List<OrderHint> orderHints){\r
import static org.junit.Assert.assertTrue;
import java.io.FileNotFoundException;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.UUID;
+import java.util.stream.Collectors;
import org.apache.log4j.Logger;
import org.junit.Test;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
+import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.Synonym;
import eu.etaxonomy.cdm.model.taxon.SynonymType;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.persistence.dto.SpecimenNodeWrapper;
import eu.etaxonomy.cdm.persistence.query.AssignmentStatus;
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
import eu.etaxonomy.cdm.test.unitils.CleanSweepInsertLoadStrategy;
@SpringBeanByType
private ITaxonService taxonService;
+ @SpringBeanByType
+ private ITaxonNodeService taxonNodeService;
+
+ @SpringBeanByType
+ private IClassificationService classificationService;
+
@SpringBeanByType
private INameService nameService;
}
+ @Test
+ @DataSet(loadStrategy = CleanSweepInsertLoadStrategy.class, value = "OccurrenceServiceTest-testAllKindsOfSpecimenAssociations.xml")
+ public void testListUuidAndTitleCacheByAssociatedTaxon() {
+ UUID taxonNodeUuid = UUID.fromString("6b8b6ff9-66e4-4496-8e5a-7d03bdf9a076");
+ /**
+ * Structure is as follows:
+ *
+ * Taxon ----IndividualsAssociation---> DnaSample
+ * Taxon ----TypeDesignation---> Fossil
+ * Taxon ----Determination ---> PreservedSpecimenA
+ *
+ * Taxon ---> Taxon Name ----Determination ---> PreservedSpecimenB
+ *
+ * Taxon ---> Synonym ---> SynonymName ----Determination---> PreservedSpecimenC
+ *
+ * Orphan Name (not associated with any taxon) ----Determination ---> PreservedSpecimenD
+ */
+
+ //UUIDS
+ UUID derivedUnitDeterminationTaxonUuid = UUID.fromString("941b8b22-1925-4b91-8ff8-97114499bb22");
+ UUID derivedUnitDeterminationNameUuid = UUID.fromString("0cdc7a57-6f55-45c8-b3e5-523748c381e7");
+
+ UUID derivedUnitDeterminationSynonymUuid = UUID.fromString("8eb94a7d-c802-49a7-bc10-c26de20a52c2");
+ UUID derivedUnitDeterminationSynonymNameUuid = UUID.fromString("d940a940-8caf-4a52-b1d8-ba4aad7ddae2");
+
+ UUID derivedUnitDeterminationOrphanNameUuid = UUID.fromString("587b7297-7d59-4f59-8ef3-c7a559cadeca");
+
+ UUID tissueUuidNoAssociationUuid = UUID.fromString("93e94260-5107-4b2c-9ce4-da9e1a4e7cb9");
+ UUID dnaSampleUuidIndividualsAssociationUuid = UUID.fromString("1fb53903-c9b9-4078-8297-5b86aec7fe21");
+ UUID fossilTypeDesignationUuid = UUID.fromString("42ec8dcf-a923-4256-bbd5-b0d10f4de5e2");
+
+ UUID taxonUuid = UUID.fromString("07cc47a5-1a63-46a1-8366-0d59d2b90d5b");
+ UUID synoymUuid = UUID.fromString("c16bcd9b-7d18-4fb5-af60-f9ef14c1d3a9");
+
+ UUID taxonNameUuid = UUID.fromString("e59b95c0-9ad6-48be-af62-a982ba72b917");
+ UUID synonymNameUuid = UUID.fromString("39f04b2a-b8bd-46e8-9102-ab665c64ec8e");
+ UUID orphanNameUuid = UUID.fromString("d8e56365-3ad9-4b0e-88bf-acaaab223a9b");
+
+ /*
+ * search for taxon node
+ * should retrieve all specimens associated via
+ * - type designations (fossil)
+ * - individuals associations (dnaSample)
+ * - determinations on
+ * - taxon (specimenA)
+ * - taxon name (specimenA, specimenB)
+ */
+ FindOccurrencesConfigurator config = new FindOccurrencesConfigurator();
+ config.setAssociatedTaxonUuid(taxonUuid);
+ List<SpecimenNodeWrapper> specimens = occurrenceService
+ .listUuidAndTitleCacheByAssociatedTaxon(Collections.singletonList(taxonNodeUuid), null, null, null);
+ List<UUID> uuidList = specimens.stream().map(specimen ->
+ specimen.getUuidAndTitleCache().getUuid()).collect(Collectors.toList());
+ assertTrue(uuidList.contains(derivedUnitDeterminationNameUuid));
+ assertTrue(uuidList.contains(derivedUnitDeterminationTaxonUuid));
+ assertFalse(uuidList.contains(derivedUnitDeterminationSynonymNameUuid));
+ assertTrue(uuidList.contains(dnaSampleUuidIndividualsAssociationUuid));
+ assertTrue(uuidList.contains(fossilTypeDesignationUuid));
+ assertFalse(uuidList.contains(tissueUuidNoAssociationUuid));
+ assertFalse(uuidList.contains(derivedUnitDeterminationOrphanNameUuid));
+ assertEquals("Wrong number of associated specimens", 4, specimens.size());
+ }
+
/**
* This will test the retrieval of specimens that are in any way associated
* with a taxon resp. taxon name via type designation, determination event
* or individuals associations. It will also consider synonym relationships.
*/
@Test
- @DataSet(loadStrategy = CleanSweepInsertLoadStrategy.class, value = "OccurrenceServiceTest.testAllKindsOfSpecimenAssociations.xml")
+ @DataSet(loadStrategy = CleanSweepInsertLoadStrategy.class, value = "OccurrenceServiceTest-testAllKindsOfSpecimenAssociations.xml")
public void testAllKindsOfSpecimenAssociations() {
/**
assertTrue(specimens.contains(derivedUnitDeterminationOrphanName));
assertEquals("Wrong number of associated specimens", 1, specimens.size());
- // //DERIVATIVES
- // //determination: taxon
- // DerivedUnit derivedUnitDeterminationTaxon = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
- // derivedUnitDeterminationTaxon.setTitleCache("Derived Unit determined as taxon");
- // //determination: taxon name
- // DerivedUnit derivedUnitDeterminationName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
- // derivedUnitDeterminationName.setTitleCache("Derived Unit determined as name");
- // //determination: synonym
- // DerivedUnit derivedUnitDeterminationSynonym = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
- // derivedUnitDeterminationSynonym.setTitleCache("Derived Unit determined as synonym");
- // //determination: synonym name
- // DerivedUnit derivedUnitDeterminationSynonymName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
- // derivedUnitDeterminationSynonymName.setTitleCache("Derived Unit determined as synonym name");
- // //determination: orphan name
- // DerivedUnit derivedUnitDeterminationOrphanName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
- // derivedUnitDeterminationOrphanName.setTitleCache("Derived Unit determined as orphan name");
- // //no association
- // DerivedUnit tissueUuidNoAssociation = DerivedUnit.NewInstance(SpecimenOrObservationType.TissueSample);
- // tissueUuidNoAssociation.setTitleCache("tissue sample no association");
- // //individuals association with taxon
- // DerivedUnit dnaSampleUuidIndividualsAssociation = DerivedUnit.NewInstance(SpecimenOrObservationType.DnaSample);
- // dnaSampleUuidIndividualsAssociation.setTitleCache("dna associated via IndividualsAssociation");
- // //type specimen of taxon
- // DerivedUnit fossilTypeDesignation = DerivedUnit.NewInstance(SpecimenOrObservationType.Fossil);
- // fossilTypeDesignation.setTitleCache("Fossil with type designation");
- //
- // derivedUnitDeterminationTaxon.setUuid(derivedUnitDeterminationTaxonUuid);
- // derivedUnitDeterminationName.setUuid(derivedUnitDeterminationNameUuid);
- // derivedUnitDeterminationSynonym.setUuid(derivedUnitDeterminationSynonymUuid);
- // derivedUnitDeterminationSynonymName.setUuid(derivedUnitDeterminationSynonymNameUuid);
- // derivedUnitDeterminationOrphanName.setUuid(derivedUnitDeterminationOrphanNameUuid);
- // tissueUuidNoAssociation.setUuid(tissueUuidNoAssociationUuid);
- // dnaSampleUuidIndividualsAssociation.setUuid(dnaSampleUuidIndividualsAssociationUuid);
- // fossilTypeDesignation.setUuid(fossilTypeDesignationUuid);
- //
- // occurrenceService.save(derivedUnitDeterminationTaxon);
- // occurrenceService.save(derivedUnitDeterminationName);
- // occurrenceService.save(derivedUnitDeterminationSynonym);
- // occurrenceService.save(derivedUnitDeterminationSynonymName);
- // occurrenceService.save(derivedUnitDeterminationOrphanName);
- // occurrenceService.save(tissueUuidNoAssociation);
- // occurrenceService.save(dnaSampleUuidIndividualsAssociation);
- // occurrenceService.save(fossilTypeDesignation);
- //
- // //NAMES
- // BotanicalName taxonName = BotanicalName.PARSED_NAME("Campanula patual");
- // BotanicalName synonymName = BotanicalName.PARSED_NAME("Syno nyma");
- // BotanicalName orphanName = BotanicalName.PARSED_NAME("Orphanus lonelia");
- // taxonName.setUuid(taxonNameUuid);
- // synonymName.setUuid(synonymNameUuid);
- // orphanName.setUuid(orphanNameUuid);
- //
- // //TAXON
- // Taxon taxon = Taxon.NewInstance(taxonName, null);
- // taxon.setUuid(taxonUuid);
- //
- // //SYNONYM
- // Synonym synonym = Synonym.NewInstance(synonymName, null);
- // synonym.setUuid(synoymUuid);
- // taxon.addSynonym(synonym, SynonymType.HOMOTYPIC_SYNONYM_OF());
- //
- // //IndividualsAssociation
- // TaxonDescription taxonDescription = TaxonDescription.NewInstance();
- // IndividualsAssociation association = IndividualsAssociation.NewInstance(dnaSampleUuidIndividualsAssociation);
- // association.setFeature(Feature.SPECIMEN());
- // taxonDescription.addElement(association);
- // taxon.addDescription(taxonDescription);
- //
- // //DETERMINATION EVENTS
- // DeterminationEvent.NewInstance(taxon, derivedUnitDeterminationTaxon);
- // DeterminationEvent.NewInstance(taxonName, derivedUnitDeterminationName);
- //// DeterminationEvent.NewInstance(synonym, derivedUnitDeterminationSynonym);//TODO determinationa on synonym not possible?
- // DeterminationEvent.NewInstance(synonymName, derivedUnitDeterminationSynonymName);
- // DeterminationEvent.NewInstance(orphanName, derivedUnitDeterminationOrphanName);
- //
- // //type designation
- // SpecimenTypeDesignation specimenTypeDesignation = SpecimenTypeDesignation.NewInstance();
- // specimenTypeDesignation.setTypeSpecimen(fossilTypeDesignation);
- // taxonName.addTypeDesignation(specimenTypeDesignation, false);
- //
- // taxonService.saveOrUpdate(taxon);
- //
- // commitAndStartNewTransaction(null);
- //
- // setComplete();
- // endTransaction();
- //
- //
- // try {
- // writeDbUnitDataSetFile(new String[] {
- // "SpecimenOrObservationBase",
- // "SpecimenOrObservationBase_DerivationEvent",
- // "DerivationEvent",
- // "DescriptionElementBase",
- // "DescriptionBase",
- // "TaxonBase",
- // "TypeDesignationBase",
- // "TaxonName",
- // "TaxonName_TypeDesignationBase",
- // "HomotypicalGroup",
- // "TeamOrPersonBase",
- // "DeterminationEvent"
- // }, "testAllKindsOfSpecimenAssociations");
- // } catch (FileNotFoundException e) {
- // e.printStackTrace();
- // }
+// //DERIVATIVES
+// //determination: taxon
+// DerivedUnit derivedUnitDeterminationTaxon = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+// derivedUnitDeterminationTaxon.setTitleCache("Derived Unit determined as taxon");
+// //determination: taxon name
+// DerivedUnit derivedUnitDeterminationName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+// derivedUnitDeterminationName.setTitleCache("Derived Unit determined as name");
+// //determination: synonym
+// DerivedUnit derivedUnitDeterminationSynonym = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+// derivedUnitDeterminationSynonym.setTitleCache("Derived Unit determined as synonym");
+// //determination: synonym name
+// DerivedUnit derivedUnitDeterminationSynonymName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+// derivedUnitDeterminationSynonymName.setTitleCache("Derived Unit determined as synonym name");
+// //determination: orphan name
+// DerivedUnit derivedUnitDeterminationOrphanName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+// derivedUnitDeterminationOrphanName.setTitleCache("Derived Unit determined as orphan name");
+// //no association
+// DerivedUnit tissueUuidNoAssociation = DerivedUnit.NewInstance(SpecimenOrObservationType.TissueSample);
+// tissueUuidNoAssociation.setTitleCache("tissue sample no association");
+// //individuals association with taxon
+// DerivedUnit dnaSampleUuidIndividualsAssociation = DerivedUnit.NewInstance(SpecimenOrObservationType.DnaSample);
+// dnaSampleUuidIndividualsAssociation.setTitleCache("dna associated via IndividualsAssociation");
+// //type specimen of taxon
+// DerivedUnit fossilTypeDesignation = DerivedUnit.NewInstance(SpecimenOrObservationType.Fossil);
+// fossilTypeDesignation.setTitleCache("Fossil with type designation");
+//
+// derivedUnitDeterminationTaxon.setUuid(derivedUnitDeterminationTaxonUuid);
+// derivedUnitDeterminationName.setUuid(derivedUnitDeterminationNameUuid);
+// derivedUnitDeterminationSynonym.setUuid(derivedUnitDeterminationSynonymUuid);
+// derivedUnitDeterminationSynonymName.setUuid(derivedUnitDeterminationSynonymNameUuid);
+// derivedUnitDeterminationOrphanName.setUuid(derivedUnitDeterminationOrphanNameUuid);
+// tissueUuidNoAssociation.setUuid(tissueUuidNoAssociationUuid);
+// dnaSampleUuidIndividualsAssociation.setUuid(dnaSampleUuidIndividualsAssociationUuid);
+// fossilTypeDesignation.setUuid(fossilTypeDesignationUuid);
+//
+// occurrenceService.save(derivedUnitDeterminationTaxon);
+// occurrenceService.save(derivedUnitDeterminationName);
+// occurrenceService.save(derivedUnitDeterminationSynonym);
+// occurrenceService.save(derivedUnitDeterminationSynonymName);
+// occurrenceService.save(derivedUnitDeterminationOrphanName);
+// occurrenceService.save(tissueUuidNoAssociation);
+// occurrenceService.save(dnaSampleUuidIndividualsAssociation);
+// occurrenceService.save(fossilTypeDesignation);
+//
+// //NAMES
+// TaxonName taxonName = TaxonNameFactory.PARSED_BOTANICAL("Campanula patual");
+// TaxonName synonymName = TaxonNameFactory.PARSED_BOTANICAL("Syno nyma");
+// TaxonName orphanName = TaxonNameFactory.PARSED_BOTANICAL("Orphanus lonelia");
+// taxonName.setUuid(taxonNameUuid);
+// synonymName.setUuid(synonymNameUuid);
+// orphanName.setUuid(orphanNameUuid);
+//
+// //TAXON
+// Taxon taxon = Taxon.NewInstance(taxonName, null);
+// taxon.setUuid(taxonUuid);
+//
+// Classification classification = Classification.NewInstance("Test Classification");
+// TaxonNode taxonNode = classification.addChildTaxon(taxon, null, null);
+// taxonNode.setUuid(taxonNodeUuid);
+//
+// //SYNONYM
+// Synonym synonym = Synonym.NewInstance(synonymName, null);
+// synonym.setUuid(synoymUuid);
+// taxon.addSynonym(synonym, SynonymType.HOMOTYPIC_SYNONYM_OF());
+//
+// //IndividualsAssociation
+// TaxonDescription taxonDescription = TaxonDescription.NewInstance();
+// IndividualsAssociation association = IndividualsAssociation.NewInstance(dnaSampleUuidIndividualsAssociation);
+// association.setFeature(Feature.SPECIMEN());
+// taxonDescription.addElement(association);
+// taxon.addDescription(taxonDescription);
+//
+// //DETERMINATION EVENTS
+// DeterminationEvent.NewInstance(taxon, derivedUnitDeterminationTaxon);
+// DeterminationEvent.NewInstance(taxonName, derivedUnitDeterminationName);
+// // DeterminationEvent.NewInstance(synonym, derivedUnitDeterminationSynonym);//TODO determinationa on synonym not possible?
+// DeterminationEvent.NewInstance(synonymName, derivedUnitDeterminationSynonymName);
+// DeterminationEvent.NewInstance(orphanName, derivedUnitDeterminationOrphanName);
+//
+// //type designation
+// SpecimenTypeDesignation specimenTypeDesignation = SpecimenTypeDesignation.NewInstance();
+// specimenTypeDesignation.setTypeSpecimen(fossilTypeDesignation);
+// taxonName.addTypeDesignation(specimenTypeDesignation, false);
+//
+// classificationService.save(classification);
+// taxonService.saveOrUpdate(taxon);
+// taxonNodeService.save(taxonNode);
+//
+// commitAndStartNewTransaction(null);
+//
+// setComplete();
+// endTransaction();
+//
+//
+// try {
+// writeDbUnitDataSetFile(new String[] {
+// "SpecimenOrObservationBase",
+// "SpecimenOrObservationBase_DerivationEvent",
+// "DerivationEvent",
+// "DescriptionElementBase",
+// "DescriptionBase",
+// "TaxonBase",
+// "TaxonNode",
+// "Classification",
+// "TypeDesignationBase",
+// "TaxonName",
+// "TaxonName_TypeDesignationBase",
+// "HomotypicalGroup",
+// "TeamOrPersonBase",
+// "LanguageString",
+// "DeterminationEvent"
+// }, "testAllKindsOfSpecimenAssociations");
+// } catch (FileNotFoundException e) {
+// e.printStackTrace();
+// }
}
UUID dnaSampleUuidIndividualsAssociationUuid = UUID.fromString("1fb53903-c9b9-4078-8297-5b86aec7fe21");
UUID fossilTypeDesignationUuid = UUID.fromString("42ec8dcf-a923-4256-bbd5-b0d10f4de5e2");
+ UUID taxonNodeUuid = UUID.fromString("6b8b6ff9-66e4-4496-8e5a-7d03bdf9a076");
UUID taxonUuid = UUID.fromString("07cc47a5-1a63-46a1-8366-0d59d2b90d5b");
UUID synoymUuid = UUID.fromString("c16bcd9b-7d18-4fb5-af60-f9ef14c1d3a9");
Taxon taxon = Taxon.NewInstance(taxonName, null);
taxon.setUuid(taxonUuid);
+ Classification classification = Classification.NewInstance("Test Classification");
+ TaxonNode taxonNode = classification.addChildTaxon(taxon, null, null);
+ taxonNode.setUuid(taxonNodeUuid);
+
//SYNONYM
Synonym synonym = Synonym.NewInstance(synonymName, null);
synonym.setUuid(synoymUuid);
//DETERMINATION EVENTS
DeterminationEvent.NewInstance(taxon, derivedUnitDeterminationTaxon);
DeterminationEvent.NewInstance(taxonName, derivedUnitDeterminationName);
-// DeterminationEvent.NewInstance(synonym, derivedUnitDeterminationSynonym);//TODO determinationa on synonym not possible?
+ // DeterminationEvent.NewInstance(synonym, derivedUnitDeterminationSynonym);//TODO determinationa on synonym not possible?
DeterminationEvent.NewInstance(synonymName, derivedUnitDeterminationSynonymName);
DeterminationEvent.NewInstance(orphanName, derivedUnitDeterminationOrphanName);
specimenTypeDesignation.setTypeSpecimen(fossilTypeDesignation);
taxonName.addTypeDesignation(specimenTypeDesignation, false);
+ classificationService.saveOrUpdate(classification);
taxonService.saveOrUpdate(taxon);
+ taxonNodeService.saveOrUpdate(taxonNode);
commitAndStartNewTransaction(null);
"DescriptionElementBase",
"DescriptionBase",
"TaxonBase",
+ "TaxonNode",
+ "Classification",
"TypeDesignationBase",
"TaxonName",
"TaxonName_TypeDesignationBase",
"HomotypicalGroup",
"TeamOrPersonBase",
+ "LanguageString",
"DeterminationEvent"
}, "testAllKindsOfSpecimenAssociations");
} catch (FileNotFoundException e) {