1
package org.hisp.dhis.reporting.chart.action;
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.ArrayList;
31
import java.util.List;
33
import org.hisp.dhis.chart.ChartService;
34
import org.hisp.dhis.i18n.I18nFormat;
35
import org.hisp.dhis.indicator.Indicator;
36
import org.hisp.dhis.indicator.IndicatorService;
37
import org.hisp.dhis.organisationunit.OrganisationUnit;
38
import org.hisp.dhis.organisationunit.OrganisationUnitService;
39
import org.hisp.dhis.period.Period;
40
import org.hisp.dhis.period.PeriodService;
41
import org.jfree.chart.JFreeChart;
43
import com.opensymphony.xwork.Action;
46
* Known usage of this class is the pivot table chart functionality.
48
* @author Lars Helge Overland
51
public class GenerateChartAction
54
// -------------------------------------------------------------------------
56
// -------------------------------------------------------------------------
58
private ChartService chartService;
60
public void setChartService( ChartService chartService )
62
this.chartService = chartService;
65
private IndicatorService indicatorService;
67
public void setIndicatorService( IndicatorService indicatorService )
69
this.indicatorService = indicatorService;
72
private PeriodService periodService;
74
public void setPeriodService( PeriodService periodService )
76
this.periodService = periodService;
79
private OrganisationUnitService organisationUnitService;
81
public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
83
this.organisationUnitService = organisationUnitService;
86
private I18nFormat format;
88
public void setFormat( I18nFormat format )
93
// -------------------------------------------------------------------------
95
// -------------------------------------------------------------------------
97
private List<String> indicatorId;
99
public void setIndicatorId( List<String> indicatorId )
101
this.indicatorId = indicatorId;
104
private List<String> periodId;
106
public void setPeriodId( List<String> periodId )
108
this.periodId = periodId;
111
private List<String> organisationUnitId;
113
public void setOrganisationUnitId( List<String> organisationUnitId )
115
this.organisationUnitId = organisationUnitId;
118
private String dimension;
120
public void setDimension( String dimension )
122
this.dimension = dimension;
125
private boolean regression;
127
public void setRegression( boolean regression )
129
this.regression = regression;
132
private String chartWidth;
134
public void setChartWidth( String chartWidth )
136
this.chartWidth = chartWidth;
139
// -------------------------------------------------------------------------
141
// -------------------------------------------------------------------------
143
private JFreeChart chart;
145
public JFreeChart getChart()
152
public int getWidth()
159
public int getHeight()
164
// -------------------------------------------------------------------------
165
// Action implementation
166
// -------------------------------------------------------------------------
168
public String execute()
171
List<Indicator> indicators = new ArrayList<Indicator>();
173
for ( String id : indicatorId )
175
indicators.add( indicatorService.getIndicator( Integer.parseInt( id ) ) );
178
List<Period> periods = new ArrayList<Period>();
180
for ( String id : periodId )
182
periods.add( periodService.getPeriod( Integer.parseInt( id ) ) );
185
List<OrganisationUnit> organisationUnits = new ArrayList<OrganisationUnit>();
187
for ( String id : organisationUnitId )
189
organisationUnits.add( organisationUnitService.getOrganisationUnit( Integer.parseInt( id ) ) );
192
width = chartWidth != null ? Integer.valueOf( chartWidth ) : 700;
196
chart = chartService.getJFreeChart( indicators, periods, organisationUnits, dimension, regression, format );