=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java 2012-06-23 11:05:13 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java 2012-06-24 13:42:21 +0000 @@ -86,11 +86,10 @@ List getProgramStageInstances( Patient patient, Boolean completed ); - Grid getTabularReport( ProgramStage programStage, List searchingKeys, - Collection organisationUnits, int level, Date startDate, Date endDate, boolean descOrder, Integer min, - Integer max ); + Grid getTabularReport( ProgramStage programStage, List searchKeys, Collection organisationUnits, + int level, Date startDate, Date endDate, boolean descOrder, Integer min, Integer max ); - int getTabularReportCount( ProgramStage programStage, List searchingKeys, + int getTabularReportCount( ProgramStage programStage, List searchKeys, Collection organisationUnits, int level, Date startDate, Date endDate ); List getProgramStageInstancesReport( ProgramInstance programInstance, I18nFormat format, I18n i18n ); === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java 2012-06-14 13:07:22 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java 2012-06-24 13:42:21 +0000 @@ -74,9 +74,9 @@ List get( ProgramStage programStage, OrganisationUnit orgunit, Date startDate, Date endDate, int min, int max ); Grid getTabularReport( ProgramStage programStage, Map orgUnitLevelMap, - Collection orgUnits, List searchingKeys, int level, int maxLevel, Date startDate, + Collection orgUnits, List searchKeys, int level, int maxLevel, Date startDate, Date endDate, boolean descOrder, Integer min, Integer max ); - int getTabularReportCount( ProgramStage programStage, List searchingKeys, + int getTabularReportCount( ProgramStage programStage, List searchKeys, Collection organisationUnits, int level, int maxLevel, Date startDate, Date endDate ); } === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java 2012-06-23 11:05:13 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java 2012-06-24 13:42:21 +0000 @@ -222,16 +222,18 @@ } public Grid getTabularReport( ProgramStage programStage, Map orgUnitLevelMap, - Collection orgUnits, List searchingKeys, int level, int maxLevel, Date startDate, + Collection orgUnits, List searchKeys, int level, int maxLevel, Date startDate, Date endDate, boolean descOrder, Integer min, Integer max ) { + // --------------------------------------------------------------------- + // Headers TODO hidden cols + // --------------------------------------------------------------------- + Grid grid = new ListGrid(); grid.addHeader( new GridHeader( "id", true, true ) ); grid.addHeader( new GridHeader( "Report date", false, true ) ); - // TODO hidden cols - for ( int i = 0; i < maxLevel; i++ ) { int l = i + 1; @@ -240,21 +242,21 @@ grid.addHeader( new GridHeader( name, false, true ) ); } - for ( String searchingKey : searchingKeys ) + for ( String searchKey : searchKeys ) { - String[] infor = searchingKey.split( "_" ); - String objectType = infor[0]; + String[] values = searchKey.split( "_" ); + String objectType = values[0]; - boolean hidden = Boolean.parseBoolean( infor[2] ); + boolean hidden = Boolean.parseBoolean( values[2] ); String name = ""; if ( objectType.equals( PREFIX_FIXED_ATTRIBUTE ) ) { - name = infor[1]; + name = values[1]; } else { - int objectId = Integer.parseInt( infor[1] ); + int objectId = Integer.parseInt( values[1] ); if ( objectType.equals( PREFIX_IDENTIFIER_TYPE ) ) { @@ -273,7 +275,11 @@ grid.addHeader( new GridHeader( name, hidden, true ) ); } - String sql = getTabularReportSql( false, programStage, searchingKeys, orgUnits, level, maxLevel, startDate, + // --------------------------------------------------------------------- + // Get SQL and build grid + // --------------------------------------------------------------------- + + String sql = getTabularReportSql( false, programStage, searchKeys, orgUnits, level, maxLevel, startDate, endDate, descOrder, min, max ); SqlRowSet rowSet = jdbcTemplate.queryForRowSet( sql ); @@ -283,10 +289,10 @@ return grid; } - public int getTabularReportCount( ProgramStage programStage, List searchingKeys, + public int getTabularReportCount( ProgramStage programStage, List searchKeys, Collection organisationUnits, int level, int maxLevel, Date startDate, Date endDate ) { - String sql = getTabularReportSql( true, programStage, searchingKeys, organisationUnits, level, maxLevel, + String sql = getTabularReportSql( true, programStage, searchKeys, organisationUnits, level, maxLevel, startDate, endDate, false, null, null ); return jdbcTemplate.queryForInt( sql ); @@ -296,7 +302,10 @@ // Supportive methods // ------------------------------------------------------------------------- - private String getTabularReportSql( boolean count, ProgramStage programStage, List searchingKeys, + /** + * Search values on format type_id/name_hidden_='query' + */ + private String getTabularReportSql( boolean count, ProgramStage programStage, List searchKeys, Collection orgUnits, int level, int maxLevel, Date startDate, Date endDate, boolean descOrder, Integer min, Integer max ) { @@ -309,42 +318,36 @@ for ( int i = 0; i < maxLevel; i++ ) { int l = i + 1; - sql += "(select name from organisationunit where organisationunitid=ous.idlevel" + l + ") as level_" + i - + ","; + sql += "(select name from organisationunit where organisationunitid=ous.idlevel" + l + ") as level_" + i + ","; } - for ( String searchingKey : searchingKeys ) + for ( String searchKey : searchKeys ) { - String[] infor = searchingKey.split( "_" ); - String objectType = infor[0]; + String[] values = searchKey.split( "_" ); + String objectType = values[0]; if ( objectType.equals( PREFIX_FIXED_ATTRIBUTE ) ) { - sql += "p." + infor[1] + ","; + sql += "p." + values[1] + ","; - if ( infor.length == 4 ) + if ( values.length == 4 ) { - String value = lower( infor[3] ); - where += operator + "lower(" + infor[1] + ") " + value + " "; - + where += operator + "lower(" + values[1] + ") " + lower( values[3] ) + " "; operator = "and "; } } else { - int objectId = Integer.parseInt( infor[1] ); - String value = ""; + int objectId = Integer.parseInt( values[1] ); if ( objectType.equals( PREFIX_IDENTIFIER_TYPE ) ) { sql += "(select identifier from patientidentifier where patientid=p.patientid and patientidentifiertypeid=" + objectId + ") as identifier_" + objectId + ","; - if ( infor.length == 4 ) + if ( values.length == 4 ) { - value = lower( infor[3] ); - where += operator + "lower(identifier_" + objectId + ") " + value + " "; - + where += operator + "lower(identifier_" + objectId + ") " + lower( values[3] ) + " "; operator = "and "; } } @@ -352,10 +355,10 @@ { sql += "(select value from patientattributevalue where patientid=p.patientid and patientattributeid=" + objectId + ") as attribute_" + objectId + ","; - if ( infor.length == 4 ) + + if ( values.length == 4 ) { - value = lower( infor[3] ); - where += operator + "lower(attribute_" + objectId + ") " + value + " "; + where += operator + "lower(attribute_" + objectId + ") " + lower( values[3] ) + " "; operator = "and "; } } @@ -364,10 +367,9 @@ sql += "(select value from patientdatavalue where programstageinstanceid=psi.programstageinstanceid and dataelementid=" + objectId + ") as element_" + objectId + ","; - if ( infor.length == 4 ) + if ( values.length == 4 ) { - value = lower( infor[3] ); - where += operator + "lower(element_" + objectId + ") " + value + " "; + where += operator + "lower(element_" + objectId + ") " + lower( values[3] ) + " "; operator = "and "; } } @@ -407,16 +409,13 @@ sql += "psi.executiondate "; sql += descOrder ? "desc " : ""; - sql += (min != null && max != null) ? statementBuilder.limitRecord( min, max ) : ""; // TODO - // page - // size - sql += ") as tabular "; + sql += (min != null && max != null) ? statementBuilder.limitRecord( min, max ) : ""; + sql += ") as tabular ";// TODO page size // filters sql += where; sql = sql.substring( 0, sql.length() - 1 ) + " "; // Remove last comma - // if exists log.info( sql ); === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateTabularReportAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateTabularReportAction.java 2012-06-20 06:32:51 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateTabularReportAction.java 2012-06-24 13:42:21 +0000 @@ -276,8 +276,7 @@ if ( selectedOrgunit.getParent() == null ) { - organisationUnits = null; // Ignore org unit criteria when - // root + organisationUnits = null; // Ignore unit criteria when root } else { @@ -315,12 +314,12 @@ grid = programStageInstanceService.getTabularReport( programStage, searchingValues, organisationUnits, level, startValue, endValue, !orderByOrgunitAsc, paging.getStartPos(), paging.getPageSize() ); } - else - // Download as Excel + else // Download as Excel { grid = programStageInstanceService.getTabularReport( programStage, searchingValues, organisationUnits, level, startValue, endValue, !orderByOrgunitAsc, null, null ); } + System.out.println(); System.out.println( grid ); @@ -340,31 +339,32 @@ private void getParams() { int index = 0; - for ( String searchingValue : searchingValues ) + + for ( String searchValue : searchingValues ) { - String[] infor = searchingValue.split( "_" ); - String objectType = infor[0]; + String[] values = searchValue.split( "_" ); + String prefix = values[0]; - if ( objectType.equals( PREFIX_PATIENT_ATTRIBUTE ) ) + if ( prefix.equals( PREFIX_PATIENT_ATTRIBUTE ) ) { - int objectId = Integer.parseInt( infor[1] ); + int objectId = Integer.parseInt( values[1] ); PatientAttribute attribute = patientAttributeService.getPatientAttribute( objectId ); patientAttributes.add( attribute ); valueTypes.add( attribute.getValueType() ); mapSuggestedValues.put( index, getSuggestedAttributeValues( attribute ) ); } - else if ( objectType.equals( PREFIX_DATA_ELEMENT ) ) + else if ( prefix.equals( PREFIX_DATA_ELEMENT ) ) { - int objectId = Integer.parseInt( infor[1] ); + int objectId = Integer.parseInt( values[1] ); DataElement dataElement = dataElementService.getDataElement( objectId ); dataElements.add( dataElement ); - // Get value-type && suggested-values - String valueType = (dataElement.getOptionSet() != null) ? VALUE_TYPE_OPTION_SET : dataElement.getType(); + String valueType = dataElement.getOptionSet() != null ? VALUE_TYPE_OPTION_SET : dataElement.getType(); valueTypes.add( valueType ); mapSuggestedValues.put( index, getSuggestedDataElementValues( dataElement ) ); } + index++; } }