1
package org.hisp.dhis.dataset;
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;
32
import org.hisp.dhis.DhisConvenienceTest;
33
import org.hisp.dhis.period.MonthlyPeriodType;
34
import org.hisp.dhis.period.PeriodStore;
35
import org.hisp.dhis.period.PeriodType;
36
import org.hisp.dhis.period.WeeklyPeriodType;
37
import org.hisp.dhis.period.YearlyPeriodType;
38
import org.hisp.dhis.source.DummySource;
39
import org.hisp.dhis.source.Source;
40
import org.hisp.dhis.source.SourceStore;
43
* @author Kristian Nordal
44
* @version $Id: DataSetStoreTest.java 3451 2007-07-09 12:28:19Z torgeilo $
46
public class DataSetStoreTest
47
extends DhisConvenienceTest
49
private PeriodStore periodStore;
51
private DataSetStore dataSetStore;
53
private SourceStore sourceStore;
55
private PeriodType periodType;
57
public void setUpTest()
60
dataSetStore = (DataSetStore) getBean( DataSetStore.ID );
62
periodStore = (PeriodStore) getBean( PeriodStore.ID );
64
sourceStore = (SourceStore) getBean( SourceStore.ID );
66
periodType = PeriodType.getAvailablePeriodTypes().iterator().next();
69
// -------------------------------------------------------------------------
71
// -------------------------------------------------------------------------
73
private void assertEquals( char uniqueCharacter, DataSet dataSet )
75
assertEquals( "DataSet" + uniqueCharacter, dataSet.getName() );
76
assertEquals( "ShortName" + uniqueCharacter, dataSet.getShortName() );
77
assertEquals( periodType, dataSet.getPeriodType() );
80
// -------------------------------------------------------------------------
82
// -------------------------------------------------------------------------
84
public void testAddDataSet()
86
DataSet dataSetA = createDataSet( 'A', periodType );
87
DataSet dataSetB = createDataSet( 'B', periodType );
89
int idA = dataSetStore.addDataSet( dataSetA );
90
int idB = dataSetStore.addDataSet( dataSetB );
92
dataSetA = dataSetStore.getDataSet( idA );
93
dataSetB = dataSetStore.getDataSet( idB );
95
assertEquals( idA, dataSetA.getId() );
96
assertEquals( 'A', dataSetA );
98
assertEquals( idB, dataSetB.getId() );
99
assertEquals( 'B', dataSetB );
102
public void testUpdateDataSet()
104
DataSet dataSet = createDataSet( 'A', periodType );
106
int id = dataSetStore.addDataSet( dataSet );
108
dataSet = dataSetStore.getDataSet( id );
110
assertEquals( 'A', dataSet );
112
dataSet.setName( "DataSetB" );
114
dataSetStore.updateDataSet( dataSet );
116
dataSet = dataSetStore.getDataSet( id );
118
assertEquals( dataSet.getName(), "DataSetB" );
121
public void testDeleteAndGetDataSet()
123
DataSet dataSetA = createDataSet( 'A', periodType );
124
DataSet dataSetB = createDataSet( 'B', periodType );
126
int idA = dataSetStore.addDataSet( dataSetA );
127
int idB = dataSetStore.addDataSet( dataSetB );
129
assertNotNull( dataSetStore.getDataSet( idA ) );
130
assertNotNull( dataSetStore.getDataSet( idB ) );
132
dataSetStore.deleteDataSet( dataSetStore.getDataSet( idA ) );
134
assertNull( dataSetStore.getDataSet( idA ) );
135
assertNotNull( dataSetStore.getDataSet( idB ) );
137
dataSetStore.deleteDataSet( dataSetStore.getDataSet( idB ) );
139
assertNull( dataSetStore.getDataSet( idA ) );
140
assertNull( dataSetStore.getDataSet( idB ) );
143
public void testGetDataSetByName()
146
DataSet dataSetA = createDataSet( 'A', periodType );
147
DataSet dataSetB = createDataSet( 'B', periodType );
149
int idA = dataSetStore.addDataSet( dataSetA );
150
int idB = dataSetStore.addDataSet( dataSetB );
152
assertEquals( dataSetStore.getDataSetByName( "DataSetA" ).getId(), idA );
153
assertEquals( dataSetStore.getDataSetByName( "DataSetB" ).getId(), idB );
154
assertNull( dataSetStore.getDataSetByName( "DataSetC" ) );
157
public void testGetDataSetByShortName()
160
DataSet dataSetA = createDataSet( 'A', periodType );
161
DataSet dataSetB = createDataSet( 'B', periodType );
163
int idA = dataSetStore.addDataSet( dataSetA );
164
int idB = dataSetStore.addDataSet( dataSetB );
166
assertEquals( dataSetStore.getDataSetByShortName( "ShortNameA" ).getId(), idA );
167
assertEquals( dataSetStore.getDataSetByShortName( "ShortNameB" ).getId(), idB );
168
assertNull( dataSetStore.getDataSetByShortName( "ShortNameC" ) );
171
public void testGetDataSets()
173
Source sourceA = new DummySource( "A" );
174
sourceStore.addSource( sourceA );
175
Source sourceB = new DummySource( "B" );
176
sourceStore.addSource( sourceB );
177
Source sourceC = new DummySource( "C" );
178
sourceStore.addSource( sourceC );
179
Source sourceD = new DummySource( "D" );
180
sourceStore.addSource( sourceD );
182
DataSet dataSetA = new DataSet( "A", new WeeklyPeriodType() );
183
dataSetA.getSources().add( sourceA );
184
dataSetStore.addDataSet( dataSetA );
186
DataSet dataSetB = new DataSet( "B", new WeeklyPeriodType() );
187
dataSetB.getSources().add( sourceB );
188
dataSetB.getSources().add( sourceC );
189
dataSetStore.addDataSet( dataSetB );
191
DataSet dataSetC = new DataSet( "C", new WeeklyPeriodType() );
192
dataSetC.getSources().add( sourceA );
193
dataSetC.getSources().add( sourceB );
194
dataSetStore.addDataSet( dataSetC );
196
Collection<DataSet> result;
198
result = dataSetStore.getDataSetsBySource( sourceA );
199
assertEquals( 2, result.size() );
200
assertTrue( result.contains( dataSetA ) );
201
assertTrue( result.contains( dataSetC ) );
203
result = dataSetStore.getDataSetsBySource( sourceB );
204
assertEquals( 2, result.size() );
205
assertTrue( result.contains( dataSetB ) );
206
assertTrue( result.contains( dataSetC ) );
208
result = dataSetStore.getDataSetsBySource( sourceC );
209
assertEquals( 1, result.size() );
210
assertTrue( result.contains( dataSetB ) );
212
result = dataSetStore.getDataSetsBySource( sourceD );
213
assertEquals( 0, result.size() );
216
public void testGetAllDataSets()
218
DataSet dataSetA = createDataSet( 'A', periodType );
219
DataSet dataSetB = createDataSet( 'B', periodType );
221
dataSetStore.addDataSet( dataSetA );
222
dataSetStore.addDataSet( dataSetB );
224
Collection<DataSet> dataSets = dataSetStore.getAllDataSets();
226
assertEquals( dataSets.size(), 2 );
227
assertTrue( dataSets.contains( dataSetA ) );
228
assertTrue( dataSets.contains( dataSetB ) );
231
// -------------------------------------------------------------------------
232
// FrequencyOverrideAssociation
233
// -------------------------------------------------------------------------
235
public void testFrequencyOverrideAssociation()
238
PeriodType periodType1 = periodStore.getPeriodType( YearlyPeriodType.class );
239
PeriodType periodType2 = periodStore.getPeriodType( MonthlyPeriodType.class );
240
PeriodType periodType3 = periodStore.getPeriodType( WeeklyPeriodType.class );
242
DataSet dataSet1 = new DataSet( "name1", periodType1 );
243
DataSet dataSet2 = new DataSet( "name2", periodType2 );
245
dataSetStore.addDataSet( dataSet1 );
246
dataSetStore.addDataSet( dataSet2 );
248
Source source1 = new DummySource( "Source1" );
249
Source source2 = new DummySource( "Source2" );
250
sourceStore.addSource( source1 );
251
sourceStore.addSource( source2 );
253
FrequencyOverrideAssociation association = new FrequencyOverrideAssociation( dataSet1, source1, periodType3 );
255
dataSetStore.addFrequencyOverrideAssociation( association );
256
assertEquals( dataSetStore.getFrequencyOverrideAssociationsByDataSet( dataSet1 ).size(), 1 );
257
assertEquals( dataSetStore.getFrequencyOverrideAssociationsBySource( source1 ).size(), 1 );
258
assertEquals( dataSetStore.getFrequencyOverrideAssociationsByDataSet( dataSet2 ).size(), 0 );
259
assertEquals( dataSetStore.getFrequencyOverrideAssociationsBySource( source2 ).size(), 0 );
262
.addFrequencyOverrideAssociation( new FrequencyOverrideAssociation( dataSet1, source2, periodType3 ) );
263
assertEquals( dataSetStore.getFrequencyOverrideAssociationsByDataSet( dataSet1 ).size(), 2 );
264
assertEquals( dataSetStore.getFrequencyOverrideAssociationsBySource( source1 ).size(), 1 );
265
assertEquals( dataSetStore.getFrequencyOverrideAssociationsByDataSet( dataSet2 ).size(), 0 );
266
assertEquals( dataSetStore.getFrequencyOverrideAssociationsBySource( source2 ).size(), 1 );
269
.addFrequencyOverrideAssociation( new FrequencyOverrideAssociation( dataSet2, source1, periodType3 ) );
270
assertEquals( dataSetStore.getFrequencyOverrideAssociationsByDataSet( dataSet1 ).size(), 2 );
271
assertEquals( dataSetStore.getFrequencyOverrideAssociationsBySource( source1 ).size(), 2 );
272
assertEquals( dataSetStore.getFrequencyOverrideAssociationsByDataSet( dataSet2 ).size(), 1 );
273
assertEquals( dataSetStore.getFrequencyOverrideAssociationsBySource( source2 ).size(), 1 );
275
dataSetStore.removeFrequencyOverrideAssociation( association );
276
assertEquals( dataSetStore.getFrequencyOverrideAssociationsByDataSet( dataSet1 ).size(), 1 );
277
assertEquals( dataSetStore.getFrequencyOverrideAssociationsBySource( source1 ).size(), 1 );
278
assertEquals( dataSetStore.getFrequencyOverrideAssociationsByDataSet( dataSet2 ).size(), 1 );
279
assertEquals( dataSetStore.getFrequencyOverrideAssociationsBySource( source2 ).size(), 1 );