1
package org.hisp.dhis.dd.action.indicator;
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.Collection;
32
import java.util.Collections;
33
import java.util.Comparator;
34
import java.util.List;
36
import org.apache.commons.collections.CollectionUtils;
37
import org.hisp.dhis.datadictionary.DataDictionary;
38
import org.hisp.dhis.datadictionary.DataDictionaryService;
39
import org.hisp.dhis.datadictionary.comparator.DataDictionaryNameComparator;
40
import org.hisp.dhis.indicator.Indicator;
41
import org.hisp.dhis.indicator.IndicatorGroup;
42
import org.hisp.dhis.indicator.IndicatorService;
43
import org.hisp.dhis.indicator.comparator.IndicatorGroupNameComparator;
44
import org.hisp.dhis.options.datadictionary.DataDictionaryModeManager;
45
import org.hisp.dhis.options.displayproperty.DisplayPropertyHandler;
47
import com.opensymphony.xwork.Action;
50
* @author Torgeir Lorange Ostby
51
* @version $Id: GetIndicatorListAction.java 5573 2008-08-22 03:39:55Z
54
public class GetIndicatorListAction
57
// -------------------------------------------------------------------------
59
// -------------------------------------------------------------------------
61
private IndicatorService indicatorService;
63
public void setIndicatorService( IndicatorService indicatorService )
65
this.indicatorService = indicatorService;
68
private DataDictionaryModeManager dataDictionaryModeManager;
70
public void setDataDictionaryModeManager( DataDictionaryModeManager dataDictionaryModeManager )
72
this.dataDictionaryModeManager = dataDictionaryModeManager;
75
private DataDictionaryService dataDictionaryService;
77
public void setDataDictionaryService( DataDictionaryService dataDictionaryService )
79
this.dataDictionaryService = dataDictionaryService;
82
// -------------------------------------------------------------------------
84
// -------------------------------------------------------------------------
86
private Comparator<Indicator> indicatorComparator;
88
public void setIndicatorComparator( Comparator<Indicator> indicatorComparator )
90
this.indicatorComparator = indicatorComparator;
93
// -------------------------------------------------------------------------
94
// DisplayPropertyHandler
95
// -------------------------------------------------------------------------
97
private DisplayPropertyHandler displayPropertyHandler;
99
public void setDisplayPropertyHandler( DisplayPropertyHandler displayPropertyHandler )
101
this.displayPropertyHandler = displayPropertyHandler;
104
// -------------------------------------------------------------------------
106
// -------------------------------------------------------------------------
108
private List<Indicator> indicators;
110
public List<Indicator> getIndicators()
115
private List<DataDictionary> dataDictionaries;
117
public List<DataDictionary> getDataDictionaries()
119
return dataDictionaries;
122
private List<IndicatorGroup> indicatorGroups;
124
public List<IndicatorGroup> getIndicatorGroups()
126
return indicatorGroups;
129
// -------------------------------------------------------------------------
131
// -------------------------------------------------------------------------
133
private Integer dataDictionaryId;
135
public Integer getDataDictionaryId()
137
return dataDictionaryId;
140
public void setDataDictionaryId( Integer dataDictionaryId )
142
this.dataDictionaryId = dataDictionaryId;
145
private Integer indicatorGroupId;
147
public Integer getIndicatorGroupId()
149
return indicatorGroupId;
152
public void setIndicatorGroupId( Integer indicatorGroupId )
154
this.indicatorGroupId = indicatorGroupId;
157
// -------------------------------------------------------------------------
158
// Action implemantation
159
// -------------------------------------------------------------------------
161
@SuppressWarnings( "unchecked" )
162
public String execute()
164
if ( dataDictionaryId == null ) // None, get current data dictionary
166
dataDictionaryId = dataDictionaryModeManager.getCurrentDataDictionary();
168
else if ( dataDictionaryId == -1 ) // All, reset current data dictionary
170
dataDictionaryModeManager.setCurrentDataDictionary( null );
172
else // Specified, set current data dictionary
174
dataDictionaryModeManager.setCurrentDataDictionary( dataDictionaryId );
177
indicatorGroups = new ArrayList<IndicatorGroup>( indicatorService.getAllIndicatorGroups() );
179
Collections.sort( indicatorGroups, new IndicatorGroupNameComparator() );
181
dataDictionaries = new ArrayList<DataDictionary>( dataDictionaryService.getAllDataDictionaries() );
183
Collections.sort( dataDictionaries, new DataDictionaryNameComparator() );
185
// -------------------------------------------------------------------------
187
// -------------------------------------------------------------------------
189
if ( dataDictionaryId != null && indicatorGroupId == null && dataDictionaryService.getDataDictionary( dataDictionaryId ) != null )
191
indicators = new ArrayList<Indicator>( dataDictionaryService.getDataDictionary( dataDictionaryId ).getIndicators() );
193
else if ( dataDictionaryId == null && indicatorGroupId != null )
195
indicators = new ArrayList<Indicator>( indicatorService.getIndicatorGroup( indicatorGroupId ).getMembers() );
197
else if ( dataDictionaryId != null && indicatorGroupId != null && dataDictionaryService.getDataDictionary( dataDictionaryId ) != null )
199
Collection<Indicator> dictionary = dataDictionaryService.getDataDictionary( dataDictionaryId ).getIndicators();
201
Collection<Indicator> members = indicatorService.getIndicatorGroup( indicatorGroupId ).getMembers();
203
indicators = new ArrayList<Indicator>( CollectionUtils.intersection( dictionary, members ) );
207
indicators = new ArrayList<Indicator>( indicatorService.getAllIndicators() );
210
Collections.sort( indicators, indicatorComparator );
212
displayPropertyHandler.handle( indicators );