1
package org.hisp.dhis.reporting.dataset.utils;
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.Iterator;
33
import java.util.SortedMap;
35
import net.sf.jasperreports.engine.JRDataSource;
36
import net.sf.jasperreports.engine.JRException;
37
import net.sf.jasperreports.engine.JRField;
40
* @author Abyot Asalefew
43
public class CollectionMapDataSource
44
implements JRDataSource
46
private SortedMap<String, Collection<String>> tabularReportElements = null;
48
private SortedMap<String, Collection<String>> copyOfTabularReportElements = null;
50
private Collection<String> availableRows = null;
52
private Set<String> keySets = null;
54
private int totalItems = 0;
56
private int index = -1;
58
public CollectionMapDataSource( SortedMap<String, Collection<String>> tabularReportElements )
60
this.tabularReportElements = tabularReportElements;
61
this.copyOfTabularReportElements = tabularReportElements;
63
keySets = copyOfTabularReportElements.keySet();
65
Iterator<String> iterator = keySets.iterator();
67
while ( iterator.hasNext() )
69
Collection<String> values = copyOfTabularReportElements.get( iterator.next() );
71
totalItems += values.size();
75
public CollectionMapDataSource()
83
return (index < totalItems);
86
public Object getFieldValue( JRField jrField )
89
String key = jrField.getName();
93
if ( tabularReportElements.containsKey( key ) )
95
availableRows = tabularReportElements.get( key );
98
Iterator<String> iterator = availableRows.iterator();
100
if ( iterator != null )
102
if ( iterator.hasNext() )
104
value = iterator.next();
106
tabularReportElements.put( key, availableRows );