1
package org.hisp.dhis.dataelement;
4
* Copyright (c) 2004-2007, University of Oslo
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions are met:
9
* * Redistributions of source code must retain the above copyright notice, this
10
* list of conditions and the following disclaimer.
11
* * Redistributions in binary form must reproduce the above copyright notice,
12
* this list of conditions and the following disclaimer in the documentation
13
* and/or other materials provided with the distribution.
14
* * Neither the name of the HISP project nor the names of its contributors may
15
* be used to endorse or promote products derived from this software without
16
* specific prior written permission.
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
22
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
25
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
import java.util.Collection;
31
import java.util.HashSet;
32
import java.util.Iterator;
36
import org.hisp.dhis.DhisSpringTest;
37
import org.hisp.dhis.expression.Expression;
38
import org.hisp.dhis.hierarchy.HierarchyViolationException;
39
import org.hisp.dhis.system.util.UUIdUtils;
40
import org.hisp.dhis.transaction.TransactionManager;
43
* @author Kristian Nordal
44
* @version $Id: DataElementServiceTest.java 5742 2008-09-26 11:37:35Z larshelg $
46
public class DataElementServiceTest
47
extends DhisSpringTest
49
private DataElementService dataElementService;
51
private TransactionManager transactionManager;
53
// -------------------------------------------------------------------------
55
// -------------------------------------------------------------------------
57
public void setUpTest()
60
dataElementService = (DataElementService) getBean( DataElementService.ID );
62
transactionManager = (TransactionManager) getBean( TransactionManager.ID );
65
// -------------------------------------------------------------------------
67
// -------------------------------------------------------------------------
69
private DataElement createDataElement( char uniqueCharacter )
71
DataElement dataElement = new DataElement();
73
setDataElementFields(dataElement, uniqueCharacter);
78
private DataElement setDataElementFields( DataElement dataElement, char uniqueCharacter )
80
dataElement.setUuid( UUIdUtils.getUUId() );
81
dataElement.setName( "DataElement" + uniqueCharacter );
82
dataElement.setAlternativeName( "AlternativeName" + uniqueCharacter );
83
dataElement.setShortName( "DE" + uniqueCharacter );
84
dataElement.setCode( "Code" + uniqueCharacter );
85
dataElement.setDescription( "DataElementDescription" + uniqueCharacter );
86
dataElement.setAggregationOperator( DataElement.AGGREGATION_OPERATOR_SUM );
87
dataElement.setType( DataElement.TYPE_INT );
91
private void assertEquals( char uniqueCharacter, DataElement dataElement )
93
assertEquals( "DataElement" + uniqueCharacter, dataElement.getName() );
94
assertEquals( "AlternativeName" + uniqueCharacter, dataElement.getAlternativeName() );
95
assertEquals( "DE" + uniqueCharacter, dataElement.getShortName() );
96
assertEquals( "Code" + uniqueCharacter, dataElement.getCode() );
97
assertEquals( "DataElementDescription" + uniqueCharacter, dataElement.getDescription() );
98
assertEquals( DataElement.TYPE_INT, dataElement.getType() );
101
// -------------------------------------------------------------------------
103
// -------------------------------------------------------------------------
105
public void testAddDataElement()
108
transactionManager.enter();
110
DataElement dataElementA = createDataElement( 'A' );
111
DataElement dataElementB = createDataElement( 'B' );
112
DataElement dataElementC = createDataElement( 'C' );
113
DataElement dataElementD = createDataElement( 'A' );
115
int idA = dataElementService.addDataElement( dataElementA );
116
int idB = dataElementService.addDataElement( dataElementB );
117
int idC = dataElementService.addDataElement( dataElementC );
119
transactionManager.leave();
123
// Should give unique constraint violation
124
dataElementService.addDataElement( dataElementD );
127
catch ( Exception e )
132
transactionManager.enter();
134
dataElementA = dataElementService.getDataElement( idA );
135
assertNotNull( dataElementA );
136
assertEquals( idA, dataElementA.getId() );
137
assertEquals( 'A', dataElementA );
139
dataElementB = dataElementService.getDataElement( idB );
140
assertNotNull( dataElementB );
141
assertEquals( idB, dataElementB.getId() );
142
assertEquals( 'B', dataElementB );
144
dataElementC = dataElementService.getDataElement( idC );
145
assertNotNull( dataElementC );
146
assertEquals( idC, dataElementC.getId() );
147
assertEquals( 'C', dataElementC );
149
transactionManager.leave();
152
public void testUpdateDataElement()
155
DataElement dataElementA = createDataElement( 'A' );
156
int idA = dataElementService.addDataElement( dataElementA );
157
dataElementA = dataElementService.getDataElement( idA );
158
assertEquals( DataElement.TYPE_INT, dataElementA.getType() );
160
dataElementA.setType( DataElement.TYPE_BOOL );
161
dataElementService.updateDataElement( dataElementA );
162
dataElementA = dataElementService.getDataElement( idA );
163
assertNotNull( dataElementA.getType() );
164
assertEquals( DataElement.TYPE_BOOL, dataElementA.getType() );
167
public void testDeleteAndGetDataElement()
170
DataElement dataElementA = createDataElement( 'A' );
171
DataElement dataElementB = createDataElement( 'B' );
172
DataElement dataElementC = createDataElement( 'C' );
173
DataElement dataElementD = createDataElement( 'D' );
175
int idA = dataElementService.addDataElement( dataElementA );
176
int idB = dataElementService.addDataElement( dataElementB );
177
int idC = dataElementService.addDataElement( dataElementC );
178
int idD = dataElementService.addDataElement( dataElementD );
180
assertNotNull( dataElementService.getDataElement( idA ) );
181
assertNotNull( dataElementService.getDataElement( idB ) );
182
assertNotNull( dataElementService.getDataElement( idC ) );
183
assertNotNull( dataElementService.getDataElement( idD ) );
185
transactionManager.enter();
187
dataElementA.setParent( dataElementB );
188
dataElementB.getChildren().add( dataElementA );
189
dataElementService.updateDataElement( dataElementA );
191
transactionManager.leave();
192
transactionManager.enter();
194
dataElementA = dataElementService.getDataElement( idA );
195
dataElementB = dataElementService.getDataElement( idB );
199
dataElementService.deleteDataElement( dataElementB );
202
catch ( HierarchyViolationException e )
207
transactionManager.leave();
208
transactionManager.enter();
210
dataElementA.setParent( null );
211
dataElementService.updateDataElement( dataElementA );
213
transactionManager.leave();
214
transactionManager.enter();
216
dataElementA = dataElementService.getDataElement( idA );
217
dataElementB = dataElementService.getDataElement( idB );
218
dataElementC = dataElementService.getDataElement( idC );
219
dataElementD = dataElementService.getDataElement( idD );
221
dataElementService.deleteDataElement( dataElementA );
222
assertNull( dataElementService.getDataElement( idA ) );
223
assertNotNull( dataElementService.getDataElement( idB ) );
224
assertNotNull( dataElementService.getDataElement( idC ) );
225
assertNotNull( dataElementService.getDataElement( idD ) );
227
dataElementService.deleteDataElement( dataElementB );
228
assertNull( dataElementService.getDataElement( idA ) );
229
assertNull( dataElementService.getDataElement( idB ) );
230
assertNotNull( dataElementService.getDataElement( idC ) );
231
assertNotNull( dataElementService.getDataElement( idD ) );
233
dataElementService.deleteDataElement( dataElementC );
234
assertNull( dataElementService.getDataElement( idA ) );
235
assertNull( dataElementService.getDataElement( idB ) );
236
assertNull( dataElementService.getDataElement( idC ) );
237
assertNotNull( dataElementService.getDataElement( idD ) );
239
dataElementService.deleteDataElement( dataElementD );
240
assertNull( dataElementService.getDataElement( idA ) );
241
assertNull( dataElementService.getDataElement( idB ) );
242
assertNull( dataElementService.getDataElement( idC ) );
243
assertNull( dataElementService.getDataElement( idD ) );
245
transactionManager.leave();
248
public void testGetDataElementByUUID()
251
DataElement dataElementA = createDataElement( 'A' );
252
int idA = dataElementService.addDataElement( dataElementA );
254
dataElementA = dataElementService.getDataElement( idA );
255
String uuid = dataElementA.getUuid();
257
DataElement dataElementB = dataElementService.getDataElement( uuid );
259
assertEquals( dataElementA, dataElementB );
262
public void testGetDataElementByName()
265
DataElement dataElementA = createDataElement( 'A' );
266
DataElement dataElementB = createDataElement( 'B' );
267
int idA = dataElementService.addDataElement( dataElementA );
268
int idB = dataElementService.addDataElement( dataElementB );
270
dataElementA = dataElementService.getDataElementByName( "DataElementA" );
271
assertNotNull( dataElementA );
272
assertEquals( idA, dataElementA.getId() );
273
assertEquals( 'A', dataElementA );
275
dataElementB = dataElementService.getDataElementByName( "DataElementB" );
276
assertNotNull( dataElementB );
277
assertEquals( idB, dataElementB.getId() );
278
assertEquals( 'B', dataElementB );
280
DataElement dataElementC = dataElementService.getDataElementByName( "DataElementC" );
281
assertNull( dataElementC );
284
public void testGetDataElementByAlternativeName()
287
DataElement dataElementA = createDataElement( 'A' );
288
DataElement dataElementB = createDataElement( 'B' );
289
int idA = dataElementService.addDataElement( dataElementA );
290
int idB = dataElementService.addDataElement( dataElementB );
292
dataElementA = dataElementService.getDataElementByAlternativeName( "AlternativeNameA" );
293
assertNotNull( dataElementA );
294
assertEquals( idA, dataElementA.getId() );
295
assertEquals( 'A', dataElementA );
297
dataElementB = dataElementService.getDataElementByAlternativeName( "AlternativeNameB" );
298
assertNotNull( dataElementB );
299
assertEquals( idB, dataElementB.getId() );
300
assertEquals( 'B', dataElementB );
302
DataElement dataElementC = dataElementService.getDataElementByAlternativeName( "AlternativeNameC" );
303
assertNull( dataElementC );
306
public void testGetDataElementByShortName()
309
DataElement dataElementA = createDataElement( 'A' );
310
DataElement dataElementB = createDataElement( 'B' );
311
int idA = dataElementService.addDataElement( dataElementA );
312
int idB = dataElementService.addDataElement( dataElementB );
314
dataElementA = dataElementService.getDataElementByShortName( "DEA" );
315
assertNotNull( dataElementA );
316
assertEquals( idA, dataElementA.getId() );
317
assertEquals( 'A', dataElementA );
319
dataElementB = dataElementService.getDataElementByShortName( "DEB" );
320
assertNotNull( dataElementB );
321
assertEquals( idB, dataElementB.getId() );
322
assertEquals( 'B', dataElementB );
324
DataElement dataElementC = dataElementService.getDataElementByShortName( "DEC" );
325
assertNull( dataElementC );
328
public void testGetDataElementByCode()
331
DataElement dataElementA = createDataElement( 'A' );
332
DataElement dataElementB = createDataElement( 'B' );
333
int idA = dataElementService.addDataElement( dataElementA );
334
int idB = dataElementService.addDataElement( dataElementB );
336
dataElementA = dataElementService.getDataElementByCode( "CodeA" );
337
assertNotNull( dataElementA );
338
assertEquals( idA, dataElementA.getId() );
339
assertEquals( 'A', dataElementA );
341
dataElementB = dataElementService.getDataElementByCode( "CodeB" );
342
assertNotNull( dataElementB );
343
assertEquals( idB, dataElementB.getId() );
344
assertEquals( 'B', dataElementB );
346
DataElement dataElementC = dataElementService.getDataElementByCode( "CodeC" );
347
assertNull( dataElementC );
350
public void testGetAllDataElements()
353
assertEquals( 0, dataElementService.getAllDataElements().size() );
355
DataElement dataElementA = createDataElement( 'A' );
356
DataElement dataElementB = createDataElement( 'B' );
357
DataElement dataElementC = createDataElement( 'C' );
358
DataElement dataElementD = createDataElement( 'D' );
360
dataElementService.addDataElement( dataElementA );
361
dataElementService.addDataElement( dataElementB );
362
dataElementService.addDataElement( dataElementC );
363
dataElementService.addDataElement( dataElementD );
365
Collection<DataElement> dataElementsRef = new HashSet<DataElement>();
366
dataElementsRef.add( dataElementA );
367
dataElementsRef.add( dataElementB );
368
dataElementsRef.add( dataElementC );
369
dataElementsRef.add( dataElementD );
371
transactionManager.enter();
373
Collection<DataElement> dataElements = dataElementService.getAllDataElements();
374
assertNotNull( dataElements );
375
assertEquals( dataElementsRef.size(), dataElements.size() );
376
assertTrue( dataElements.containsAll( dataElementsRef ) );
378
transactionManager.leave();
381
public void testGetAggregateableDataElements()
383
assertEquals( 0, dataElementService.getAggregateableDataElements().size() );
385
DataElement dataElementA = createDataElement( 'A' );
386
DataElement dataElementB = createDataElement( 'B' );
387
DataElement dataElementC = createDataElement( 'C' );
388
DataElement dataElementD = createDataElement( 'D' );
390
dataElementA.setType( DataElement.TYPE_INT );
391
dataElementB.setType( DataElement.TYPE_BOOL );
392
dataElementC.setType( DataElement.TYPE_STRING );
393
dataElementD.setType( DataElement.TYPE_INT );
395
dataElementService.addDataElement( dataElementA );
396
dataElementService.addDataElement( dataElementB );
397
dataElementService.addDataElement( dataElementC );
398
dataElementService.addDataElement( dataElementD );
400
Collection<DataElement> dataElementsRef = new HashSet<DataElement>();
401
dataElementsRef.add( dataElementA );
402
dataElementsRef.add( dataElementB );
403
dataElementsRef.add( dataElementD );
405
transactionManager.enter();
407
Collection<DataElement> dataElements = dataElementService.getAggregateableDataElements();
408
assertNotNull( dataElements );
409
assertEquals( dataElementsRef.size(), dataElements.size() );
410
assertTrue( dataElements.containsAll( dataElementsRef ) );
412
transactionManager.leave();
415
public void testGetAllActiveDataElements()
418
assertEquals( 0, dataElementService.getAllActiveDataElements().size() );
420
DataElement dataElementA = createDataElement( 'A' );
421
dataElementA.setActive( true );
422
DataElement dataElementB = createDataElement( 'B' );
423
dataElementB.setActive( true );
424
DataElement dataElementC = createDataElement( 'C' );
425
dataElementC.setActive( true );
426
DataElement dataElementD = createDataElement( 'D' );
428
dataElementService.addDataElement( dataElementA );
429
dataElementService.addDataElement( dataElementB );
430
dataElementService.addDataElement( dataElementC );
431
dataElementService.addDataElement( dataElementD );
433
Collection<DataElement> dataElementsRef = new HashSet<DataElement>();
434
dataElementsRef.add( dataElementA );
435
dataElementsRef.add( dataElementB );
436
dataElementsRef.add( dataElementC );
438
transactionManager.enter();
440
assertEquals( dataElementsRef.size() + 1, dataElementService.getAllDataElements().size() );
442
Collection<DataElement> dataElements = dataElementService.getAllActiveDataElements();
443
assertNotNull( dataElements );
444
assertEquals( dataElementsRef.size(), dataElements.size() );
445
assertTrue( dataElements.containsAll( dataElementsRef ) );
447
transactionManager.leave();
450
public void testGetDataElementsByAggregationOperator()
453
assertEquals( 0, dataElementService.getDataElementsByAggregationOperator(
454
DataElement.AGGREGATION_OPERATOR_AVERAGE ).size() );
455
assertEquals( 0, dataElementService.getDataElementsByAggregationOperator( DataElement.AGGREGATION_OPERATOR_SUM )
458
DataElement dataElementA = createDataElement( 'A' );
459
dataElementA.setAggregationOperator( DataElement.AGGREGATION_OPERATOR_AVERAGE );
460
DataElement dataElementB = createDataElement( 'B' );
461
dataElementB.setAggregationOperator( DataElement.AGGREGATION_OPERATOR_SUM );
462
DataElement dataElementC = createDataElement( 'C' );
463
dataElementC.setAggregationOperator( DataElement.AGGREGATION_OPERATOR_SUM );
464
DataElement dataElementD = createDataElement( 'D' );
465
dataElementD.setAggregationOperator( DataElement.AGGREGATION_OPERATOR_SUM );
467
dataElementService.addDataElement( dataElementA );
468
dataElementService.addDataElement( dataElementB );
469
dataElementService.addDataElement( dataElementC );
470
dataElementService.addDataElement( dataElementD );
472
assertEquals( 1, dataElementService.getDataElementsByAggregationOperator(
473
DataElement.AGGREGATION_OPERATOR_AVERAGE ).size() );
474
assertEquals( 3, dataElementService.getDataElementsByAggregationOperator( DataElement.AGGREGATION_OPERATOR_SUM )
478
public void testGetDataElementsByType()
480
assertEquals( 0, dataElementService.getDataElementsByType( DataElement.TYPE_INT ).size() );
481
assertEquals( 0, dataElementService.getDataElementsByType( DataElement.TYPE_BOOL ).size() );
483
DataElement dataElementA = createDataElement( 'A' );
484
dataElementA.setType( DataElement.TYPE_INT );
485
DataElement dataElementB = createDataElement( 'B' );
486
dataElementB.setType( DataElement.TYPE_BOOL );
487
DataElement dataElementC = createDataElement( 'C' );
488
dataElementC.setType( DataElement.TYPE_BOOL );
489
DataElement dataElementD = createDataElement( 'D' );
490
dataElementD.setType( DataElement.TYPE_BOOL );
492
dataElementService.addDataElement( dataElementA );
493
dataElementService.addDataElement( dataElementB );
494
dataElementService.addDataElement( dataElementC );
495
dataElementService.addDataElement( dataElementD );
497
assertEquals( 1, dataElementService.getDataElementsByType( DataElement.TYPE_INT ).size() );
498
assertEquals( 3, dataElementService.getDataElementsByType( DataElement.TYPE_BOOL ).size() );
501
// -------------------------------------------------------------------------
502
// CalculatedDataElements
503
// -------------------------------------------------------------------------
505
public void testCalculatedDataElements()
508
DataElement deA = createDataElement('A');
509
DataElement deB = createDataElement('B');
510
DataElement deC = createDataElement('C');
511
DataElement deD = createDataElement('D');
512
DataElement deE = createDataElement('E');
514
int deIdA = dataElementService.addDataElement(deA);
515
int deIdB = dataElementService.addDataElement(deB);
516
int deIdC = dataElementService.addDataElement(deC);
517
int deIdD = dataElementService.addDataElement(deD);
518
dataElementService.addDataElement(deE);
520
CalculatedDataElement cdeX = (CalculatedDataElement) setDataElementFields( new CalculatedDataElement (), 'X' );
521
CalculatedDataElement cdeY = (CalculatedDataElement) setDataElementFields( new CalculatedDataElement (), 'Y' );
523
Set<DataElement> dataElementsX = new HashSet<DataElement> ();
524
dataElementsX.add(deA);
525
dataElementsX.add(deB);
526
Expression expressionX = new Expression ( "["+deIdA+"] * 2 + ["+deIdB+"] * 3", "foo", dataElementsX );
527
cdeX.setExpression(expressionX);
529
dataElementService.addDataElement(cdeX);
531
Set<DataElement> dataElementsY = new HashSet<DataElement> ();
532
dataElementsY.add(deC);
533
dataElementsY.add(deD);
534
Expression expressionY = new Expression ( "["+deIdC+"] * 2 + ["+deIdD+"] * 3", "foo", dataElementsY );
535
cdeY.setExpression(expressionY);
537
dataElementService.addDataElement(cdeY);
539
Collection<CalculatedDataElement> cdes = dataElementService.getAllCalculatedDataElements();
540
assertEquals( 2, cdes.size() );
542
//CalculatedDataElement cde;
543
CalculatedDataElement cde = dataElementService.getCalculatedDataElementByDataElement( deA );
545
assertEquals("DataElementX", cde.getName() );
547
cde = dataElementService.getCalculatedDataElementByDataElement( deE );
550
Set<DataElement> dataElements = new HashSet<DataElement> ();
551
dataElements.add(deA);
552
cdes = dataElementService.getCalculatedDataElementsByDataElements( dataElements );
553
assertEquals( 1, cdes.size() );
554
assertEquals("DataElementX", cdes.iterator().next().getName());
556
dataElements.add(deC);
557
cdes = dataElementService.getCalculatedDataElementsByDataElements( dataElements );
558
assertEquals( 2, cdes.size() );
560
Iterator<CalculatedDataElement> iterator = cdes.iterator();
561
assertEquals( iterator.next().getName(), "DataElementX" );
562
assertEquals( iterator.next().getName(), "DataElementY" );
564
//Make sure the results are unique
565
dataElements.add(deB);
566
cdes = dataElementService.getCalculatedDataElementsByDataElements( dataElements );
567
assertEquals( 2, cdes.size() );
569
iterator = cdes.iterator();
570
assertEquals( iterator.next().getName(), "DataElementX" );
571
assertEquals( iterator.next().getName(), "DataElementY" );
573
//Check that no other data elements are returned
574
dataElements.add(deE);
575
cdes = dataElementService.getCalculatedDataElementsByDataElements( dataElements );
576
assertEquals( 2, cdes.size() );
578
Map<DataElement,Integer> factorMap = dataElementService.getDataElementFactors(cdeX);
579
assertEquals( 2, factorMap.size() );
580
assertTrue(factorMap.keySet().contains(deA));
581
assertEquals( new Integer(2), factorMap.get(deA));
582
assertTrue(factorMap.keySet().contains(deB));
583
assertEquals( new Integer(3), factorMap.get(deB));
587
// -------------------------------------------------------------------------
589
// -------------------------------------------------------------------------
591
public void testAddDataElementGroup()
594
DataElementGroup dataElementGroupA = new DataElementGroup( "DataElementGroupA" );
595
DataElementGroup dataElementGroupB = new DataElementGroup( "DataElementGroupB" );
596
DataElementGroup dataElementGroupC = new DataElementGroup( "DataElementGroupC" );
597
DataElementGroup dataElementGroupD = new DataElementGroup( "DataElementGroupA" );
599
int idA = dataElementService.addDataElementGroup( dataElementGroupA );
600
int idB = dataElementService.addDataElementGroup( dataElementGroupB );
601
int idC = dataElementService.addDataElementGroup( dataElementGroupC );
605
// Should give unique constraint violation
606
dataElementService.addDataElementGroup( dataElementGroupD );
609
catch ( Exception e )
614
dataElementGroupA = dataElementService.getDataElementGroup( idA );
615
assertNotNull( dataElementGroupA );
616
assertEquals( idA, dataElementGroupA.getId() );
617
assertEquals( "DataElementGroupA", dataElementGroupA.getName() );
619
dataElementGroupB = dataElementService.getDataElementGroup( idB );
620
assertNotNull( dataElementGroupB );
621
assertEquals( idB, dataElementGroupB.getId() );
622
assertEquals( "DataElementGroupB", dataElementGroupB.getName() );
624
dataElementGroupC = dataElementService.getDataElementGroup( idC );
625
assertNotNull( dataElementGroupC );
626
assertEquals( idC, dataElementGroupC.getId() );
627
assertEquals( "DataElementGroupC", dataElementGroupC.getName() );
630
public void testUpdateDataElementGroup()
633
DataElementGroup dataElementGroupA = new DataElementGroup( "DataElementGroupA" );
634
DataElementGroup dataElementGroupB = new DataElementGroup( "DataElementGroupB" );
635
DataElementGroup dataElementGroupC = new DataElementGroup( "DataElementGroupC" );
637
int idA = dataElementService.addDataElementGroup( dataElementGroupA );
638
int idB = dataElementService.addDataElementGroup( dataElementGroupB );
639
int idC = dataElementService.addDataElementGroup( dataElementGroupC );
641
dataElementGroupA = dataElementService.getDataElementGroup( idA );
642
assertNotNull( dataElementGroupA );
643
assertEquals( idA, dataElementGroupA.getId() );
644
assertEquals( "DataElementGroupA", dataElementGroupA.getName() );
646
dataElementGroupA.setName( "DataElementGroupAA" );
647
dataElementService.updateDataElementGroup( dataElementGroupA );
649
dataElementGroupA = dataElementService.getDataElementGroup( idA );
650
assertNotNull( dataElementGroupA );
651
assertEquals( idA, dataElementGroupA.getId() );
652
assertEquals( "DataElementGroupAA", dataElementGroupA.getName() );
654
dataElementGroupB = dataElementService.getDataElementGroup( idB );
655
assertNotNull( dataElementGroupB );
656
assertEquals( idB, dataElementGroupB.getId() );
657
assertEquals( "DataElementGroupB", dataElementGroupB.getName() );
659
dataElementGroupC = dataElementService.getDataElementGroup( idC );
660
assertNotNull( dataElementGroupC );
661
assertEquals( idC, dataElementGroupC.getId() );
662
assertEquals( "DataElementGroupC", dataElementGroupC.getName() );
665
public void testDeleteAndGetDataElementGroup()
668
DataElementGroup dataElementGroupA = new DataElementGroup( "DataElementGroupA" );
669
DataElementGroup dataElementGroupB = new DataElementGroup( "DataElementGroupB" );
670
DataElementGroup dataElementGroupC = new DataElementGroup( "DataElementGroupC" );
671
DataElementGroup dataElementGroupD = new DataElementGroup( "DataElementGroupD" );
673
int idA = dataElementService.addDataElementGroup( dataElementGroupA );
674
int idB = dataElementService.addDataElementGroup( dataElementGroupB );
675
int idC = dataElementService.addDataElementGroup( dataElementGroupC );
676
int idD = dataElementService.addDataElementGroup( dataElementGroupD );
678
assertNotNull( dataElementService.getDataElementGroup( idA ) );
679
assertNotNull( dataElementService.getDataElementGroup( idB ) );
680
assertNotNull( dataElementService.getDataElementGroup( idC ) );
681
assertNotNull( dataElementService.getDataElementGroup( idD ) );
683
dataElementService.deleteDataElementGroup( dataElementGroupA );
684
assertNull( dataElementService.getDataElementGroup( idA ) );
685
assertNotNull( dataElementService.getDataElementGroup( idB ) );
686
assertNotNull( dataElementService.getDataElementGroup( idC ) );
687
assertNotNull( dataElementService.getDataElementGroup( idD ) );
689
dataElementService.deleteDataElementGroup( dataElementGroupB );
690
assertNull( dataElementService.getDataElementGroup( idA ) );
691
assertNull( dataElementService.getDataElementGroup( idB ) );
692
assertNotNull( dataElementService.getDataElementGroup( idC ) );
693
assertNotNull( dataElementService.getDataElementGroup( idD ) );
695
dataElementService.deleteDataElementGroup( dataElementGroupC );
696
assertNull( dataElementService.getDataElementGroup( idA ) );
697
assertNull( dataElementService.getDataElementGroup( idB ) );
698
assertNull( dataElementService.getDataElementGroup( idC ) );
699
assertNotNull( dataElementService.getDataElementGroup( idD ) );
701
dataElementService.deleteDataElementGroup( dataElementGroupD );
702
assertNull( dataElementService.getDataElementGroup( idA ) );
703
assertNull( dataElementService.getDataElementGroup( idB ) );
704
assertNull( dataElementService.getDataElementGroup( idC ) );
705
assertNull( dataElementService.getDataElementGroup( idD ) );
708
public void testGetDataElementGroupByUUID()
711
DataElementGroup groupA = new DataElementGroup( "groupA" );
712
int idA = dataElementService.addDataElementGroup( groupA );
714
groupA = dataElementService.getDataElementGroup( idA );
715
String uuid = groupA.getUuid();
717
DataElementGroup groupB = dataElementService.getDataElementGroup( uuid );
719
assertEquals( groupA, groupB );
722
public void testGetDataElementGroupByName()
725
DataElementGroup dataElementGroupA = new DataElementGroup( "DataElementGroupA" );
726
DataElementGroup dataElementGroupB = new DataElementGroup( "DataElementGroupB" );
727
int idA = dataElementService.addDataElementGroup( dataElementGroupA );
728
int idB = dataElementService.addDataElementGroup( dataElementGroupB );
730
assertNotNull( dataElementService.getDataElementGroup( idA ) );
731
assertNotNull( dataElementService.getDataElementGroup( idB ) );
733
dataElementGroupA = dataElementService.getDataElementGroupByName( "DataElementGroupA" );
734
assertNotNull( dataElementGroupA );
735
assertEquals( idA, dataElementGroupA.getId() );
736
assertEquals( "DataElementGroupA", dataElementGroupA.getName() );
738
dataElementGroupB = dataElementService.getDataElementGroupByName( "DataElementGroupB" );
739
assertNotNull( dataElementGroupB );
740
assertEquals( idB, dataElementGroupB.getId() );
741
assertEquals( "DataElementGroupB", dataElementGroupB.getName() );
743
DataElementGroup dataElementGroupC = dataElementService.getDataElementGroupByName( "DataElementGroupC" );
744
assertNull( dataElementGroupC );
747
public void testGetAllDataElementGroups()
752
public void testGetGroupsContainingDataElement() throws Exception
754
transactionManager.enter();
756
DataElement dataElementA = createDataElement( 'A' );
757
DataElement dataElementB = createDataElement( 'B' );
758
DataElement dataElementC = createDataElement( 'C' );
759
DataElement dataElementD = createDataElement( 'D' );
760
dataElementService.addDataElement( dataElementA );
761
dataElementService.addDataElement( dataElementB );
762
dataElementService.addDataElement( dataElementC );
763
dataElementService.addDataElement( dataElementD );
765
transactionManager.leave();
766
transactionManager.enter();
768
DataElementGroup dataElementGroupA = new DataElementGroup( "DataElementGroupA" );
769
DataElementGroup dataElementGroupB = new DataElementGroup( "DataElementGroupB" );
770
DataElementGroup dataElementGroupC = new DataElementGroup( "DataElementGroupC" );
771
DataElementGroup dataElementGroupD = new DataElementGroup( "DataElementGroupD" );
773
Set<DataElement> membersA = new HashSet<DataElement>();
774
membersA.add( dataElementA );
775
membersA.add( dataElementB );
776
membersA.add( dataElementC );
778
Set<DataElement> membersB = new HashSet<DataElement>();
779
membersB.add( dataElementC );
780
membersB.add( dataElementD );
782
dataElementGroupA.setMembers( membersA );
783
dataElementGroupB.setMembers( membersB );
784
dataElementGroupC.setMembers( membersA );
785
dataElementGroupD.setMembers( membersB );
787
dataElementService.addDataElementGroup( dataElementGroupA );
788
dataElementService.addDataElementGroup( dataElementGroupB );
789
dataElementService.addDataElementGroup( dataElementGroupC );
790
dataElementService.addDataElementGroup( dataElementGroupD );
792
transactionManager.leave();
794
Collection<DataElementGroup> groupsA = dataElementService.getGroupsContainingDataElement( dataElementA );
796
assertTrue( groupsA.size() == 2 );
797
assertTrue( groupsA.contains( dataElementGroupA ) );
798
assertTrue( groupsA.contains( dataElementGroupC ) );
800
Collection<DataElementGroup> groupsB = dataElementService.getGroupsContainingDataElement( dataElementC );
802
assertTrue( groupsB.size() == 4 );