2 * Copyright (C) 2014 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.cdm
.api
.service
;
11 import static org
.junit
.Assert
.assertEquals
;
12 import static org
.junit
.Assert
.assertNotNull
;
13 import static org
.junit
.Assert
.assertTrue
;
15 import java
.io
.FileNotFoundException
;
16 import java
.util
.UUID
;
18 import org
.apache
.logging
.log4j
.LogManager
;
19 import org
.apache
.logging
.log4j
.Logger
;
20 import org
.junit
.Test
;
21 import org
.unitils
.dbunit
.annotation
.DataSet
;
22 import org
.unitils
.spring
.annotation
.SpringBeanByType
;
24 import eu
.etaxonomy
.cdm
.api
.service
.config
.SpecimenDeleteConfigurator
;
25 import eu
.etaxonomy
.cdm
.api
.service
.molecular
.ISequenceService
;
26 import eu
.etaxonomy
.cdm
.api
.service
.pager
.Pager
;
27 import eu
.etaxonomy
.cdm
.model
.molecular
.DnaSample
;
28 import eu
.etaxonomy
.cdm
.model
.molecular
.Sequence
;
29 import eu
.etaxonomy
.cdm
.model
.molecular
.SingleRead
;
30 import eu
.etaxonomy
.cdm
.model
.molecular
.SingleReadAlignment
;
31 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalCode
;
32 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
33 import eu
.etaxonomy
.cdm
.model
.name
.SpecimenTypeDesignation
;
34 import eu
.etaxonomy
.cdm
.model
.name
.TaxonName
;
35 import eu
.etaxonomy
.cdm
.model
.name
.TypeDesignationBase
;
36 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEvent
;
37 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
38 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldUnit
;
39 import eu
.etaxonomy
.cdm
.model
.occurrence
.GatheringEvent
;
40 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
41 import eu
.etaxonomy
.cdm
.persistence
.dao
.molecular
.ISingleReadDao
;
42 import eu
.etaxonomy
.cdm
.test
.integration
.CdmTransactionalIntegrationTest
;
43 import eu
.etaxonomy
.cdm
.test
.unitils
.CleanSweepInsertLoadStrategy
;
49 public class OccurrenceServiceDeepDeleteTest
extends CdmTransactionalIntegrationTest
{
51 @SuppressWarnings("unused")
52 private static final Logger logger
= LogManager
.getLogger();
54 private final UUID FIELD_UNIT_UUID
= UUID
.fromString("b5f58da5-4442-4001-9d13-33f41518b72a");
55 private final UUID DERIVED_UNIT_UUID
= UUID
.fromString("448be6e7-f19c-4a10-9a0a-97aa005f817d");
56 private final UUID DNA_SAMPLE_UUID
= UUID
.fromString("bee4212b-aff1-484e-845f-065c7d6216af");
57 private final UUID SEQUENCE_UUID
= UUID
.fromString("0b867369-de8c-4837-a708-5b7d9f6091be");
58 private final UUID FIELD_UNIT2_UUID
= UUID
.fromString("ae798108-6483-4d09-900f-7f849c43bcc9");
61 private IOccurrenceService occurrenceService
;
64 private IEventBaseService eventService
;
67 private ISingleReadDao singleReadDao
;
70 private ISequenceService sequenceService
;
73 private INameService nameService
;
76 @DataSet(loadStrategy
=CleanSweepInsertLoadStrategy
.class, value
="OccurrenceServiceTest.testDeleteDerivateHierarchyStepByStep.xml")
77 public void testDeepDelete_FieldUnit(){
79 String assertMessage
= "Incorrect number of specimens after deletion.";
80 DeleteResult deleteResult
= null;
81 SpecimenDeleteConfigurator config
= new SpecimenDeleteConfigurator();
82 config
.setDeleteMolecularData(true);
83 config
.setDeleteChildren(true);
85 FieldUnit fieldUnit
= (FieldUnit
) occurrenceService
.load(FIELD_UNIT_UUID
);
86 GatheringEvent gatheringEvent
= GatheringEvent
.NewInstance();
87 fieldUnit
.setGatheringEvent(gatheringEvent
);
88 FieldUnit fieldUnit2
= (FieldUnit
) occurrenceService
.load(FIELD_UNIT2_UUID
);
89 fieldUnit2
.setGatheringEvent(gatheringEvent
);
90 DnaSample dnaSample
= (DnaSample
) occurrenceService
.load(DNA_SAMPLE_UUID
);
93 assertEquals(assertMessage
, 6, occurrenceService
.count(SpecimenOrObservationBase
.class));
94 assertEquals(assertMessage
, 4, eventService
.count(DerivationEvent
.class));
95 assertEquals(assertMessage
, 2, occurrenceService
.count(FieldUnit
.class));
96 assertEquals(assertMessage
, 4, occurrenceService
.count(DerivedUnit
.class));
97 assertEquals(assertMessage
, 2, occurrenceService
.count(DnaSample
.class));
98 assertEquals("incorrect number of amplification results", 1, dnaSample
.getAmplificationResults().size());
99 assertEquals("number of sequences incorrect", 1, dnaSample
.getSequences().size());
100 assertEquals("incorrect number of single reads", 1, dnaSample
.getAmplificationResults().iterator().next().getSingleReads().size());
101 assertEquals("incorrect number of gathering events", 1, eventService
.count(GatheringEvent
.class));
103 deleteResult
= occurrenceService
.delete(fieldUnit
, config
);
104 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
105 assertEquals(assertMessage
, 2, eventService
.count(DerivationEvent
.class));
106 assertEquals(assertMessage
, 3, occurrenceService
.count(SpecimenOrObservationBase
.class));
107 assertEquals(assertMessage
, 1, occurrenceService
.count(FieldUnit
.class));
108 assertEquals(assertMessage
, 2, occurrenceService
.count(DerivedUnit
.class));
109 assertEquals(assertMessage
, 1, occurrenceService
.count(DnaSample
.class));
110 assertEquals("incorrect number of gathering events", 1, eventService
.count(GatheringEvent
.class));
112 deleteResult
= occurrenceService
.delete(fieldUnit2
, config
);
113 assertEquals(assertMessage
, 0, eventService
.count(GatheringEvent
.class));
117 @DataSet(loadStrategy
=CleanSweepInsertLoadStrategy
.class, value
="OccurrenceServiceTest.testDeleteDerivateHierarchyStepByStep.xml")
118 public void testDeepDelete_FieldUnitWithTypeDesignation(){
121 String assertMessage
= "Incorrect number of specimens after deletion.";
122 DeleteResult deleteResult
= null;
123 SpecimenDeleteConfigurator config
= new SpecimenDeleteConfigurator();
124 config
.setDeleteMolecularData(true);
125 config
.setDeleteChildren(true);
126 config
.setDeleteFromTypeDesignation(true);
128 FieldUnit fieldUnit
= (FieldUnit
) occurrenceService
.load(FIELD_UNIT_UUID
);
129 DnaSample dnaSample
= (DnaSample
) occurrenceService
.load(DNA_SAMPLE_UUID
);
130 TaxonName name
= TaxonName
.NewInstance(NomenclaturalCode
.ICNAFP
, Rank
.SPECIES(), "Test", null, "test", null, null, null, null, null);
131 SpecimenTypeDesignation specimenTypeDesignation
= SpecimenTypeDesignation
.NewInstance();
132 specimenTypeDesignation
.setTypeSpecimen(dnaSample
);
133 name
.addTypeDesignation(specimenTypeDesignation
, false);
134 nameService
.save(name
);
135 Pager
<TypeDesignationBase
> typeDesignations
= nameService
.getTypeDesignations(name
, null, 100, 0);
136 Long oldCount
= typeDesignations
.getCount();
137 //check initial state
138 assertEquals(assertMessage
, 6, occurrenceService
.count(SpecimenOrObservationBase
.class));
139 assertEquals(assertMessage
, 4, eventService
.count(DerivationEvent
.class));
140 assertEquals(assertMessage
, 2, occurrenceService
.count(FieldUnit
.class));
141 assertEquals(assertMessage
, 4, occurrenceService
.count(DerivedUnit
.class));
142 assertEquals(assertMessage
, 2, occurrenceService
.count(DnaSample
.class));
143 assertEquals("incorrect number of amplification results", 1, dnaSample
.getAmplificationResults().size());
144 assertEquals("number of sequences incorrect", 1, dnaSample
.getSequences().size());
145 assertEquals("incorrect number of single reads", 1, dnaSample
.getAmplificationResults().iterator().next().getSingleReads().size());
148 deleteResult
= occurrenceService
.delete(fieldUnit
, config
);
149 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
150 assertEquals(assertMessage
, 2, eventService
.count(DerivationEvent
.class));
151 assertEquals(assertMessage
, 3, occurrenceService
.count(SpecimenOrObservationBase
.class));
152 assertEquals(assertMessage
, 1, occurrenceService
.count(FieldUnit
.class));
153 assertEquals(assertMessage
, 2, occurrenceService
.count(DerivedUnit
.class));
154 assertEquals(assertMessage
, 1, occurrenceService
.count(DnaSample
.class));
155 typeDesignations
= nameService
.getTypeDesignations(name
, null, 100, 0);
156 Long afterDeleteCount
= typeDesignations
.getCount();
157 assertTrue(oldCount
> afterDeleteCount
);
161 @DataSet(loadStrategy
=CleanSweepInsertLoadStrategy
.class)
162 public void testDeepDelete_DerivedUnit(){
163 String assertMessage
= "Incorrect number of specimens after deletion.";
164 DeleteResult deleteResult
= null;
165 SpecimenDeleteConfigurator config
= new SpecimenDeleteConfigurator();
166 config
.setDeleteMolecularData(true);
167 config
.setDeleteChildren(true);
169 DerivedUnit derivedUnit
= (DerivedUnit
) occurrenceService
.load(DERIVED_UNIT_UUID
);
170 DnaSample dnaSample
= (DnaSample
) occurrenceService
.load(DNA_SAMPLE_UUID
);
172 //check initial state
173 assertEquals(assertMessage
, 3, occurrenceService
.count(SpecimenOrObservationBase
.class));
174 assertEquals(assertMessage
, 1, occurrenceService
.count(FieldUnit
.class));
175 assertEquals(assertMessage
, 2, occurrenceService
.count(DerivedUnit
.class));
176 assertEquals(assertMessage
, 1, occurrenceService
.count(DnaSample
.class));
177 assertEquals("incorrect number of amplification results", 1, dnaSample
.getAmplificationResults().size());
178 assertEquals("number of sequences incorrect", 1, dnaSample
.getSequences().size());
179 assertEquals("incorrect number of single reads", 1, dnaSample
.getAmplificationResults().iterator().next().getSingleReads().size());
181 //delete derived unit
182 deleteResult
= occurrenceService
.delete(derivedUnit
, config
);
183 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
184 assertEquals(assertMessage
, 1, occurrenceService
.count(SpecimenOrObservationBase
.class));
185 assertEquals(assertMessage
, 1, occurrenceService
.count(FieldUnit
.class));
186 assertEquals(assertMessage
, 0, occurrenceService
.count(DerivedUnit
.class));
187 assertEquals(assertMessage
, 0, occurrenceService
.count(DnaSample
.class));
191 @DataSet(loadStrategy
=CleanSweepInsertLoadStrategy
.class)
192 public void testDeepDelete_DnaSample(){
193 String assertMessage
= "Incorrect number of specimens after deletion.";
194 DeleteResult deleteResult
= null;
195 SpecimenDeleteConfigurator config
= new SpecimenDeleteConfigurator();
196 config
.setDeleteMolecularData(true);
197 config
.setDeleteChildren(true);
199 DnaSample dnaSample
= (DnaSample
) occurrenceService
.load(DNA_SAMPLE_UUID
);
201 //check initial state
202 assertEquals(assertMessage
, 3, occurrenceService
.count(SpecimenOrObservationBase
.class));
203 assertEquals(assertMessage
, 1, occurrenceService
.count(FieldUnit
.class));
204 assertEquals(assertMessage
, 2, occurrenceService
.count(DerivedUnit
.class));
205 assertEquals(assertMessage
, 1, occurrenceService
.count(DnaSample
.class));
206 assertEquals("incorrect number of amplification results", 1, dnaSample
.getAmplificationResults().size());
207 assertEquals("number of sequences incorrect", 1, dnaSample
.getSequences().size());
208 assertEquals("incorrect number of single reads", 1, dnaSample
.getAmplificationResults().iterator().next().getSingleReads().size());
211 deleteResult
= occurrenceService
.delete(dnaSample
, config
);
212 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
213 assertEquals(assertMessage
, 2, occurrenceService
.count(SpecimenOrObservationBase
.class));
214 assertEquals(assertMessage
, 1, occurrenceService
.count(FieldUnit
.class));
215 assertEquals(assertMessage
, 1, occurrenceService
.count(DerivedUnit
.class));
216 assertEquals(assertMessage
, 0, occurrenceService
.count(DnaSample
.class));
220 @DataSet(loadStrategy
=CleanSweepInsertLoadStrategy
.class, value
="OccurrenceServiceDeepDeleteTest.testDeepDelete_SingleRead.xml")
221 public void testDeepDelete_SingleRead(){
222 UUID sequenceA1Uuid
= UUID
.fromString("3db46d26-94ef-4759-aad8-42d0b9aea9b6");
223 UUID sequenceA2Uuid
= UUID
.fromString("afa3771c-2b9d-46d7-82e0-8b9c050706e3");
224 UUID sequenceB1Uuid
= UUID
.fromString("d7199db5-708e-470a-a573-9c760dd07cd1");
225 UUID sequenceB2Uuid
= UUID
.fromString("1cb83575-38ea-4a8c-9418-d87163f425ce");
226 UUID singleReadAUuid
= UUID
.fromString("82f538a1-2274-4d55-b27b-ed2f004ab5cd");
227 UUID singleReadBUuid
= UUID
.fromString("fc74199a-89dc-40a0-9cbd-08cebebff4b5");
229 //how the XML was generated
230 // Sequence sequenceA1 = Sequence.NewInstance("A");
231 // Sequence sequenceA2 = Sequence.NewInstance("T");
232 // Sequence sequenceB1 = Sequence.NewInstance("C");
233 // Sequence sequenceB2 = Sequence.NewInstance("G");
235 // SingleRead singleReadA = SingleRead.NewInstance();
236 // SingleRead singleReadB = SingleRead.NewInstance();
238 // sequenceA1.setUuid(sequenceA1Uuid);
239 // sequenceA2.setUuid(sequenceA2Uuid);
240 // sequenceB1.setUuid(sequenceB1Uuid);
241 // sequenceB1.setUuid(sequenceB2Uuid);
242 // singleReadA.setUuid(singleReadAUuid);
243 // singleReadB.setUuid(singleReadBUuid);
245 // SingleReadAlignment.NewInstance(sequenceA1, singleReadA);
246 // SingleReadAlignment.NewInstance(sequenceA2, singleReadA);
247 // SingleReadAlignment.NewInstance(sequenceB1, singleReadB);
248 // SingleReadAlignment.NewInstance(sequenceB2, singleReadB);
250 // sequenceService.save(sequenceA1);
251 // sequenceService.save(sequenceA2);
252 // sequenceService.save(sequenceB1);
253 // sequenceService.save(sequenceB2);
255 // commitAndStartNewTransaction(null);
261 // writeDbUnitDataSetFile(new String[] {
262 // "SpecimenOrObservationBase",
263 // "SpecimenOrObservationBase_DerivationEvent",
264 // "DerivationEvent",
267 // "SingleReadAlignment",
269 // "AmplificationResult",
270 // "DescriptionElementBase",
271 // "DescriptionBase",
273 // "TypeDesignationBase",
275 // "TaxonName_TypeDesignationBase",
276 // "HomotypicalGroup"
277 // }, "testDeepDelete_SingleRead");
278 // } catch (FileNotFoundException e) {
279 // e.printStackTrace();
282 DeleteResult deleteResult
= null;
283 SpecimenDeleteConfigurator config
= new SpecimenDeleteConfigurator();
284 config
.setDeleteMolecularData(true);
285 config
.setDeleteChildren(true);
287 Sequence sequenceA1
= sequenceService
.load(sequenceA1Uuid
);
288 Sequence sequenceA2
= sequenceService
.load(sequenceA2Uuid
);
289 Sequence sequenceB1
= sequenceService
.load(sequenceB1Uuid
);
290 Sequence sequenceB2
= sequenceService
.load(sequenceB2Uuid
);
291 SingleRead singleReadA
= singleReadDao
.load(singleReadAUuid
);
292 SingleRead singleReadB
= singleReadDao
.load(singleReadBUuid
);
294 //check initial state
295 assertNotNull(sequenceA1
);
296 assertNotNull(sequenceA2
);
297 assertNotNull(sequenceB1
);
298 assertNotNull(sequenceB2
);
299 assertNotNull(singleReadA
);
300 assertNotNull(singleReadB
);
301 assertEquals("number of sequences incorrect", 4, sequenceService
.count(Sequence
.class));
302 assertEquals("incorrect number of single reads", 2, singleReadDao
.count());
304 //A: delete singleRead
305 //delete singleReadA from sequenceA1 (singleReadA should NOT be deleted)
306 deleteResult
= sequenceService
.deleteSingleRead(singleReadA
, sequenceA1
);
307 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
308 assertEquals("incorrect number of single reads", 2, singleReadDao
.count());
309 assertEquals(0, sequenceA1
.getSingleReadAlignments().size());
310 assertNotNull(singleReadDao
.load(singleReadAUuid
));
312 //delete singleReadA from sequenceA2 (singleReadA should be deleted)
313 deleteResult
= sequenceService
.deleteSingleRead(singleReadA
, sequenceA2
);
314 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
315 assertEquals("incorrect number of single reads", 1, singleReadDao
.count());
316 assertEquals(0, sequenceA2
.getSingleReadAlignments().size());
317 assertTrue(singleReadDao
.load(singleReadAUuid
)==null);
320 //delete sequenceB1 (singleReadB should NOT be deleted)
321 deleteResult
= sequenceService
.delete(sequenceB1Uuid
);
322 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
323 assertEquals("incorrect number of single reads", 1, singleReadDao
.count());
324 assertNotNull(singleReadDao
.load(singleReadBUuid
));
326 //delete sequenceB1 (singleReadB should be deleted)
327 deleteResult
= sequenceService
.delete(sequenceB2Uuid
);
328 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
329 assertEquals("incorrect number of single reads", 0, singleReadDao
.count());
330 assertTrue(singleReadDao
.load(singleReadBUuid
)==null);
334 @DataSet(loadStrategy
=CleanSweepInsertLoadStrategy
.class, value
="OccurrenceServiceDeepDeleteTest.testDeepDelete_FieldUnitWithSiblingDerivatives.xml")
335 public void testDeepDelete_FieldUnitWithSiblingDerivatives(){
336 String assertMessage
= "Incorrect number of specimens after deletion.";
337 DeleteResult deleteResult
= null;
338 SpecimenDeleteConfigurator config
= new SpecimenDeleteConfigurator();
339 config
.setDeleteChildren(true);
341 FieldUnit fieldUnit
= (FieldUnit
) occurrenceService
.load(FIELD_UNIT_UUID
);
343 //check initial state
344 assertEquals(assertMessage
, 3, occurrenceService
.count(SpecimenOrObservationBase
.class));
345 assertEquals(assertMessage
, 1, occurrenceService
.count(FieldUnit
.class));
346 assertEquals(assertMessage
, 2, occurrenceService
.count(DerivedUnit
.class));
347 assertEquals(assertMessage
, 1, occurrenceService
.count(DnaSample
.class));
350 deleteResult
= occurrenceService
.delete(fieldUnit
, config
);
351 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
352 assertEquals(assertMessage
, 0, occurrenceService
.count(SpecimenOrObservationBase
.class));
353 assertEquals(assertMessage
, 0, occurrenceService
.count(FieldUnit
.class));
354 assertEquals(assertMessage
, 0, occurrenceService
.count(DerivedUnit
.class));
355 assertEquals(assertMessage
, 0, occurrenceService
.count(DnaSample
.class));
360 @DataSet(value
="OccurrenceServiceDeepDeleteTest.testDeleteStepByStep.xml", loadStrategy
=CleanSweepInsertLoadStrategy
.class)
361 public void testDeleteDerivateHierarchyStepByStep(){
362 UUID fieldUnitUuid
= UUID
.fromString("4d91a9bc-2af7-40f8-b6e6-545305301807");
363 UUID derivedUnitUuid
= UUID
.fromString("f9c57904-e512-4927-90ad-f3833cdef967");
364 UUID tissueSampleUuid
= UUID
.fromString("14b92fce-1236-455b-ba46-2a7e35d9230e");
365 UUID dnaSampleUuid
= UUID
.fromString("60c31688-edec-4796-aa2f-28a7ea12256b");
366 UUID sequenceUuid
= UUID
.fromString("24804b67-d6f7-48e5-811a-e7240230d305");
368 String assertMessage
= "Incorrect number of specimens after deletion.";
369 DeleteResult deleteResult
= null;
370 SpecimenDeleteConfigurator config
= new SpecimenDeleteConfigurator();
372 FieldUnit fieldUnit
= (FieldUnit
) occurrenceService
.load(fieldUnitUuid
);
373 DerivedUnit derivedUnit
= (DerivedUnit
) occurrenceService
.load(derivedUnitUuid
);
374 DerivedUnit tissueSample
= (DerivedUnit
) occurrenceService
.load(tissueSampleUuid
);
375 DnaSample dnaSample
= (DnaSample
) occurrenceService
.load(dnaSampleUuid
);
376 Sequence consensusSequence
= sequenceService
.load(sequenceUuid
);
378 //check initial state
379 assertNotNull(fieldUnit
);
380 assertNotNull(derivedUnit
);
381 assertNotNull(tissueSample
);
382 assertNotNull(dnaSample
);
383 assertNotNull(consensusSequence
);
385 assertEquals(assertMessage
, 4, occurrenceService
.count(SpecimenOrObservationBase
.class));
386 assertEquals(assertMessage
, 1, occurrenceService
.count(FieldUnit
.class));
387 assertEquals(assertMessage
, 3, occurrenceService
.count(DerivedUnit
.class));
388 assertEquals(assertMessage
, 1, occurrenceService
.count(DnaSample
.class));
389 assertEquals("incorrect number of amplification results", 1, dnaSample
.getAmplificationResults().size());
390 assertEquals("number of sequences incorrect", 1, dnaSample
.getSequences().size());
391 assertEquals("incorrect number of single reads", 1, dnaSample
.getAmplificationResults().iterator().next().getSingleReads().size());
392 assertEquals("incorrect number of single reads", 1, consensusSequence
.getSingleReads().size());
393 assertEquals(consensusSequence
.getSingleReads().iterator().next(), dnaSample
.getAmplificationResults().iterator().next().getSingleReads().iterator().next());
395 //allow deletion of molecular data
396 config
.setDeleteMolecularData(true);
398 SingleRead singleRead
= dnaSample
.getAmplificationResults().iterator().next().getSingleReads().iterator().next();
399 deleteResult
= sequenceService
.deleteSingleRead(singleRead
, consensusSequence
);
400 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
401 assertEquals("incorrect number of single reads", 0, dnaSample
.getAmplificationResults().iterator().next().getSingleReads().size());
402 assertEquals("incorrect number of single reads", 0, consensusSequence
.getSingleReads().size());
403 assertEquals("incorrect number of single reads", 0, singleReadDao
.count());
406 deleteResult
= sequenceService
.delete(consensusSequence
);
407 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
408 assertEquals("number of sequences incorrect", 0, dnaSample
.getSequences().size());
412 deleteResult
= occurrenceService
.delete(dnaSample
, config
);
413 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
414 assertEquals(assertMessage
, 3, occurrenceService
.count(SpecimenOrObservationBase
.class));
415 assertEquals(assertMessage
, 1, occurrenceService
.count(FieldUnit
.class));
416 assertEquals(assertMessage
, 2, occurrenceService
.count(DerivedUnit
.class));
417 assertEquals(assertMessage
, 0, occurrenceService
.count(DnaSample
.class));
419 //delete tissue sample
420 deleteResult
= occurrenceService
.delete(tissueSample
, config
);
421 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
422 assertEquals(assertMessage
, 2, occurrenceService
.count(SpecimenOrObservationBase
.class));
423 assertEquals(assertMessage
, 1, occurrenceService
.count(FieldUnit
.class));
424 assertEquals(assertMessage
, 1, occurrenceService
.count(DerivedUnit
.class));
425 assertEquals(assertMessage
, 0, occurrenceService
.count(DnaSample
.class));
427 //delete derived unit
428 deleteResult
= occurrenceService
.delete(derivedUnit
, config
);
429 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
430 assertEquals(assertMessage
, 1, occurrenceService
.count(SpecimenOrObservationBase
.class));
431 assertEquals(assertMessage
, 1, occurrenceService
.count(FieldUnit
.class));
432 assertEquals(assertMessage
, 0, occurrenceService
.count(DerivedUnit
.class));
433 assertEquals(assertMessage
, 0, occurrenceService
.count(DnaSample
.class));
436 deleteResult
= occurrenceService
.delete(fieldUnit
, config
);
438 assertTrue(deleteResult
.toString(), deleteResult
.isOk());
439 assertEquals(assertMessage
, 0, occurrenceService
.count(SpecimenOrObservationBase
.class));
440 assertEquals(assertMessage
, 0, occurrenceService
.count(FieldUnit
.class));
441 assertEquals(assertMessage
, 0, occurrenceService
.count(DerivedUnit
.class));
442 assertEquals(assertMessage
, 0, occurrenceService
.count(DnaSample
.class));
447 public void createTestDataSet() throws FileNotFoundException
{
448 UUID sequenceA1Uuid
= UUID
.fromString("3db46d26-94ef-4759-aad8-42d0b9aea9b6");
449 UUID sequenceA2Uuid
= UUID
.fromString("afa3771c-2b9d-46d7-82e0-8b9c050706e3");
450 UUID sequenceB1Uuid
= UUID
.fromString("d7199db5-708e-470a-a573-9c760dd07cd1");
451 UUID sequenceB2Uuid
= UUID
.fromString("1cb83575-38ea-4a8c-9418-d87163f425ce");
452 UUID singleReadAUuid
= UUID
.fromString("82f538a1-2274-4d55-b27b-ed2f004ab5cd");
453 UUID singleReadBUuid
= UUID
.fromString("fc74199a-89dc-40a0-9cbd-08cebebff4b5");
455 //how the XML was generated
456 Sequence sequenceA1
= Sequence
.NewInstance("A");
457 Sequence sequenceA2
= Sequence
.NewInstance("T");
458 Sequence sequenceB1
= Sequence
.NewInstance("C");
459 Sequence sequenceB2
= Sequence
.NewInstance("G");
461 SingleRead singleReadA
= SingleRead
.NewInstance();
462 SingleRead singleReadB
= SingleRead
.NewInstance();
464 sequenceA1
.setUuid(sequenceA1Uuid
);
465 sequenceA2
.setUuid(sequenceA2Uuid
);
466 sequenceB1
.setUuid(sequenceB1Uuid
);
467 sequenceB1
.setUuid(sequenceB2Uuid
);
468 singleReadA
.setUuid(singleReadAUuid
);
469 singleReadB
.setUuid(singleReadBUuid
);
471 SingleReadAlignment
.NewInstance(sequenceA1
, singleReadA
);
472 SingleReadAlignment
.NewInstance(sequenceA2
, singleReadA
);
473 SingleReadAlignment
.NewInstance(sequenceB1
, singleReadB
);
474 SingleReadAlignment
.NewInstance(sequenceB2
, singleReadB
);
476 sequenceService
.save(sequenceA1
);
477 sequenceService
.save(sequenceA2
);
478 sequenceService
.save(sequenceB1
);
479 sequenceService
.save(sequenceB2
);
481 commitAndStartNewTransaction(null);
487 writeDbUnitDataSetFile(new String
[] {
488 "SpecimenOrObservationBase",
489 "SpecimenOrObservationBase_DerivationEvent",
493 "SingleReadAlignment",
495 "AmplificationResult",
496 "DescriptionElementBase",
499 "TypeDesignationBase",
501 "TaxonName_TypeDesignationBase",
503 }, "testDeepDelete_SingleRead", true);
504 } catch (FileNotFoundException e
) {
508 System
.out
.println(sequenceA1
.getUuid());
509 System
.out
.println(sequenceA2
.getUuid());
510 System
.out
.println(sequenceB1
.getUuid());
511 System
.out
.println(sequenceB2
.getUuid());
512 System
.out
.println(singleReadA
.getUuid());
513 System
.out
.println(singleReadB
.getUuid());