Project

General

Profile

« Previous | Next » 

Revision 8f5a9520

Added by Katja Luther about 6 years ago

fix delete and tests of specimen with typedesignations and gathering events

View differences:

cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/OccurrenceServiceImpl.java
1306 1306
            FieldUnit fieldUnit = HibernateProxyHelper.deproxy(specimen, FieldUnit.class);
1307 1307
            GatheringEvent event = fieldUnit.getGatheringEvent();
1308 1308
            fieldUnit.setGatheringEvent(null);
1309

  
1309
            if (event != null){
1310
                DeleteResult result = eventService.isDeletable(event.getUuid(), null);
1311
                if (result.isOk()){
1312
                    eventService.delete(event);
1313
                }
1314
            }
1310 1315

  
1311 1316
        }
1312 1317
        deleteResult.includeResult(delete(specimen));
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/OccurrenceServiceDeepDeleteTest.java
22 22

  
23 23
import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
24 24
import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
25
import eu.etaxonomy.cdm.api.service.pager.Pager;
25 26
import eu.etaxonomy.cdm.model.molecular.DnaSample;
26 27
import eu.etaxonomy.cdm.model.molecular.Sequence;
27 28
import eu.etaxonomy.cdm.model.molecular.SingleRead;
28 29
import eu.etaxonomy.cdm.model.molecular.SingleReadAlignment;
30
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
31
import eu.etaxonomy.cdm.model.name.Rank;
32
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
33
import eu.etaxonomy.cdm.model.name.TaxonName;
34
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
29 35
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
30 36
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
31 37
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
38
import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
32 39
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
33 40
import eu.etaxonomy.cdm.persistence.dao.molecular.ISingleReadDao;
34 41
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
......
45 52
    private final UUID DERIVED_UNIT_UUID = UUID.fromString("448be6e7-f19c-4a10-9a0a-97aa005f817d");
46 53
    private final UUID DNA_SAMPLE_UUID = UUID.fromString("bee4212b-aff1-484e-845f-065c7d6216af");
47 54
    private final UUID SEQUENCE_UUID = UUID.fromString("0b867369-de8c-4837-a708-5b7d9f6091be");
55
    private final UUID FIELD_UNIT2_UUID = UUID.fromString("ae798108-6483-4d09-900f-7f849c43bcc9");
48 56

  
49 57
    @SuppressWarnings("unused")
50 58
    private static final Logger logger = Logger.getLogger(OccurrenceServiceDeepDeleteTest.class);
......
61 69
    @SpringBeanByType
62 70
    private ISequenceService sequenceService;
63 71

  
72
    @SpringBeanByType
73
    private INameService nameService;
74

  
75

  
64 76
    @Test
65 77
    @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="OccurrenceServiceTest.testDeleteDerivateHierarchyStepByStep.xml")
66 78
    public void testDeepDelete_FieldUnit(){
......
73 85
        config.setDeleteChildren(true);
74 86

  
75 87
        FieldUnit fieldUnit = (FieldUnit) occurrenceService.load(FIELD_UNIT_UUID);
88
        GatheringEvent gatheringEvent = GatheringEvent.NewInstance();
89
        fieldUnit.setGatheringEvent(gatheringEvent);
90
        FieldUnit fieldUnit2 = (FieldUnit) occurrenceService.load(FIELD_UNIT2_UUID);
91
        fieldUnit2.setGatheringEvent(gatheringEvent);
76 92
        DnaSample dnaSample = (DnaSample) occurrenceService.load(DNA_SAMPLE_UUID);
77 93

  
94
        //check initial state
95
        assertEquals(assertMessage, 6, occurrenceService.count(SpecimenOrObservationBase.class));
96
        assertEquals(assertMessage, 4, eventService.count(DerivationEvent.class));
97
        assertEquals(assertMessage, 2, occurrenceService.count(FieldUnit.class));
98
        assertEquals(assertMessage, 4, occurrenceService.count(DerivedUnit.class));
99
        assertEquals(assertMessage, 2, occurrenceService.count(DnaSample.class));
100
        assertEquals("incorrect number of amplification results", 1, dnaSample.getAmplificationResults().size());
101
        assertEquals("number of sequences incorrect", 1, dnaSample.getSequences().size());
102
        assertEquals("incorrect number of single reads", 1, dnaSample.getAmplificationResults().iterator().next().getSingleReads().size());
103
        assertEquals("incorrect number of gathering events", 1, eventService.count(GatheringEvent.class));
104
        //delete field unit
105
        deleteResult = occurrenceService.delete(fieldUnit, config);
106
        assertTrue(deleteResult.toString(), deleteResult.isOk());
107
        assertEquals(assertMessage, 2, eventService.count(DerivationEvent.class));
108
        assertEquals(assertMessage, 3, occurrenceService.count(SpecimenOrObservationBase.class));
109
        assertEquals(assertMessage, 1, occurrenceService.count(FieldUnit.class));
110
        assertEquals(assertMessage, 2, occurrenceService.count(DerivedUnit.class));
111
        assertEquals(assertMessage, 1, occurrenceService.count(DnaSample.class));
112
        assertEquals("incorrect number of gathering events", 1, eventService.count(GatheringEvent.class));
113

  
114

  
115
        deleteResult = occurrenceService.delete(fieldUnit2, config);
116
        assertEquals(assertMessage, 0, eventService.count(GatheringEvent.class));
117
    }
118

  
119
    @Test
120
    @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="OccurrenceServiceTest.testDeleteDerivateHierarchyStepByStep.xml")
121
    public void testDeepDelete_FieldUnitWithTypeDesignation(){
122

  
123

  
124
        String assertMessage = "Incorrect number of specimens after deletion.";
125
        DeleteResult deleteResult = null;
126
        SpecimenDeleteConfigurator config = new SpecimenDeleteConfigurator();
127
        config.setDeleteMolecularData(true);
128
        config.setDeleteChildren(true);
129
        config.setDeleteFromTypeDesignation(true);
130

  
131
        FieldUnit fieldUnit = (FieldUnit) occurrenceService.load(FIELD_UNIT_UUID);
132
        DnaSample dnaSample = (DnaSample) occurrenceService.load(DNA_SAMPLE_UUID);
133
        TaxonName name = TaxonName.NewInstance(NomenclaturalCode.ICNAFP, Rank.SPECIES(), "Test", null, "test", null, null, null, null, null);
134
        SpecimenTypeDesignation specimenTypeDesignation = SpecimenTypeDesignation.NewInstance();
135
        specimenTypeDesignation.setTypeSpecimen(dnaSample);
136
        name.addTypeDesignation(specimenTypeDesignation, false);
137
        nameService.save(name);
138
        Pager<TypeDesignationBase> typeDesignations = nameService.getTypeDesignations(name, null, 100, 0);
139
        Long oldCount= typeDesignations.getCount();
78 140
        //check initial state
79 141
        assertEquals(assertMessage, 3, occurrenceService.count(SpecimenOrObservationBase.class));
80 142
        assertEquals(assertMessage, 2, eventService.count(DerivationEvent.class));
......
93 155
        assertEquals(assertMessage, 0, occurrenceService.count(FieldUnit.class));
94 156
        assertEquals(assertMessage, 0, occurrenceService.count(DerivedUnit.class));
95 157
        assertEquals(assertMessage, 0, occurrenceService.count(DnaSample.class));
158
        typeDesignations = nameService.getTypeDesignations(name, null, 100, 0);
159
        Long afterDeleteCount= typeDesignations.getCount();
160
        assertTrue(oldCount > afterDeleteCount);
96 161
    }
97 162

  
98 163
    @Test
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/OccurrenceServiceTest.testDeleteDerivateHierarchyStepByStep.xml
10 10
  <SEQUENCE ID="5000" CREATED="2014-12-12 07:45:32.0" UUID="0b867369-de8c-4837-a708-5b7d9f6091be" UPDATED="2014-12-12 07:45:32.841" BARCODESEQUENCEPART_LENGTH="[null]" BARCODESEQUENCEPART_STRING="[null]" BOLDPROCESSID="[null]" CONSENSUSSEQUENCE_LENGTH="5" CONSENSUSSEQUENCE_STRING="ATTCG" GENETICACCESSIONNUMBER="[null]" HAPLOTYPE="[null]" ISBARCODE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CONTIGFILE_ID="[null]" DNASAMPLE_ID="5002" DNAMARKER_ID="[null]"/>
11 11
  <SINGLEREAD ID="5000" CREATED="2014-12-12 07:45:32.0" UUID="99a6ae0e-da91-4b88-89b1-68fc77c98ccf" UPDATED="2014-12-12 07:45:32.841" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" DIRECTION="[null]" SEQUENCE_LENGTH="[null]" SEQUENCE_STRING="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" AMPLIFICATIONRESULT_ID="5000" MATERIALORMETHOD_ID="[null]" PHEROGRAM_ID="[null]" PRIMER_ID="[null]"/>
12 12
  <AMPLIFICATIONRESULT ID="5000" CREATED="2014-12-12 07:45:32.0" UUID="971c0c4f-868f-41c9-a84f-c041cc378eb9" UPDATED="2014-12-12 07:45:32.84" SUCCESSTEXT="[null]" SUCCESSFUL="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CLONING_ID="[null]" DNASAMPLE_ID="5002" AMPLIFICATION_ID="[null]" GELPHOTO_ID="[null]"/>
13
<SPECIMENOROBSERVATIONBASE DTYPE="FieldUnit" ID="5003" CREATED="2014-12-12 07:45:32.0" UUID="ae798108-6483-4d09-900f-7f849c43bcc9" UPDATED="[null]" RECORDBASIS="FU" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="-title cache generation not implemented-" 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"/>
14
  <SPECIMENOROBSERVATIONBASE DTYPE="DerivedUnit" ID="5004" CREATED="2014-12-12 07:45:32.0" UUID="93fdcf99-af42-41dc-9e8d-ced93ad5188b" UPDATED="2014-12-12 07:45:32.838" RECORDBASIS="FS" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="class eu.etaxonomy.cdm.model.occurrence.DerivedUnit: 448be6e7-f19c-4a10-9a0a-97aa005f817d" 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="5003" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]" PROTECTEDIDENTITYCACHE="true" IDENTITYCACHE="ID1"/>
15
  <SPECIMENOROBSERVATIONBASE DTYPE="DnaSample" ID="5005" CREATED="2014-12-12 07:45:32.0" UUID="753a9363-7373-4022-98ab-061a6c8f7f10" UPDATED="2014-12-12 07:45:32.839" 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-" 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="5004" STOREDUNDER_ID="[null]" PRESERVATION_ID="[null]" GATHERINGEVENT_ID="[null]" PRIMARYCOLLECTOR_ID="[null]" MEDIASPECIMEN_ID="[null]" DNAQUALITY_ID="[null]" PROTECTEDIDENTITYCACHE="true" IDENTITYCACHE="ID1"/>
16
  <SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT ORIGINALS_ID="5003" DERIVATIONEVENTS_ID="5002"/>
17
  <SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT ORIGINALS_ID="5004" DERIVATIONEVENTS_ID="5003"/>
18
  <DERIVATIONEVENT ID="5002" CREATED="2014-12-12 07:45:32.0" UUID="4576df35-d37a-40b3-8d7a-f95319e4c789" UPDATED="2014-12-12 07:45:32.837" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" INSTITUTION_ID="[null]" TYPE_ID="2004"/>
19
  <DERIVATIONEVENT ID="5003" CREATED="2014-12-12 07:45:32.0" UUID="959b1e61-aee9-42c7-b600-11d6b2fbc065" UPDATED="2014-12-12 07:45:32.838" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" INSTITUTION_ID="[null]" TYPE_ID="2001"/>
20
  <SEQUENCE ID="5001" CREATED="2014-12-12 07:45:32.0" UUID="112b188d-a27f-4cbf-8dca-06b181c96e85" UPDATED="2014-12-12 07:45:32.841" BARCODESEQUENCEPART_LENGTH="[null]" BARCODESEQUENCEPART_STRING="[null]" BOLDPROCESSID="[null]" CONSENSUSSEQUENCE_LENGTH="5" CONSENSUSSEQUENCE_STRING="ATTCG" GENETICACCESSIONNUMBER="[null]" HAPLOTYPE="[null]" ISBARCODE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CONTIGFILE_ID="[null]" DNASAMPLE_ID="5005" DNAMARKER_ID="[null]"/>
21
  <SINGLEREAD ID="5001" CREATED="2014-12-12 07:45:32.0" UUID="95627568-e707-483d-b8af-201bde71e7ae" UPDATED="2014-12-12 07:45:32.841" DESCRIPTION="[null]" TIMEPERIOD_END="[null]" TIMEPERIOD_FREETEXT="[null]" TIMEPERIOD_START="[null]" DIRECTION="[null]" SEQUENCE_LENGTH="[null]" SEQUENCE_STRING="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ACTOR_ID="[null]" AMPLIFICATIONRESULT_ID="5001" MATERIALORMETHOD_ID="[null]" PHEROGRAM_ID="[null]" PRIMER_ID="[null]"/>
22
  <AMPLIFICATIONRESULT ID="5001" CREATED="2014-12-12 07:45:32.0" UUID="b865023f-aa73-4be1-9e16-f2c90b50b052" UPDATED="2014-12-12 07:45:32.84" SUCCESSTEXT="[null]" SUCCESSFUL="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" CLONING_ID="[null]" DNASAMPLE_ID="5005" AMPLIFICATION_ID="[null]" GELPHOTO_ID="[null]"/>
13 23
</dataset>

Also available in: Unified diff