=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalService.java 2014-10-23 20:41:45 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalService.java 2014-10-23 20:45:00 +0000 @@ -87,8 +87,7 @@ * @return the data approval status. */ DataApprovalStatus getDataApprovalStatus( DataSet dataSet, Period period, - OrganisationUnit organisationUnit, - DataElementCategoryOptionCombo attributeOptionCombo ); + OrganisationUnit organisationUnit, DataElementCategoryOptionCombo attributeOptionCombo ); /** * Returns the data approval status and permissions for a given data set, @@ -120,9 +119,8 @@ * @return the data approval permissions (including status.) */ DataApprovalStatus getDataApprovalStatusAndPermissions( DataSet dataSet, Period period, - OrganisationUnit organisationUnit, - Set categoryOptionGroups, - Set dataElementCategoryOptions ); + OrganisationUnit organisationUnit, Set categoryOptionGroups, + Set dataElementCategoryOptions ); /** * Returns a list of approval status and permissions for all of the === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalStateRequest.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalStateRequest.java 2014-08-14 05:46:19 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataapproval/DataApprovalStateRequest.java 2014-10-23 20:45:00 +0000 @@ -47,8 +47,6 @@ private String ou; - private String cog; - private String ab; private Date ad; @@ -95,18 +93,6 @@ @JsonProperty @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) - public String getCog() - { - return cog; - } - - public void setCog( String cog ) - { - this.cog = cog; - } - - @JsonProperty - @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) public String getAb() { return ab; === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataapproval/DefaultDataApprovalService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataapproval/DefaultDataApprovalService.java 2014-10-23 20:41:45 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataapproval/DefaultDataApprovalService.java 2014-10-23 20:45:00 +0000 @@ -156,7 +156,7 @@ if ( status.getState().isApproved() && status.getDataApprovalLevel().getLevel() >= da.getDataApprovalLevel().getLevel() ) { - it.remove(); // Already approved at this level -- no action needed. + it.remove(); // Already approved at this level, no action needed } else if ( !status.getState().isApprovable() ) { @@ -319,6 +319,8 @@ { tracePrint( "---------------------------------------------------------------------- getDataApprovalStatus" ); + period = periodService.reloadPeriod( period ); + tracePrint( "getDataApprovalStatus( " + dataSet.getName() + ", " + period.getPeriodType().getName() + " " + period.getName() + " " + period + ", " + organisationUnit.getName() + ", " @@ -370,6 +372,8 @@ { tracePrint( "---------------------------------------------------------------------- getDataApprovalStatusAndPermissions" ); + period = periodService.reloadPeriod( period ); + tracePrint( "getDataApprovalStatusAndPermissions( " + dataSet.getName() + ", " + period.getPeriodType().getName() + " " + period.getName() + " " + period + ", " + organisationUnit.getName() + ", " @@ -409,6 +413,8 @@ { tracePrint( "---------------------------------------------------------------------- getUserDataApprovalsAndPermissions" ); + period = periodService.reloadPeriod( period ); + List> userDataApprovals = getUserDataApprovals( dataSets, period ); List statusList = new ArrayList<>(); @@ -466,6 +472,8 @@ Set attributeOptions, boolean isGetStatus ) { + dataApproval.setPeriod( periodService.reloadPeriod( dataApproval.getPeriod() ) ); + if ( ( attributeOptionGroups == null || attributeOptionGroups.isEmpty() ) && ( attributeOptions == null || attributeOptions.isEmpty() ) ) { @@ -771,7 +779,7 @@ * @return Permissions along with status */ private DataApprovalStatus getPermissions( DataApprovalLevel dal, DataApprovalStatus status, DataApproval da ) - { + { DataApprovalPermissions permissions = new DataApprovalPermissions(); tracePrint( "getPermissions - dal " + ( dal == null ? "(null)" : dal.getName() ) === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataApprovalController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataApprovalController.java 2014-10-23 19:13:58 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/DataApprovalController.java 2014-10-23 20:45:00 +0000 @@ -32,11 +32,9 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -50,6 +48,7 @@ import org.hisp.dhis.dataapproval.DataApproval; import org.hisp.dhis.dataapproval.DataApprovalLevel; import org.hisp.dhis.dataapproval.DataApprovalLevelService; +import org.hisp.dhis.dataapproval.DataApprovalPermissions; import org.hisp.dhis.dataapproval.DataApprovalService; import org.hisp.dhis.dataapproval.DataApprovalStateRequest; import org.hisp.dhis.dataapproval.DataApprovalStateRequests; @@ -57,8 +56,6 @@ import org.hisp.dhis.dataapproval.DataApprovalStateResponses; import org.hisp.dhis.dataapproval.DataApprovalStatus; import org.hisp.dhis.dataapproval.exceptions.DataApprovalException; -import org.hisp.dhis.dataelement.CategoryOptionGroup; -import org.hisp.dhis.dataelement.DataElementCategoryOption; import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; import org.hisp.dhis.dataelement.DataElementCategoryService; import org.hisp.dhis.dataset.DataSet; @@ -136,14 +133,10 @@ public void getApprovalState( @RequestParam String ds, @RequestParam String pe, - @RequestParam String ou, - @RequestParam( required = false ) Set cog, - @RequestParam( required = false ) String cp, HttpServletResponse response ) + @RequestParam String ou, HttpServletResponse response ) throws IOException { - log.info( "GET " + RESOURCE_PATH + "?ds=" + ds + "&pe=" + pe + "&ou=" + ou - + (cog == null || cog.isEmpty() ? "" : ("&cog=" + Arrays.toString( cog.toArray() ))) - + (cp == null ? "" : ("&cp=" + cp)) ); + log.info( "GET " + RESOURCE_PATH + "?ds=" + ds + "&pe=" + pe + "&ou=" + ou ); DataSet dataSet = dataSetService.getDataSet( ds ); @@ -169,27 +162,11 @@ return; } - Set categoryOptionGroups = null; - - if ( cog != null && !cog.isEmpty() ) - { - categoryOptionGroups = inputUtils.getAttributeOptionGroups( response, cog ); - - if ( categoryOptionGroups == null ) - { - return; - } - } - - Set categoryOptions = inputUtils.getAttributeOptions( response, cp ); - - if ( categoryOptions != null && categoryOptions.isEmpty() ) - { - return; - } - DataApprovalStatus status = dataApprovalService - .getDataApprovalStatusAndPermissions( dataSet, period, organisationUnit, categoryOptionGroups, categoryOptions ); + .getDataApprovalStatusAndPermissions( dataSet, period, organisationUnit, null, null ); //TODO fix category stuff + + DataApprovalPermissions permissions = status.getPermissions(); + permissions.setState( status.getState().toString() ); JacksonUtils.toJson( response.getOutputStream(), status.getPermissions() ); } @@ -319,11 +296,9 @@ public void saveApproval( @RequestParam String ds, @RequestParam String pe, - @RequestParam String ou, - @RequestParam( required = false ) String cog, HttpServletResponse response ) + @RequestParam String ou, HttpServletResponse response ) { - log.info( "POST " + RESOURCE_PATH + "?ds=" + ds + "&pe=" + pe + "&ou=" + ou - + (cog == null ? "" : ("&cog=" + cog)) ); + log.info( "POST " + RESOURCE_PATH + "?ds=" + ds + "&pe=" + pe + "&ou=" + ou ); DataSet dataSet = dataSetService.getDataSet( ds ); @@ -349,23 +324,7 @@ return; } - Set categoryOptionGroups = null; - Set categoryOptions = null; - - if ( cog != null ) - { - categoryOptionGroups = inputUtils.getAttributeOptionGroup( response, cog ); - - if ( categoryOptionGroups == null || categoryOptionGroups.isEmpty() ) - { - return; - } - - categoryOptions = getCommonOptions( categoryOptionGroups ); - - } - - DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, categoryOptionGroups ); + DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, null ); //TODO fix category stuff if ( dataApprovalLevel == null ) { @@ -376,7 +335,7 @@ User user = currentUserService.getCurrentUser(); List dataApprovalList = makeDataApprovalList( dataApprovalLevel, dataSet, - period, organisationUnit, categoryOptions, false, new Date(), user ); + period, organisationUnit, false, new Date(), user ); //TODO fix category stuff try { @@ -390,8 +349,7 @@ @PreAuthorize( "hasRole('ALL') or hasRole('F_APPROVE_DATA') or hasRole('F_APPROVE_DATA_LOWER_LEVELS')" ) @RequestMapping( method = RequestMethod.POST, value = MULTIPLE_SAVE_RESOURCE_PATH ) - public void saveApprovalMultiple( - @RequestBody DataApprovalStateRequests dataApprovalStateRequests, + public void saveApprovalMultiple( @RequestBody DataApprovalStateRequests dataApprovalStateRequests, HttpServletResponse response ) { List dataApprovalList = new ArrayList<>(); @@ -423,23 +381,7 @@ return; } - Set categoryOptionGroups = null; - Set categoryOptions = null; - - if ( dataApprovalStateRequest.getCog() != null ) - { - categoryOptionGroups = inputUtils.getAttributeOptionGroup( response, dataApprovalStateRequest.getCog() ); - - if ( categoryOptionGroups == null || categoryOptionGroups.isEmpty() ) - { - return; - } - - categoryOptions = getCommonOptions( categoryOptionGroups ); - - } - - DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, categoryOptionGroups ); + DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, null ); //TODO fix category stuff if ( dataApprovalLevel == null ) { @@ -454,7 +396,7 @@ Date approvalDate = (dataApprovalStateRequest.getAd() == null) ? new Date() : dataApprovalStateRequest.getAd(); dataApprovalList.addAll( makeDataApprovalList( dataApprovalLevel, dataSet, - period, organisationUnit, categoryOptions, false, approvalDate, user ) ); + period, organisationUnit, false, approvalDate, user ) ); } try @@ -472,11 +414,9 @@ public void acceptApproval( @RequestParam String ds, @RequestParam String pe, - @RequestParam String ou, - @RequestParam( required = false ) String cog, HttpServletResponse response ) + @RequestParam String ou, HttpServletResponse response ) { - log.info( "POST " + RESOURCE_PATH + ACCEPTANCES_PATH + "?ds=" + ds + "&pe=" + pe + "&ou=" + ou - + (cog == null ? "" : ("&cog=" + cog)) ); + log.info( "POST " + RESOURCE_PATH + ACCEPTANCES_PATH + "?ds=" + ds + "&pe=" + pe + "&ou=" + ou ); DataSet dataSet = dataSetService.getDataSet( ds ); @@ -502,22 +442,7 @@ return; } - Set categoryOptionGroups = null; - Set categoryOptions = null; - - if ( cog != null ) - { - categoryOptionGroups = inputUtils.getAttributeOptionGroup( response, cog ); - - if ( categoryOptionGroups == null || categoryOptionGroups.isEmpty() ) - { - return; - } - - categoryOptions = getCommonOptions( categoryOptionGroups ); - } - - DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, categoryOptionGroups ); + DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, null ); //TODO fix category stuff if ( dataApprovalLevel == null ) { @@ -528,7 +453,7 @@ User user = currentUserService.getCurrentUser(); List dataApprovalList = makeDataApprovalList( dataApprovalLevel, dataSet, - period, organisationUnit, categoryOptions, false, new Date(), user ); + period, organisationUnit, false, new Date(), user ); try { @@ -574,22 +499,7 @@ return; } - Set categoryOptionGroups = null; - Set categoryOptions = null; - - if ( dataApprovalStateRequest.getCog() != null ) - { - categoryOptionGroups = inputUtils.getAttributeOptionGroup( response, dataApprovalStateRequest.getCog() ); - - if ( categoryOptionGroups == null || categoryOptionGroups.isEmpty() ) - { - return; - } - - categoryOptions = getCommonOptions( categoryOptionGroups ); - } - - DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, categoryOptionGroups ); + DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, null ); //TODO fix category stuff if ( dataApprovalLevel == null ) { @@ -603,7 +513,7 @@ Date approvalDate = (dataApprovalStateRequest.getAd() == null) ? new Date() : dataApprovalStateRequest.getAd(); dataApprovalList.addAll( makeDataApprovalList( dataApprovalLevel, dataSet, - period, organisationUnit, categoryOptions, false, approvalDate, user ) ); + period, organisationUnit, false, approvalDate, user ) ); } try @@ -625,11 +535,9 @@ public void removeApproval( @RequestParam Set ds, @RequestParam String pe, - @RequestParam String ou, - @RequestParam( required = false ) String cog, HttpServletResponse response ) + @RequestParam String ou, HttpServletResponse response ) { - log.info( "DELETE " + RESOURCE_PATH + "?ds=" + ds + "&pe=" + pe + "&ou=" + ou - + (cog == null ? "" : ("&cog=" + cog)) ); + log.info( "DELETE " + RESOURCE_PATH + "?ds=" + ds + "&pe=" + pe + "&ou=" + ou ); Set dataSets = new HashSet<>( manager.getByUid( DataSet.class, ds ) ); @@ -655,23 +563,7 @@ return; } - Set categoryOptionGroups = null; - Set categoryOptions = null; - - if ( cog != null ) - { - categoryOptionGroups = inputUtils.getAttributeOptionGroup( response, cog ); - - if ( categoryOptionGroups == null || categoryOptionGroups.isEmpty() ) - { - return; - } - - categoryOptions = getCommonOptions( categoryOptionGroups ); - - } - - DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, categoryOptionGroups ); + DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, null ); //TODO fix category stuff if ( dataApprovalLevel == null ) { @@ -686,7 +578,7 @@ for ( DataSet dataSet : dataSets ) { dataApprovalList.addAll( makeDataApprovalList( dataApprovalLevel, dataSet, - period, organisationUnit, categoryOptions, false, new Date(), user ) ); + period, organisationUnit, false, new Date(), user ) ); } try @@ -704,11 +596,9 @@ public void unacceptApproval( @RequestParam String ds, @RequestParam String pe, - @RequestParam String ou, - @RequestParam( required = false ) String cog, HttpServletResponse response ) + @RequestParam String ou, HttpServletResponse response ) { - log.info( "DELETE " + RESOURCE_PATH + ACCEPTANCES_PATH + "?ds=" + ds + "&pe=" + pe + "&ou=" + ou - + (cog == null ? "" : ("&cog=" + cog)) ); + log.info( "DELETE " + RESOURCE_PATH + ACCEPTANCES_PATH + "?ds=" + ds + "&pe=" + pe + "&ou=" + ou ); DataSet dataSet = dataSetService.getDataSet( ds ); @@ -734,22 +624,7 @@ return; } - Set categoryOptionGroups = null; - Set categoryOptions = null; - - if ( cog != null ) - { - categoryOptionGroups = inputUtils.getAttributeOptionGroup( response, cog ); - - if ( categoryOptionGroups == null || categoryOptionGroups.isEmpty() ) - { - return; - } - - categoryOptions = getCommonOptions( categoryOptionGroups ); - } - - DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, categoryOptionGroups ); + DataApprovalLevel dataApprovalLevel = dataApprovalLevelService.getHighestDataApprovalLevel( organisationUnit, null ); //TODO fix category stuff if ( dataApprovalLevel == null ) { @@ -760,7 +635,7 @@ User user = currentUserService.getCurrentUser(); List dataApprovalList = makeDataApprovalList( dataApprovalLevel, dataSet, - period, organisationUnit, categoryOptions, false, new Date(), user ); + period, organisationUnit, false, new Date(), user ); try { @@ -777,42 +652,14 @@ // ------------------------------------------------------------------------- private List makeDataApprovalList( DataApprovalLevel dataApprovalLevel, DataSet dataSet, - Period period, OrganisationUnit organisationUnit, Set attributeOptions, - boolean accepted, Date created, User creator ) + Period period, OrganisationUnit organisationUnit, boolean accepted, Date created, User creator ) { List approvals = new ArrayList<>(); - if ( attributeOptions == null ) - { - DataElementCategoryOptionCombo combo = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); + DataElementCategoryOptionCombo combo = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); - approvals.add( new DataApproval( dataApprovalLevel, dataSet, period, organisationUnit, combo, accepted, created, creator ) ); - } - else - { - for ( DataElementCategoryOption option : attributeOptions ) - { - for ( DataElementCategoryOptionCombo combo : option.getCategoryOptionCombos() ) - { - approvals.add( new DataApproval( dataApprovalLevel, dataSet, period, organisationUnit, combo, accepted, created, creator ) ); - } - } - } + approvals.add( new DataApproval( dataApprovalLevel, dataSet, period, organisationUnit, combo, accepted, created, creator ) ); return approvals; } - - private Set getCommonOptions( Set categoryOptionGroups ) - { - Iterator it = categoryOptionGroups.iterator(); - - Set options = it.next().getMembers(); - - while ( it.hasNext() ) - { - options.retainAll( it.next().getMembers() ); - } - - return options; - } } === removed file 'dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/dataapproval/action/GetCategoryOptionGroupsAction.java' --- dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/dataapproval/action/GetCategoryOptionGroupsAction.java 2014-08-15 07:40:20 +0000 +++ dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/dataapproval/action/GetCategoryOptionGroupsAction.java 1970-01-01 00:00:00 +0000 @@ -1,273 +0,0 @@ -package org.hisp.dhis.reporting.dataapproval.action; - -/* - * Copyright (c) 2004-2014, 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 java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.hisp.dhis.dataapproval.DataApprovalLevel; -import org.hisp.dhis.dataapproval.DataApprovalLevelService; -import org.hisp.dhis.dataelement.CategoryOptionGroup; -import org.hisp.dhis.dataelement.CategoryOptionGroupSet; -import org.hisp.dhis.dataelement.DataElementCategoryOption; -import org.hisp.dhis.dataelement.DataElementCategoryService; -import org.hisp.dhis.i18n.I18n; -import org.hisp.dhis.organisationunit.OrganisationUnit; -import org.hisp.dhis.organisationunit.OrganisationUnitService; -import org.hisp.dhis.period.Period; -import org.hisp.dhis.period.PeriodService; -import org.hisp.dhis.system.util.Filter; -import org.hisp.dhis.system.util.FilterUtils; -import org.springframework.beans.factory.annotation.Autowired; - -import com.opensymphony.xwork2.Action; - -public class GetCategoryOptionGroupsAction - implements Action -{ - @Autowired - private DataApprovalLevelService approvalLevelService; - - @Autowired - private OrganisationUnitService organisationUnitService; - - @Autowired - private PeriodService periodService; - - @Autowired - private DataElementCategoryService categoryService; - - private I18n i18n; - - public void setI18n( I18n i18n ) - { - this.i18n = i18n; - } - - // ------------------------------------------------------------------------- - // Input - // ------------------------------------------------------------------------- - - private String ou; - - public void setOu( String ou ) - { - this.ou = ou; - } - - private String pe; - - public void setPe( String pe ) - { - this.pe = pe; - } - - // ------------------------------------------------------------------------- - // Output - // ------------------------------------------------------------------------- - - private List categoryOptionGroups; - - public List getCategoryOptionGroups() - { - return categoryOptionGroups; - } - - // ------------------------------------------------------------------------- - // Action implementation - // ------------------------------------------------------------------------- - - /** - * Category option groups will be filtered by i) group sets which are available - * to the current user through approval levels and ii) the organisation unit - * level selected. - */ - @Override - public String execute() - throws Exception - { - if ( ou != null && pe != null ) - { - OrganisationUnit unit = organisationUnitService.getOrganisationUnit( ou ); - - Period period = periodService.getPeriod( pe ); - - int orgUnitLevel = organisationUnitService.getLevelOfOrganisationUnit( unit.getId() ); - - List approvalLevels = approvalLevelService.getUserDataApprovalLevels(); - - FilterUtils.filter( approvalLevels, new DataApprovalLevelOrgUnitLevelFilter( orgUnitLevel ) ); - - Set groupSets = getCategoryOptionGroupSets( approvalLevels ); - - categoryOptionGroups = new ArrayList<>( categoryService.getAllCategoryOptionGroups() ); - - FilterUtils.filter( categoryOptionGroups, new CategoryOptionGroupGroupSetFilter( groupSets ) ); - - FilterUtils.filter( categoryOptionGroups, new CategoryOptionPeriodOrganisationUnitFilter( period, unit ) ); - - addNoneGroupIfNoGroupSet( approvalLevels, categoryOptionGroups ); - } - - return SUCCESS; - } - - // ------------------------------------------------------------------------- - // Supportive methods - // ------------------------------------------------------------------------- - - /** - * Adds a category option group with name "none" if the given list of approval - * levels is not empty and contains at least one level without a category - * option group set associated with it. - */ - private void addNoneGroupIfNoGroupSet( List approvalLevels, List categoryOptionGroups ) - { - boolean hasGroupSet = false; - boolean hasNoGroupSet = false; - - for ( DataApprovalLevel level : approvalLevels ) - { - if ( level.hasCategoryOptionGroupSet() ) - { - hasGroupSet = true; - } - else - { - hasNoGroupSet = true; - } - } - - if ( hasGroupSet && hasNoGroupSet ) - { - CategoryOptionGroup cog = new CategoryOptionGroup( "[ " + i18n.getString( "none") + " ]" ); - categoryOptionGroups.add( 0, cog ); - } - } - - /** - * Returns the category option group sets associated with the given list of - * data approval levels. - * - * @param approvalLevels the collection of data approval levels. - * @return a set of category option group sets. - */ - private Set getCategoryOptionGroupSets( Collection approvalLevels ) - { - Set groupSets = new HashSet<>(); - - for ( DataApprovalLevel level : approvalLevels ) - { - if ( level != null && level.hasCategoryOptionGroupSet() ) - { - groupSets.add( level.getCategoryOptionGroupSet() ); - } - } - - return groupSets; - } - - /** - * Filter for org unit level on data approval levels. - */ - class DataApprovalLevelOrgUnitLevelFilter - implements Filter - { - private int orgUnitLevel; - - public DataApprovalLevelOrgUnitLevelFilter( int orgUnitLevel ) - { - this.orgUnitLevel = orgUnitLevel; - } - - @Override - public boolean retain( DataApprovalLevel level ) - { - return level != null && level.getOrgUnitLevel() == orgUnitLevel; - } - } - - /** - * Filter for group set on category option groups. - */ - class CategoryOptionGroupGroupSetFilter - implements Filter - { - private Set groupSets; - - public CategoryOptionGroupGroupSetFilter( Set groupSets ) - { - this.groupSets = groupSets; - } - - @Override - public boolean retain( CategoryOptionGroup group ) - { - return groupSets != null && groupSets.contains( group.getGroupSet() ); - } - } - - /** - * Filter for group set on period and organisation unit, based on whether - * any member option groups match the period and organisation unit. - */ - class CategoryOptionPeriodOrganisationUnitFilter - implements Filter - { - private Period period; - private OrganisationUnit organisationUnit; - - public CategoryOptionPeriodOrganisationUnitFilter( Period period, OrganisationUnit organisationUnit ) - { - this.period = period; - this.organisationUnit = organisationUnit; - } - - @Override - public boolean retain( CategoryOptionGroup group ) - { - for ( DataElementCategoryOption option : group.getMembers() ) - { - if ( ( option.getStartDate() == null || option.getStartDate().before( period.getEndDate() ) ) - && ( option.getEndDate() == null || option.getEndDate().after( period.getStartDate() ) ) ) - { - if ( option.getOrganisationUnits().isEmpty() || organisationUnit.isEqualOrChildOf( option.getOrganisationUnits() ) ) - { - return true; - } - } - } - - return false; - } - } -} === modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml 2014-08-27 18:04:29 +0000 +++ dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml 2014-10-23 20:45:00 +0000 @@ -117,10 +117,6 @@ scope="prototype"> - - - style/dhis-web-reporting.css - - /dhis-web-commons/ajax/jsonCategoryOptionGroups.vm - plainTextError - - === modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/dataApprovalForm.vm' --- dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/dataApprovalForm.vm 2014-06-24 16:36:24 +0000 +++ dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/dataApprovalForm.vm 2014-10-23 20:45:00 +0000 @@ -106,12 +106,6 @@ #parse( "/dhis-web-commons/ouwt/orgunittree.vm" ) - -
=== modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/javascript/dataApproval.js' --- dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/javascript/dataApproval.js 2014-08-06 04:06:04 +0000 +++ dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/javascript/dataApproval.js 2014-10-23 20:45:00 +0000 @@ -4,10 +4,6 @@ dhis2.appr.currentPeriodOffset = 0; dhis2.appr.permissions = null; -$( function() { - dhis2.appr.displayCategoryOptionGroups(); -} ); - //------------------------------------------------------------------------------ // Report //------------------------------------------------------------------------------ @@ -44,16 +40,10 @@ } } -dhis2.appr.orgUnitSelected = function( orgUnits, orgUnitNames, children ) -{ - dhis2.appr.displayCategoryOptionGroups(); -}; - dhis2.appr.displayPeriods = function() { var periodType = $( "#periodType" ).val(); dhis2.dsr.displayPeriodsInternal( periodType, dhis2.appr.currentPeriodOffset ); - dhis2.appr.displayCategoryOptionGroups(); }; dhis2.appr.displayNextPeriods = function() @@ -73,34 +63,6 @@ dhis2.appr.periodSelected = function() { - dhis2.appr.displayCategoryOptionGroups(); -}; - -dhis2.appr.displayCategoryOptionGroups = function() -{ - var ou = selection.getSelected()[0]; - var pe = $( "#periodId" ).val(); - - if ( !ou || !pe ) { - return; - } - - var url = "getCategoryOptionGroups.action"; - - $.getJSON( url, {ou:ou, pe:pe}, function( json ) { - if ( json.categoryOptionGroups && json.categoryOptionGroups.length > 1 ) { - var html = ""; - $.each( json.categoryOptionGroups, function( index, group ) { - html += ""; - } ); - - $( "#categoryOptionGroupSection" ).show(); - $( "#categoryOptionGroupId" ).html( html ); - } - else { - $( "#categoryOptionGroupSection" ).hide(); - } - } ); }; dhis2.appr.getDataReport = function() @@ -110,15 +72,7 @@ pe: $( "#periodId" ).val(), ou: selection.getSelected()[0] }; - - var cog = $( "#categoryOptionGroupId" ).val(); - var cogs = $( "#categoryOptionGroupId :selected" ).data( "dimension" ); - - if ( cog && cogs ) { - dataReport.dimension = cogs + ":" + cog; - dataReport.cog = cog; - } - + return dataReport; }; @@ -365,13 +319,13 @@ dhis2.appr.getApprovalUrl = function() { var data = dhis2.appr.getDataReport(); - var url = "../api/dataApprovals?ds=" + data.ds + "&pe=" + data.pe + "&ou=" + data.ou + "&cog=" + data.cog; + var url = "../api/dataApprovals?ds=" + data.ds + "&pe=" + data.pe + "&ou=" + data.ou; return url; }; dhis2.appr.getAcceptanceUrl = function() { var data = dhis2.appr.getDataReport(); - var url = "../api/dataApprovals/acceptances?ds=" + data.ds + "&pe=" + data.pe + "&ou=" + data.ou + "&cog=" + data.cog; + var url = "../api/dataApprovals/acceptances?ds=" + data.ds + "&pe=" + data.pe + "&ou=" + data.ou; return url; };