=== modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ExportValidationResultAction.java' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ExportValidationResultAction.java 2013-04-04 18:06:19 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ExportValidationResultAction.java 2013-07-25 05:37:29 +0000 @@ -1,7 +1,7 @@ package org.hisp.dhis.validationrule.action; /* - * Copyright (c) 2004-2012, University of Oslo + * Copyright (c) 2004-2013, University of Oslo * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,8 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.List; - +import com.opensymphony.xwork2.Action; import org.apache.commons.lang.StringUtils; import org.hisp.dhis.common.Grid; import org.hisp.dhis.common.GridHeader; @@ -41,7 +40,7 @@ import org.hisp.dhis.util.SessionUtils; import org.hisp.dhis.validation.ValidationResult; -import com.opensymphony.xwork2.Action; +import java.util.List; /** * @author Lars Helge Overland @@ -50,7 +49,7 @@ implements Action { private static final String DEFAULT_TYPE = "pdf"; - + private static final String KEY_VALIDATIONRESULT = "validationResult"; // ------------------------------------------------------------------------- @@ -70,14 +69,14 @@ { this.format = format; } - + private I18n i18n; public void setI18n( I18n i18n ) { this.i18n = i18n; } - + // ------------------------------------------------------------------------- // Input // ------------------------------------------------------------------------- @@ -88,7 +87,7 @@ { this.type = type; } - + private Integer organisationUnitId; public void setOrganisationUnitId( Integer organisationUnitId ) @@ -115,29 +114,29 @@ throws Exception { grid = generateGrid(); - + type = StringUtils.defaultIfEmpty( type, DEFAULT_TYPE ); - + return type; } - @SuppressWarnings( "unchecked" ) + @SuppressWarnings("unchecked") private Grid generateGrid() { List results = (List) SessionUtils. getSessionVar( KEY_VALIDATIONRESULT ); - + OrganisationUnit organisationUnit = organisationUnitService.getOrganisationUnit( organisationUnitId ); - + Grid grid = new ListGrid(); - + grid.setTitle( i18n.getString( "data_quality_report" ) ); - + if ( organisationUnit != null ) { grid.setSubtitle( organisationUnit.getName() ); } - + grid.addHeader( new GridHeader( i18n.getString( "source" ), false, true ) ); grid.addHeader( new GridHeader( i18n.getString( "period" ), false, true ) ); grid.addHeader( new GridHeader( i18n.getString( "left_side_description" ), false, true ) ); @@ -145,12 +144,12 @@ grid.addHeader( new GridHeader( i18n.getString( "operator" ), false, false ) ); grid.addHeader( new GridHeader( i18n.getString( "value" ), false, false ) ); grid.addHeader( new GridHeader( i18n.getString( "right_side_description" ), false, true ) ); - + for ( ValidationResult validationResult : results ) { OrganisationUnit unit = validationResult.getSource(); Period period = validationResult.getPeriod(); - + grid.addRow(); grid.addValue( unit.getName() ); grid.addValue( format.formatPeriod( period ) ); @@ -160,7 +159,7 @@ grid.addValue( String.valueOf( validationResult.getRightsideValue() ) ); grid.addValue( validationResult.getValidationRule().getRightSide().getDescription() ); } - + return grid; } } === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/RunValidationAction.java' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/RunValidationAction.java 2012-09-22 18:42:59 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/RunValidationAction.java 2013-07-25 05:37:29 +0000 @@ -27,11 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - +import com.opensymphony.xwork2.Action; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.common.Grid; @@ -44,7 +40,10 @@ import org.hisp.dhis.validation.ValidationRuleService; import org.hisp.dhis.validation.comparator.ValidationResultComparator; -import com.opensymphony.xwork2.Action; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; /** * @author Margrethe Store @@ -82,13 +81,13 @@ { this.organisationUnitService = organisationUnitService; } - + // ------------------------------------------------------------------------- // Input/output // ------------------------------------------------------------------------- private Integer organisationUnitId; - + public void setOrganisationUnitId( Integer organisationUnitId ) { this.organisationUnitId = organisationUnitId; @@ -124,14 +123,14 @@ { this.validationRuleGroupId = validationRuleGroupId; } - + private List validationResults = new ArrayList(); public List getValidationResults() { return validationResults; } - + private Grid aggregateResults; public Grid getAggregateResults() @@ -145,7 +144,7 @@ { return maxExceeded; } - + private OrganisationUnit organisationUnit; public OrganisationUnit getOrganisationUnit() @@ -160,7 +159,7 @@ public String execute() { organisationUnit = organisationUnitService.getOrganisationUnit( organisationUnitId ); - + Collection organisationUnits = organisationUnitService.getOrganisationUnitWithChildren( organisationUnit.getId() ); if ( validationRuleGroupId == -1 ) @@ -181,13 +180,13 @@ } maxExceeded = validationResults.size() > ValidationRuleService.MAX_VIOLATIONS; - + Collections.sort( validationResults, new ValidationResultComparator() ); SessionUtils.setSessionVar( KEY_VALIDATIONRESULT, validationResults ); log.info( "Validation done" ); - + return SUCCESS; } } === added file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/dataanalysis/ExportAnalysisResultAction.java' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/dataanalysis/ExportAnalysisResultAction.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/dataanalysis/ExportAnalysisResultAction.java 2013-07-25 05:37:29 +0000 @@ -0,0 +1,143 @@ +package org.hisp.dhis.validationrule.action.dataanalysis; + +/* + * Copyright (c) 2004-2013, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import com.opensymphony.xwork2.Action; +import org.apache.commons.lang.StringUtils; +import org.hisp.dhis.common.Grid; +import org.hisp.dhis.common.GridHeader; +import org.hisp.dhis.datavalue.DeflatedDataValue; +import org.hisp.dhis.i18n.I18n; +import org.hisp.dhis.i18n.I18nFormat; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitService; +import org.hisp.dhis.period.Period; +import org.hisp.dhis.system.grid.ListGrid; +import org.hisp.dhis.util.SessionUtils; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.List; + +/** + * @author Morten Olav Hansen + */ +public class ExportAnalysisResultAction implements Action +{ + private static final String DEFAULT_TYPE = "pdf"; + + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + @Autowired + private OrganisationUnitService organisationUnitService; + + private I18nFormat format; + + public void setFormat( I18nFormat format ) + { + this.format = format; + } + + private I18n i18n; + + public void setI18n( I18n i18n ) + { + this.i18n = i18n; + } + + // ------------------------------------------------------------------------- + // Input + // ------------------------------------------------------------------------- + + private String type; + + public void setType( String type ) + { + this.type = type; + } + + private Integer organisationUnitId; + + public void setOrganisationUnitId( Integer organisationUnitId ) + { + this.organisationUnitId = organisationUnitId; + } + + // ------------------------------------------------------------------------- + // Output + // ------------------------------------------------------------------------- + + private Grid grid; + + public Grid getGrid() + { + return grid; + } + + @Override + public String execute() throws Exception + { + grid = generateGrid(); + + type = StringUtils.defaultIfEmpty( type, DEFAULT_TYPE ); + + return type; + } + + @SuppressWarnings( "unchecked" ) + private Grid generateGrid() + { + List results = (List) SessionUtils.getSessionVar( GetAnalysisAction.KEY_ANALYSIS_DATA_VALUES ); + + Grid grid = new ListGrid(); + grid.setTitle( i18n.getString( "data_analysis_report" ) ); + + grid.addHeader( new GridHeader( i18n.getString( "dataelement" ), false, true ) ); + grid.addHeader( new GridHeader( i18n.getString( "source" ), false, true ) ); + grid.addHeader( new GridHeader( i18n.getString( "period" ), false, true ) ); + grid.addHeader( new GridHeader( i18n.getString( "min" ), false, false ) ); + grid.addHeader( new GridHeader( i18n.getString( "value" ), false, false ) ); + grid.addHeader( new GridHeader( i18n.getString( "max" ), false, false ) ); + + for ( DeflatedDataValue dataValue : results ) + { + Period period = dataValue.getPeriod(); + + grid.addRow(); + grid.addValue( dataValue.getDataElementName() ); + grid.addValue( dataValue.getSourceName() ); + grid.addValue( format.formatPeriod( period ) ); + grid.addValue( dataValue.getMin() ); + grid.addValue( dataValue.getValue() ); + grid.addValue( dataValue.getMax() ); + } + + return grid; + } +} === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/dataanalysis/GetAnalysisAction.java' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/dataanalysis/GetAnalysisAction.java 2012-07-26 10:07:01 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/dataanalysis/GetAnalysisAction.java 2013-07-25 05:37:29 +0000 @@ -27,11 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - +import com.opensymphony.xwork2.Action; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.common.ServiceProvider; @@ -45,13 +41,17 @@ import org.hisp.dhis.oust.manager.SelectionTreeManager; import org.hisp.dhis.period.Period; import org.hisp.dhis.period.PeriodService; +import org.hisp.dhis.util.SessionUtils; -import com.opensymphony.xwork2.Action; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; /** * Finds outliers in given data elements for given sources in a given period and * displays a list of them. - * + * * @author Jon Moen Drange, Peter Flem, Dag Haavi Finstad, Lars Helge Oeverland * @version $Id: GetOutliersAction.java 1005 2009-06-04 13:29:44Z jonmd $ */ @@ -60,6 +60,8 @@ { private static final Log log = LogFactory.getLog( GetAnalysisAction.class ); + public static final String KEY_ANALYSIS_DATA_VALUES = "analysisDataValues"; + // ------------------------------------------------------------------------- // Dependencies // ------------------------------------------------------------------------- @@ -185,13 +187,13 @@ Collection periods = null; OrganisationUnit unit = selectionTreeManager.getReloadedSelectedOrganisationUnit(); Collection orgUnits = null; - + // TODO filter periods with data element period type - + if ( fromDate != null && toDate != null && dataSets != null && unit != null ) { orgUnits = organisationUnitService.getOrganisationUnitWithChildren( unit.getId() ); - + periods = periodService.getPeriodsBetweenDates( format.parseDate( fromDate ), format.parseDate( toDate ) ); for ( String id : dataSets ) @@ -201,7 +203,7 @@ log.info( "From date: " + fromDate + ", To date: " + toDate + ", Organisation unit: " + unit + ", Std dev: " + standardDeviation + ", Key: " + key ); - + log.info( "Nr of data elements: " + dataElements.size() + " Nr of periods: " + periods.size() ); } @@ -214,6 +216,8 @@ maxExceeded = dataValues.size() > DataAnalysisService.MAX_OUTLIERS; } + SessionUtils.setSessionVar( KEY_ANALYSIS_DATA_VALUES, dataValues ); + return SUCCESS; } } === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/org/hisp/dhis/validationrule/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/org/hisp/dhis/validationrule/i18n_module.properties 2012-12-04 17:33:33 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/org/hisp/dhis/validationrule/i18n_module.properties 2013-07-25 05:37:29 +0000 @@ -94,6 +94,7 @@ mark_value_for_followup=Mark value for follow-up unmark_value_for_followup=Unmark value for follow-up data_analysis=Data Analysis +data_analysis_report=Data Analysis Report stddevoutlier_analysis=Std Dev Outlier Analysis minmaxoutlier_analysis=Min-Max Outlier Analysis gap_analysis=Gap Analysis === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/struts.xml' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/struts.xml 2012-10-31 13:56:02 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/struts.xml 2013-07-25 05:37:29 +0000 @@ -1,7 +1,7 @@ + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.0.dtd"> @@ -13,7 +13,7 @@ /dhis-web-validationrule/index.vm /dhis-web-validationrule/menu.vm - + @@ -25,7 +25,7 @@ /dhis-web-validationrule/jsonValidationRule.vm - plainTextError + plainTextError @@ -33,7 +33,8 @@ /dhis-web-validationrule/addValidationRuleForm.vm /dhis-web-validationrule/menu.vm javascript/general.js,javascript/expression.js, - javascript/expressionBuilder.js,javascript/addValidationRuleForm.js + javascript/expressionBuilder.js,javascript/addValidationRuleForm.js + F_VALIDATIONRULE_ADD @@ -63,7 +64,8 @@ /main.vm /dhis-web-validationrule/updateValidationRuleForm.vm javascript/general.js,javascript/expression.js, - javascript/expressionBuilder.js,javascript/updateValidationRuleForm.js + javascript/expressionBuilder.js,javascript/updateValidationRuleForm.js + F_VALIDATIONRULE_UPDATE @@ -76,10 +78,11 @@ /dhis-web-commons/ajax/jsonOperands.vm plainTextError - + - + /main.vm /dhis-web-validationrule/validationRuleGroup.vm /dhis-web-validationrule/menu.vm @@ -88,10 +91,11 @@ /dhis-web-validationrule/jsonValidationRuleGroup.vm - plainTextError + plainTextError - + /dhis-web-commons/ajax/jsonResponseSuccess.vm F_VALIDATIONRULEGROUP_DELETE plainTextError @@ -117,24 +121,28 @@ F_VALIDATIONRULEGROUP_UPDATE - + showValidationRuleGroupForm.action?currentPage=${keyCurrentPage} F_VALIDATIONRULEGROUP_UPDATE - + /dhis-web-commons/ajax/jsonResponseSuccess.vm /dhis-web-commons/ajax/jsonResponseError.vm /dhis-web-commons/ajax/jsonResponseInput.vm - + /main.vm /dhis-web-validationrule/runValidationForm.vm /dhis-web-validationrule/menu.vm - ../dhis-web-commons/oust/oust.js,../dhis-web-commons/ouwt/ouwt.js,javascript/general.js,javascript/runValidation.js + ../dhis-web-commons/oust/oust.js,../dhis-web-commons/ouwt/ouwt.js,javascript/general.js,javascript/runValidation.js + F_RUN_VALIDATION @@ -157,7 +165,7 @@ - + @@ -179,8 +187,8 @@ /main.vm /dhis-web-validationrule/followUpAnalysisForm.vm /dhis-web-validationrule/menu.vm - javascript/dataAnalysis.js,javascript/editDataValue.js - F_RUN_VALIDATION + javascript/dataAnalysis.js,javascript/editDataValue.js + F_RUN_VALIDATION @@ -194,15 +202,21 @@ - /dhis-web-commons/ajax/jsonResponseSuccess.vm + /dhis-web-commons/ajax/jsonResponseSuccess.vm /dhis-web-commons/ajax/jsonResponseSuccess.vm /dhis-web-commons/ajax/jsonResponseInput.vm - - + + + + + + + + === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/javascript/dataAnalysis.js' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/javascript/dataAnalysis.js 2013-04-30 08:31:58 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/javascript/dataAnalysis.js 2013-07-25 05:37:29 +0000 @@ -89,4 +89,10 @@ $( "div#analysisResult" ).show(); $( "div#analysisResult" ).html( data ); } ); -} \ No newline at end of file +} + +function exportAnalysisResult( type ) +{ + var url = 'exportAnalysisResult.action?type=' + type; + window.location.href = url; +} === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/searchResult.vm' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/searchResult.vm 2012-05-01 13:14:33 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/searchResult.vm 2013-07-25 05:37:29 +0000 @@ -23,7 +23,11 @@ #if( $maxExceeded )$i18n.getString( "max_values_exceeded" ) #else$!dataValues.size() $i18n.getString( "values_found" ) #end -

+ + + + +

@@ -64,10 +68,10 @@ #end
#if ( $value.followup ) - + #else - #end + #end