=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelOganiztionGroupListing.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelOganiztionGroupListing.java 2009-11-19 18:58:23 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/reportexcel/ReportExcelOganiztionGroupListing.java 2009-12-18 09:27:51 +0000 @@ -28,11 +28,13 @@ package org.hisp.dhis.reportexcel; import java.util.List; +import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.hisp.dhis.organisationunit.OrganisationUnitGroup; +import org.hisp.dhis.organisationunit.OrganisationUnitLevel; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -48,6 +50,8 @@ public static final String ID = "id"; private List organisationUnitGroups; + + private Map organisationUnitLevels; // ------------------------------------------------------------------------- // Constructors @@ -61,13 +65,24 @@ // ------------------------------------------------------------------------- // Getters and setters // ------------------------------------------------------------------------- + + public List getOrganisationUnitGroups() { return organisationUnitGroups; } - public void setOrganisationUnitGroups( List organisationUnitGroups ) + public Map getOrganisationUnitLevels() { + return organisationUnitLevels; + } + + public void setOrganisationUnitLevels( + Map organisationUnitLevels) { + this.organisationUnitLevels = organisationUnitLevels; + } + + public void setOrganisationUnitGroups( List organisationUnitGroups ) { this.organisationUnitGroups = organisationUnitGroups; } === modified file 'dhis-2/dhis-services/dhis-service-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/hibernate/ReportExcel.hbm.xml' --- dhis-2/dhis-services/dhis-service-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/hibernate/ReportExcel.hbm.xml 2009-12-14 08:26:13 +0000 +++ dhis-2/dhis-services/dhis-service-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/hibernate/ReportExcel.hbm.xml 2009-12-18 09:27:51 +0000 @@ -53,8 +53,13 @@ + foreign-key="fk_reportexcel_organisationgroup"/> + + + + + === modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/action/GenerateReportOrganizationGroupListingAction.java' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/action/GenerateReportOrganizationGroupListingAction.java 2009-12-09 05:55:32 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/export/action/GenerateReportOrganizationGroupListingAction.java 2009-12-18 09:27:51 +0000 @@ -29,11 +29,15 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitGroup; +import org.hisp.dhis.organisationunit.OrganisationUnitLevel; +import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.organisationunit.comparator.OrganisationUnitNameComparator; import org.hisp.dhis.period.Period; import org.hisp.dhis.reportexcel.ReportExcelItem; @@ -50,6 +54,17 @@ extends GenerateReportSupport { + // ------------------------------------------- + // Dependency + // ------------------------------------------- + + private OrganisationUnitService organisationUnitService; + + public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) + { + this.organisationUnitService = organisationUnitService; + } + @Override public String execute() throws Exception @@ -63,6 +78,9 @@ ReportExcelOganiztionGroupListing reportExcel = (ReportExcelOganiztionGroupListing) reportService .getReportExcel( selectionManager.getSelectedReportId() ); + Map orgUniGroupAtLevels = new HashMap( + reportExcel.getOrganisationUnitLevels() ); + this.installReadTemplateFile( reportExcel, period, organisationUnit ); for ( Integer sheetNo : reportService.getSheets( selectionManager.getSelectedReportId() ) ) @@ -71,10 +89,12 @@ Collection reportExcelItems = reportExcel.getReportItemBySheet( sheetNo ); - this.generateOutPutFile( reportExcel, reportExcelItems, organisationUnit, sheet ); + this.generateOutPutFile( reportExcel, orgUniGroupAtLevels, reportExcelItems, organisationUnit, sheet ); } + + this.complete(); statementManager.destroy(); @@ -83,8 +103,10 @@ } private void generateOutPutFile( ReportExcelOganiztionGroupListing reportExcel, + Map orgUniGroupAtLevels, Collection reportExcelItems, OrganisationUnit organisationUnit, HSSFSheet sheet ) { + for ( ReportExcelItem reportItem : reportExcelItems ) { int rowBegin = reportItem.getRow(); @@ -92,13 +114,31 @@ for ( OrganisationUnitGroup organisationUnitGroup : reportExcel.getOrganisationUnitGroups() ) { + + OrganisationUnitLevel organisationUnitLevel = orgUniGroupAtLevels.get( organisationUnitGroup ); + + List organisationUnitsAtLevel = new ArrayList(); + + List childrenOrganisationUnits = new ArrayList( organisationUnit .getChildren() ); List organisationUnits = new ArrayList( organisationUnitGroup .getMembers() ); - organisationUnits.retainAll( childrenOrganisationUnits ); + + + if ( organisationUnitLevel != null ) + { + organisationUnitsAtLevel = new ArrayList(organisationUnitService.getOrganisationUnitsAtLevel( organisationUnitLevel.getLevel(), organisationUnit )); + + organisationUnits.retainAll( organisationUnitsAtLevel ); + + }else{ + + organisationUnits.retainAll( childrenOrganisationUnits ); + } + Collections.sort( organisationUnits, new OrganisationUnitNameComparator() ); @@ -108,13 +148,13 @@ && (!organisationUnits.isEmpty()) ) { ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), String.valueOf( organisationUnitGroup - .getName() ), ExcelUtils.TEXT, sheet, this.csText12BoldCenter); + .getName() ), ExcelUtils.TEXT, sheet, this.csText12BoldCenter ); } else if ( reportItem.getItemType().equalsIgnoreCase( ReportExcelItem.TYPE.SERIAL ) && (!organisationUnits.isEmpty()) ) { ExcelUtils.writeValueByPOI( rowBegin, reportItem.getColumn(), chappter[chapperNo], ExcelUtils.TEXT, - sheet, this.csText12BoldCenter); + sheet, this.csText12BoldCenter ); } chapperNo++; rowBegin++; === modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml 2009-12-11 04:27:39 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/META-INF/dhis/beans.xml 2009-12-18 09:27:51 +0000 @@ -124,7 +124,8 @@ - + - + + + + + + + + + + + + @@ -377,7 +399,7 @@ + ref="org.hisp.dhis.reportexcel.period.db.PeriodDatabaseService" /> + ref="org.hisp.dhis.reportexcel.preview.manager.InitializePOIStylesManager" /> + - + + ref="org.hisp.dhis.reportexcel.preview.manager.InitializePOIStylesManager" /> - + + ref="org.hisp.dhis.reportexcel.preview.manager.InitializePOIStylesManager" /> - - + + + ref="org.hisp.dhis.reportexcel.preview.manager.InitializePOIStylesManager" /> @@ -631,8 +655,7 @@ - + @@ -683,7 +706,7 @@ + ref="org.hisp.dhis.reportexcel.preview.manager.InitializePOIStylesManager" /> + ref="org.hisp.dhis.reportexcel.preview.manager.InitializePOIStylesManager" /> + ref="org.hisp.dhis.reportexcel.preview.manager.InitializePOIStylesManager" /> + ref="org.hisp.dhis.reportexcel.preview.manager.InitializePOIStylesManager" /> @@ -806,7 +829,7 @@ + ref="org.hisp.dhis.reportexcel.preview.manager.InitializePOIStylesManager" /> === modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module.properties 2009-12-17 02:15:50 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/org/hisp/dhis/reportexcel/i18n_module.properties 2009-12-18 09:27:51 +0000 @@ -177,4 +177,6 @@ list_of_excel_items = List of excel items selected_dataelements = Selected Data Elements available_dataelements = Available Data Elements -value_rounded = This value maybe have been rounded \ No newline at end of file +value_rounded = This value maybe have been rounded +level_and_orgunit_group = Level and Organisation Unit Group +levels = Level \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml 2009-12-16 03:37:57 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/resources/struts.xml 2009-12-18 09:27:51 +0000 @@ -265,6 +265,18 @@ listReportExcel.action + + + /main.vm + /dhis-web-excel-reporting/organisationUnitAtLevels.vm + /dhis-web-excel-reporting/menu.vm + + + + /dhis-web-excel-reporting/responseSuccess.vm + === modified file 'dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reports.vm' --- dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reports.vm 2009-11-13 10:28:52 +0000 +++ dhis-2/dhis-web/dhis-web-excel-reporting/src/main/webapp/dhis-web-excel-reporting/reports.vm 2009-12-18 09:27:51 +0000 @@ -22,7 +22,7 @@ $i18n.getString('name') $i18n.getString('report_type') $i18n.getString('excel_template') - $i18n.getString('operations') + $i18n.getString('operations') #set( $mark = false ) @@ -41,10 +41,10 @@ --> #if($report.isOrganisationUnitGroupListing()) + $i18n.getString( 'set_organisationunit_group_level' ) #end #if($report.isCategory()) - - + #end #if($report.isPeriodColumnListing())