Project

General

Profile

Revision 7426d467

ID7426d46774e1e54247eea67da3bfdcb687f5f8d0
Parent 6e5fc434
Child d9b27602

Added by Patrick Plitzner over 2 years ago

ref #7095 Enhance quicker service for taxon associated specimens

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java
591 591
        return results;
592 592
    }
593 593

  
594

  
595
    @Override
596
    public List<SpecimenNodeWrapper> listUuidAndTitleCacheByAssociatedTaxon(List<UUID> taxonNodeUuids,
597
            Integer limit, Integer start, List<OrderHint> orderHints){
598

  
599
        String queryString = "SELECT "
594
    private List<SpecimenNodeWrapper> queryIndividualAssociatedSpecimen(List<UUID> taxonNodeUuids,
595
            Integer limit, Integer start, List<OrderHint> orderHintss){
596
        String queryString =  "SELECT "
600 597
                + "de.associatedSpecimenOrObservation.uuid, "
601 598
                + "de.associatedSpecimenOrObservation.id, "
602 599
                + "de.associatedSpecimenOrObservation.titleCache, "
603 600
                + "tn "
604
                + " FROM DescriptionElementBase AS de" +
605
                " LEFT JOIN de.inDescription AS d" +
606
                " LEFT JOIN d.taxon AS t" +
607
                " JOIN t.taxonNodes AS tn" +
608
                " WHERE d.class = 'TaxonDescription' "
601
                + "FROM DescriptionElementBase AS de "
602
                + "LEFT JOIN de.inDescription AS d "
603
                + "LEFT JOIN d.taxon AS t "
604
                + "JOIN t.taxonNodes AS tn "
605
                + "WHERE d.class = 'TaxonDescription' "
609 606
                + "AND tn.uuid in (:taxonNodeUuids) "
610 607
                ;
608
        Query query = getSession().createQuery(queryString);
609

  
610
        query.setParameterList("taxonNodeUuids", taxonNodeUuids);
611

  
612
        if(limit != null) {
613
            if(start != null) {
614
                query.setFirstResult(start);
615
            } else {
616
                query.setFirstResult(0);
617
            }
618
            query.setMaxResults(limit);
619
        }
620

  
621
        List<SpecimenNodeWrapper> list = new ArrayList<>();
622
        List<Object[]> result = query.list();
623
        for(Object[] object : result){
624
            list.add(new SpecimenNodeWrapper(
625
                    new UuidAndTitleCache<SpecimenOrObservationBase>(
626
                            (UUID) object[0],
627
                            (Integer) object[1],
628
                            (String) object[2]),
629
                    (TaxonNode)object[3]));
630
        }
631
        return list;
632
    }
633

  
634
    private List<SpecimenNodeWrapper> queryTypeSpecimen(List<UUID> taxonNodeUuids,
635
            Integer limit, Integer start, List<OrderHint> orderHints){
636
        String queryString =  "SELECT "
637
                + "td.typeSpecimen.uuid, "
638
                + "td.typeSpecimen.id, "
639
                + "td.typeSpecimen.titleCache, "
640
                + "tn "
641
                + "FROM SpecimenTypeDesignation AS td "
642
                + "LEFT JOIN td.typifiedNames AS tn "
643
                + "LEFT JOIN tn.taxonBases AS t "
644
                + "JOIN t.taxonNodes AS tn "
645
                + "WHERE tn.uuid in (:taxonNodeUuids) "
646
                ;
647
        Query query = getSession().createQuery(queryString);
648

  
649
        query.setParameterList("taxonNodeUuids", taxonNodeUuids);
650

  
651
        if(limit != null) {
652
            if(start != null) {
653
                query.setFirstResult(start);
654
            } else {
655
                query.setFirstResult(0);
656
            }
657
            query.setMaxResults(limit);
658
        }
659

  
660
        List<SpecimenNodeWrapper> list = new ArrayList<>();
661
        List<Object[]> result = query.list();
662
        for(Object[] object : result){
663
            list.add(new SpecimenNodeWrapper(
664
                    new UuidAndTitleCache<SpecimenOrObservationBase>(
665
                            (UUID) object[0],
666
                            (Integer) object[1],
667
                            (String) object[2]),
668
                    (TaxonNode)object[3]));
669
        }
670
        return list;
671
    }
672

  
673
    private List<SpecimenNodeWrapper> queryTaxonDeterminations(List<UUID> taxonNodeUuids,
674
            Integer limit, Integer start, List<OrderHint> orderHints){
675
        String queryString =  "SELECT "
676
                + "det.identifiedUnit.uuid, "
677
                + "det.identifiedUnit.id, "
678
                + "det.identifiedUnit.titleCache, "
679
                + "tn "
680
                + "FROM DeterminationEvent AS det "
681
                + "LEFT JOIN det.taxon AS t "
682
                + "JOIN t.taxonNodes AS tn "
683
                + "WHERE tn.uuid in (:taxonNodeUuids) "
684
                ;
685
        Query query = getSession().createQuery(queryString);
686

  
687
        query.setParameterList("taxonNodeUuids", taxonNodeUuids);
688

  
689
        if(limit != null) {
690
            if(start != null) {
691
                query.setFirstResult(start);
692
            } else {
693
                query.setFirstResult(0);
694
            }
695
            query.setMaxResults(limit);
696
        }
611 697

  
698
        List<SpecimenNodeWrapper> list = new ArrayList<>();
699
        List<Object[]> result = query.list();
700
        for(Object[] object : result){
701
            list.add(new SpecimenNodeWrapper(
702
                    new UuidAndTitleCache<SpecimenOrObservationBase>(
703
                            (UUID) object[0],
704
                            (Integer) object[1],
705
                            (String) object[2]),
706
                    (TaxonNode)object[3]));
707
        }
708
        return list;
709
    }
710

  
711
    private List<SpecimenNodeWrapper> queryTaxonNameDeterminations(List<UUID> taxonNodeUuids,
712
            Integer limit, Integer start, List<OrderHint> orderHints){
713
        String queryString =  "SELECT "
714
                + "det.identifiedUnit.uuid, "
715
                + "det.identifiedUnit.id, "
716
                + "det.identifiedUnit.titleCache, "
717
                + "tn "
718
                + "FROM DeterminationEvent AS det "
719
                + "LEFT JOIN det.taxonName AS n "
720
                + "LEFT JOIN n.taxonBases AS t "
721
                + "JOIN t.taxonNodes AS tn "
722
                + "WHERE tn.uuid in (:taxonNodeUuids) "
723
                ;
612 724
        Query query = getSession().createQuery(queryString);
613 725

  
614 726
        query.setParameterList("taxonNodeUuids", taxonNodeUuids);
......
636 748
    }
637 749

  
638 750
    @Override
751
    public List<SpecimenNodeWrapper> listUuidAndTitleCacheByAssociatedTaxon(List<UUID> taxonNodeUuids,
752
            Integer limit, Integer start, List<OrderHint> orderHints){
753

  
754
        List<SpecimenNodeWrapper> list = new ArrayList<>();
755
        list.addAll(queryIndividualAssociatedSpecimen(taxonNodeUuids, limit, start, orderHints));
756
        list.addAll(queryTaxonDeterminations(taxonNodeUuids, limit, start, orderHints));
757
        list.addAll(queryTaxonNameDeterminations(taxonNodeUuids, limit, start, orderHints));
758
        list.addAll(queryTypeSpecimen(taxonNodeUuids, limit, start, orderHints));
759

  
760
        return list;
761
    }
762

  
763
    @Override
639 764
    public <T extends SpecimenOrObservationBase> List<UuidAndTitleCache<SpecimenOrObservationBase>> listUuidAndTitleCacheByAssociatedTaxon(Class<T> clazz, Taxon associatedTaxon,
640 765
            Integer limit, Integer start, List<OrderHint> orderHints){
641 766
        Query query = createSpecimenQuery("sob.uuid, sob.id, sob.titleCache", clazz, associatedTaxon, limit, start, orderHints, null);
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/occurrence/IOccurrenceDao.java
28 28
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
29 29
import eu.etaxonomy.cdm.model.taxon.Taxon;
30 30
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
31
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
31 32
import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;
32 33
import eu.etaxonomy.cdm.persistence.dao.initializer.IBeanInitializer;
33 34
import eu.etaxonomy.cdm.persistence.dto.SpecimenNodeWrapper;
......
313 314
	public <T extends SpecimenOrObservationBase> List<UuidAndTitleCache<SpecimenOrObservationBase>> listUuidAndTitleCacheByAssociatedTaxon(Class<T> type, Taxon associatedTaxon,
314 315
	        Integer limit, Integer start, List<OrderHint> orderHints);
315 316

  
317
    /**
318
     * The method will search for specimen associated with the taxon nodes.<br>
319
     * It will search for 3 possible association types:
320
     * : <br>
321
     *  - via IndividualAssociations of the taxon<br>
322
     *  - via TypeDesignations of the taxon name<br>
323
     *  - via Determinations of the taxon or taxon name<br>
324
     *  <br>
325
     *  (more are covered in
326
     * {@link IOccurrenceDao#findOccurrences(Class, String, String, SpecimenOrObservationType, Taxon, TaxonName, MatchMode, Integer, Integer, List, List)}
327
     * @param taxonNodeUuids a list of {@link UUID}s of the taxon nodes
328
     * @param limit
329
     * @param start
330
     * @param orderHints
331
     * @return a list of {@link SpecimenNodeWrapper} containing the {@link TaxonNode}
332
     * and the corresponding {@link UuidAndTitleCache}  object for the specimen found for this taxon node
333
     */
316 334
	public List<SpecimenNodeWrapper> listUuidAndTitleCacheByAssociatedTaxon(List<UUID> taxonNodeUuids,
317 335
            Integer limit, Integer start, List<OrderHint> orderHints);
318 336

  
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IOccurrenceService.java
53 53
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
54 54
import eu.etaxonomy.cdm.model.taxon.Taxon;
55 55
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
56
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
56 57
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
57 58
import eu.etaxonomy.cdm.persistence.dao.initializer.IBeanInitializer;
58 59
import eu.etaxonomy.cdm.persistence.dto.SpecimenNodeWrapper;
......
259 260
    public <T extends SpecimenOrObservationBase> List<T> listByAssociatedTaxon(Class<T> type, Set<TaxonRelationshipEdge> includeRelationships,
260 261
            Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);
261 262

  
262

  
263
    /**
264
     * The method will search for specimen associated with the taxon nodes.<br>
265
     * It will search for 3 possible association types: <br>
266
     * - via IndividualAssociations of the taxon<br>
267
     *  - via TypeDesignations of the taxon name<br>
268
     *  - via Determinations of the taxon or taxon name<br>
269
     * <br>
270
     * more are covered in
271
     * {@link IOccurrenceService#findByTitle(IIdentifiableEntityServiceConfigurator)}
272
     * @param taxonNodeUuids
273
     *            a list of {@link UUID}s of the taxon nodes
274
     * @param limit
275
     * @param start
276
     * @param orderHints
277
     * @return a list of {@link SpecimenNodeWrapper} containing the
278
     *         {@link TaxonNode} and the corresponding {@link UuidAndTitleCache}
279
     *         object for the specimen found for this taxon node
280
     */
263 281
    public List<SpecimenNodeWrapper> listUuidAndTitleCacheByAssociatedTaxon(List<UUID> taxonNodeUuids,
264 282
            Integer limit, Integer start, List<OrderHint> orderHints);
265 283

  
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/WorkingSetService.java
108 108

  
109 109
    @Override
110 110
    public Collection<SpecimenNodeWrapper> loadSpecimens(WorkingSet workingSet){
111

  
112
        List<SpecimenNodeWrapper> specimenCache = new ArrayList<>();
113 111
        //set filter parameters
114 112
        TaxonNodeFilter filter = TaxonNodeFilter.NewRankInstance(workingSet.getMinRank(), workingSet.getMaxRank());
115 113
        workingSet.getGeoFilter().forEach(area -> filter.orArea(area.getUuid()));
......
118 116

  
119 117
        List<UUID> filteredNodes = taxonNodeService.uuidList(filter);
120 118
        return occurrenceService.listUuidAndTitleCacheByAssociatedTaxon(filteredNodes, null, null, null);
121
//        for (UUID uuid : filteredNodes) {
122
//            //TODO implement occurrence service for taxon nodes
123
//            // let it return UuidAndTitleCache
124
//            TaxonNode taxonNode = taxonNodeService.load(uuid);
125
//            Taxon taxon = taxonNode.getTaxon();
126
//            if(taxon!=null){
127
//                FindOccurrencesConfigurator config = new FindOccurrencesConfigurator();
128
//                config.setAssociatedTaxonUuid(taxon.getUuid());
129
////                List<UuidAndTitleCache<SpecimenOrObservationBase>> list = occurrenceService.findByTitleUuidAndTitleCache(config).getRecords();
130
//                List<SpecimenOrObservationBase> list =
131
//                        occurrenceService.pageByAssociatedTaxon(SpecimenOrObservationBase.class,
132
//                                null, taxon, null, null, null, null, null).getRecords();
133
//                list.forEach(specimen ->{
134
//                    specimenCache.add(new SpecimenNodeWrapper(new UuidAndTitleCache<>(specimen.getUuid(), specimen.getId(), specimen.getTitleCache()), taxonNode));
135
//                });
136
//            }
137
//        }
138
//        return specimenCache;
139 119
    }
140 120

  
141 121
    @Override
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/OccurrenceServiceTest.java
16 16
import static org.junit.Assert.assertTrue;
17 17

  
18 18
import java.io.FileNotFoundException;
19
import java.util.Collections;
19 20
import java.util.List;
20 21
import java.util.Set;
21 22
import java.util.UUID;
23
import java.util.stream.Collectors;
22 24

  
23 25
import org.apache.log4j.Logger;
24 26
import org.junit.Test;
......
57 59
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
58 60
import eu.etaxonomy.cdm.model.reference.Reference;
59 61
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
62
import eu.etaxonomy.cdm.model.taxon.Classification;
60 63
import eu.etaxonomy.cdm.model.taxon.Synonym;
61 64
import eu.etaxonomy.cdm.model.taxon.SynonymType;
62 65
import eu.etaxonomy.cdm.model.taxon.Taxon;
63 66
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
67
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
68
import eu.etaxonomy.cdm.persistence.dto.SpecimenNodeWrapper;
64 69
import eu.etaxonomy.cdm.persistence.query.AssignmentStatus;
65 70
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
66 71
import eu.etaxonomy.cdm.test.unitils.CleanSweepInsertLoadStrategy;
......
85 90
    private ITaxonService taxonService;
86 91

  
87 92
    @SpringBeanByType
93
    private ITaxonNodeService taxonNodeService;
94

  
95
    @SpringBeanByType
96
    private IClassificationService classificationService;
97

  
98
    @SpringBeanByType
88 99
    private INameService nameService;
89 100

  
90 101
    @SpringBeanByType
......
1149 1160

  
1150 1161
    }
1151 1162

  
1163
    @Test
1164
    @DataSet(loadStrategy = CleanSweepInsertLoadStrategy.class, value = "OccurrenceServiceTest-testAllKindsOfSpecimenAssociations.xml")
1165
    public void testListUuidAndTitleCacheByAssociatedTaxon() {
1166
        UUID taxonNodeUuid = UUID.fromString("6b8b6ff9-66e4-4496-8e5a-7d03bdf9a076");
1167
        /**
1168
         * Structure is as follows:
1169
         *
1170
         * Taxon ----IndividualsAssociation---> DnaSample
1171
         * Taxon ----TypeDesignation---> Fossil
1172
         * Taxon ----Determination ---> PreservedSpecimenA
1173
         *
1174
         * Taxon ---> Taxon Name ----Determination ---> PreservedSpecimenB
1175
         *
1176
         * Taxon ---> Synonym ---> SynonymName ----Determination---> PreservedSpecimenC
1177
         *
1178
         * Orphan Name (not associated with any taxon) ----Determination ---> PreservedSpecimenD
1179
         */
1180

  
1181
        //UUIDS
1182
        UUID derivedUnitDeterminationTaxonUuid = UUID.fromString("941b8b22-1925-4b91-8ff8-97114499bb22");
1183
        UUID derivedUnitDeterminationNameUuid = UUID.fromString("0cdc7a57-6f55-45c8-b3e5-523748c381e7");
1184

  
1185
        UUID derivedUnitDeterminationSynonymUuid = UUID.fromString("8eb94a7d-c802-49a7-bc10-c26de20a52c2");
1186
        UUID derivedUnitDeterminationSynonymNameUuid = UUID.fromString("d940a940-8caf-4a52-b1d8-ba4aad7ddae2");
1187

  
1188
        UUID derivedUnitDeterminationOrphanNameUuid = UUID.fromString("587b7297-7d59-4f59-8ef3-c7a559cadeca");
1189

  
1190
        UUID tissueUuidNoAssociationUuid = UUID.fromString("93e94260-5107-4b2c-9ce4-da9e1a4e7cb9");
1191
        UUID dnaSampleUuidIndividualsAssociationUuid = UUID.fromString("1fb53903-c9b9-4078-8297-5b86aec7fe21");
1192
        UUID fossilTypeDesignationUuid = UUID.fromString("42ec8dcf-a923-4256-bbd5-b0d10f4de5e2");
1193

  
1194
        UUID taxonUuid = UUID.fromString("07cc47a5-1a63-46a1-8366-0d59d2b90d5b");
1195
        UUID synoymUuid = UUID.fromString("c16bcd9b-7d18-4fb5-af60-f9ef14c1d3a9");
1196

  
1197
        UUID taxonNameUuid = UUID.fromString("e59b95c0-9ad6-48be-af62-a982ba72b917");
1198
        UUID synonymNameUuid = UUID.fromString("39f04b2a-b8bd-46e8-9102-ab665c64ec8e");
1199
        UUID orphanNameUuid = UUID.fromString("d8e56365-3ad9-4b0e-88bf-acaaab223a9b");
1200

  
1201
        /*
1202
         * search for taxon node
1203
         * should retrieve all specimens associated via
1204
         *  - type designations (fossil)
1205
         *  - individuals associations (dnaSample)
1206
         *  - determinations on
1207
         *   - taxon (specimenA)
1208
         *   - taxon name (specimenA, specimenB)
1209
         */
1210
        FindOccurrencesConfigurator config = new FindOccurrencesConfigurator();
1211
        config.setAssociatedTaxonUuid(taxonUuid);
1212
        List<SpecimenNodeWrapper> specimens = occurrenceService
1213
                .listUuidAndTitleCacheByAssociatedTaxon(Collections.singletonList(taxonNodeUuid), null, null, null);
1214
        List<UUID> uuidList = specimens.stream().map(specimen ->
1215
        specimen.getUuidAndTitleCache().getUuid()).collect(Collectors.toList());
1216
        assertTrue(uuidList.contains(derivedUnitDeterminationNameUuid));
1217
        assertTrue(uuidList.contains(derivedUnitDeterminationTaxonUuid));
1218
        assertFalse(uuidList.contains(derivedUnitDeterminationSynonymNameUuid));
1219
        assertTrue(uuidList.contains(dnaSampleUuidIndividualsAssociationUuid));
1220
        assertTrue(uuidList.contains(fossilTypeDesignationUuid));
1221
        assertFalse(uuidList.contains(tissueUuidNoAssociationUuid));
1222
        assertFalse(uuidList.contains(derivedUnitDeterminationOrphanNameUuid));
1223
        assertEquals("Wrong number of associated specimens", 4, specimens.size());
1224
    }
1225

  
1152 1226
    /**
1153 1227
     * This will test the retrieval of specimens that are in any way associated
1154 1228
     * with a taxon resp. taxon name via type designation, determination event
1155 1229
     * or individuals associations. It will also consider synonym relationships.
1156 1230
     */
1157 1231
    @Test
1158
    @DataSet(loadStrategy = CleanSweepInsertLoadStrategy.class, value = "OccurrenceServiceTest.testAllKindsOfSpecimenAssociations.xml")
1232
    @DataSet(loadStrategy = CleanSweepInsertLoadStrategy.class, value = "OccurrenceServiceTest-testAllKindsOfSpecimenAssociations.xml")
1159 1233
    public void testAllKindsOfSpecimenAssociations() {
1160 1234

  
1161 1235
        /**
......
1298 1372
        assertTrue(specimens.contains(derivedUnitDeterminationOrphanName));
1299 1373
        assertEquals("Wrong number of associated specimens", 1, specimens.size());
1300 1374

  
1301
        //        //DERIVATIVES
1302
        //        //determination: taxon
1303
        //        DerivedUnit derivedUnitDeterminationTaxon = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
1304
        //        derivedUnitDeterminationTaxon.setTitleCache("Derived Unit determined as taxon");
1305
        //        //determination: taxon name
1306
        //        DerivedUnit derivedUnitDeterminationName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
1307
        //        derivedUnitDeterminationName.setTitleCache("Derived Unit determined as name");
1308
        //        //determination: synonym
1309
        //        DerivedUnit derivedUnitDeterminationSynonym = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
1310
        //        derivedUnitDeterminationSynonym.setTitleCache("Derived Unit determined as synonym");
1311
        //        //determination: synonym name
1312
        //        DerivedUnit derivedUnitDeterminationSynonymName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
1313
        //        derivedUnitDeterminationSynonymName.setTitleCache("Derived Unit determined as synonym name");
1314
        //        //determination: orphan name
1315
        //        DerivedUnit derivedUnitDeterminationOrphanName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
1316
        //        derivedUnitDeterminationOrphanName.setTitleCache("Derived Unit determined as orphan name");
1317
        //        //no association
1318
        //        DerivedUnit tissueUuidNoAssociation = DerivedUnit.NewInstance(SpecimenOrObservationType.TissueSample);
1319
        //        tissueUuidNoAssociation.setTitleCache("tissue sample no association");
1320
        //        //individuals association with taxon
1321
        //        DerivedUnit dnaSampleUuidIndividualsAssociation = DerivedUnit.NewInstance(SpecimenOrObservationType.DnaSample);
1322
        //        dnaSampleUuidIndividualsAssociation.setTitleCache("dna associated via IndividualsAssociation");
1323
        //        //type specimen of taxon
1324
        //        DerivedUnit fossilTypeDesignation = DerivedUnit.NewInstance(SpecimenOrObservationType.Fossil);
1325
        //        fossilTypeDesignation.setTitleCache("Fossil with type designation");
1326
        //
1327
        //        derivedUnitDeterminationTaxon.setUuid(derivedUnitDeterminationTaxonUuid);
1328
        //        derivedUnitDeterminationName.setUuid(derivedUnitDeterminationNameUuid);
1329
        //        derivedUnitDeterminationSynonym.setUuid(derivedUnitDeterminationSynonymUuid);
1330
        //        derivedUnitDeterminationSynonymName.setUuid(derivedUnitDeterminationSynonymNameUuid);
1331
        //        derivedUnitDeterminationOrphanName.setUuid(derivedUnitDeterminationOrphanNameUuid);
1332
        //        tissueUuidNoAssociation.setUuid(tissueUuidNoAssociationUuid);
1333
        //        dnaSampleUuidIndividualsAssociation.setUuid(dnaSampleUuidIndividualsAssociationUuid);
1334
        //        fossilTypeDesignation.setUuid(fossilTypeDesignationUuid);
1335
        //
1336
        //        occurrenceService.save(derivedUnitDeterminationTaxon);
1337
        //        occurrenceService.save(derivedUnitDeterminationName);
1338
        //        occurrenceService.save(derivedUnitDeterminationSynonym);
1339
        //        occurrenceService.save(derivedUnitDeterminationSynonymName);
1340
        //        occurrenceService.save(derivedUnitDeterminationOrphanName);
1341
        //        occurrenceService.save(tissueUuidNoAssociation);
1342
        //        occurrenceService.save(dnaSampleUuidIndividualsAssociation);
1343
        //        occurrenceService.save(fossilTypeDesignation);
1344
        //
1345
        //        //NAMES
1346
        //        BotanicalName taxonName = BotanicalName.PARSED_NAME("Campanula patual");
1347
        //        BotanicalName synonymName = BotanicalName.PARSED_NAME("Syno nyma");
1348
        //        BotanicalName orphanName = BotanicalName.PARSED_NAME("Orphanus lonelia");
1349
        //        taxonName.setUuid(taxonNameUuid);
1350
        //        synonymName.setUuid(synonymNameUuid);
1351
        //        orphanName.setUuid(orphanNameUuid);
1352
        //
1353
        //        //TAXON
1354
        //        Taxon taxon = Taxon.NewInstance(taxonName, null);
1355
        //        taxon.setUuid(taxonUuid);
1356
        //
1357
        //        //SYNONYM
1358
        //        Synonym synonym = Synonym.NewInstance(synonymName, null);
1359
        //        synonym.setUuid(synoymUuid);
1360
        //        taxon.addSynonym(synonym, SynonymType.HOMOTYPIC_SYNONYM_OF());
1361
        //
1362
        //        //IndividualsAssociation
1363
        //        TaxonDescription taxonDescription = TaxonDescription.NewInstance();
1364
        //        IndividualsAssociation association = IndividualsAssociation.NewInstance(dnaSampleUuidIndividualsAssociation);
1365
        //        association.setFeature(Feature.SPECIMEN());
1366
        //        taxonDescription.addElement(association);
1367
        //        taxon.addDescription(taxonDescription);
1368
        //
1369
        //        //DETERMINATION EVENTS
1370
        //        DeterminationEvent.NewInstance(taxon, derivedUnitDeterminationTaxon);
1371
        //        DeterminationEvent.NewInstance(taxonName, derivedUnitDeterminationName);
1372
        ////        DeterminationEvent.NewInstance(synonym, derivedUnitDeterminationSynonym);//TODO determinationa on synonym not possible?
1373
        //        DeterminationEvent.NewInstance(synonymName, derivedUnitDeterminationSynonymName);
1374
        //        DeterminationEvent.NewInstance(orphanName, derivedUnitDeterminationOrphanName);
1375
        //
1376
        //        //type designation
1377
        //        SpecimenTypeDesignation specimenTypeDesignation = SpecimenTypeDesignation.NewInstance();
1378
        //        specimenTypeDesignation.setTypeSpecimen(fossilTypeDesignation);
1379
        //        taxonName.addTypeDesignation(specimenTypeDesignation, false);
1380
        //
1381
        //        taxonService.saveOrUpdate(taxon);
1382
        //
1383
        //        commitAndStartNewTransaction(null);
1384
        //
1385
        //        setComplete();
1386
        //        endTransaction();
1387
        //
1388
        //
1389
        //        try {
1390
        //            writeDbUnitDataSetFile(new String[] {
1391
        //                    "SpecimenOrObservationBase",
1392
        //                    "SpecimenOrObservationBase_DerivationEvent",
1393
        //                    "DerivationEvent",
1394
        //                    "DescriptionElementBase",
1395
        //                    "DescriptionBase",
1396
        //                    "TaxonBase",
1397
        //                    "TypeDesignationBase",
1398
        //                    "TaxonName",
1399
        //                    "TaxonName_TypeDesignationBase",
1400
        //                    "HomotypicalGroup",
1401
        //                    "TeamOrPersonBase",
1402
        //                    "DeterminationEvent"
1403
        //            }, "testAllKindsOfSpecimenAssociations");
1404
        //        } catch (FileNotFoundException e) {
1405
        //            e.printStackTrace();
1406
        //        }
1375
//        //DERIVATIVES
1376
//        //determination: taxon
1377
//        DerivedUnit derivedUnitDeterminationTaxon = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
1378
//        derivedUnitDeterminationTaxon.setTitleCache("Derived Unit determined as taxon");
1379
//        //determination: taxon name
1380
//        DerivedUnit derivedUnitDeterminationName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
1381
//        derivedUnitDeterminationName.setTitleCache("Derived Unit determined as name");
1382
//        //determination: synonym
1383
//        DerivedUnit derivedUnitDeterminationSynonym = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
1384
//        derivedUnitDeterminationSynonym.setTitleCache("Derived Unit determined as synonym");
1385
//        //determination: synonym name
1386
//        DerivedUnit derivedUnitDeterminationSynonymName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
1387
//        derivedUnitDeterminationSynonymName.setTitleCache("Derived Unit determined as synonym name");
1388
//        //determination: orphan name
1389
//        DerivedUnit derivedUnitDeterminationOrphanName = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
1390
//        derivedUnitDeterminationOrphanName.setTitleCache("Derived Unit determined as orphan name");
1391
//        //no association
1392
//        DerivedUnit tissueUuidNoAssociation = DerivedUnit.NewInstance(SpecimenOrObservationType.TissueSample);
1393
//        tissueUuidNoAssociation.setTitleCache("tissue sample no association");
1394
//        //individuals association with taxon
1395
//        DerivedUnit dnaSampleUuidIndividualsAssociation = DerivedUnit.NewInstance(SpecimenOrObservationType.DnaSample);
1396
//        dnaSampleUuidIndividualsAssociation.setTitleCache("dna associated via IndividualsAssociation");
1397
//        //type specimen of taxon
1398
//        DerivedUnit fossilTypeDesignation = DerivedUnit.NewInstance(SpecimenOrObservationType.Fossil);
1399
//        fossilTypeDesignation.setTitleCache("Fossil with type designation");
1400
//
1401
//        derivedUnitDeterminationTaxon.setUuid(derivedUnitDeterminationTaxonUuid);
1402
//        derivedUnitDeterminationName.setUuid(derivedUnitDeterminationNameUuid);
1403
//        derivedUnitDeterminationSynonym.setUuid(derivedUnitDeterminationSynonymUuid);
1404
//        derivedUnitDeterminationSynonymName.setUuid(derivedUnitDeterminationSynonymNameUuid);
1405
//        derivedUnitDeterminationOrphanName.setUuid(derivedUnitDeterminationOrphanNameUuid);
1406
//        tissueUuidNoAssociation.setUuid(tissueUuidNoAssociationUuid);
1407
//        dnaSampleUuidIndividualsAssociation.setUuid(dnaSampleUuidIndividualsAssociationUuid);
1408
//        fossilTypeDesignation.setUuid(fossilTypeDesignationUuid);
1409
//
1410
//        occurrenceService.save(derivedUnitDeterminationTaxon);
1411
//        occurrenceService.save(derivedUnitDeterminationName);
1412
//        occurrenceService.save(derivedUnitDeterminationSynonym);
1413
//        occurrenceService.save(derivedUnitDeterminationSynonymName);
1414
//        occurrenceService.save(derivedUnitDeterminationOrphanName);
1415
//        occurrenceService.save(tissueUuidNoAssociation);
1416
//        occurrenceService.save(dnaSampleUuidIndividualsAssociation);
1417
//        occurrenceService.save(fossilTypeDesignation);
1418
//
1419
//        //NAMES
1420
//        TaxonName taxonName = TaxonNameFactory.PARSED_BOTANICAL("Campanula patual");
1421
//        TaxonName synonymName = TaxonNameFactory.PARSED_BOTANICAL("Syno nyma");
1422
//        TaxonName orphanName = TaxonNameFactory.PARSED_BOTANICAL("Orphanus lonelia");
1423
//        taxonName.setUuid(taxonNameUuid);
1424
//        synonymName.setUuid(synonymNameUuid);
1425
//        orphanName.setUuid(orphanNameUuid);
1426
//
1427
//        //TAXON
1428
//        Taxon taxon = Taxon.NewInstance(taxonName, null);
1429
//        taxon.setUuid(taxonUuid);
1430
//
1431
//        Classification classification = Classification.NewInstance("Test Classification");
1432
//        TaxonNode taxonNode = classification.addChildTaxon(taxon, null, null);
1433
//        taxonNode.setUuid(taxonNodeUuid);
1434
//
1435
//        //SYNONYM
1436
//        Synonym synonym = Synonym.NewInstance(synonymName, null);
1437
//        synonym.setUuid(synoymUuid);
1438
//        taxon.addSynonym(synonym, SynonymType.HOMOTYPIC_SYNONYM_OF());
1439
//
1440
//        //IndividualsAssociation
1441
//        TaxonDescription taxonDescription = TaxonDescription.NewInstance();
1442
//        IndividualsAssociation association = IndividualsAssociation.NewInstance(dnaSampleUuidIndividualsAssociation);
1443
//        association.setFeature(Feature.SPECIMEN());
1444
//        taxonDescription.addElement(association);
1445
//        taxon.addDescription(taxonDescription);
1446
//
1447
//        //DETERMINATION EVENTS
1448
//        DeterminationEvent.NewInstance(taxon, derivedUnitDeterminationTaxon);
1449
//        DeterminationEvent.NewInstance(taxonName, derivedUnitDeterminationName);
1450
//        //        DeterminationEvent.NewInstance(synonym, derivedUnitDeterminationSynonym);//TODO determinationa on synonym not possible?
1451
//        DeterminationEvent.NewInstance(synonymName, derivedUnitDeterminationSynonymName);
1452
//        DeterminationEvent.NewInstance(orphanName, derivedUnitDeterminationOrphanName);
1453
//
1454
//        //type designation
1455
//        SpecimenTypeDesignation specimenTypeDesignation = SpecimenTypeDesignation.NewInstance();
1456
//        specimenTypeDesignation.setTypeSpecimen(fossilTypeDesignation);
1457
//        taxonName.addTypeDesignation(specimenTypeDesignation, false);
1458
//
1459
//        classificationService.save(classification);
1460
//        taxonService.saveOrUpdate(taxon);
1461
//        taxonNodeService.save(taxonNode);
1462
//
1463
//        commitAndStartNewTransaction(null);
1464
//
1465
//        setComplete();
1466
//        endTransaction();
1467
//
1468
//
1469
//        try {
1470
//            writeDbUnitDataSetFile(new String[] {
1471
//        "SpecimenOrObservationBase",
1472
//        "SpecimenOrObservationBase_DerivationEvent",
1473
//        "DerivationEvent",
1474
//        "DescriptionElementBase",
1475
//        "DescriptionBase",
1476
//        "TaxonBase",
1477
//        "TaxonNode",
1478
//        "Classification",
1479
//        "TypeDesignationBase",
1480
//        "TaxonName",
1481
//        "TaxonName_TypeDesignationBase",
1482
//        "HomotypicalGroup",
1483
//        "TeamOrPersonBase",
1484
//        "LanguageString",
1485
//        "DeterminationEvent"
1486
//            }, "testAllKindsOfSpecimenAssociations");
1487
//        } catch (FileNotFoundException e) {
1488
//            e.printStackTrace();
1489
//        }
1407 1490

  
1408 1491

  
1409 1492
    }
......
1471 1554
      UUID dnaSampleUuidIndividualsAssociationUuid = UUID.fromString("1fb53903-c9b9-4078-8297-5b86aec7fe21");
1472 1555
      UUID fossilTypeDesignationUuid = UUID.fromString("42ec8dcf-a923-4256-bbd5-b0d10f4de5e2");
1473 1556

  
1557
      UUID taxonNodeUuid = UUID.fromString("6b8b6ff9-66e4-4496-8e5a-7d03bdf9a076");
1474 1558
      UUID taxonUuid = UUID.fromString("07cc47a5-1a63-46a1-8366-0d59d2b90d5b");
1475 1559
      UUID synoymUuid = UUID.fromString("c16bcd9b-7d18-4fb5-af60-f9ef14c1d3a9");
1476 1560

  
......
1534 1618
      Taxon taxon = Taxon.NewInstance(taxonName, null);
1535 1619
      taxon.setUuid(taxonUuid);
1536 1620

  
1621
      Classification classification = Classification.NewInstance("Test Classification");
1622
      TaxonNode taxonNode = classification.addChildTaxon(taxon, null, null);
1623
      taxonNode.setUuid(taxonNodeUuid);
1624

  
1537 1625
      //SYNONYM
1538 1626
      Synonym synonym = Synonym.NewInstance(synonymName, null);
1539 1627
      synonym.setUuid(synoymUuid);
......
1549 1637
      //DETERMINATION EVENTS
1550 1638
      DeterminationEvent.NewInstance(taxon, derivedUnitDeterminationTaxon);
1551 1639
      DeterminationEvent.NewInstance(taxonName, derivedUnitDeterminationName);
1552
//      DeterminationEvent.NewInstance(synonym, derivedUnitDeterminationSynonym);//TODO determinationa on synonym not possible?
1640
      //        DeterminationEvent.NewInstance(synonym, derivedUnitDeterminationSynonym);//TODO determinationa on synonym not possible?
1553 1641
      DeterminationEvent.NewInstance(synonymName, derivedUnitDeterminationSynonymName);
1554 1642
      DeterminationEvent.NewInstance(orphanName, derivedUnitDeterminationOrphanName);
1555 1643

  
......
1558 1646
      specimenTypeDesignation.setTypeSpecimen(fossilTypeDesignation);
1559 1647
      taxonName.addTypeDesignation(specimenTypeDesignation, false);
1560 1648

  
1649
      classificationService.saveOrUpdate(classification);
1561 1650
      taxonService.saveOrUpdate(taxon);
1651
      taxonNodeService.saveOrUpdate(taxonNode);
1562 1652

  
1563 1653
      commitAndStartNewTransaction(null);
1564 1654

  
......
1574 1664
                  "DescriptionElementBase",
1575 1665
                  "DescriptionBase",
1576 1666
                  "TaxonBase",
1667
                  "TaxonNode",
1668
                  "Classification",
1577 1669
                  "TypeDesignationBase",
1578 1670
                  "TaxonName",
1579 1671
                  "TaxonName_TypeDesignationBase",
1580 1672
                  "HomotypicalGroup",
1581 1673
                  "TeamOrPersonBase",
1674
                  "LanguageString",
1582 1675
                  "DeterminationEvent"
1583 1676
          }, "testAllKindsOfSpecimenAssociations");
1584 1677
      } catch (FileNotFoundException e) {
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/OccurrenceServiceTest-testAllKindsOfSpecimenAssociations.xml
1
<?xml version='1.0' encoding='UTF-8'?>
2
<dataset>
3
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5000" CREATED="2018-04-25 11:57:40.0" UUID="941b8b22-1925-4b91-8ff8-97114499bb22" UPDATED="2018-04-25 11:57:40.412" RECORDBASIS="PS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="DerivedUnit#5000&lt;941b8b22-1925-4b91-8ff8-97114499bb22&gt;" PROTECTEDIDENTITYCACHE="false" IDENTITYCACHE="[null]" PUBLISH="true" INDIVIDUALCOUNT="[null]" PREFERREDSTABLEURI="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]"/>
4
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5001" CREATED="2018-04-25 11:57:40.0" UUID="0cdc7a57-6f55-45c8-b3e5-523748c381e7" UPDATED="2018-04-25 11:57:40.415" RECORDBASIS="PS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="DerivedUnit#5001&lt;0cdc7a57-6f55-45c8-b3e5-523748c381e7&gt;" PROTECTEDIDENTITYCACHE="false" IDENTITYCACHE="[null]" PUBLISH="true" INDIVIDUALCOUNT="[null]" PREFERREDSTABLEURI="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]"/>
5
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5002" CREATED="2018-04-25 11:57:40.0" UUID="8eb94a7d-c802-49a7-bc10-c26de20a52c2" UPDATED="[null]" RECORDBASIS="PS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="DerivedUnit#5002&lt;8eb94a7d-c802-49a7-bc10-c26de20a52c2&gt;" PROTECTEDIDENTITYCACHE="false" IDENTITYCACHE="[null]" PUBLISH="true" INDIVIDUALCOUNT="[null]" PREFERREDSTABLEURI="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]"/>
6
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5003" CREATED="2018-04-25 11:57:40.0" UUID="d940a940-8caf-4a52-b1d8-ba4aad7ddae2" UPDATED="2018-04-25 11:57:40.416" RECORDBASIS="PS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="DerivedUnit#5003&lt;d940a940-8caf-4a52-b1d8-ba4aad7ddae2&gt;" PROTECTEDIDENTITYCACHE="false" IDENTITYCACHE="[null]" PUBLISH="true" INDIVIDUALCOUNT="[null]" PREFERREDSTABLEURI="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]"/>
7
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5004" CREATED="2018-04-25 11:57:40.0" UUID="587b7297-7d59-4f59-8ef3-c7a559cadeca" UPDATED="2018-04-25 11:57:40.416" RECORDBASIS="PS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="DerivedUnit#5004&lt;587b7297-7d59-4f59-8ef3-c7a559cadeca&gt;" PROTECTEDIDENTITYCACHE="false" IDENTITYCACHE="[null]" PUBLISH="true" INDIVIDUALCOUNT="[null]" PREFERREDSTABLEURI="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]"/>
8
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5005" CREATED="2018-04-25 11:57:40.0" UUID="93e94260-5107-4b2c-9ce4-da9e1a4e7cb9" UPDATED="[null]" RECORDBASIS="TS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="DerivedUnit#5005&lt;93e94260-5107-4b2c-9ce4-da9e1a4e7cb9&gt;" PROTECTEDIDENTITYCACHE="false" IDENTITYCACHE="[null]" PUBLISH="true" INDIVIDUALCOUNT="[null]" PREFERREDSTABLEURI="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]"/>
9
  <SPECIMENOROBSERVATIONBASE DTYPE="DnaSample" ID="5006" CREATED="2018-04-25 11:57:40.0" UUID="1fb53903-c9b9-4078-8297-5b86aec7fe21" UPDATED="[null]" RECORDBASIS="DS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="-title cache generation not implemented-" PROTECTEDIDENTITYCACHE="false" IDENTITYCACHE="[null]" PUBLISH="true" INDIVIDUALCOUNT="[null]" PREFERREDSTABLEURI="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]"/>
10
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5007" CREATED="2018-04-25 11:57:40.0" UUID="42ec8dcf-a923-4256-bbd5-b0d10f4de5e2" UPDATED="2018-04-25 11:57:40.416" RECORDBASIS="FS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="DerivedUnit#5007&lt;42ec8dcf-a923-4256-bbd5-b0d10f4de5e2&gt;" PROTECTEDIDENTITYCACHE="false" IDENTITYCACHE="[null]" PUBLISH="true" INDIVIDUALCOUNT="[null]" PREFERREDSTABLEURI="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]"/>
11
  <DESCRIPTIONELEMENTBASE DTYPE="IndividualsAssociation" ID="5000" CREATED="2018-04-25 11:57:40.0" UUID="df110708-bda0-447e-9fb6-e981dd36f89d" UPDATED="[null]" NAME="[null]" TIMEPERIOD_START="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" ORDERRELEVANT="[null]" UNKNOWNDATA="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" FEATURE_ID="[null]" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="[null]" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="5006" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
12
  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="5000" CREATED="2018-04-25 11:57:40.0" UUID="e94ecb2d-b26f-4223-9349-131ec1ea220f" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Factual data for Campanula patual" IMAGEGALLERY="false" ISDEFAULT="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" SPECIMEN_ID="[null]" TAXON_ID="5000" TAXONNAME_ID="[null]"/>
13
  <TAXONBASE DTYPE="Taxon" ID="5000" CREATED="2018-04-25 11:57:40.0" UUID="07cc47a5-1a63-46a1-8366-0d59d2b90d5b" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" SECMICROREFERENCE="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Campanula patual sec. ???" APPENDEDPHRASE="[null]" DOUBTFUL="false" PUBLISH="true" USENAMECACHE="false" EXCLUDED="[null]" TAXONSTATUSUNKNOWN="false" UNPLACED="[null]" PARTIAL="[null]" PROPARTE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" NAME_ID="5000" SEC_ID="[null]" ACCEPTEDTAXON_ID="[null]" TYPE_ID="[null]"/>
14
  <TAXONBASE DTYPE="Synonym" ID="5001" CREATED="2018-04-25 11:57:40.0" UUID="c16bcd9b-7d18-4fb5-af60-f9ef14c1d3a9" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" SECMICROREFERENCE="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Syno nyma syn. sec. ???" APPENDEDPHRASE="[null]" DOUBTFUL="false" PUBLISH="true" USENAMECACHE="false" EXCLUDED="[null]" TAXONSTATUSUNKNOWN="[null]" UNPLACED="[null]" PARTIAL="false" PROPARTE="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" NAME_ID="5001" SEC_ID="[null]" ACCEPTEDTAXON_ID="5000" TYPE_ID="847"/>
15
  <TAXONNODE ID="5000" CREATED="2018-04-25 11:57:40.0" UUID="d5a9525b-3398-463d-bbbd-de1976ba9bdc" UPDATED="2018-04-25 11:57:40.417" SORTINDEX="-1" TREEINDEX="#t5000#5000#" COUNTCHILDREN="1" MICROREFERENCEFORPARENTCHILDRELATION="[null]" EXCLUDED="false" UNPLACED="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CLASSIFICATION_ID="5000" PARENT_ID="[null]" REFERENCEFORPARENTCHILDRELATION_ID="[null]" SYNONYMTOBEUSED_ID="[null]" TAXON_ID="[null]"/>
16
  <TAXONNODE ID="5001" CREATED="2018-04-25 11:57:40.0" UUID="6b8b6ff9-66e4-4496-8e5a-7d03bdf9a076" UPDATED="2018-04-25 11:57:40.417" SORTINDEX="0" TREEINDEX="#t5000#5000#5001#" COUNTCHILDREN="0" MICROREFERENCEFORPARENTCHILDRELATION="[null]" EXCLUDED="false" UNPLACED="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CLASSIFICATION_ID="5000" PARENT_ID="5000" REFERENCEFORPARENTCHILDRELATION_ID="[null]" SYNONYMTOBEUSED_ID="[null]" TAXON_ID="5000"/>
17
  <CLASSIFICATION ID="5000" CREATED="2018-04-25 11:57:40.0" UUID="5854bb37-13f3-48e7-891e-dc8c82f355df" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Test Classification" MICROREFERENCE="[null]" TIMEPERIOD_START="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_END="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" NAME_ID="5000" REFERENCE_ID="[null]" ROOTNODE_ID="5000"/>
18
  <TYPEDESIGNATIONBASE DTYPE="SpecimenTypeDesignation" ID="5000" CREATED="2018-04-25 11:57:40.0" UUID="33315177-2a71-4369-b020-fece07a8cc04" UPDATED="[null]" CITATIONMICROREFERENCE="[null]" ORIGINALNAMESTRING="[null]" NOTDESIGNATED="false" CONSERVEDTYPE="[null]" REJECTEDTYPE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CITATION_ID="[null]" TYPESTATUS_ID="[null]" TYPENAME_ID="[null]" TYPESPECIMEN_ID="5007"/>
19
  <TAXONNAME ID="5000" CREATED="2018-04-25 11:57:40.0" UUID="e59b95c0-9ad6-48be-af62-a982ba72b917" UPDATED="[null]" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Campanula patual" APPENDEDPHRASE="[null]" FULLTITLECACHE="Campanula patual" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Campanula" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Campanula patual" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="patual" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
20
  <TAXONNAME ID="5001" CREATED="2018-04-25 11:57:40.0" UUID="39f04b2a-b8bd-46e8-9102-ab665c64ec8e" UPDATED="[null]" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Syno nyma" APPENDEDPHRASE="[null]" FULLTITLECACHE="Syno nyma" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Syno" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Syno nyma" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="nyma" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
21
  <TAXONNAME ID="5002" CREATED="2018-04-25 11:57:40.0" UUID="d8e56365-3ad9-4b0e-88bf-acaaab223a9b" UPDATED="[null]" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Orphanus lonelia" APPENDEDPHRASE="[null]" FULLTITLECACHE="Orphanus lonelia" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Orphanus" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Orphanus lonelia" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="lonelia" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5001" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
22
  <TAXONNAME_TYPEDESIGNATIONBASE TAXONNAME_ID="5000" TYPEDESIGNATIONS_ID="5000"/>
23
  <HOMOTYPICALGROUP ID="5000" CREATED="2018-04-25 11:57:40.0" UUID="13f325c6-7faf-49fa-b8f5-5e12db549681" UPDATED="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]"/>
24
  <HOMOTYPICALGROUP ID="5001" CREATED="2018-04-25 11:57:40.0" UUID="2741fbd7-5921-4cca-b795-50fec5a346bc" UPDATED="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]"/>
25
  <LANGUAGESTRING ID="5000" CREATED="2018-04-25 11:57:40.0" UUID="06eba124-e299-4753-9185-11cfd5aaa4fe" UPDATED="[null]" TEXT="Test Classification" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LANGUAGE_ID="406"/>
26
  <DETERMINATIONEVENT ID="5000" CREATED="2018-04-25 11:57:40.0" UUID="2d39303f-58a4-416a-b253-5340465bac10" UPDATED="[null]" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" PREFERREDFLAG="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" IDENTIFIEDUNIT_ID="5000" MODIFIER_ID="[null]" TAXON_ID="5000" TAXONNAME_ID="5000"/>
27
  <DETERMINATIONEVENT ID="5001" CREATED="2018-04-25 11:57:40.0" UUID="235974ae-9094-40b5-8f79-8e302e976ca7" UPDATED="[null]" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" PREFERREDFLAG="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" IDENTIFIEDUNIT_ID="5001" MODIFIER_ID="[null]" TAXON_ID="[null]" TAXONNAME_ID="5000"/>
28
  <DETERMINATIONEVENT ID="5002" CREATED="2018-04-25 11:57:40.0" UUID="694c665b-4020-45c0-b0c7-4b8560b890c6" UPDATED="[null]" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" PREFERREDFLAG="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" IDENTIFIEDUNIT_ID="5003" MODIFIER_ID="[null]" TAXON_ID="[null]" TAXONNAME_ID="5001"/>
29
  <DETERMINATIONEVENT ID="5003" CREATED="2018-04-25 11:57:40.0" UUID="282cd146-3991-4e72-8f92-85d49e34daaa" UPDATED="[null]" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" PREFERREDFLAG="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" IDENTIFIEDUNIT_ID="5004" MODIFIER_ID="[null]" TAXON_ID="[null]" TAXONNAME_ID="5002"/>
30
</dataset>
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/OccurrenceServiceTest.testAllKindsOfSpecimenAssociations.xml
1
<?xml version='1.0' encoding='UTF-8'?>
2
<dataset>
3
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5000" CREATED="2015-11-18 08:41:06.0" UUID="941b8b22-1925-4b91-8ff8-97114499bb22" UPDATED="[null]" RECORDBASIS="PS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Derived Unit determined as taxon" PUBLISH="true" INDIVIDUALCOUNT="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]" PROTECTEDIDENTITYCACHE="true" IDENTITYCACHE="ID1"/>
4
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5001" CREATED="2015-11-18 08:41:06.0" UUID="0cdc7a57-6f55-45c8-b3e5-523748c381e7" UPDATED="[null]" RECORDBASIS="PS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Derived Unit determined as name" PUBLISH="true" INDIVIDUALCOUNT="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]" PROTECTEDIDENTITYCACHE="true" IDENTITYCACHE="ID1"/>
5
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5002" CREATED="2015-11-18 08:41:06.0" UUID="8eb94a7d-c802-49a7-bc10-c26de20a52c2" UPDATED="[null]" RECORDBASIS="PS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Derived Unit determined as synonym" PUBLISH="true" INDIVIDUALCOUNT="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]" PROTECTEDIDENTITYCACHE="true" IDENTITYCACHE="ID1"/>
6
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5003" CREATED="2015-11-18 08:41:06.0" UUID="d940a940-8caf-4a52-b1d8-ba4aad7ddae2" UPDATED="[null]" RECORDBASIS="PS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Derived Unit determined as synonym name" PUBLISH="true" INDIVIDUALCOUNT="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]" PROTECTEDIDENTITYCACHE="true" IDENTITYCACHE="ID1"/>
7
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5004" CREATED="2015-11-18 08:41:06.0" UUID="587b7297-7d59-4f59-8ef3-c7a559cadeca" UPDATED="[null]" RECORDBASIS="PS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Derived Unit determined as orphan name" PUBLISH="true" INDIVIDUALCOUNT="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]" PROTECTEDIDENTITYCACHE="true" IDENTITYCACHE="ID1"/>
8
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5005" CREATED="2015-11-18 08:41:06.0" UUID="93e94260-5107-4b2c-9ce4-da9e1a4e7cb9" UPDATED="[null]" RECORDBASIS="TS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="tissue sample no association" PUBLISH="true" INDIVIDUALCOUNT="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]" PROTECTEDIDENTITYCACHE="true" IDENTITYCACHE="ID1"/>
9
  <SPECIMENOROBSERVATIONBASE DTYPE="DnaSample" ID="5006" CREATED="2015-11-18 08:41:06.0" UUID="1fb53903-c9b9-4078-8297-5b86aec7fe21" UPDATED="[null]" RECORDBASIS="DS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="dna associated via IndividualsAssociation" PUBLISH="true" INDIVIDUALCOUNT="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]" PROTECTEDIDENTITYCACHE="true" IDENTITYCACHE="ID1"/>
10
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5007" CREATED="2015-11-18 08:41:06.0" UUID="42ec8dcf-a923-4256-bbd5-b0d10f4de5e2" UPDATED="[null]" RECORDBASIS="FS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Fossil with type designation" PUBLISH="true" INDIVIDUALCOUNT="[null]" ACCESSIONNUMBER="[null]" BARCODE="[null]" CATALOGNUMBER="[null]" COLLECTORSNUMBER="[null]" EXSICCATUM="[null]" ORIGINALLABELINFO="[null]" FIELDNOTES="[null]" FIELDNUMBER="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" LIFESTAGE_ID="[null]" SEX_ID="[null]" KINDOFUNIT_ID="[null]" COLLECTION_ID="[null]" DERIVEDFROM_ID="[null]" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]" PROTECTEDIDENTITYCACHE="true" IDENTITYCACHE="ID1"/>
11
  <DESCRIPTIONELEMENTBASE DTYPE="IndividualsAssociation" ID="5000" CREATED="2015-11-18 08:41:06.0" UUID="99aacc2e-a4d9-4a7d-8795-6214c00e1f93" UPDATED="[null]" NAME="[null]" TIMEPERIOD_START="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" ORDERRELEVANT="[null]" UNKNOWNDATA="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" FEATURE_ID="[null]" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="[null]" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="5006" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
12
  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="5000" CREATED="2015-11-18 08:41:06.0" UUID="ebe6d8c0-0216-4222-a05d-3b4efe85af30" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon description for Campanula patual" IMAGEGALLERY="false" ISDEFAULT="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" SPECIMEN_ID="[null]" TAXON_ID="5000" TAXONNAME_ID="[null]"/>
13
  <TAXONBASE DTYPE="Taxon" ID="5000" CREATED="2015-11-18 08:41:06.0" UUID="07cc47a5-1a63-46a1-8366-0d59d2b90d5b" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Campanula patual sec. ???" APPENDEDPHRASE="[null]" DOUBTFUL="false" PUBLISH="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" NAME_ID="5000" SEC_ID="[null]"/>
14
  <TAXONBASE DTYPE="Synonym" ID="5001" CREATED="2015-11-18 08:41:06.0" UUID="c16bcd9b-7d18-4fb5-af60-f9ef14c1d3a9" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Syno nyma sec. ???" APPENDEDPHRASE="[null]" DOUBTFUL="false" PUBLISH="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" NAME_ID="5001" SEC_ID="[null]"  PARTIAL="false" PROPARTE="false" ACCEPTEDTAXON_ID="5000" TYPE_ID="847"/>
15
  <TYPEDESIGNATIONBASE DTYPE="SpecimenTypeDesignation" ID="5000" CREATED="2015-11-18 08:41:06.0" UUID="c37ea03b-2b07-44c3-aff5-f32f5ccbe6fe" UPDATED="[null]" CITATIONMICROREFERENCE="[null]" ORIGINALNAMESTRING="[null]" NOTDESIGNATED="false" CONSERVEDTYPE="[null]" REJECTEDTYPE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CITATION_ID="[null]" TYPESTATUS_ID="[null]" TYPENAME_ID="[null]" TYPESPECIMEN_ID="5007"/>
16
  <TAXONNAME NAMETYPE="ICNAFP" ID="5000" CREATED="2015-11-18 08:41:06.0" UUID="e59b95c0-9ad6-48be-af62-a982ba72b917" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Campanula patual" APPENDEDPHRASE="[null]" FULLTITLECACHE="Campanula patual" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Campanula" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Campanula patual" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="patual" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
17
  <TAXONNAME NAMETYPE="ICNAFP" ID="5001" CREATED="2015-11-18 08:41:06.0" UUID="39f04b2a-b8bd-46e8-9102-ab665c64ec8e" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Syno nyma" APPENDEDPHRASE="[null]" FULLTITLECACHE="Syno nyma" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Syno" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Syno nyma" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="nyma" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
18
  <TAXONNAME NAMETYPE="ICNAFP" ID="5002" CREATED="2015-11-18 08:41:06.0" UUID="d8e56365-3ad9-4b0e-88bf-acaaab223a9b" UPDATED="[null]" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Orphanus lonelia" APPENDEDPHRASE="[null]" FULLTITLECACHE="Orphanus lonelia" NOMENCLATURALMICROREFERENCE="[null]" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Orphanus" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Orphanus lonelia" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="lonelia" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5001" NOMENCLATURALREFERENCE_ID="[null]" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
19
  <TAXONNAME_TYPEDESIGNATIONBASE TAXONNAME_ID="5000" TYPEDESIGNATIONS_ID="5000"/>
20
  <HOMOTYPICALGROUP ID="5000" CREATED="2015-11-18 08:41:06.0" UUID="1bb377be-f723-4e1f-a1b4-cfa2742a9551" UPDATED="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]"/>
21
  <HOMOTYPICALGROUP ID="5001" CREATED="2015-11-18 08:41:06.0" UUID="32848ac1-b263-47de-9b7e-4fa7137eb9fd" UPDATED="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]"/>
22
  <DETERMINATIONEVENT ID="5000" CREATED="2015-11-18 08:41:06.0" UUID="e4240702-ed31-40e0-b6e0-093ee1260f13" UPDATED="[null]" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" PREFERREDFLAG="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" IDENTIFIEDUNIT_ID="5000" MODIFIER_ID="[null]" TAXON_ID="5000" TAXONNAME_ID="5000"/>
23
  <DETERMINATIONEVENT ID="5001" CREATED="2015-11-18 08:41:06.0" UUID="f12924ae-9632-4f65-bbfb-98878d521ae5" UPDATED="[null]" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" PREFERREDFLAG="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" IDENTIFIEDUNIT_ID="5001" MODIFIER_ID="[null]" TAXON_ID="[null]" TAXONNAME_ID="5000"/>
24
  <DETERMINATIONEVENT ID="5002" CREATED="2015-11-18 08:41:06.0" UUID="858ff17c-cc9a-4e22-a439-3dc00bee302b" UPDATED="[null]" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" PREFERREDFLAG="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" IDENTIFIEDUNIT_ID="5003" MODIFIER_ID="[null]" TAXON_ID="[null]" TAXONNAME_ID="5001"/>
25
  <DETERMINATIONEVENT ID="5003" CREATED="2015-11-18 08:41:06.0" UUID="a06a942b-c8aa-4498-ab1c-98c902789604" UPDATED="[null]" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" PREFERREDFLAG="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" IDENTIFIEDUNIT_ID="5004" MODIFIER_ID="[null]" TAXON_ID="[null]" TAXONNAME_ID="5002"/>
26
</dataset>

Also available in: Unified diff

Add picture from clipboard (Maximum size: 40 MB)