=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/Attribute.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/Attribute.java 2011-12-03 10:35:41 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/Attribute.java 2011-12-06 04:28:54 +0000 @@ -159,8 +159,6 @@ this.attributeValues = attributeValues; } - @XmlElement - @JsonProperty public Integer getSortOrder() { return sortOrder; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/ChartService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/ChartService.java 2011-11-25 14:03:14 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/chart/ChartService.java 2011-12-06 05:14:01 +0000 @@ -49,7 +49,11 @@ { String ID = ChartService.class.getName(); + JFreeChart getJFreeChart( String uid, I18nFormat format ); + JFreeChart getJFreeChart( int id, I18nFormat format ); + + JFreeChart getJFreeChart( Chart chart, I18nFormat format ); JFreeChart getJFreePeriodChart( Indicator indicator, OrganisationUnit unit, boolean title, I18nFormat format ); === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseLinkableObject.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseLinkableObject.java 2011-12-03 16:31:50 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseLinkableObject.java 2011-12-05 15:02:23 +0000 @@ -40,7 +40,7 @@ * As part of the marshalling process, this field can be set to indicate a link to this * identifiable object (will be used on the web layer for navigating the REST API) */ - private String link; + private transient String link; @XmlAttribute @JsonProperty === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java 2011-11-23 18:07:35 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java 2011-12-06 05:14:01 +0000 @@ -27,40 +27,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.hisp.dhis.chart.Chart.DIMENSION_COMPLETENESS_PERIOD; -import static org.hisp.dhis.chart.Chart.DIMENSION_DATAELEMENT_PERIOD; -import static org.hisp.dhis.chart.Chart.DIMENSION_INDICATOR_PERIOD; -import static org.hisp.dhis.chart.Chart.DIMENSION_ORGANISATIONUNIT_COMPLETENESS; -import static org.hisp.dhis.chart.Chart.DIMENSION_ORGANISATIONUNIT_DATAELEMENT; -import static org.hisp.dhis.chart.Chart.DIMENSION_ORGANISATIONUNIT_INDICATOR; -import static org.hisp.dhis.chart.Chart.DIMENSION_PERIOD_COMPLETENESS; -import static org.hisp.dhis.chart.Chart.DIMENSION_PERIOD_DATAELEMENT; -import static org.hisp.dhis.chart.Chart.DIMENSION_PERIOD_INDICATOR; -import static org.hisp.dhis.chart.Chart.SIZE_NORMAL; -import static org.hisp.dhis.chart.Chart.TYPE_BAR; -import static org.hisp.dhis.chart.Chart.TYPE_BAR3D; -import static org.hisp.dhis.chart.Chart.TYPE_LINE; -import static org.hisp.dhis.chart.Chart.TYPE_LINE3D; -import static org.hisp.dhis.chart.Chart.TYPE_PIE; -import static org.hisp.dhis.chart.Chart.TYPE_PIE3D; -import static org.hisp.dhis.chart.Chart.TYPE_STACKED_BAR; -import static org.hisp.dhis.chart.Chart.TYPE_STACKED_BAR3D; -import static org.hisp.dhis.options.SystemSettingManager.AGGREGATION_STRATEGY_REAL_TIME; -import static org.hisp.dhis.options.SystemSettingManager.DEFAULT_AGGREGATION_STRATEGY; -import static org.hisp.dhis.options.SystemSettingManager.KEY_AGGREGATION_STRATEGY; -import static org.hisp.dhis.system.util.ConversionUtils.getArray; - -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Font; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - import org.apache.commons.math.MathException; import org.apache.commons.math.analysis.SplineInterpolator; import org.apache.commons.math.analysis.UnivariateRealFunction; @@ -102,18 +68,8 @@ import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.labels.StandardPieSectionLabelGenerator; -import org.jfree.chart.plot.CategoryPlot; -import org.jfree.chart.plot.DatasetRenderingOrder; -import org.jfree.chart.plot.Marker; -import org.jfree.chart.plot.MultiplePiePlot; -import org.jfree.chart.plot.PiePlot; -import org.jfree.chart.plot.PlotOrientation; -import org.jfree.chart.plot.ValueMarker; -import org.jfree.chart.renderer.category.BarRenderer; -import org.jfree.chart.renderer.category.BarRenderer3D; -import org.jfree.chart.renderer.category.CategoryItemRenderer; -import org.jfree.chart.renderer.category.LineAndShapeRenderer; -import org.jfree.chart.renderer.category.LineRenderer3D; +import org.jfree.chart.plot.*; +import org.jfree.chart.renderer.category.*; import org.jfree.chart.title.TextTitle; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; @@ -121,6 +77,15 @@ import org.jfree.util.TableOrder; import org.springframework.transaction.annotation.Transactional; +import java.awt.*; +import java.util.*; +import java.util.List; +import java.util.Map.Entry; + +import static org.hisp.dhis.chart.Chart.*; +import static org.hisp.dhis.options.SystemSettingManager.*; +import static org.hisp.dhis.system.util.ConversionUtils.getArray; + /** * @author Lars Helge Overland * @version $Id$ @@ -141,10 +106,10 @@ private static final String DEFAULT_TITLE_PIVOT_CHART = "Pivot Chart"; - private static final Color[] colors = { Color.decode( "#d54a4a" ), Color.decode( "#2e4e83" ), + private static final Color[] colors = {Color.decode( "#d54a4a" ), Color.decode( "#2e4e83" ), Color.decode( "#75e077" ), Color.decode( "#e3e274" ), Color.decode( "#e58c6d" ), Color.decode( "#df6ff3" ), Color.decode( "#88878e" ), Color.decode( "#6ff3e8" ), Color.decode( "#6fc3f3" ), Color.decode( "#aaf36f" ), - Color.decode( "#9d6ff3" ), Color.decode( "#474747" ) }; + Color.decode( "#9d6ff3" ), Color.decode( "#474747" )}; // ------------------------------------------------------------------------- // Dependencies @@ -228,10 +193,22 @@ // Logic // ------------------------------------------------------------------------- + public JFreeChart getJFreeChart( String uid, I18nFormat format ) + { + Chart chart = getChart( uid ); + + return getJFreeChart( chart, format ); + } + public JFreeChart getJFreeChart( int id, I18nFormat format ) { Chart chart = getChart( id ); + return getJFreeChart( chart, format ); + } + + public JFreeChart getJFreeChart( Chart chart, I18nFormat format ) + { if ( chart.getRelatives() != null ) { chart.setRelativePeriods( periodService.reloadPeriods( chart.getRelatives().getRelativePeriods( format, @@ -280,7 +257,7 @@ } public JFreeChart getJFreeOrganisationUnitChart( Indicator indicator, OrganisationUnit parent, boolean title, - I18nFormat format ) + I18nFormat format ) { RelativePeriods relatives = new RelativePeriods(); relatives.setThisYear( true ); @@ -309,8 +286,8 @@ } public JFreeChart getJFreeChart( List indicators, List dataElements, - List dataSets, List periods, List organisationUnits, String dimension, - boolean regression, I18nFormat format ) + List dataSets, List periods, List organisationUnits, String dimension, + boolean regression, I18nFormat format ) { Chart chart = new Chart(); @@ -347,7 +324,7 @@ } public JFreeChart getJFreeChart( String name, PlotOrientation orientation, CategoryLabelPositions labelPositions, - Map categoryValues ) + Map categoryValues ) { DefaultCategoryDataset dataSet = new DefaultCategoryDataset(); @@ -365,8 +342,8 @@ } public JFreeChart getJFreeChartHistory( DataElement dataElement, - DataElementCategoryOptionCombo categoryOptionCombo, Period lastPeriod, OrganisationUnit organisationUnit, - int historyLength, I18nFormat format ) + DataElementCategoryOptionCombo categoryOptionCombo, Period lastPeriod, OrganisationUnit organisationUnit, + int historyLength, I18nFormat format ) { lastPeriod = periodService.reloadPeriod( lastPeriod ); @@ -440,8 +417,7 @@ metaDataSet.addValue( function.value( periodCount ), "Regression value", period.getName() ); } } - } - catch ( MathException ex ) + } catch ( MathException ex ) { throw new RuntimeException( "Failed to interpolate", ex ); } @@ -569,7 +545,7 @@ * Returns a CategoryPlot. */ private CategoryPlot getCategoryPlot( CategoryDataset dataSet, CategoryItemRenderer renderer, - PlotOrientation orientation, CategoryLabelPositions labelPositions ) + PlotOrientation orientation, CategoryLabelPositions labelPositions ) { CategoryPlot plot = new CategoryPlot( dataSet, new CategoryAxis(), new NumberAxis(), renderer ); @@ -827,7 +803,7 @@ { String aggregationStrategy = (String) systemSettingManager.getSystemSetting( KEY_AGGREGATION_STRATEGY, DEFAULT_AGGREGATION_STRATEGY ); - + final DefaultCategoryDataset regularDataSet = new DefaultCategoryDataset(); final DefaultCategoryDataset regressionDataSet = new DefaultCategoryDataset(); @@ -884,7 +860,7 @@ shortName = dataSets.get( i ).getShortName(); } - if ( chart.isDimension( DIMENSION_PERIOD_INDICATOR ) + if ( chart.isDimension( DIMENSION_PERIOD_INDICATOR ) || chart.isDimension( DIMENSION_INDICATOR_PERIOD ) || chart.isDimension( DIMENSION_PERIOD_DATAELEMENT ) || chart.isDimension( DIMENSION_DATAELEMENT_PERIOD ) @@ -1030,14 +1006,14 @@ } } - return new CategoryDataset[] { regularDataSet, regressionDataSet }; + return new CategoryDataset[]{regularDataSet, regressionDataSet}; } /** * Returns a title based on the chart meta data. */ private String getTitle( NameableObject nameableObject, List periods, - List organisationUnits, I18nFormat format ) + List organisationUnits, I18nFormat format ) { String title = ""; === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AttributeController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AttributeController.java 2011-12-03 14:20:18 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AttributeController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,8 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; +import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.attribute.Attribute; import org.hisp.dhis.attribute.AttributeService; import org.hisp.dhis.attribute.Attributes; @@ -51,21 +53,33 @@ private AttributeService attributeService; @RequestMapping( method = RequestMethod.GET ) - public String getAttributes( Model model, HttpServletRequest request ) + public String getAttributes( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { Attributes attributes = new Attributes(); attributes.setAttributes( new ArrayList( attributeService.getAllAttributes() ) ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( attributes ); + } + model.addAttribute( "model", attributes ); return "attributes"; } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getAttribute( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getAttribute( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { Attribute attribute = attributeService.getAttribute( uid ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( attribute ); + } + model.addAttribute( "model", attribute ); return "attribute"; === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartController.java 2011-12-05 12:21:38 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartController.java 2011-12-06 05:19:57 +0000 @@ -27,19 +27,26 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.ArrayList; - -import javax.servlet.http.HttpServletRequest; - import org.hisp.dhis.chart.Chart; import org.hisp.dhis.chart.ChartService; import org.hisp.dhis.chart.Charts; +import org.hisp.dhis.i18n.I18nFormat; +import org.hisp.dhis.period.Period; +import org.jfree.chart.ChartUtilities; +import org.jfree.chart.JFreeChart; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; /** * @author Morten Olav Hansen @@ -71,4 +78,53 @@ return "chart"; } + + private class MockI18nFormat + extends I18nFormat + { + public MockI18nFormat() + { + super( null ); + } + + @Override + public String formatPeriod( Period period ) + { + String name = period.getStartDate() + "-" + period.getEndDate(); + + return name.toLowerCase().trim(); + } + + @Override + public String formatDate( Date date ) + { + return date.toString().toLowerCase().trim(); + } + } + + @RequestMapping( value = "/{uid}.png", method = RequestMethod.GET ) + public void getChartPNG( @PathVariable( "uid" ) String uid, @RequestParam( value = "width", defaultValue = "700", required = false ) int width, + @RequestParam( value = "height", defaultValue = "500", required = false ) Integer height, + HttpServletResponse response ) throws IOException + { + I18nFormat i18nFormat = new MockI18nFormat(); + + JFreeChart chart = chartService.getJFreeChart( uid, i18nFormat ); + + response.setContentType( "image/png" ); + ChartUtilities.writeChartAsPNG( response.getOutputStream(), chart, width, height ); + } + + @RequestMapping( value = "/{uid}.jpg", method = RequestMethod.GET ) + public void getChartJPG( @PathVariable( "uid" ) String uid, @RequestParam( value = "width", defaultValue = "700", required = false ) int width, + @RequestParam( value = "height", defaultValue = "500", required = false ) Integer height, + HttpServletResponse response ) throws IOException + { + I18nFormat i18nFormat = new MockI18nFormat(); + + JFreeChart chart = chartService.getJFreeChart( uid, i18nFormat ); + + response.setContentType( "image/jpg" ); + ChartUtilities.writeChartAsJPEG( response.getOutputStream(), chart, width, height ); + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryComboController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryComboController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryComboController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.dataelement.DataElementCategoryCombo; import org.hisp.dhis.dataelement.DataElementCategoryCombos; @@ -52,13 +53,16 @@ private DataElementCategoryService dataElementCategoryService; @RequestMapping( method = RequestMethod.GET ) - public String getDataElementCategoryCombos( Model model, HttpServletRequest request ) + public String getDataElementCategoryCombos( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementCategoryCombos dataElementCategoryCombos = new DataElementCategoryCombos(); dataElementCategoryCombos.setDataElementCategoryCombos( new ArrayList( dataElementCategoryService.getAllDataElementCategoryCombos() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementCategoryCombos ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementCategoryCombos ); + } model.addAttribute( "model", dataElementCategoryCombos ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getDataElementCategoryCombo( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getDataElementCategoryCombo( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementCategoryCombo dataElementCategoryCombo = dataElementCategoryService.getDataElementCategoryCombo( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementCategoryCombo ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementCategoryCombo ); + } model.addAttribute( "model", dataElementCategoryCombo ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.dataelement.DataElementCategories; import org.hisp.dhis.dataelement.DataElementCategory; @@ -52,13 +53,16 @@ private DataElementCategoryService dataElementCategoryService; @RequestMapping( method = RequestMethod.GET ) - public String getDataElementCategories( Model model, HttpServletRequest request ) + public String getDataElementCategories( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementCategories dataElementCategories = new DataElementCategories(); dataElementCategories.setDataElementCategories( new ArrayList( dataElementCategoryService.getAllDataElementCategories() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementCategories ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementCategories ); + } model.addAttribute( "model", dataElementCategories ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getDataElementCategory( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getDataElementCategory( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementCategory dataElementCategory = dataElementCategoryService.getDataElementCategory( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementCategory ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementCategory ); + } model.addAttribute( "model", dataElementCategory ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryOptionComboController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryOptionComboController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryOptionComboController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; import org.hisp.dhis.dataelement.DataElementCategoryOptionCombos; @@ -52,13 +53,16 @@ private DataElementCategoryService dataElementCategoryService; @RequestMapping( method = RequestMethod.GET ) - public String getDataElementCategoryOptionCombos( Model model, HttpServletRequest request ) + public String getDataElementCategoryOptionCombos( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementCategoryOptionCombos dataElementCategoryOptionCombos = new DataElementCategoryOptionCombos(); dataElementCategoryOptionCombos.setDataElementCategoryOptionCombos( new ArrayList( dataElementCategoryService.getAllDataElementCategoryOptionCombos() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementCategoryOptionCombos ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementCategoryOptionCombos ); + } model.addAttribute( "model", dataElementCategoryOptionCombos ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getDataElementCategoryCombo( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getDataElementCategoryCombo( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementCategoryOptionCombo dataElementCategoryOptionCombo = dataElementCategoryService.getDataElementCategoryOptionCombo( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementCategoryOptionCombo ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementCategoryOptionCombo ); + } model.addAttribute( "model", dataElementCategoryOptionCombo ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryOptionController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryOptionController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementCategoryOptionController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.dataelement.DataElementCategoryOption; import org.hisp.dhis.dataelement.DataElementCategoryOptions; @@ -52,13 +53,16 @@ private DataElementCategoryService dataElementCategoryService; @RequestMapping( method = RequestMethod.GET ) - public String getDataElementCategoryOptions( Model model, HttpServletRequest request ) + public String getDataElementCategoryOptions( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementCategoryOptions dataElementCategoryOptions = new DataElementCategoryOptions(); dataElementCategoryOptions.setDataElementCategoryOptions( new ArrayList( dataElementCategoryService.getAllDataElementCategoryOptions() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementCategoryOptions ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementCategoryOptions ); + } model.addAttribute( "model", dataElementCategoryOptions ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getDataElementCategoryOption( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getDataElementCategoryOption( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementCategoryOption dataElementCategoryOption = dataElementCategoryService.getDataElementCategoryOption( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementCategoryOption ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementCategoryOption ); + } model.addAttribute( "model", dataElementCategoryOption ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataelement.DataElementService; @@ -56,13 +57,16 @@ private DataElementService dataElementService; @RequestMapping( method = RequestMethod.GET ) - public String getDataElements( Model model, HttpServletRequest request ) + public String getDataElements( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElements dataElements = new DataElements(); dataElements.setDataElements( new ArrayList( dataElementService.getAllActiveDataElements() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElements ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElements ); + } model.addAttribute( "model", dataElements ); @@ -88,12 +92,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getDataElement( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getDataElement( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElement dataElement = dataElementService.getDataElement( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElement ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElement ); + } model.addAttribute( "model", dataElement ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.dataelement.DataElementGroup; import org.hisp.dhis.dataelement.DataElementGroups; @@ -49,13 +50,16 @@ private DataElementService dataElementService; @RequestMapping( method = RequestMethod.GET ) - public String getDataElementGroups( Model model, HttpServletRequest request ) + public String getDataElementGroups( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementGroups dataElementGroups = new DataElementGroups(); dataElementGroups.setDataElementGroups( new ArrayList( dataElementService.getAllDataElementGroups() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementGroups ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementGroups ); + } model.addAttribute( "model", dataElementGroups ); @@ -63,12 +67,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getDataElementGroup( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getDataElementGroup( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementGroup dataElementGroup = dataElementService.getDataElementGroup( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementGroup ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementGroup ); + } model.addAttribute( "model", dataElementGroup ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupSetController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupSetController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataElementGroupSetController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.dataelement.DataElementGroupSet; import org.hisp.dhis.dataelement.DataElementGroupSets; @@ -52,13 +53,16 @@ private DataElementService dataElementService; @RequestMapping( method = RequestMethod.GET ) - public String getDataElementGroupSets( Model model, HttpServletRequest request ) + public String getDataElementGroupSets( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementGroupSets dataElementGroupSets = new DataElementGroupSets(); dataElementGroupSets.setDataElementGroupSets( new ArrayList( dataElementService.getAllDataElementGroupSets() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementGroupSets ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementGroupSets ); + } model.addAttribute( "model", dataElementGroupSets ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getDataElementGroupSet( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getDataElementGroupSet( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataElementGroupSet dataElementGroupSet = dataElementService.getDataElementGroupSet( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataElementGroupSet ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataElementGroupSet ); + } model.addAttribute( "model", dataElementGroupSet ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataSetController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataSetController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DataSetController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dataset.DataSetService; @@ -52,13 +53,16 @@ private DataSetService dataSetService; @RequestMapping( method = RequestMethod.GET ) - public String getDataSets( Model model, HttpServletRequest request ) + public String getDataSets( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataSets dataSets = new DataSets(); dataSets.setDataSets( new ArrayList( dataSetService.getAllDataSets() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataSets ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataSets ); + } model.addAttribute( "model", dataSets ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getDataSet( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getDataSet( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { DataSet dataSet = dataSetService.getDataSet( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( dataSet ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( dataSet ); + } model.addAttribute( "model", dataSet ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.indicator.Indicator; import org.hisp.dhis.indicator.IndicatorService; @@ -52,13 +53,16 @@ private IndicatorService indicatorService; @RequestMapping( method = RequestMethod.GET ) - public String getIndicators( Model model, HttpServletRequest request ) + public String getIndicators( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { Indicators indicators = new Indicators(); indicators.setIndicators( new ArrayList( indicatorService.getAllIndicators() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( indicators ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( indicators ); + } model.addAttribute( "model", indicators ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getIndicator( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getIndicator( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { Indicator indicator = indicatorService.getIndicator( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( indicator ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( indicator ); + } model.addAttribute( "model", indicator ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.indicator.IndicatorGroup; import org.hisp.dhis.indicator.IndicatorGroups; @@ -52,13 +53,16 @@ private IndicatorService indicatorService; @RequestMapping( method = RequestMethod.GET ) - public String getIndicatorGroups( Model model, HttpServletRequest request ) + public String getIndicatorGroups( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { IndicatorGroups indicatorGroups = new IndicatorGroups(); indicatorGroups.setIndicatorGroups( new ArrayList( indicatorService.getAllIndicatorGroups() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( indicatorGroups ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( indicatorGroups ); + } model.addAttribute( "model", indicatorGroups ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getIndicatorGroup( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getIndicatorGroup( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { IndicatorGroup indicatorGroup = indicatorService.getIndicatorGroup( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( indicatorGroup ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( indicatorGroup ); + } model.addAttribute( "model", indicatorGroup ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupSetController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupSetController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorGroupSetController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.indicator.IndicatorGroupSet; import org.hisp.dhis.indicator.IndicatorGroupSets; @@ -52,13 +53,16 @@ private IndicatorService indicatorService; @RequestMapping( method = RequestMethod.GET ) - public String getIndicatorGroupSets( Model model, HttpServletRequest request ) + public String getIndicatorGroupSets( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { IndicatorGroupSets indicatorGroupSets = new IndicatorGroupSets(); indicatorGroupSets.setIndicatorGroupSets( new ArrayList( indicatorService.getAllIndicatorGroupSets() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( indicatorGroupSets ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( indicatorGroupSets ); + } model.addAttribute( "model", indicatorGroupSets ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getIndicatorGroupSet( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getIndicatorGroupSet( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { IndicatorGroupSet indicatorGroupSet = indicatorService.getIndicatorGroupSet( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( indicatorGroupSet ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( indicatorGroupSet ); + } model.addAttribute( "model", indicatorGroupSet ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorTypeController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorTypeController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/IndicatorTypeController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.indicator.IndicatorService; import org.hisp.dhis.indicator.IndicatorType; @@ -52,13 +53,16 @@ private IndicatorService indicatorService; @RequestMapping( method = RequestMethod.GET ) - public String getIndicatorTypes( Model model, HttpServletRequest request ) + public String getIndicatorTypes( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { IndicatorTypes indicatorTypes = new IndicatorTypes(); indicatorTypes.setIndicatorTypes( new ArrayList( indicatorService.getAllIndicatorTypes() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( indicatorTypes ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( indicatorTypes ); + } model.addAttribute( "model", indicatorTypes ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getIndicator( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getIndicator( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { IndicatorType indicatorType = indicatorService.getIndicatorType( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( indicatorType ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( indicatorType ); + } model.addAttribute( "model", indicatorType ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitController.java 2011-12-06 04:28:54 +0000 @@ -1,5 +1,6 @@ package org.hisp.dhis.api.controller; +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; @@ -25,13 +26,16 @@ private OrganisationUnitService organisationUnitService; @RequestMapping( method = RequestMethod.GET ) - public String getOrganisationUnits( Model model, HttpServletRequest request ) + public String getOrganisationUnits( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { OrganisationUnits organisationUnits = new OrganisationUnits(); organisationUnits.setOrganisationUnits( new ArrayList( organisationUnitService.getAllOrganisationUnits() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( organisationUnits ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( organisationUnits ); + } model.addAttribute( "model", organisationUnits ); @@ -39,12 +43,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getOrganisationUnit( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getOrganisationUnit( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { OrganisationUnit organisationUnit = organisationUnitService.getOrganisationUnit( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( organisationUnit ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( organisationUnit ); + } model.addAttribute( "model", organisationUnit ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupController.java 2011-12-06 04:28:54 +0000 @@ -1,5 +1,6 @@ package org.hisp.dhis.api.controller; +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.organisationunit.OrganisationUnitGroup; import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; @@ -25,13 +26,16 @@ private OrganisationUnitGroupService organisationUnitGroupService; @RequestMapping( method = RequestMethod.GET ) - public String getOrganisationUnits( Model model, HttpServletRequest request ) + public String getOrganisationUnits( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { OrganisationUnitGroups organisationUnitGroups = new OrganisationUnitGroups(); organisationUnitGroups.setOrganisationUnitGroups( new ArrayList( organisationUnitGroupService.getAllOrganisationUnitGroups() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( organisationUnitGroups ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( organisationUnitGroups ); + } model.addAttribute( "model", organisationUnitGroups ); @@ -39,13 +43,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getOrganisationUnit( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getOrganisationUnit( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { OrganisationUnitGroup organisationUnitGroup = organisationUnitGroupService.getOrganisationUnitGroup( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( organisationUnitGroup ); - + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( organisationUnitGroup ); + } model.addAttribute( "model", organisationUnitGroup ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupSetController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupSetController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitGroupSetController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; @@ -52,13 +53,16 @@ private OrganisationUnitGroupService organisationUnitGroupService; @RequestMapping( method = RequestMethod.GET ) - public String getOrganisationUnitGroupSets( Model model, HttpServletRequest request ) + public String getOrganisationUnitGroupSets( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { OrganisationUnitGroupSets organisationUnitGroupSets = new OrganisationUnitGroupSets(); organisationUnitGroupSets.setOrganisationUnitGroupSets( new ArrayList( organisationUnitGroupService.getAllOrganisationUnitGroupSets() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( organisationUnitGroupSets ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( organisationUnitGroupSets ); + } model.addAttribute( "model", organisationUnitGroupSets ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getOrganisationUnitGroupSet( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getOrganisationUnitGroupSet( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { OrganisationUnitGroupSet organisationUnitGroupSet = organisationUnitGroupService.getOrganisationUnitGroupSet( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( organisationUnitGroupSet ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( organisationUnitGroupSet ); + } model.addAttribute( "model", organisationUnitGroupSet ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitLevelController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitLevelController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/OrganisationUnitLevelController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.organisationunit.OrganisationUnitLevel; import org.hisp.dhis.organisationunit.OrganisationUnitLevels; @@ -52,13 +53,16 @@ private OrganisationUnitService organisationUnitService; @RequestMapping( method = RequestMethod.GET ) - public String getOrganisationUnitLevels( Model model, HttpServletRequest request ) + public String getOrganisationUnitLevels( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { OrganisationUnitLevels organisationUnitLevels = new OrganisationUnitLevels(); organisationUnitLevels.setOrganisationUnitLevels( new ArrayList( organisationUnitService.getOrganisationUnitLevels() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( organisationUnitLevels ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( organisationUnitLevels ); + } model.addAttribute( "model", organisationUnitLevels ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{uid}", method = RequestMethod.GET ) - public String getOrganisationUnit( @PathVariable( "uid" ) String uid, Model model, HttpServletRequest request ) + public String getOrganisationUnit( @PathVariable( "uid" ) String uid, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { OrganisationUnitLevel organisationUnitLevel = organisationUnitService.getOrganisationUnitLevel( uid ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( organisationUnitLevel ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( organisationUnitLevel ); + } model.addAttribute( "model", organisationUnitLevel ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/UserController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/UserController.java 2011-12-03 18:00:10 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/UserController.java 2011-12-06 04:28:54 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.api.utils.IdentifiableObjectParams; import org.hisp.dhis.api.utils.WebLinkPopulatorListener; import org.hisp.dhis.user.User; import org.hisp.dhis.user.UserService; @@ -52,13 +53,16 @@ private UserService userService; @RequestMapping( method = RequestMethod.GET ) - public String getUsers( Model model, HttpServletRequest request ) + public String getUsers( IdentifiableObjectParams params, Model model, HttpServletRequest request ) { Users users = new Users(); users.setUsers( new ArrayList( userService.getAllUsers() ) ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( users ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( users ); + } model.addAttribute( "model", users ); @@ -66,12 +70,15 @@ } @RequestMapping( value = "/{id}", method = RequestMethod.GET ) - public String getUser( @PathVariable( "id" ) Integer id, Model model, HttpServletRequest request ) + public String getUser( @PathVariable( "id" ) Integer id, IdentifiableObjectParams params, Model model, HttpServletRequest request ) { User user = userService.getUser( id ); - WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); - listener.beforeMarshal( user ); + if ( params.hasLinks() ) + { + WebLinkPopulatorListener listener = new WebLinkPopulatorListener( request ); + listener.beforeMarshal( user ); + } model.addAttribute( "model", user ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebLinkPopulatorListener.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebLinkPopulatorListener.java 2011-12-05 12:21:38 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebLinkPopulatorListener.java 2011-12-06 05:26:02 +0000 @@ -27,55 +27,30 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.xml.bind.Marshaller; - import org.hisp.dhis.attribute.Attribute; import org.hisp.dhis.attribute.Attributes; import org.hisp.dhis.chart.Chart; import org.hisp.dhis.chart.Charts; import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.BaseLinkableObject; -import org.hisp.dhis.dataelement.DataElement; -import org.hisp.dhis.dataelement.DataElementCategories; -import org.hisp.dhis.dataelement.DataElementCategory; -import org.hisp.dhis.dataelement.DataElementCategoryCombo; -import org.hisp.dhis.dataelement.DataElementCategoryCombos; -import org.hisp.dhis.dataelement.DataElementCategoryOption; -import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; -import org.hisp.dhis.dataelement.DataElementCategoryOptionCombos; -import org.hisp.dhis.dataelement.DataElementCategoryOptions; -import org.hisp.dhis.dataelement.DataElementGroup; -import org.hisp.dhis.dataelement.DataElementGroupSet; -import org.hisp.dhis.dataelement.DataElementGroupSets; -import org.hisp.dhis.dataelement.DataElementGroups; -import org.hisp.dhis.dataelement.DataElements; +import org.hisp.dhis.dataelement.*; import org.hisp.dhis.dataset.CompleteDataSetRegistration; import org.hisp.dhis.dataset.CompleteDataSetRegistrations; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dataset.DataSets; -import org.hisp.dhis.indicator.Indicator; -import org.hisp.dhis.indicator.IndicatorGroup; -import org.hisp.dhis.indicator.IndicatorGroupSet; -import org.hisp.dhis.indicator.IndicatorGroupSets; -import org.hisp.dhis.indicator.IndicatorGroups; -import org.hisp.dhis.indicator.IndicatorType; -import org.hisp.dhis.indicator.IndicatorTypes; -import org.hisp.dhis.indicator.Indicators; +import org.hisp.dhis.indicator.*; import org.hisp.dhis.mapping.MapView; import org.hisp.dhis.mapping.Maps; -import org.hisp.dhis.organisationunit.OrganisationUnit; -import org.hisp.dhis.organisationunit.OrganisationUnitGroup; -import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; -import org.hisp.dhis.organisationunit.OrganisationUnitGroupSets; -import org.hisp.dhis.organisationunit.OrganisationUnitGroups; -import org.hisp.dhis.organisationunit.OrganisationUnits; +import org.hisp.dhis.organisationunit.*; import org.hisp.dhis.user.User; import org.hisp.dhis.user.Users; +import javax.servlet.http.HttpServletRequest; +import javax.xml.bind.Marshaller; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + /** * @author Morten Olav Hansen */ @@ -149,17 +124,534 @@ @Override public void beforeMarshal( Object source ) { - if ( source instanceof BaseIdentifiableObject ) - { - BaseIdentifiableObject entity = (BaseIdentifiableObject) source; - entity.setLink( getPathWithUid( entity ) ); - } - else if ( source instanceof BaseLinkableObject ) - { - BaseLinkableObject linkable = (BaseLinkableObject) source; - linkable.setLink( getBasePath( linkable.getClass() ) ); - } - + if ( source instanceof Charts ) + { + populateCharts( (Charts) source, true ); + } + else if ( source instanceof Chart ) + { + populateChart( (Chart) source, true ); + } + else if ( source instanceof DataSets ) + { + populateDataSets( (DataSets) source, true ); + } + else if ( source instanceof DataSet ) + { + populateDataSet( (DataSet) source, true ); + } + else if ( source instanceof OrganisationUnits ) + { + populateOrganisationUnits( (OrganisationUnits) source, true ); + } + else if ( source instanceof OrganisationUnit ) + { + populateOrganisationUnit( (OrganisationUnit) source, true ); + } + else if ( source instanceof OrganisationUnitGroups ) + { + populateOrganisationUnitGroups( (OrganisationUnitGroups) source, true ); + } + else if ( source instanceof OrganisationUnitGroup ) + { + populateOrganisationUnitGroup( (OrganisationUnitGroup) source, true ); + } + else if ( source instanceof OrganisationUnitGroupSets ) + { + populateOrganisationUnitGroupSets( (OrganisationUnitGroupSets) source, true ); + } + else if ( source instanceof OrganisationUnitGroupSet ) + { + populateOrganisationUnitGroupSet( (OrganisationUnitGroupSet) source, true ); + } + else if ( source instanceof Indicators ) + { + populateIndicators( (Indicators) source, true ); + } + else if ( source instanceof Indicator ) + { + populateIndicator( (Indicator) source, true ); + } + else if ( source instanceof IndicatorGroups ) + { + populateIndicatorGroups( (IndicatorGroups) source, true ); + } + else if ( source instanceof IndicatorGroup ) + { + populateIndicatorGroup( (IndicatorGroup) source, true ); + } + else if ( source instanceof IndicatorGroupSets ) + { + populateIndicatorGroupSets( (IndicatorGroupSets) source, true ); + } + else if ( source instanceof IndicatorGroupSet ) + { + populateIndicatorGroupSet( (IndicatorGroupSet) source, true ); + } + else if ( source instanceof DataElements ) + { + populateDataElements( (DataElements) source, true ); + } + else if ( source instanceof DataElement ) + { + populateDataElement( (DataElement) source, true ); + } + else if ( source instanceof DataElementGroups ) + { + populateDataElementGroups( (DataElementGroups) source, true ); + } + else if ( source instanceof DataElementGroup ) + { + populateDataElementGroup( (DataElementGroup) source, true ); + } + else if ( source instanceof DataElementGroupSets ) + { + populateDataElementGroupSets( (DataElementGroupSets) source, true ); + } + else if ( source instanceof DataElementGroupSet ) + { + populateDataElementGroupSet( (DataElementGroupSet) source, true ); + } + else if ( source instanceof DataElementCategories ) + { + populateDataElementCategories( (DataElementCategories) source, true ); + } + else if ( source instanceof DataElementCategory ) + { + populateDataElementCategory( (DataElementCategory) source, true ); + } + else if ( source instanceof DataElementCategoryCombos ) + { + populateDataElementCategoryCombos( (DataElementCategoryCombos) source, true ); + } + else if ( source instanceof DataElementCategoryCombo ) + { + populateDataElementCategoryCombo( (DataElementCategoryCombo) source, true ); + } + else if ( source instanceof DataElementCategoryOptions ) + { + populateDataElementCategoryOptions( (DataElementCategoryOptions) source, true ); + } + else if ( source instanceof DataElementCategoryOption ) + { + populateDataElementCategoryOption( (DataElementCategoryOption) source, true ); + } + else if ( source instanceof DataElementCategoryOptionCombos ) + { + populateDataElementCategoryOptionCombos( (DataElementCategoryOptionCombos) source, true ); + } + else if ( source instanceof DataElementCategoryOptionCombo ) + { + populateDataElementCategoryOptionCombo( (DataElementCategoryOptionCombo) source, true ); + } + else if ( source instanceof Attributes ) + { + populateAttributes( (Attributes) source, true ); + } + else if ( source instanceof Attribute ) + { + populateAttribute( (Attribute) source, true ); + } + } + + private void populateAttributes( Attributes attributes, boolean root ) + { + attributes.setLink( getBasePath( Attributes.class ) ); + + if ( root ) + { + for ( Attribute attribute : attributes.getAttributes() ) + { + populateAttribute( attribute, false ); + } + } + } + + private void populateAttribute( Attribute attribute, boolean root ) + { + attribute.setLink( getPathWithUid( attribute ) ); + + if ( root ) + { + + } + } + + private void populateDataElementCategories( DataElementCategories dataElementCategories, boolean root ) + { + dataElementCategories.setLink( getBasePath( DataElementCategories.class ) ); + + if ( root ) + { + for ( DataElementCategory dataElementCategory : dataElementCategories.getDataElementCategories() ) + { + populateDataElementCategory( dataElementCategory, false ); + } + } + } + + private void populateDataElementCategory( DataElementCategory dataElementCategory, boolean root ) + { + dataElementCategory.setLink( getPathWithUid( dataElementCategory ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( dataElementCategory.getCategoryOptions() ); + } + } + + private void populateDataElementCategoryCombos( DataElementCategoryCombos dataElementCategoryCombos, boolean root ) + { + dataElementCategoryCombos.setLink( getBasePath( DataElementCategoryCombos.class ) ); + + if ( root ) + { + for ( DataElementCategoryCombo dataElementCategoryCombo : dataElementCategoryCombos.getDataElementCategoryCombos() ) + { + populateDataElementCategoryCombo( dataElementCategoryCombo, false ); + } + } + } + + private void populateDataElementCategoryCombo( DataElementCategoryCombo dataElementCategoryCombo, boolean root ) + { + dataElementCategoryCombo.setLink( getPathWithUid( dataElementCategoryCombo ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( dataElementCategoryCombo.getOptionCombos() ); + handleIdentifiableObjectCollection( dataElementCategoryCombo.getCategories() ); + } + } + + private void populateDataElementCategoryOptions( DataElementCategoryOptions dataElementCategoryOptions, boolean root ) + { + dataElementCategoryOptions.setLink( getBasePath( DataElementCategoryOptions.class ) ); + + if ( root ) + { + for ( DataElementCategoryOption dataElementCategoryOption : dataElementCategoryOptions.getDataElementCategoryOptions() ) + { + populateDataElementCategoryOption( dataElementCategoryOption, false ); + } + } + } + + private void populateDataElementCategoryOption( DataElementCategoryOption dataElementCategoryOption, boolean root ) + { + dataElementCategoryOption.setLink( getPathWithUid( dataElementCategoryOption ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( dataElementCategoryOption.getCategoryOptionCombos() ); + populateIdentifiableObject( dataElementCategoryOption.getCategory() ); + } + } + + private void populateDataElementCategoryOptionCombos( DataElementCategoryOptionCombos dataElementCategoryOptionCombos, boolean root ) + { + dataElementCategoryOptionCombos.setLink( getBasePath( DataElementCategoryOptionCombos.class ) ); + + if ( root ) + { + for ( DataElementCategoryOptionCombo dataElementCategoryOptionCombo : dataElementCategoryOptionCombos.getDataElementCategoryOptionCombos() ) + { + populateDataElementCategoryOptionCombo( dataElementCategoryOptionCombo, false ); + } + } + } + + private void populateDataElementCategoryOptionCombo( DataElementCategoryOptionCombo dataElementCategoryOptionCombo, boolean root ) + { + dataElementCategoryOptionCombo.setLink( getPathWithUid( dataElementCategoryOptionCombo ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( dataElementCategoryOptionCombo.getCategoryOptions() ); + populateIdentifiableObject( dataElementCategoryOptionCombo.getCategoryCombo() ); + } + } + + private void populateDataElements( DataElements dataElements, boolean root ) + { + dataElements.setLink( getBasePath( DataElements.class ) ); + + if ( root ) + { + for ( DataElement dataElement : dataElements.getDataElements() ) + { + populateDataElement( dataElement, false ); + } + } + } + + private void populateDataElement( DataElement dataElement, boolean root ) + { + dataElement.setLink( getPathWithUid( dataElement ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( dataElement.getGroups() ); + handleIdentifiableObjectCollection( dataElement.getDataSets() ); + populateIdentifiableObject( dataElement.getCategoryCombo() ); + } + } + + private void populateDataElementGroups( DataElementGroups dataElementGroups, boolean root ) + { + dataElementGroups.setLink( getBasePath( DataElementGroups.class ) ); + + if ( root ) + { + for ( DataElementGroup dataElementGroup : dataElementGroups.getDataElementGroups() ) + { + populateDataElementGroup( dataElementGroup, false ); + } + } + } + + private void populateDataElementGroup( DataElementGroup dataElementGroup, boolean root ) + { + dataElementGroup.setLink( getPathWithUid( dataElementGroup ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( dataElementGroup.getMembers() ); + populateIdentifiableObject( dataElementGroup.getGroupSet() ); + } + } + + private void populateDataElementGroupSets( DataElementGroupSets dataElementGroupSets, boolean root ) + { + dataElementGroupSets.setLink( getBasePath( DataElementGroupSets.class ) ); + + if ( root ) + { + for ( DataElementGroupSet dataElementGroupSet : dataElementGroupSets.getDataElementGroupSets() ) + { + populateDataElementGroupSet( dataElementGroupSet, false ); + } + } + } + + private void populateDataElementGroupSet( DataElementGroupSet dataElementGroupSet, boolean root ) + { + dataElementGroupSet.setLink( getPathWithUid( dataElementGroupSet ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( dataElementGroupSet.getMembers() ); + } + } + + private void populateIndicators( Indicators indicators, boolean root ) + { + indicators.setLink( getBasePath( Indicators.class ) ); + + if ( root ) + { + for ( Indicator indicator : indicators.getIndicators() ) + { + populateIndicator( indicator, false ); + } + } + } + + private void populateIndicator( Indicator indicator, boolean root ) + { + indicator.setLink( getPathWithUid( indicator ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( indicator.getGroups() ); + handleIdentifiableObjectCollection( indicator.getDataSets() ); + } + } + + private void populateIndicatorGroups( IndicatorGroups indicatorGroups, boolean root ) + { + indicatorGroups.setLink( getBasePath( IndicatorGroups.class ) ); + + if ( root ) + { + for ( IndicatorGroup indicatorGroup : indicatorGroups.getIndicatorGroups() ) + { + populateIndicatorGroup( indicatorGroup, false ); + } + } + } + + private void populateIndicatorGroup( IndicatorGroup indicatorGroup, boolean root ) + { + indicatorGroup.setLink( getPathWithUid( indicatorGroup ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( indicatorGroup.getMembers() ); + populateIdentifiableObject( indicatorGroup.getGroupSet() ); + } + } + + private void populateIndicatorGroupSets( IndicatorGroupSets indicatorGroupSets, boolean root ) + { + indicatorGroupSets.setLink( getBasePath( IndicatorGroupSets.class ) ); + + if ( root ) + { + for ( IndicatorGroupSet indicatorGroupSet : indicatorGroupSets.getIndicatorGroupSets() ) + { + populateIndicatorGroupSet( indicatorGroupSet, false ); + } + } + } + + private void populateIndicatorGroupSet( IndicatorGroupSet indicatorGroupSet, boolean root ) + { + indicatorGroupSet.setLink( getPathWithUid( indicatorGroupSet ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( indicatorGroupSet.getMembers() ); + } + } + + private void populateOrganisationUnitGroups( OrganisationUnitGroups organisationUnitGroups, boolean root ) + { + organisationUnitGroups.setLink( getBasePath( OrganisationUnitGroups.class ) ); + + if ( root ) + { + for ( OrganisationUnitGroup organisationUnitGroup : organisationUnitGroups.getOrganisationUnitGroups() ) + { + populateOrganisationUnitGroup( organisationUnitGroup, false ); + } + } + } + + private void populateOrganisationUnitGroup( OrganisationUnitGroup organisationUnitGroup, boolean root ) + { + organisationUnitGroup.setLink( getPathWithUid( organisationUnitGroup ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( organisationUnitGroup.getMembers() ); + populateIdentifiableObject( organisationUnitGroup.getGroupSet() ); + } + } + + private void populateOrganisationUnitGroupSets( OrganisationUnitGroupSets organisationUnitGroupSets, boolean root ) + { + organisationUnitGroupSets.setLink( getBasePath( OrganisationUnitGroupSets.class ) ); + + if ( root ) + { + for ( OrganisationUnitGroupSet organisationUnitGroupSet : organisationUnitGroupSets.getOrganisationUnitGroupSets() ) + { + populateOrganisationUnitGroupSet( organisationUnitGroupSet, false ); + } + } + } + + private void populateOrganisationUnitGroupSet( OrganisationUnitGroupSet organisationUnitGroupSet, boolean root ) + { + organisationUnitGroupSet.setLink( getPathWithUid( organisationUnitGroupSet ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( organisationUnitGroupSet.getOrganisationUnitGroups() ); + } + } + + private void populateOrganisationUnits( OrganisationUnits organisationUnits, boolean root ) + { + organisationUnits.setLink( getBasePath( OrganisationUnits.class ) ); + + if ( root ) + { + for ( OrganisationUnit organisationUnit : organisationUnits.getOrganisationUnits() ) + { + populateOrganisationUnit( organisationUnit, false ); + } + } + } + + private void populateOrganisationUnit( OrganisationUnit organisationUnit, boolean root ) + { + organisationUnit.setLink( getPathWithUid( organisationUnit ) ); + + if ( root ) + { + populateIdentifiableObject( organisationUnit.getParent() ); + handleIdentifiableObjectCollection( organisationUnit.getDataSets() ); + handleIdentifiableObjectCollection( organisationUnit.getGroups() ); + } + } + + private void populateDataSets( DataSets dataSets, boolean root ) + { + dataSets.setLink( getBasePath( DataSets.class ) ); + + if ( root ) + { + for ( DataSet dataSet : dataSets.getDataSets() ) + { + populateDataSet( dataSet, false ); + } + } + } + + private void populateDataSet( DataSet dataSet, boolean root ) + { + dataSet.setLink( getPathWithUid( dataSet ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( dataSet.getDataElements() ); + handleIdentifiableObjectCollection( dataSet.getIndicators() ); + handleIdentifiableObjectCollection( dataSet.getSources() ); + } + } + + private void populateCharts( Charts charts, boolean root ) + { + charts.setLink( getBasePath( Chart.class ) ); + + if ( root ) + { + for ( Chart chart : charts.getCharts() ) + { + populateChart( chart, false ); + } + } + } + + private void populateChart( Chart chart, boolean root ) + { + chart.setLink( getPathWithUid( chart ) ); + + if ( root ) + { + handleIdentifiableObjectCollection( chart.getIndicators() ); + handleIdentifiableObjectCollection( chart.getDataElements() ); + handleIdentifiableObjectCollection( chart.getOrganisationUnits() ); + handleIdentifiableObjectCollection( chart.getAllOrganisationUnits() ); + handleIdentifiableObjectCollection( chart.getDataSets() ); + handleIdentifiableObjectCollection( chart.getPeriods() ); + handleIdentifiableObjectCollection( chart.getAllPeriods() ); + } + } + + public void handleIdentifiableObjectCollection( Collection identifiableObjects ) + { + for ( BaseIdentifiableObject baseIdentifiableObject : identifiableObjects ) + { + populateIdentifiableObject( baseIdentifiableObject ); + } + } + + private void populateIdentifiableObject( BaseIdentifiableObject baseIdentifiableObject ) + { + baseIdentifiableObject.setLink( getPathWithUid( baseIdentifiableObject ) ); } private String getPathWithUid( BaseIdentifiableObject baseIdentifiableObject ) @@ -171,20 +663,20 @@ { if ( rootPath == null ) { - StringBuffer buffer = new StringBuffer(); - buffer.append( request.getScheme() ); + StringBuilder builder = new StringBuilder(); - buffer.append( "://" + request.getServerName() ); + builder.append( request.getScheme() ); + builder.append( "://" ).append( request.getServerName() ); if ( request.getServerPort() != 80 && request.getServerPort() != 443 ) { - buffer.append( ":" + request.getServerPort() ); + builder.append( ":" ).append( request.getServerPort() ); } - buffer.append( request.getContextPath() ); - buffer.append( request.getServletPath() ); + builder.append( request.getContextPath() ); + builder.append( request.getServletPath() ); - rootPath = buffer.toString(); + rootPath = builder.toString(); } String resourcePath = resourcePaths.get( clazz ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-api/src/main/resources/META-INF/dhis/beans.xml 2011-12-02 14:01:09 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/resources/META-INF/dhis/beans.xml 2011-12-06 05:14:01 +0000 @@ -1,7 +1,7 @@ + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> - +