=== modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/action/ExportAnnualDataToExcelAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/action/ExportAnnualDataToExcelAction.java 2010-12-29 07:47:36 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/action/ExportAnnualDataToExcelAction.java 2011-04-15 11:34:10 +0000 @@ -63,10 +63,11 @@ /** * @author Mithilesh Kumar Thakur - * + * * @version ExportAnnualDataToExcelAction.java Dec 24, 2010 5:10:42 PM */ -public class ExportAnnualDataToExcelAction implements Action +public class ExportAnnualDataToExcelAction + implements Action { private ConfigurationService configurationService; @@ -75,39 +76,39 @@ { this.configurationService = configurationService; } - + private IndicatorService indicatorService; public void setIndicatorService( IndicatorService indicatorService ) { this.indicatorService = indicatorService; } + private ExpressionService expressionService; public void setExpressionService( ExpressionService expressionService ) { this.expressionService = expressionService; } - + // ------------------------------------------------------------------------- // Input & output // ------------------------------------------------------------------------- - + double[][] data1; double[][] numDataArray; - + double[][] denumDataArray; String[] series1; - // String[] denumDataArray; + // String[] denumDataArray; String[] categories1; - // String[] categories2; + // String[] categories2; - private InputStream inputStream; public InputStream getInputStream() @@ -116,13 +117,10 @@ } /* - private String contentType; - - public String getContentType() - { - return contentType; - } - */ + * private String contentType; + * + * public String getContentType() { return contentType; } + */ private String fileName; @@ -132,35 +130,32 @@ } /* - private int bufferSize; - - public int getBufferSize() - { - return bufferSize; - } - */ + * private int bufferSize; + * + * public int getBufferSize() { return bufferSize; } + */ private String viewSummary; - + public void setViewSummary( String viewSummary ) { this.viewSummary = viewSummary; } - + private String chartDisplayOption; public void setChartDisplayOption( String chartDisplayOption ) { this.chartDisplayOption = chartDisplayOption; } - + private String radioButtonValue; - + public void setRadioButtonValue( String radioButtonValue ) { this.radioButtonValue = radioButtonValue; } - + private Integer selctedIndicatorId; public void setSelctedIndicatorId( Integer selctedIndicatorId ) @@ -168,19 +163,19 @@ this.selctedIndicatorId = selctedIndicatorId; } - //private Indicator selectedIndicator; + // private Indicator selectedIndicator; // ------------------------------------------------------------------------- // Action implementation // ------------------------------------------------------------------------- public String execute() throws Exception - { + { int tempCol1 = 0; int tempRow1 = 1; - // int tempCol2 = 0; - - if( radioButtonValue.equals( "indicator" ) ) + // int tempCol2 = 0; + + if ( radioButtonValue.equals( "indicator" ) ) { System.out.println( "indicator" ); } @@ -188,538 +183,464 @@ { System.out.println( "dataelement" ); } - // System.out.println("Complete path is :" + radioButtonValue.equals( "indicator" ) ); - + // System.out.println("Complete path is :" + radioButtonValue.equals( + // "indicator" ) ); + ActionContext ctx = ActionContext.getContext(); - HttpServletRequest req = (HttpServletRequest) ctx.get( ServletActionContext.HTTP_REQUEST ); + HttpServletRequest req = (HttpServletRequest) ctx.get( ServletActionContext.HTTP_REQUEST ); HttpSession session = req.getSession(); - BufferedImage chartImage = (BufferedImage) session.getAttribute("chartImage"); - PngEncoder encoder = new PngEncoder(chartImage, false, 0, 9); - + BufferedImage chartImage = (BufferedImage) session.getAttribute( "chartImage" ); + PngEncoder encoder = new PngEncoder( chartImage, false, 0, 9 ); + byte[] encoderBytes = encoder.pngEncode(); Double[][] objData1 = (Double[][]) session.getAttribute( "data1" ); - + Double[][] objnumData1 = (Double[][]) session.getAttribute( "numServiceValues" ); Double[][] objdenumData1 = (Double[][]) session.getAttribute( "denumServiceValues" ); - //Double[][] objData2 = (Double[][]) session.getAttribute( "data2" ); - + // Double[][] objData2 = (Double[][]) session.getAttribute( "data2" ); + String[] series1S = (String[]) session.getAttribute( "series1" ); - //String[] series2S = (String[]) session.getAttribute( "series2" ); + // String[] series2S = (String[]) session.getAttribute( "series2" ); String[] categories1S = (String[]) session.getAttribute( "categories1" ); - // String[] categories2S = (String[]) session.getAttribute( "categories2" ); - - - // initialzeAllLists(series1S, series2S, categories1S, categories2S); - initialzeAllLists(series1S, categories1S ); - - //if(objData1 == null || objData2 == null || series1 == null || series2 == null || categories1 == null || categories2 == null ) - if( objData1 == null || series1 == null || categories1 == null || objnumData1 == null || objdenumData1 == null ) - System.out.println("Session Objects are null"); + // String[] categories2S = (String[]) session.getAttribute( + // "categories2" ); + + // initialzeAllLists(series1S, series2S, categories1S, categories2S); + initialzeAllLists( series1S, categories1S ); + + // if(objData1 == null || objData2 == null || series1 == null || series2 + // == null || categories1 == null || categories2 == null ) + if ( objData1 == null || series1 == null || categories1 == null || objnumData1 == null || objdenumData1 == null ) + System.out.println( "Session Objects are null" ); else - System.out.println("Session Objects are not null"); - + System.out.println( "Session Objects are not null" ); + data1 = convertDoubleTodouble( objData1 ); - + numDataArray = convertDoubleTodouble( objnumData1 ); denumDataArray = convertDoubleTodouble( objdenumData1 ); - - //System.out.println(" Selected Indicator Id is : " + selctedIndicatorId + " ,selected Indicator :" + selectedIndicator ); - - //selectedIndicator = new Indicator(); - //selectedIndicator = indicatorService.getIndicator( selctedIndicatorId ); - //String IndicatorName = selectedIndicator.getName(); - - // System.out.println(" Selected Indicator Id is : " + selctedIndicatorId + " ,selected Indicator :" + selectedIndicator ); - - // data2 = convertDoubleTodouble( objData2 ); - - if(chartDisplayOption == null || chartDisplayOption.equalsIgnoreCase("none")) { } - //else if(chartDisplayOption.equalsIgnoreCase("ascend")) { sortByAscending(); } - // else if(chartDisplayOption.equalsIgnoreCase("desend")) { sortByDesscending(); } - // else if(chartDisplayOption.equalsIgnoreCase("alphabet")) { sortByAlphabet(); } - - //File outputReportFile = locationManager.getFileForWriting( UUID.randomUUID().toString() + ".xls", "db", "output" ); - - - // String outputReportFile = System.getProperty( "user.home" ) + File.separator + "dhis" + File.separator + configurationService.getConfigurationByKey( Configuration_IN.KEY_REPORTFOLDER ).getValue() - // + File.separator + "output" + File.separator + UUID.randomUUID().toString() + ".xls"; - String outputReportFile = System.getenv( "DHIS2_HOME" ) + File.separator + configurationService.getConfigurationByKey( Configuration_IN.KEY_REPORTFOLDER ).getValue() - + File.separator + "output" + File.separator + UUID.randomUUID().toString() + ".xls"; - - // System.out.println("Env Variable is :" + System.getenv( "DHIS2_HOME" ) ); - // System.out.println("Complete path is :" + outputReportFile ); - - WritableWorkbook outputReportWorkbook = Workbook.createWorkbook( new File(outputReportFile) ); + + // System.out.println(" Selected Indicator Id is : " + + // selctedIndicatorId + " ,selected Indicator :" + selectedIndicator ); + + // selectedIndicator = new Indicator(); + // selectedIndicator = indicatorService.getIndicator( selctedIndicatorId + // ); + // String IndicatorName = selectedIndicator.getName(); + + // System.out.println(" Selected Indicator Id is : " + + // selctedIndicatorId + " ,selected Indicator :" + selectedIndicator ); + + // data2 = convertDoubleTodouble( objData2 ); + + if ( chartDisplayOption == null || chartDisplayOption.equalsIgnoreCase( "none" ) ) + { + } + // else if(chartDisplayOption.equalsIgnoreCase("ascend")) { + // sortByAscending(); } + // else if(chartDisplayOption.equalsIgnoreCase("desend")) { + // sortByDesscending(); } + // else if(chartDisplayOption.equalsIgnoreCase("alphabet")) { + // sortByAlphabet(); } + + // File outputReportFile = locationManager.getFileForWriting( + // UUID.randomUUID().toString() + ".xls", "db", "output" ); + + // String outputReportFile = System.getProperty( "user.home" ) + + // File.separator + "dhis" + File.separator + + // configurationService.getConfigurationByKey( + // Configuration_IN.KEY_REPORTFOLDER ).getValue() + // + File.separator + "output" + File.separator + + // UUID.randomUUID().toString() + ".xls"; + String outputReportFile = System.getenv( "DHIS2_HOME" ) + File.separator + + configurationService.getConfigurationByKey( Configuration_IN.KEY_REPORTFOLDER ).getValue() + + File.separator + "output" + File.separator + UUID.randomUUID().toString() + ".xls"; + + // System.out.println("Env Variable is :" + System.getenv( "DHIS2_HOME" + // ) ); + // System.out.println("Complete path is :" + outputReportFile ); + + WritableWorkbook outputReportWorkbook = Workbook.createWorkbook( new File( outputReportFile ) ); WritableSheet sheet0 = outputReportWorkbook.createSheet( "ChartOutput", 0 ); - - if( viewSummary.equals( "no" )) + + if ( viewSummary.equals( "no" ) ) { - WritableImage writableImage = new WritableImage(0,1,10,23,encoderBytes); + WritableImage writableImage = new WritableImage( 0, 1, 10, 23, encoderBytes ); sheet0.addImage( writableImage ); tempRow1 = 24; - } - else - { - // tempRow1 -= objData1.length; + } + else + { + // tempRow1 -= objData1.length; tempRow1 = 0; - } + } tempCol1 = 0; - //tempCol2 = 0; + // tempCol2 = 0; tempRow1++; - - - WritableCellFormat wCellformat1 = new WritableCellFormat(); + + WritableCellFormat wCellformat1 = new WritableCellFormat(); wCellformat1.setBorder( Border.ALL, BorderLineStyle.THIN ); wCellformat1.setAlignment( Alignment.CENTRE ); wCellformat1.setVerticalAlignment( VerticalAlignment.CENTRE ); wCellformat1.setWrap( true ); - - WritableCellFormat wCellformat2 = new WritableCellFormat(); + + WritableCellFormat wCellformat2 = new WritableCellFormat(); wCellformat2.setBorder( Border.ALL, BorderLineStyle.THIN ); wCellformat2.setAlignment( Alignment.CENTRE ); - wCellformat2.setVerticalAlignment( VerticalAlignment.TOP); - wCellformat2.setBackground( Colour.GRAY_25 ); + wCellformat2.setVerticalAlignment( VerticalAlignment.TOP ); + wCellformat2.setBackground( Colour.GRAY_25 ); wCellformat2.setWrap( true ); - + /* - WritableCellFormat wCellformat3 = new WritableCellFormat(); - wCellformat3.setBorder( Border.ALL, BorderLineStyle.THIN ); - wCellformat3.setAlignment( Alignment.CENTRE ); - wCellformat3.setVerticalAlignment( VerticalAlignment.CENTRE ); - wCellformat3.setBackground( Colour.BLACK ); - wCellformat3.setWrap( true ); - // wCellformat3.setFont( WritableFont.BOLD ); - //wCellformat3.WritableFont(); - */ - + * WritableCellFormat wCellformat3 = new WritableCellFormat(); + * wCellformat3.setBorder( Border.ALL, BorderLineStyle.THIN ); + * wCellformat3.setAlignment( Alignment.CENTRE ); + * wCellformat3.setVerticalAlignment( VerticalAlignment.CENTRE ); + * wCellformat3.setBackground( Colour.BLACK ); wCellformat3.setWrap( + * true ); // wCellformat3.setFont( WritableFont.BOLD ); + * //wCellformat3.WritableFont(); + */ + WritableFont wfobj2 = new WritableFont( WritableFont.ARIAL, 10, WritableFont.BOLD ); WritableCellFormat wcf = new WritableCellFormat( wfobj2 ); wcf.setBorder( Border.ALL, BorderLineStyle.THIN ); wcf.setAlignment( Alignment.CENTRE ); - //wcf.setShrinkToFit(true); + // wcf.setShrinkToFit(true); wcf.setVerticalAlignment( VerticalAlignment.CENTRE ); wcf.setWrap( true ); - - if( radioButtonValue.equals( "indicator" ) ) + + if ( radioButtonValue.equals( "indicator" ) ) { System.out.println( "in excel indicator" ); - - sheet0.addCell( new Label( tempCol1, tempRow1, "Years", wCellformat2) ); - sheet0.addCell( new Label( tempCol1+1, tempRow1, "", wCellformat2) ); - + + sheet0.addCell( new Label( tempCol1, tempRow1, "Years", wCellformat2 ) ); + sheet0.addCell( new Label( tempCol1 + 1, tempRow1, "", wCellformat2 ) ); + tempCol1++; - - //for time display - for(int i=0; i< categories1.length; i++) - { - sheet0.addCell( new Label( tempCol1+1, tempRow1, categories1[i], wCellformat2) ); + + // for time display + for ( int i = 0; i < categories1.length; i++ ) + { + sheet0.addCell( new Label( tempCol1 + 1, tempRow1, categories1[i], wCellformat2 ) ); tempCol1++; } - - tempRow1 = tempRow1+1; - + + tempRow1 = tempRow1 + 1; + int tempRowValue = 0; - for( int j=0; j< series1.length; j++ ) + for ( int j = 0; j < series1.length; j++ ) { tempCol1 = 0; - sheet0.mergeCells( tempCol1 , tempRow1, tempCol1, tempRow1+2 ); - sheet0.addCell( new Label( tempCol1, tempRow1, series1[j], wCellformat2) ); - + sheet0.mergeCells( tempCol1, tempRow1, tempCol1, tempRow1 + 2 ); + sheet0.addCell( new Label( tempCol1, tempRow1, series1[j], wCellformat2 ) ); + int tempNumCol = 1; - - sheet0.addCell( new Label( tempNumCol, tempRow1, "Num", wCellformat2) ); - tempNumCol = tempNumCol+1; - for( int k=0;k categories1.length) && (categories1.length - count1 <= 10)) - { - count1 += categories1.length - count1; - flag1 = 1; - } - else - count1 += 10; - } -*/ + + } + + /* + * sheet0.addCell( new Label( tempCol1, tempRow1, "Indicators", + * wCellformat2) ); sheet0.addCell( new Label( tempCol1+1, tempRow1, "", + * wCellformat2) ); + * + * // System.out.println(tempCol1); tempCol1++; + * + * //System.out.println(tempCol1); for(int i=0; i< categories1.length; + * i++) { sheet0.addCell( new Label( tempCol1+1, tempRow1, + * categories1[i], wCellformat2) ); tempCol1++; } + * + * tempRow1 = tempRow1+1; for(int j=0; j< series1.length; j++) { + * tempCol1 = 0; sheet0.mergeCells( tempCol1 , tempRow1, tempCol1, + * tempRow1+2 ); sheet0.addCell( new Label( tempCol1, tempRow1, + * series1[j], wCellformat2) ); + * + * int tempNumCol = 1; + * + * sheet0.addCell( new Label( tempNumCol, tempRow1, "Num", wCellformat2) + * ); tempNumCol = tempNumCol+1; for( int k=0;k categories1.length) && + * (categories1.length - count1 <= 10)) { count1 += categories1.length - + * count1; flag1 = 1; } else count1 += 10; } + */ outputReportWorkbook.write(); outputReportWorkbook.close(); fileName = "Chart Output.xls"; - + inputStream = new BufferedInputStream( new FileInputStream( outputReportFile ) ); - return SUCCESS; } - - -// public void initialzeAllLists(String[]series1S, String[] series2S, String[] categories1S, String[] categories2S) - public void initialzeAllLists(String[]series1S, String[] categories1S) + + // public void initialzeAllLists(String[]series1S, String[] series2S, + // String[] categories1S, String[] categories2S) + public void initialzeAllLists( String[] series1S, String[] categories1S ) { int i; series1 = new String[series1S.length]; - // series2 = new String[series2S.length]; + // series2 = new String[series2S.length]; categories1 = new String[categories1S.length]; - // categories2 = new String[categories2S.length]; - - for(i = 0; i < series1S.length; i++) - { - series1[i] = series1S[i]; - } - - for(i = 0; i < categories1S.length; i++) - { - categories1[i] = categories1S[i]; - } - + // categories2 = new String[categories2S.length]; + + for ( i = 0; i < series1S.length; i++ ) + { + series1[i] = series1S[i]; + } + + for ( i = 0; i < categories1S.length; i++ ) + { + categories1[i] = categories1S[i]; + } + } - + public double[][] convertDoubleTodouble( Double[][] objData ) { - //System.out.println("Before Sorting : "); + // System.out.println("Before Sorting : "); double[][] data = new double[objData.length][objData[0].length]; for ( int i = 0; i < objData.length; i++ ) { for ( int j = 0; j < objData[0].length; j++ ) { data[i][j] = objData[i][j].doubleValue(); - //System.out.print(categories1[j]+": "+data[i][j]+", "); + // System.out.print(categories1[j]+": "+data[i][j]+", "); } - //System.out.println(""); + // System.out.println(""); } return data; }// convertDoubleTodouble end - -}// class end +}// class end === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateDataStatusResultAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateDataStatusResultAction.java 2010-12-08 07:24:10 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateDataStatusResultAction.java 2011-04-15 11:34:10 +0000 @@ -100,7 +100,7 @@ } @SuppressWarnings("unused") - private Comparator orgUnitComparator; + private Comparator orgUnitComparator; public void setOrgUnitComparator( Comparator orgUnitComparator ) { @@ -117,6 +117,13 @@ return ouMapDataStatusResult; } + private Map> ouMapDataElementCount; + + public Map> getOuMapDataElementCount() + { + return ouMapDataElementCount; + } + private Collection periodList; public Collection getPeriodList() @@ -151,6 +158,8 @@ { return dataStatusResult; } + + private Map> dataSetPeriods; @@ -179,7 +188,7 @@ { return maxOULevel; } - + // --------------------------------------------------------------- // Input Parameters // --------------------------------------------------------------- @@ -316,6 +325,21 @@ int orgUnitCount; private String dataViewName; + + private int dataSetMemberCount1; + + public int getDataSetMemberCount1() + { + return dataSetMemberCount1; + } + + + private Integer dataElementCount; + + public Integer getDataElementCount() + { + return dataElementCount; + } // --------------------------------------------------------------- // Action Implementation @@ -327,7 +351,10 @@ System.out.println("Inside Normal DtaaStatus Reult Action"); orgUnitCount = 0; dataViewName = ""; - + + ouMapDataElementCount = new HashMap>();//Map for DataElement count + + // Intialization periodNameList = new ArrayList(); ouMapDataStatusResult = new HashMap>(); @@ -456,12 +483,14 @@ Collection dataElements = new ArrayList(); dataElements = selDataSet.getDataElements(); - int dataSetMemberCount1 = 0; + dataSetMemberCount1 = 0; for ( DataElement de1 : dataElements ) { dataSetMemberCount1 += de1.getCategoryCombo().getOptionCombos().size(); } - + + //System.out.println( "DataSet Member Count :" + dataSetMemberCount1 ); + deInfo = getDEInfo( dataElements ); Iterator orgUnitListIterator = orgUnitList.iterator(); @@ -486,16 +515,19 @@ Period p; double dataStatusPercentatge; + List dsResults = new ArrayList(); + List deCounts = new ArrayList(); while ( periodIterator.hasNext() ) { System.out.println("Inside period Iterator Loop"); p = (Period) periodIterator.next(); periodInfo = "" + p.getId(); - + dataElementCount = 0; if ( dso == null ) { dsResults.add( -1 ); + deCounts.add( -1 ); continue; } else if ( !dso.contains( o ) ) @@ -526,6 +558,7 @@ { //System.out.println( "Result is : \t" + sqlResultSet.getLong( 1 ) ); dataStatusPercentatge = ((double) sqlResultSet.getInt( 1 ) / (double) (dataSetMemberCount1 * orgUnitCount)) * 100.0; + } catch ( Exception e ) { @@ -539,8 +572,10 @@ dataStatusPercentatge = 100; dataStatusPercentatge = Math.round( dataStatusPercentatge * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); - + dsResults.add( (int) dataStatusPercentatge ); + //dataElementCount = sqlResultSet.getInt( 1 ); + deCounts.add( -1 ); continue; } @@ -563,25 +598,32 @@ { try { + dataElementCount = sqlResultSet.getInt( 1 ); dataStatusPercentatge = ((double) sqlResultSet.getInt( 1 ) / (double) dataSetMemberCount1) * 100.0; } catch ( Exception e ) { + dataElementCount = -1; dataStatusPercentatge = 0.0; } } else + { dataStatusPercentatge = 0.0; - + dataElementCount = -1; + } + if ( dataStatusPercentatge > 100.0 ) dataStatusPercentatge = 100; - dataStatusPercentatge = Math.round( dataStatusPercentatge * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); - + dataStatusPercentatge = Math.round( dataStatusPercentatge * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); + dsResults.add( (int) dataStatusPercentatge ); + deCounts.add( dataElementCount ); } ouMapDataStatusResult.put( o, dsResults ); + ouMapDataElementCount.put( o, deCounts ); } // For Level Names === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateGroupWiseDataStatusResultAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateGroupWiseDataStatusResultAction.java 2010-12-08 07:24:10 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateGroupWiseDataStatusResultAction.java 2011-04-15 11:34:10 +0000 @@ -340,11 +340,21 @@ { return dsSize; } + + private List dataElementCount; + + public List getDataElementCount() + { + return dataElementCount; + } + // --------------------------------------------------------------- // Action Implementation // --------------------------------------------------------------- - // @SuppressWarnings({ "deprecation", "unchecked" }) + + + // @SuppressWarnings({ "deprecation", "unchecked" }) public String execute() throws Exception { @@ -356,6 +366,8 @@ deMapGroupCount = new HashMap(); // dataelement Group Count results = new ArrayList(); + dataElementCount = new ArrayList(); + maxOULevel = 1; minOULevel = organisationUnitService.getNumberOfOrganisationalLevels(); @@ -510,9 +522,9 @@ } // detaElement Group member Count - Integer deGroupMemberCount = dataElements.size(); + //Integer deGroupMemberCount = dataElements.size(); - deMapGroupCount.put( deg, deGroupMemberCount ); + deMapGroupCount.put( deg, deGroupMemberCount1 ); deInfo = getDEInfo( dataElements ); @@ -545,6 +557,7 @@ // @SuppressWarnings("unused") // Collection dataValueResult; double dataStatusPercentatge; + int tempDataElementCount = 0; while ( periodIterator.hasNext() ) { @@ -554,6 +567,7 @@ if ( dso == null ) { results.add( -1 ); + dataElementCount.add( -1 ); continue; } else if ( !dso.contains( o ) ) @@ -595,7 +609,11 @@ dataStatusPercentatge = Math.round( dataStatusPercentatge * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); + tempDataElementCount = sqlResultSet.getInt( 1 ); + dataElementCount.add( tempDataElementCount ); + results.add( (int) dataStatusPercentatge ); + dataElementCount.add( -1 ); continue; } @@ -632,7 +650,10 @@ dataStatusPercentatge = 100; dataStatusPercentatge = Math.round( dataStatusPercentatge * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); - + + tempDataElementCount = sqlResultSet.getInt( 1 ); + dataElementCount.add( tempDataElementCount ); + results.add( (int) dataStatusPercentatge ); } } === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateSummaryDataStatusResultAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateSummaryDataStatusResultAction.java 2011-03-01 09:39:28 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ds/action/GenerateSummaryDataStatusResultAction.java 2011-04-15 11:34:10 +0000 @@ -85,6 +85,27 @@ // Output Parameters // --------------------------------------------------------------- + private Map ouMapForColor; + + public Map getOuMapForColor() + { + return ouMapForColor; + } + + private Map ouMapForChildDSAssociation; + + public Map getOuMapForChildDSAssociation() + { + return ouMapForChildDSAssociation; + } + + private Map> ouMapStatusResult; + + public Map> getOuMapStatusResult() + { + return ouMapStatusResult; + } + private Map> ouMapSummaryStatusResult; public Map> getOuMapSummaryStatusResult() @@ -266,6 +287,9 @@ dataViewName = ""; // Intialization + ouMapForChildDSAssociation = new HashMap(); + ouMapForColor = new HashMap(); + ouMapStatusResult = new HashMap>(); periodNameList = new ArrayList(); ouMapSummaryStatusResult = new HashMap>(); maxOULevel = 1; @@ -293,12 +317,10 @@ { selectedOrgUnit = organisationUnitService.getOrganisationUnit( Integer.parseInt( orgUnitListCB.get( 0 ) ) ); orgUnitList.addAll( organisationUnitService.getOrganisationUnitWithChildren( selectedOrgUnit.getId() ) ); - //getChildOrgUnitTree( selectedOrgUnit ); } else if ( facilityLB.equals( "immChildren" ) ) { selectedOrgUnit = organisationUnitService.getOrganisationUnit( Integer.parseInt( orgUnitListCB.get( 0 ) ) ); - //number = selectedOrgUnit.getChildren().size(); Iterator orgUnitIterator = orgUnitListCB.iterator(); while ( orgUnitIterator.hasNext() ) { @@ -403,6 +425,19 @@ List dsResults = new ArrayList(); List dsSummaryResults = new ArrayList(); + List childOrgUnits = new ArrayList(); + if ( !dso.contains( o ) ) + { + childOrgUnits = filterChildOrgUnitsByDataSet( selDataSet, o ); + ouMapForChildDSAssociation.put( o, childOrgUnits.size() ); + ouMapForColor.put( o, 0 ); + } + else + { + ouMapForChildDSAssociation.put( o, -1 ); + ouMapForColor.put( o, 1 ); + } + while ( periodIterator.hasNext() ) { p = (Period) periodIterator.next(); @@ -412,15 +447,16 @@ { dsResults.add( -1 ); dsSummaryResults.add( -1 ); + ouMapForChildDSAssociation.put( o, -1 ); continue; } else if ( !dso.contains( o ) ) { - List childOrgUnits = new ArrayList(); - childOrgUnits = filterChildOrgUnitsByDataSet( selDataSet, o ); + //List childOrgUnits = new ArrayList(); + //childOrgUnits = filterChildOrgUnitsByDataSet( selDataSet, o ); + + int dataStatusCount = 0; Iterator assignedChildrenIterator = childOrgUnits.iterator(); - int dataStatusCount = 0; - while ( assignedChildrenIterator.hasNext() ) { OrganisationUnit cUnit = (OrganisationUnit) assignedChildrenIterator.next(); @@ -469,12 +505,17 @@ dataStatusCount += 1; } } + dsSummaryResults.add( dataStatusCount ); + Double tempDouble = ( (double) dataStatusCount /(double) childOrgUnits.size() ) * 100.0; + tempDouble = Math.round( tempDouble * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); + dsResults.add( tempDouble.intValue() ); continue; } orgUnitInfo = "" + o.getId(); - + + if ( includeZeros == null ) { query = "SELECT COUNT(*) FROM " + dataViewName + " WHERE dataelementid IN (" + deInfo @@ -506,7 +547,6 @@ dataStatusPercentatge = 100; dataStatusPercentatge = Math.round( dataStatusPercentatge * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); - dsResults.add( (int) dataStatusPercentatge ); if ( dataStatusPercentatge >= 5.0 ) { @@ -516,9 +556,12 @@ { dsSummaryResults.add( 0 ); } + + dsResults.add( -1 ); } ouMapSummaryStatusResult.put( o, dsSummaryResults ); + ouMapStatusResult.put( o, dsResults ); } // For Level Names === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartAction1.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartAction1.java 2010-12-23 07:23:23 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartAction1.java 2011-04-15 11:34:10 +0000 @@ -153,12 +153,12 @@ initialzeAllLists( series1S, categories1S ); - System.out.println( "\n data1 : " + objData1 ); - System.out.println( "\n series1 : " + series1S ); - System.out.println( "\n categories1 : " + categories1S ); - System.out.println( "\n chartTitle : " + chartTitle ); - System.out.println( "\n xAxisTitle : " + xAxis_Title ); - System.out.println( "\n yAxisTitle : " + yAxis_Title ); + //System.out.println( "\n data1 : " + objData1 ); + //System.out.println( "\n series1 : " + series1S ); + //System.out.println( "\n categories1 : " + categories1S ); + //System.out.println( "\n chartTitle : " + chartTitle ); + //System.out.println( "\n xAxisTitle : " + xAxis_Title ); + //System.out.println( "\n yAxisTitle : " + yAxis_Title ); if( objData1 == null || series1 == null || categories1 == null || chartTitle == null || xAxis_Title == null || yAxis_Title == null ) @@ -176,7 +176,7 @@ initializeDataLists(); - System.out.println( "current chart Type is : " + currentChart + " ,And Chart Display Option is : " + chartDisplayOption ); + //System.out.println( "current chart Type is : " + currentChart + " ,And Chart Display Option is : " + chartDisplayOption ); if ( currentChart == null ) { === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartDataElementAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartDataElementAction.java 2011-03-01 09:39:28 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartDataElementAction.java 2011-04-15 11:34:10 +0000 @@ -72,24 +72,25 @@ /** * @author Mithilesh Kumar Thakur - * + * * @version GenerateChartDataElementAction.java Oct 25, 2010 12:20:22 PM */ -public class GenerateChartDataElementAction implements Action +public class GenerateChartDataElementAction + implements Action { - + private final String PERIODWISE = "period"; private final String CHILDREN = "children"; private final String SELECTED = "random"; - + private final String OPTIONCOMBO = "optioncombo"; - + // ------------------------------------------------------------------------- // Dependencies // ------------------------------------------------------------------------- - + private StatementManager statementManager; public void setStatementManager( StatementManager statementManager ) @@ -103,28 +104,28 @@ { this.dataElementService = dataElementService; } - + private DataElementCategoryService dataElementCategoryService; public void setDataElementCategoryService( DataElementCategoryService dataElementCategoryService ) { this.dataElementCategoryService = dataElementCategoryService; } - + private OrganisationUnitService organisationUnitService; public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) { this.organisationUnitService = organisationUnitService; } - + private OrganisationUnitGroupService organisationUnitGroupService; public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService ) { this.organisationUnitGroupService = organisationUnitGroupService; } - + private AggregationService aggregationService; public void setAggregationService( AggregationService aggregationService ) @@ -145,9 +146,9 @@ { this.periodService = periodService; } - + private CaseAggregationConditionService caseAggregationConditionService; - + public void setCaseAggregationConditionService( CaseAggregationConditionService caseAggregationConditionService ) { this.caseAggregationConditionService = caseAggregationConditionService; @@ -159,25 +160,25 @@ { this.format = format; } - + // -------------------------------------------------------------------------- // Parameters // -------------------------------------------------------------------------- - + private HttpSession session; public HttpSession getSession() { return session; } - + private List selectedServiceList; public List getSelectedServiceList() { return selectedServiceList; } - + // ------------------------------------------------------------------------- // Input // ------------------------------------------------------------------------- @@ -190,29 +191,29 @@ } private String deSelection; - + public void setDeSelection( String deSelection ) { this.deSelection = deSelection; } - + public String getDeSelection() { return deSelection; } - + private String ougGroupSetCB; - + public void setOugGroupSetCB( String ougGroupSetCB ) { this.ougGroupSetCB = ougGroupSetCB; } - + public String getOugGroupSetCB() { return ougGroupSetCB; } - + private List orgUnitGroupList; public List getOrgUnitGroupList() @@ -226,26 +227,26 @@ } private String aggDataCB; - + public void setAggDataCB( String aggDataCB ) { this.aggDataCB = aggDataCB; } - + public String getAggDataCB() { return aggDataCB; } private List orgUnitListCB; - + public void setOrgUnitListCB( List orgUnitListCB ) { this.orgUnitListCB = orgUnitListCB; } - + private String categoryLB; - + public String getCategoryLB() { return categoryLB; @@ -255,9 +256,9 @@ { this.categoryLB = categoryLB; } - + private String selectedButton; - + public String getSelectedButton() { return selectedButton; @@ -267,14 +268,14 @@ { this.selectedButton = selectedButton; } - + private String periodTypeLB; - + public void setPeriodTypeLB( String periodTypeLB ) { this.periodTypeLB = periodTypeLB; } - + private List yearLB; public void setYearLB( List yearLB ) @@ -288,42 +289,42 @@ { this.periodLB = periodLB; } - + private DataElementChartResult dataElementChartResult; - + public DataElementChartResult getDataElementChartResult() { return dataElementChartResult; } - + List yseriesList; public List getYseriesList() { return yseriesList; } - + private List selectedValues; - + public List getSelectedValues() { return selectedValues; } private List selectedStatus; - + public List getSelectedStatus() { return selectedStatus; } - + private List selectedDrillDownData; - + public List getSelectedDrillDownData() { return selectedDrillDownData; } - + ListTool listTool; public ListTool getListTool() @@ -332,22 +333,34 @@ } private List selOUList; + private List selectedOptionComboList; + private OrganisationUnit selectedOrgUnit; + private OrganisationUnitGroup selOrgUnitGroup; + private List selOUGroupMemberList = new ArrayList(); - private List periodNames; + + private List periodNames; + private List selStartPeriodList; + private List selEndPeriodList; + private String drillDownPeriodStartDate; + private String drillDownPeriodEndDate; + private String drillDownPeriodNames; + private String aggChecked; - + // ------------------------------------------------------------------------- // Action Implementation // ------------------------------------------------------------------------- - public String execute() throws Exception + public String execute() + throws Exception { statementManager.initialise(); @@ -362,8 +375,8 @@ selectedDrillDownData = new ArrayList(); aggChecked = ""; - - if( aggDataCB != null ) + + if ( aggDataCB != null ) { aggChecked = "1"; } @@ -372,9 +385,9 @@ aggChecked = "0"; } - //---------------------------------------------------------------------- + // ---------------------------------------------------------------------- // Period Info - //---------------------------------------------------------------------- + // ---------------------------------------------------------------------- String monthOrder[] = { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" }; int monthDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; @@ -385,16 +398,16 @@ drillDownPeriodNames = ""; SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "MMM-yyyy" ); periodNames = new ArrayList(); - - if( periodTypeLB.equalsIgnoreCase( WeeklyPeriodType.NAME ) ) + + if ( periodTypeLB.equalsIgnoreCase( WeeklyPeriodType.NAME ) ) { int periodCount = 0; - for( String periodStr : periodLB ) + for ( String periodStr : periodLB ) { startD = periodStr.split( "To" )[0].trim(); endD = periodStr.split( "To" )[1].trim(); - - if( periodCount == periodLB.size()-1 ) + + if ( periodCount == periodLB.size() - 1 ) { drillDownPeriodStartDate += startD; drillDownPeriodEndDate += endD; @@ -406,7 +419,7 @@ drillDownPeriodEndDate += endD + ";"; drillDownPeriodNames += periodStr + ";"; } - + selStartPeriodList.add( format.parseDate( startD ) ); selEndPeriodList.add( format.parseDate( endD ) ); periodNames.add( periodStr ); @@ -422,9 +435,9 @@ if ( periodTypeLB.equalsIgnoreCase( YearlyPeriodType.NAME ) ) { startD = "" + selYear + "-01-01"; - endD = "" + selYear + "-12-31"; - - if( periodCount == yearLB.size()-1 ) + endD = "" + selYear + "-12-31"; + + if ( periodCount == yearLB.size() - 1 ) { drillDownPeriodStartDate += startD; drillDownPeriodEndDate += endD; @@ -436,28 +449,28 @@ drillDownPeriodEndDate += endD + ";"; drillDownPeriodNames += selYear + ";"; } - + selStartPeriodList.add( format.parseDate( startD ) ); selEndPeriodList.add( format.parseDate( endD ) ); periodNames.add( "" + selYear ); continue; } - - for( String periodStr : periodLB ) + + for ( String periodStr : periodLB ) { if ( periodTypeLB.equalsIgnoreCase( MonthlyPeriodType.NAME ) ) { int period = Integer.parseInt( periodStr ); simpleDateFormat = new SimpleDateFormat( "MMM-yyyy" ); - + startD = "" + selYear + "-" + monthOrder[period] + "-01"; - endD = "" + selYear + "-" + monthOrder[period] + "-" + monthDays[period]; - - if ( ((( selYear ) % 400 == 0 ) || ((( selYear) % 100 != 0 && ( selYear ) % 4 == 0))) && period == 1 ) + endD = "" + selYear + "-" + monthOrder[period] + "-" + monthDays[period]; + + if ( (((selYear) % 400 == 0) || (((selYear) % 100 != 0 && (selYear) % 4 == 0))) && period == 1 ) { - endD = "" + selYear + "-" + monthOrder[period] + "-" + ( monthDays[period] + 1 ); - } - + endD = "" + selYear + "-" + monthOrder[period] + "-" + (monthDays[period] + 1); + } + drillDownPeriodStartDate += startD + ";"; drillDownPeriodEndDate += endD + ";"; drillDownPeriodNames += simpleDateFormat.format( format.parseDate( startD ) ) + ";"; @@ -496,8 +509,8 @@ periodNames.add( (selYear) + "-Q4" ); drillDownPeriodNames += selYear + "-Q4" + ";"; } - - if( periodCount == periodLB.size()-1 ) + + if ( periodCount == periodLB.size() - 1 ) { drillDownPeriodStartDate += startD; drillDownPeriodEndDate += endD; @@ -507,7 +520,7 @@ drillDownPeriodStartDate += startD + ";"; drillDownPeriodEndDate += endD + ";"; } - + selStartPeriodList.add( format.parseDate( startD ) ); selEndPeriodList.add( format.parseDate( endD ) ); } @@ -528,7 +541,7 @@ periodNames.add( selYear + "-HY2" ); drillDownPeriodNames += selYear + "-HY2" + ";"; } - + drillDownPeriodStartDate += startD + ";"; drillDownPeriodEndDate += endD + ";"; selStartPeriodList.add( format.parseDate( startD ) ); @@ -536,25 +549,28 @@ } else if ( periodTypeLB.equalsIgnoreCase( DailyPeriodType.NAME ) ) { - String month = periodStr.split( "-" )[0] ; - String date = periodStr.split( "-" )[1] ; - startD = selYear + "-" + periodStr; - endD = selYear + "-" + periodStr ; - - if ( selYear % 4 != 0 && month.trim().equalsIgnoreCase( "02" ) && date.trim().equalsIgnoreCase( "29" ) ) + String month = periodStr.split( "-" )[0]; + String date = periodStr.split( "-" )[1]; + startD = selYear + "-" + periodStr; + endD = selYear + "-" + periodStr; + + if ( selYear % 4 != 0 && month.trim().equalsIgnoreCase( "02" ) + && date.trim().equalsIgnoreCase( "29" ) ) { startD = selYear + "-" + month + "-" + date; endD = selYear + "-" + month + "-" + date; continue; } - - if ( (( selYear % 400 == 0) || (( selYear % 100 != 0 && selYear % 4 == 0))) && month.trim().equalsIgnoreCase( "02" ) && date.trim().equalsIgnoreCase( "29" ) ); + + if ( ((selYear % 400 == 0) || ((selYear % 100 != 0 && selYear % 4 == 0))) + && month.trim().equalsIgnoreCase( "02" ) && date.trim().equalsIgnoreCase( "29" ) ) + ; { startD = selYear + "-" + month + "-" + date; - endD = selYear + "-" + month + "-" + date; + endD = selYear + "-" + month + "-" + date; } - - if( periodCount == periodLB.size()-1 ) + + if ( periodCount == periodLB.size() - 1 ) { drillDownPeriodStartDate += startD; drillDownPeriodEndDate += endD; @@ -566,7 +582,7 @@ drillDownPeriodEndDate += endD + ";"; drillDownPeriodNames += startD + ";"; } - + selStartPeriodList.add( format.parseDate( startD ) ); selEndPeriodList.add( format.parseDate( endD ) ); periodNames.add( startD ); @@ -574,21 +590,21 @@ } periodCount++; } - } - - //---------------------------------------------------------------------- - // DataElement Information - //---------------------------------------------------------------------- + } + + // ---------------------------------------------------------------------- + // DataElement Information + // ---------------------------------------------------------------------- List dataElementList = new ArrayList(); - + if ( deSelection == null ) { System.out.println( "deOptionValue is null" ); return null; } - + if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) ) - { + { Iterator deIterator = selectedDataElements.iterator(); while ( deIterator.hasNext() ) { @@ -598,7 +614,8 @@ DataElement dataElement = dataElementService.getDataElement( dataElementId ); dataElementList.add( dataElement ); int optionComboId = Integer.parseInt( partsOfServiceId[1] ); - DataElementCategoryOptionCombo decoc = dataElementCategoryService.getDataElementCategoryOptionCombo( optionComboId ); + DataElementCategoryOptionCombo decoc = dataElementCategoryService + .getDataElementCategoryOptionCombo( optionComboId ); selectedOptionComboList.add( decoc ); } } @@ -612,680 +629,772 @@ dataElementList.add( dataElement ); } } - + selectedServiceList = new ArrayList( dataElementList ); - - //---------------------------------------------------------------------- + + // ---------------------------------------------------------------------- // OrgUnit Information - //---------------------------------------------------------------------- + // ---------------------------------------------------------------------- for ( String ouStr : orgUnitListCB ) { OrganisationUnit orgUnit = organisationUnitService.getOrganisationUnit( Integer.parseInt( ouStr ) ); selOUList.add( orgUnit ); } - if ( categoryLB.equalsIgnoreCase( PERIODWISE )&& ougGroupSetCB == null ) + if ( categoryLB.equalsIgnoreCase( PERIODWISE ) && ougGroupSetCB == null ) { System.out.println( "Chart Generation Start Time is : " + new Date() ); - - dataElementChartResult = generateChartDataPeriodWise( selStartPeriodList,selEndPeriodList,periodNames,dataElementList,selectedOptionComboList,selOUList.iterator().next() ); + + dataElementChartResult = generateChartDataPeriodWise( selStartPeriodList, selEndPeriodList, periodNames, + dataElementList, selectedOptionComboList, selOUList.iterator().next() ); } else if ( categoryLB.equalsIgnoreCase( CHILDREN ) && ougGroupSetCB == null ) { System.out.println( "Chart Generation Start Time is : " + new Date() ); - + selectedOrgUnit = new OrganisationUnit(); selectedOrgUnit = organisationUnitService.getOrganisationUnit( Integer.parseInt( orgUnitListCB.get( 0 ) ) ); - + List childOrgUnitList = new ArrayList(); - childOrgUnitList = new ArrayList( selectedOrgUnit.getChildren()); - - dataElementChartResult = generateChartDataWithChildrenWise( selStartPeriodList,selEndPeriodList,periodNames,dataElementList,selectedOptionComboList,childOrgUnitList ); + childOrgUnitList = new ArrayList( selectedOrgUnit.getChildren() ); + + dataElementChartResult = generateChartDataWithChildrenWise( selStartPeriodList, selEndPeriodList, + periodNames, dataElementList, selectedOptionComboList, childOrgUnitList ); } else if ( categoryLB.equalsIgnoreCase( SELECTED ) && ougGroupSetCB == null ) { System.out.println( "Chart Generation Start Time is : " + new Date() ); - - dataElementChartResult = generateChartDataSelectedOrgUnitWise( selStartPeriodList,selEndPeriodList,periodNames,dataElementList,selectedOptionComboList,selOUList ); + + dataElementChartResult = generateChartDataSelectedOrgUnitWise( selStartPeriodList, selEndPeriodList, + periodNames, dataElementList, selectedOptionComboList, selOUList ); } else if ( categoryLB.equalsIgnoreCase( PERIODWISE ) && ougGroupSetCB != null ) { System.out.println( "Chart Generation Start Time is : " + new Date() ); - + selectedOrgUnit = organisationUnitService.getOrganisationUnit( Integer.parseInt( orgUnitListCB.get( 0 ) ) ); - List orgUnitChildList = new ArrayList( organisationUnitService.getOrganisationUnitWithChildren( selectedOrgUnit.getId() ) ); - - selOrgUnitGroup = organisationUnitGroupService.getOrganisationUnitGroup( Integer.parseInt( orgUnitGroupList.get( 0 ) ) ); + List orgUnitChildList = new ArrayList( organisationUnitService + .getOrganisationUnitWithChildren( selectedOrgUnit.getId() ) ); + + selOrgUnitGroup = organisationUnitGroupService.getOrganisationUnitGroup( Integer.parseInt( orgUnitGroupList + .get( 0 ) ) ); selOUGroupMemberList = new ArrayList( selOrgUnitGroup.getMembers() ); selOUGroupMemberList.retainAll( orgUnitChildList ); - - dataElementChartResult = generateChartDataOrgGroupPeriodWise(selStartPeriodList,selEndPeriodList,periodNames,dataElementList,selectedOptionComboList,selOUGroupMemberList); + + dataElementChartResult = generateChartDataOrgGroupPeriodWise( selStartPeriodList, selEndPeriodList, + periodNames, dataElementList, selectedOptionComboList, selOUGroupMemberList ); } else if ( categoryLB.equalsIgnoreCase( CHILDREN ) && ougGroupSetCB != null ) { System.out.println( "Chart Generation Start Time is : " + new Date() ); - + selectedOrgUnit = organisationUnitService.getOrganisationUnit( Integer.parseInt( orgUnitListCB.get( 0 ) ) ); - List orgUnitChildList = new ArrayList( organisationUnitService.getOrganisationUnitWithChildren( selectedOrgUnit.getId() ) ); - + List orgUnitChildList = new ArrayList( organisationUnitService + .getOrganisationUnitWithChildren( selectedOrgUnit.getId() ) ); + int groupCount = 0; for ( String orgUnitGroupId : orgUnitGroupList ) { - OrganisationUnitGroup selOrgUnitGroup = organisationUnitGroupService.getOrganisationUnitGroup( Integer.parseInt( orgUnitGroupId ) ); - List selectedOUGroupMemberList = new ArrayList( selOrgUnitGroup.getMembers() ); + OrganisationUnitGroup selOrgUnitGroup = organisationUnitGroupService.getOrganisationUnitGroup( Integer + .parseInt( orgUnitGroupId ) ); + List selectedOUGroupMemberList = new ArrayList( selOrgUnitGroup + .getMembers() ); selOUGroupMemberList.addAll( selectedOUGroupMemberList ); groupCount++; } - + selOUGroupMemberList.retainAll( orgUnitChildList ); - - dataElementChartResult = generateChartDataSelectedOrgUnitWise( selStartPeriodList,selEndPeriodList,periodNames,dataElementList,selectedOptionComboList,selOUGroupMemberList ); + + dataElementChartResult = generateChartDataSelectedOrgUnitWise( selStartPeriodList, selEndPeriodList, + periodNames, dataElementList, selectedOptionComboList, selOUGroupMemberList ); } else if ( categoryLB.equalsIgnoreCase( SELECTED ) && ougGroupSetCB != null ) { System.out.println( "Chart Generation Start Time is : " + new Date() ); - - Map> orgUnitGroupMap = new HashMap>(); - - selectedOrgUnit = organisationUnitService.getOrganisationUnit( Integer.parseInt( orgUnitListCB.get( 0 ) ) ); - List orgUnitChildList = new ArrayList( organisationUnitService.getOrganisationUnitWithChildren( selectedOrgUnit.getId() ) ); - - for ( String orgUnitGroupId : orgUnitGroupList ) - { - OrganisationUnitGroup selOrgUnitGroup = organisationUnitGroupService.getOrganisationUnitGroup( Integer.parseInt( orgUnitGroupId ) ); - List selectedOUGroupMemberList = new ArrayList( selOrgUnitGroup.getMembers() ); - selectedOUGroupMemberList.retainAll( orgUnitChildList ); - orgUnitGroupMap.put( selOrgUnitGroup, selectedOUGroupMemberList); - } - - dataElementChartResult = generateChartDataSelectedOrgUnitGroupWise( selStartPeriodList,selEndPeriodList,periodNames,dataElementList,selectedOptionComboList,orgUnitGroupMap ); + + Map> orgUnitGroupMap = new HashMap>(); + + selectedOrgUnit = organisationUnitService.getOrganisationUnit( Integer.parseInt( orgUnitListCB.get( 0 ) ) ); + List orgUnitChildList = new ArrayList( organisationUnitService + .getOrganisationUnitWithChildren( selectedOrgUnit.getId() ) ); + + for ( String orgUnitGroupId : orgUnitGroupList ) + { + OrganisationUnitGroup selOrgUnitGroup = organisationUnitGroupService.getOrganisationUnitGroup( Integer + .parseInt( orgUnitGroupId ) ); + List selectedOUGroupMemberList = new ArrayList( selOrgUnitGroup + .getMembers() ); + selectedOUGroupMemberList.retainAll( orgUnitChildList ); + orgUnitGroupMap.put( selOrgUnitGroup, selectedOUGroupMemberList ); + } + + dataElementChartResult = generateChartDataSelectedOrgUnitGroupWise( selStartPeriodList, selEndPeriodList, + periodNames, dataElementList, selectedOptionComboList, orgUnitGroupMap ); } - + ActionContext ctx = ActionContext.getContext(); HttpServletRequest req = (HttpServletRequest) ctx.get( ServletActionContext.HTTP_REQUEST ); session = req.getSession(); - + session.setAttribute( "data1", dataElementChartResult.getData() ); session.setAttribute( "series1", dataElementChartResult.getSeries() ); session.setAttribute( "categories1", dataElementChartResult.getCategories() ); session.setAttribute( "chartTitle", dataElementChartResult.getChartTitle() ); session.setAttribute( "xAxisTitle", dataElementChartResult.getXAxis_Title() ); session.setAttribute( "yAxisTitle", dataElementChartResult.getYAxis_Title() ); - + System.out.println( "Chart Generation End Time is : " + new Date() ); statementManager.destroy(); - + return SUCCESS; } - + // ------------------------------------------------------------------------- // Methods for getting Chart Data only Period Wise start // ------------------------------------------------------------------------- - public DataElementChartResult generateChartDataPeriodWise( List selStartPeriodList,List selEndPeriodList,List periodNames,List dataElementList,List decocList,OrganisationUnit orgUnit ) throws Exception + public DataElementChartResult generateChartDataPeriodWise( List selStartPeriodList, + List selEndPeriodList, List periodNames, List dataElementList, + List decocList, OrganisationUnit orgUnit ) + throws Exception { - DataElementChartResult dataElementChartResult; - - String[] series = new String[dataElementList.size()]; - String[] categories = new String[selStartPeriodList.size()]; - Double[][] data = new Double[dataElementList.size()][selStartPeriodList.size()]; - String chartTitle = "OrganisationUnit : " + orgUnit.getShortName(); - String xAxis_Title = "Time Line"; - String yAxis_Title = "Value"; - - int serviceCount = 0; - - for( DataElement dataElement : dataElementList ) - { - DataElementCategoryOptionCombo decoc; - - DataElementCategoryCombo dataElementCategoryCombo = dataElement.getCategoryCombo(); - - List optionCombos = new ArrayList( dataElementCategoryCombo.getOptionCombos() ); - - if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) ) - { - decoc = decocList.get( serviceCount ); - - series[serviceCount] = dataElement.getName() + " : " + decoc.getName(); - - CaseAggregationCondition caseAggregationCondition = caseAggregationConditionService.getCaseAggregationCondition( dataElement, decoc ); - - if( caseAggregationCondition == null ) - { - selectedStatus.add( "no" ); - } - else - { - selectedStatus.add( "yes" ); - } - - yseriesList.add( dataElement.getName() + " : " + decoc.getName() ); - } - else - { - decoc = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); - series[serviceCount] = dataElement.getName(); - - CaseAggregationCondition caseAggregationCondition = caseAggregationConditionService.getCaseAggregationCondition( dataElement, decoc ); - - if( caseAggregationCondition == null ) - { - selectedStatus.add( "no" ); - } - else - { - selectedStatus.add( "yes" ); - } - - yseriesList.add( dataElement.getName() ); - } - - int periodCount = 0; - for( Date startDate : selStartPeriodList ) - { - Date endDate = selEndPeriodList.get( periodCount ); - String drillDownPeriodName = periodNames.get( periodCount ); - String tempStartDate = format.formatDate( startDate ); - String tempEndDate = format.formatDate( endDate ); - - categories[periodCount] = periodNames.get( periodCount ); - PeriodType periodType = periodService.getPeriodTypeByName( periodTypeLB ); - - String values = orgUnit.getId() + ":"+ dataElement.getId() + ":"+ decoc.getId() + ":" + periodType + ":" + tempStartDate + ":" + tempEndDate; - selectedValues.add( values ); - - String drillDownData = orgUnit.getId() + ":" + "0" + ":" + dataElement.getId() + ":"+ decoc.getId() + ":" + periodTypeLB + ":" + tempStartDate + ":" + tempEndDate + ":" + drillDownPeriodName + ":" + deSelection + ":" + aggChecked; - selectedDrillDownData.add( drillDownData ); - - Double aggDataValue = 0.0; - - Iterator optionComboIterator = optionCombos.iterator(); - while ( optionComboIterator.hasNext() ) - { - DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next(); - - if( aggDataCB != null ) - { - Double temp = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate, endDate, orgUnit ); - if( temp != null ) aggDataValue += temp; - } - else - { - Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); - for( Period period : periods ) - { - DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, decoc1 ); - try - { - aggDataValue += Double.parseDouble( dataValue.getValue() ); - } - catch( Exception e ) - { - } - } - } - } - - data[serviceCount][periodCount] = aggDataValue; - - if( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) - { - if ( dataElement.getNumberType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) - { - data[serviceCount][periodCount] = Math.round( data[serviceCount][periodCount] * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); - } - else - { - data[serviceCount][periodCount] = Math.round( data[serviceCount][periodCount] * Math.pow( 10, 1 ) ) / Math.pow( 10, 1 ); - } - } - periodCount++; - } - - serviceCount++; - } - - dataElementChartResult = new DataElementChartResult( series, categories, data, chartTitle, xAxis_Title, yAxis_Title ); - - return dataElementChartResult; + DataElementChartResult dataElementChartResult; + + String[] series = new String[dataElementList.size()]; + String[] categories = new String[selStartPeriodList.size()]; + Double[][] data = new Double[dataElementList.size()][selStartPeriodList.size()]; + String chartTitle = "OrganisationUnit : " + orgUnit.getShortName(); + String xAxis_Title = "Time Line"; + String yAxis_Title = "Value"; + + int serviceCount = 0; + + for ( DataElement dataElement : dataElementList ) + { + DataElementCategoryOptionCombo decoc; + + DataElementCategoryCombo dataElementCategoryCombo = dataElement.getCategoryCombo(); + + List optionCombos = new ArrayList( + dataElementCategoryCombo.getOptionCombos() ); + + if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) ) + { + decoc = decocList.get( serviceCount ); + + series[serviceCount] = dataElement.getName() + " : " + decoc.getName(); + + CaseAggregationCondition caseAggregationCondition = caseAggregationConditionService + .getCaseAggregationCondition( dataElement, decoc ); + + if ( caseAggregationCondition == null ) + { + selectedStatus.add( "no" ); + } + else + { + selectedStatus.add( "yes" ); + } + + yseriesList.add( dataElement.getName() + " : " + decoc.getName() ); + } + else + { + decoc = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); + series[serviceCount] = dataElement.getName(); + + CaseAggregationCondition caseAggregationCondition = caseAggregationConditionService + .getCaseAggregationCondition( dataElement, decoc ); + + if ( caseAggregationCondition == null ) + { + selectedStatus.add( "no" ); + } + else + { + selectedStatus.add( "yes" ); + } + + yseriesList.add( dataElement.getName() ); + } + + int periodCount = 0; + for ( Date startDate : selStartPeriodList ) + { + Date endDate = selEndPeriodList.get( periodCount ); + String drillDownPeriodName = periodNames.get( periodCount ); + String tempStartDate = format.formatDate( startDate ); + String tempEndDate = format.formatDate( endDate ); + + categories[periodCount] = periodNames.get( periodCount ); + PeriodType periodType = periodService.getPeriodTypeByName( periodTypeLB ); + + String values = orgUnit.getId() + ":" + dataElement.getId() + ":" + decoc.getId() + ":" + periodTypeLB + + ":" + tempStartDate + ":" + tempEndDate; + selectedValues.add( values ); + + String drillDownData = orgUnit.getId() + ":" + "0" + ":" + dataElement.getId() + ":" + decoc.getId() + + ":" + periodTypeLB + ":" + tempStartDate + ":" + tempEndDate + ":" + drillDownPeriodName + ":" + + deSelection + ":" + aggChecked; + selectedDrillDownData.add( drillDownData ); + + Double aggDataValue = 0.0; + + Iterator optionComboIterator = optionCombos.iterator(); + while ( optionComboIterator.hasNext() ) + { + DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next(); + + if ( aggDataCB != null ) + { + Double temp = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate, + endDate, orgUnit ); + if ( temp != null ) + aggDataValue += temp; + } + else + { + Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); + for ( Period period : periods ) + { + DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, decoc1 ); + try + { + aggDataValue += Double.parseDouble( dataValue.getValue() ); + } + catch ( Exception e ) + { + } + } + } + } + + data[serviceCount][periodCount] = aggDataValue; + + if ( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) + { + if ( dataElement.getNumberType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) + { + data[serviceCount][periodCount] = Math.round( data[serviceCount][periodCount] + * Math.pow( 10, 0 ) ) + / Math.pow( 10, 0 ); + } + else + { + data[serviceCount][periodCount] = Math.round( data[serviceCount][periodCount] + * Math.pow( 10, 1 ) ) + / Math.pow( 10, 1 ); + } + } + periodCount++; + } + + serviceCount++; + } + + dataElementChartResult = new DataElementChartResult( series, categories, data, chartTitle, xAxis_Title, + yAxis_Title ); + + return dataElementChartResult; } - + // ------------------------------------------------------------------------- // Methods for getting Chart Data With Children Wise start // ------------------------------------------------------------------------- - - public DataElementChartResult generateChartDataWithChildrenWise( List selStartPeriodList,List selEndPeriodList,List periodNames,List dataElementList,List decocList,List childOrgUnitList ) throws Exception + + public DataElementChartResult generateChartDataWithChildrenWise( List selStartPeriodList, + List selEndPeriodList, List periodNames, List dataElementList, + List decocList, List childOrgUnitList ) + throws Exception { - DataElementChartResult dataElementChartResult; - - String[] series = new String[dataElementList.size()]; - String[] categories = new String[childOrgUnitList.size()]; - Double[][] data = new Double[dataElementList.size()][childOrgUnitList.size()]; - String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName(); - - String xAxis_Title = "Facilities"; - String yAxis_Title = "Value"; - - int serviceCount = 0; - - for( DataElement dataElement : dataElementList ) - { - DataElementCategoryOptionCombo decoc; - - DataElementCategoryCombo dataElementCategoryCombo = dataElement.getCategoryCombo(); - List optionCombos = new ArrayList( dataElementCategoryCombo.getOptionCombos() ); - - if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) ) - { - decoc = decocList.get( serviceCount ); - - series[serviceCount] = dataElement.getName() + " : " + decoc.getName(); - yseriesList.add( dataElement.getName() + " : " + decoc.getName() ); - } - else - { - decoc = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); - series[serviceCount] = dataElement.getName(); - - yseriesList.add( dataElement.getName() ); - } - - int childCount = 0; - for( OrganisationUnit orgChild : childOrgUnitList ) - { - categories[childCount] = orgChild.getName(); - - String drillDownData = orgChild.getId() + ":" + "0" + ":" + dataElement.getId() + ":"+ decoc.getId() + ":" + periodTypeLB + ":" + drillDownPeriodStartDate + ":" + drillDownPeriodEndDate + ":" + drillDownPeriodNames + ":" + deSelection + ":" + aggChecked; - selectedDrillDownData.add( drillDownData ); - - Double aggDataValue = 0.0; - - int periodCount = 0; - for( Date startDate : selStartPeriodList ) - { - Date endDate = selEndPeriodList.get( periodCount ); - Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); - - Iterator optionComboIterator = optionCombos.iterator(); - while ( optionComboIterator.hasNext() ) - { - DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next(); - - if( aggDataCB != null ) - { - Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate, endDate, orgChild ); - if(tempAggDataValue != null ) aggDataValue += tempAggDataValue; - } - else - { - for( Period period : periods ) - { - DataValue dataValue = dataValueService.getDataValue( orgChild, dataElement, period, decoc1 ); - try - { - aggDataValue += Double.parseDouble( dataValue.getValue() ); - } - catch( Exception e ) - { - } - } - } - } - periodCount++; - } - - data[serviceCount][childCount] = aggDataValue; - - if( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) - { - if ( dataElement.getNumberType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) - { - data[serviceCount][childCount] = Math.round( data[serviceCount][childCount] * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); - } - else - { - data[serviceCount][childCount] = Math.round( data[serviceCount][childCount] * Math.pow( 10, 1 ) ) / Math.pow( 10, 1 ); - } - } - childCount++; - } - - serviceCount++; - } - - dataElementChartResult = new DataElementChartResult( series, categories, data, chartTitle, xAxis_Title, yAxis_Title ); - return dataElementChartResult; + DataElementChartResult dataElementChartResult; + + String[] series = new String[dataElementList.size()]; + String[] categories = new String[childOrgUnitList.size()]; + Double[][] data = new Double[dataElementList.size()][childOrgUnitList.size()]; + String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName(); + + String xAxis_Title = "Facilities"; + String yAxis_Title = "Value"; + + int serviceCount = 0; + + for ( DataElement dataElement : dataElementList ) + { + DataElementCategoryOptionCombo decoc; + + DataElementCategoryCombo dataElementCategoryCombo = dataElement.getCategoryCombo(); + List optionCombos = new ArrayList( + dataElementCategoryCombo.getOptionCombos() ); + + if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) ) + { + decoc = decocList.get( serviceCount ); + + series[serviceCount] = dataElement.getName() + " : " + decoc.getName(); + yseriesList.add( dataElement.getName() + " : " + decoc.getName() ); + } + else + { + decoc = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); + series[serviceCount] = dataElement.getName(); + + yseriesList.add( dataElement.getName() ); + } + + int childCount = 0; + for ( OrganisationUnit orgChild : childOrgUnitList ) + { + categories[childCount] = orgChild.getName(); + + String drillDownData = orgChild.getId() + ":" + "0" + ":" + dataElement.getId() + ":" + decoc.getId() + + ":" + periodTypeLB + ":" + drillDownPeriodStartDate + ":" + drillDownPeriodEndDate + ":" + + drillDownPeriodNames + ":" + deSelection + ":" + aggChecked; + selectedDrillDownData.add( drillDownData ); + + Double aggDataValue = 0.0; + + int periodCount = 0; + for ( Date startDate : selStartPeriodList ) + { + Date endDate = selEndPeriodList.get( periodCount ); + Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); + + Iterator optionComboIterator = optionCombos.iterator(); + while ( optionComboIterator.hasNext() ) + { + DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator + .next(); + + if ( aggDataCB != null ) + { + Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, + startDate, endDate, orgChild ); + if ( tempAggDataValue != null ) + aggDataValue += tempAggDataValue; + } + else + { + for ( Period period : periods ) + { + DataValue dataValue = dataValueService.getDataValue( orgChild, dataElement, period, + decoc1 ); + try + { + aggDataValue += Double.parseDouble( dataValue.getValue() ); + } + catch ( Exception e ) + { + } + } + } + } + periodCount++; + } + + data[serviceCount][childCount] = aggDataValue; + + if ( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) + { + if ( dataElement.getNumberType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) + { + data[serviceCount][childCount] = Math + .round( data[serviceCount][childCount] * Math.pow( 10, 0 ) ) + / Math.pow( 10, 0 ); + } + else + { + data[serviceCount][childCount] = Math + .round( data[serviceCount][childCount] * Math.pow( 10, 1 ) ) + / Math.pow( 10, 1 ); + } + } + childCount++; + } + + serviceCount++; + } + + dataElementChartResult = new DataElementChartResult( series, categories, data, chartTitle, xAxis_Title, + yAxis_Title ); + return dataElementChartResult; } - + // ------------------------------------------------------------------------- // Methods for getting Chart Data With Selected Wise start // ------------------------------------------------------------------------- - public DataElementChartResult generateChartDataSelectedOrgUnitWise( List selStartPeriodList,List selEndPeriodList,List periodNames,List dataElementList,List decocList,List selOUList ) throws Exception + public DataElementChartResult generateChartDataSelectedOrgUnitWise( List selStartPeriodList, + List selEndPeriodList, List periodNames, List dataElementList, + List decocList, List selOUList ) + throws Exception { - DataElementChartResult dataElementChartResult; - - String[] series = new String[dataElementList.size()]; - String[] categories = new String[selOUList.size()]; - Double[][] data = new Double[dataElementList.size()][selOUList.size()]; - String chartTitle = "OrganisationUnit : -----" ; - String xAxis_Title = "Facilities"; - String yAxis_Title = "Value"; - - int serviceCount = 0; - - for( DataElement dataElement : dataElementList ) - { - DataElementCategoryOptionCombo decoc; - DataElementCategoryCombo dataElementCategoryCombo = dataElement.getCategoryCombo(); - List optionCombos = new ArrayList( dataElementCategoryCombo.getOptionCombos() ); - - if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) ) - { - decoc = decocList.get( serviceCount ); - series[serviceCount] = dataElement.getName() + " : " + decoc.getName(); - yseriesList.add( dataElement.getName() + " : " + decoc.getName() ); - } - else - { - decoc = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); - series[serviceCount] = dataElement.getName(); - yseriesList.add( dataElement.getName() ); - } - - int orgUnitCount = 0; - for( OrganisationUnit orgunit : selOUList ) - { - categories[orgUnitCount] = orgunit.getName(); - String drillDownData = orgunit.getId() + ":" + "0" + ":" + dataElement.getId() + ":"+ decoc.getId() + ":" + periodTypeLB + ":" + drillDownPeriodStartDate + ":" + drillDownPeriodEndDate + ":" + drillDownPeriodNames + ":" + deSelection + ":" + aggChecked; - selectedDrillDownData.add( drillDownData ); - - Double aggDataValue = 0.0; - - int periodCount = 0; - for( Date startDate : selStartPeriodList ) - { - Date endDate = selEndPeriodList.get( periodCount ); - Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); - - Iterator optionComboIterator = optionCombos.iterator(); - while ( optionComboIterator.hasNext() ) - { - DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next(); - - if( aggDataCB != null ) - { - Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate, endDate, orgunit ); - if(tempAggDataValue != null ) aggDataValue += tempAggDataValue; - } - else - { - for( Period period : periods ) - { - DataValue dataValue = dataValueService.getDataValue( orgunit, dataElement, period, decoc1 ); - try - { - aggDataValue += Double.parseDouble( dataValue.getValue() ); - } - catch( Exception e ) - { - } - } - } - } - periodCount++; - } - - data[serviceCount][orgUnitCount] = aggDataValue; - - if( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) - { - if ( dataElement.getNumberType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) - { - data[serviceCount][orgUnitCount] = Math.round( data[serviceCount][orgUnitCount] * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); - } - else - { - data[serviceCount][orgUnitCount] = Math.round( data[serviceCount][orgUnitCount] * Math.pow( 10, 1 ) ) / Math.pow( 10, 1 ); - } - } - orgUnitCount++; - } - serviceCount++; - } - - dataElementChartResult = new DataElementChartResult( series, categories, data, chartTitle, xAxis_Title, yAxis_Title ); - - return dataElementChartResult; + DataElementChartResult dataElementChartResult; + + String[] series = new String[dataElementList.size()]; + String[] categories = new String[selOUList.size()]; + Double[][] data = new Double[dataElementList.size()][selOUList.size()]; + String chartTitle = "OrganisationUnit : -----"; + String xAxis_Title = "Facilities"; + String yAxis_Title = "Value"; + + int serviceCount = 0; + + for ( DataElement dataElement : dataElementList ) + { + DataElementCategoryOptionCombo decoc; + DataElementCategoryCombo dataElementCategoryCombo = dataElement.getCategoryCombo(); + List optionCombos = new ArrayList( + dataElementCategoryCombo.getOptionCombos() ); + + if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) ) + { + decoc = decocList.get( serviceCount ); + series[serviceCount] = dataElement.getName() + " : " + decoc.getName(); + yseriesList.add( dataElement.getName() + " : " + decoc.getName() ); + } + else + { + decoc = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); + series[serviceCount] = dataElement.getName(); + yseriesList.add( dataElement.getName() ); + } + + int orgUnitCount = 0; + for ( OrganisationUnit orgunit : selOUList ) + { + categories[orgUnitCount] = orgunit.getName(); + String drillDownData = orgunit.getId() + ":" + "0" + ":" + dataElement.getId() + ":" + decoc.getId() + + ":" + periodTypeLB + ":" + drillDownPeriodStartDate + ":" + drillDownPeriodEndDate + ":" + + drillDownPeriodNames + ":" + deSelection + ":" + aggChecked; + selectedDrillDownData.add( drillDownData ); + + Double aggDataValue = 0.0; + + int periodCount = 0; + for ( Date startDate : selStartPeriodList ) + { + Date endDate = selEndPeriodList.get( periodCount ); + Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); + + Iterator optionComboIterator = optionCombos.iterator(); + while ( optionComboIterator.hasNext() ) + { + DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator + .next(); + + if ( aggDataCB != null ) + { + Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, + startDate, endDate, orgunit ); + if ( tempAggDataValue != null ) + aggDataValue += tempAggDataValue; + } + else + { + for ( Period period : periods ) + { + DataValue dataValue = dataValueService.getDataValue( orgunit, dataElement, period, + decoc1 ); + try + { + aggDataValue += Double.parseDouble( dataValue.getValue() ); + } + catch ( Exception e ) + { + } + } + } + } + periodCount++; + } + + data[serviceCount][orgUnitCount] = aggDataValue; + + if ( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) + { + if ( dataElement.getNumberType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) + { + data[serviceCount][orgUnitCount] = Math.round( data[serviceCount][orgUnitCount] + * Math.pow( 10, 0 ) ) + / Math.pow( 10, 0 ); + } + else + { + data[serviceCount][orgUnitCount] = Math.round( data[serviceCount][orgUnitCount] + * Math.pow( 10, 1 ) ) + / Math.pow( 10, 1 ); + } + } + orgUnitCount++; + } + serviceCount++; + } + + dataElementChartResult = new DataElementChartResult( series, categories, data, chartTitle, xAxis_Title, + yAxis_Title ); + + return dataElementChartResult; } - + // ------------------------------------------------------------------------- // Methods for getting Chart Data OrgGroup Period Wise start // ------------------------------------------------------------------------- - - public DataElementChartResult generateChartDataOrgGroupPeriodWise( List selStartPeriodList,List selEndPeriodList,List periodNames,List dataElementList,List decocList,List selOUGroupMemberList ) throws Exception + + public DataElementChartResult generateChartDataOrgGroupPeriodWise( List selStartPeriodList, + List selEndPeriodList, List periodNames, List dataElementList, + List decocList, List selOUGroupMemberList ) + throws Exception { - DataElementChartResult dataElementChartResult; - - String[] series = new String[dataElementList.size()]; - String[] categories = new String[selStartPeriodList.size()]; - Double[][] data = new Double[dataElementList.size()][selStartPeriodList.size()]; - String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName()+ "( Group- " + selOrgUnitGroup.getName() + " )"; - String xAxis_Title = "Time Line"; - String yAxis_Title = "Value"; - - int serviceCount = 0; - - for( DataElement dataElement : dataElementList ) - { - DataElementCategoryOptionCombo decoc; - DataElementCategoryCombo dataElementCategoryCombo = dataElement.getCategoryCombo(); - List optionCombos = new ArrayList( dataElementCategoryCombo.getOptionCombos() ); - - if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) ) - { - decoc = decocList.get( serviceCount ); - series[serviceCount] = dataElement.getName() + " : " + decoc.getName(); - yseriesList.add( dataElement.getName() + " : " + decoc.getName() ); - } - else - { - decoc = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); - series[serviceCount] = dataElement.getName(); - yseriesList.add( dataElement.getName() ); - } - - int periodCount = 0; - for( Date startDate : selStartPeriodList ) - { - Date endDate = selEndPeriodList.get( periodCount ); - categories[periodCount] = periodNames.get( periodCount ); - Double aggDataValue = 0.0; - - String tempStartDate = format.formatDate( startDate ); - String tempEndDate = format.formatDate( endDate ); - String drillDownPeriodName = periodNames.get( periodCount ); - - Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); - String drillDownData = selectedOrgUnit.getId() + ":"+ selOrgUnitGroup.getId() + ":" + dataElement.getId() + ":"+ decoc.getId() + ":" + periodTypeLB + ":" + tempStartDate + ":" + tempEndDate + ":" + drillDownPeriodName + ":" + deSelection + ":" + aggChecked; - selectedDrillDownData.add( drillDownData ); - - int orgGroupCount = 0; - for( OrganisationUnit orgUnit : selOUGroupMemberList ) - { - Iterator optionComboIterator = optionCombos.iterator(); - while ( optionComboIterator.hasNext() ) - { - DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next(); - - if( aggDataCB != null ) - { - Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate, endDate, orgUnit ); - if(tempAggDataValue != null ) aggDataValue += tempAggDataValue; - } - else - { - for( Period period : periods ) - { - DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, decoc1 ); - try - { - aggDataValue += Double.parseDouble( dataValue.getValue() ); - } - catch( Exception e ) - { - } - } - } - } - orgGroupCount++; - } - - data[serviceCount][periodCount] = aggDataValue; - - if( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) - { - if ( dataElement.getNumberType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) - { - data[serviceCount][periodCount] = Math.round( data[serviceCount][periodCount] * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); - } - else - { - data[serviceCount][periodCount] = Math.round( data[serviceCount][periodCount] * Math.pow( 10, 1 ) ) / Math.pow( 10, 1 ); - } - } - periodCount++; - } - - serviceCount++; - } - - dataElementChartResult = new DataElementChartResult( series, categories, data, chartTitle, xAxis_Title, yAxis_Title ); - - return dataElementChartResult; - - } - + DataElementChartResult dataElementChartResult; + + String[] series = new String[dataElementList.size()]; + String[] categories = new String[selStartPeriodList.size()]; + Double[][] data = new Double[dataElementList.size()][selStartPeriodList.size()]; + String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName() + "( Group- " + + selOrgUnitGroup.getName() + " )"; + String xAxis_Title = "Time Line"; + String yAxis_Title = "Value"; + + int serviceCount = 0; + + for ( DataElement dataElement : dataElementList ) + { + DataElementCategoryOptionCombo decoc; + DataElementCategoryCombo dataElementCategoryCombo = dataElement.getCategoryCombo(); + List optionCombos = new ArrayList( + dataElementCategoryCombo.getOptionCombos() ); + + if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) ) + { + decoc = decocList.get( serviceCount ); + series[serviceCount] = dataElement.getName() + " : " + decoc.getName(); + yseriesList.add( dataElement.getName() + " : " + decoc.getName() ); + } + else + { + decoc = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); + series[serviceCount] = dataElement.getName(); + yseriesList.add( dataElement.getName() ); + } + + int periodCount = 0; + for ( Date startDate : selStartPeriodList ) + { + Date endDate = selEndPeriodList.get( periodCount ); + categories[periodCount] = periodNames.get( periodCount ); + Double aggDataValue = 0.0; + + String tempStartDate = format.formatDate( startDate ); + String tempEndDate = format.formatDate( endDate ); + String drillDownPeriodName = periodNames.get( periodCount ); + + Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); + String drillDownData = selectedOrgUnit.getId() + ":" + selOrgUnitGroup.getId() + ":" + + dataElement.getId() + ":" + decoc.getId() + ":" + periodTypeLB + ":" + tempStartDate + ":" + + tempEndDate + ":" + drillDownPeriodName + ":" + deSelection + ":" + aggChecked; + selectedDrillDownData.add( drillDownData ); + + int orgGroupCount = 0; + for ( OrganisationUnit orgUnit : selOUGroupMemberList ) + { + Iterator optionComboIterator = optionCombos.iterator(); + while ( optionComboIterator.hasNext() ) + { + DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator + .next(); + + if ( aggDataCB != null ) + { + Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, + startDate, endDate, orgUnit ); + if ( tempAggDataValue != null ) + aggDataValue += tempAggDataValue; + } + else + { + for ( Period period : periods ) + { + DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, + decoc1 ); + try + { + aggDataValue += Double.parseDouble( dataValue.getValue() ); + } + catch ( Exception e ) + { + } + } + } + } + orgGroupCount++; + } + + data[serviceCount][periodCount] = aggDataValue; + + if ( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) + { + if ( dataElement.getNumberType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) + { + data[serviceCount][periodCount] = Math.round( data[serviceCount][periodCount] + * Math.pow( 10, 0 ) ) + / Math.pow( 10, 0 ); + } + else + { + data[serviceCount][periodCount] = Math.round( data[serviceCount][periodCount] + * Math.pow( 10, 1 ) ) + / Math.pow( 10, 1 ); + } + } + periodCount++; + } + + serviceCount++; + } + + dataElementChartResult = new DataElementChartResult( series, categories, data, chartTitle, xAxis_Title, + yAxis_Title ); + + return dataElementChartResult; + + } + // ------------------------------------------------------------------------- // Methods for getting Chart Data OrgGroup Selected orgUnit Wise start // ------------------------------------------------------------------------- - - public DataElementChartResult generateChartDataSelectedOrgUnitGroupWise( List selStartPeriodList,List selEndPeriodList,List periodNames,List dataElementList,List decocList,Map> orgUnitGroupMap ) throws Exception + + public DataElementChartResult generateChartDataSelectedOrgUnitGroupWise( List selStartPeriodList, + List selEndPeriodList, List periodNames, List dataElementList, + List decocList, + Map> orgUnitGroupMap ) + throws Exception { - DataElementChartResult dataElementChartResult; - - String[] series = new String[dataElementList.size()]; - String[] categories = new String[orgUnitGroupMap.keySet().size()]; - Double[][] data = new Double[dataElementList.size()][orgUnitGroupMap.keySet().size()]; - String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName() +" - "; - String xAxis_Title = "Organisation Unit Group"; - String yAxis_Title = "Value"; - - int serviceCount = 0; - - for( DataElement dataElement : dataElementList ) - { - DataElementCategoryOptionCombo decoc; - DataElementCategoryCombo dataElementCategoryCombo = dataElement.getCategoryCombo(); - List optionCombos = new ArrayList( dataElementCategoryCombo.getOptionCombos() ); - - if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) ) - { - decoc = decocList.get( serviceCount ); - series[serviceCount] = dataElement.getName() + " : " + decoc.getName(); - yseriesList.add( dataElement.getName() + " : " + decoc.getName() ); - } - else - { - decoc = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); - series[serviceCount] = dataElement.getName(); - yseriesList.add( dataElement.getName() ); - } - - int orgGroupCount = 0; - for( OrganisationUnitGroup orgUnitGroup : orgUnitGroupMap.keySet() ) - { - Double aggDataValue = 0.0; - - categories[orgGroupCount] = orgUnitGroup.getName(); - String drillDownData = selectedOrgUnit.getId() + ":" + orgUnitGroup.getId() + ":" + dataElement.getId() + ":"+ decoc.getId() + ":" + periodTypeLB + ":" + drillDownPeriodStartDate + ":" + drillDownPeriodEndDate + ":" + drillDownPeriodNames + ":" + deSelection + ":" + aggChecked; - selectedDrillDownData.add( drillDownData ); - - if( serviceCount == 0 ) - { - chartTitle += orgUnitGroup.getName() + ","; - } - Collection orgUnitGroupMembers = orgUnitGroupMap.get( orgUnitGroup ); - - if( orgUnitGroupMembers == null || orgUnitGroupMembers.size() == 0 ) - { - data[serviceCount][orgGroupCount] = aggDataValue; - orgGroupCount++; - continue; - } - for( OrganisationUnit orgUnit : orgUnitGroupMembers ) - { - int periodCount = 0; - for( Date startDate : selStartPeriodList ) - { - Date endDate = selEndPeriodList.get( periodCount ); - - Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); - - Iterator optionComboIterator = optionCombos.iterator(); - while ( optionComboIterator.hasNext() ) - { - DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator.next(); - - if( aggDataCB != null ) - { - Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, decoc1, startDate, endDate, orgUnit ); - if(tempAggDataValue != null ) aggDataValue += tempAggDataValue; - } - else - { - for( Period period : periods ) - { - DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, decoc1 ); - - try - { - aggDataValue += Double.parseDouble( dataValue.getValue() ); - } - catch( Exception e ) - { - - } - } - } - } - periodCount++; - } - } - data[serviceCount][orgGroupCount] = aggDataValue; - - if( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) - { - if ( dataElement.getNumberType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) - { - data[serviceCount][orgGroupCount] = Math.round( data[serviceCount][orgGroupCount] * Math.pow( 10, 0 ) ) / Math.pow( 10, 0 ); - } - else - { - data[serviceCount][orgGroupCount] = Math.round( data[serviceCount][orgGroupCount] * Math.pow( 10, 1 ) ) / Math.pow( 10, 1 ); - } - } - - orgGroupCount++; - } - - serviceCount++; - } - - dataElementChartResult = new DataElementChartResult( series, categories, data, chartTitle, xAxis_Title, yAxis_Title ); - - return dataElementChartResult; - - } + DataElementChartResult dataElementChartResult; + + String[] series = new String[dataElementList.size()]; + String[] categories = new String[orgUnitGroupMap.keySet().size()]; + Double[][] data = new Double[dataElementList.size()][orgUnitGroupMap.keySet().size()]; + String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName() + " - "; + String xAxis_Title = "Organisation Unit Group"; + String yAxis_Title = "Value"; + + int serviceCount = 0; + + for ( DataElement dataElement : dataElementList ) + { + DataElementCategoryOptionCombo decoc; + DataElementCategoryCombo dataElementCategoryCombo = dataElement.getCategoryCombo(); + List optionCombos = new ArrayList( + dataElementCategoryCombo.getOptionCombos() ); + + if ( deSelection.equalsIgnoreCase( OPTIONCOMBO ) ) + { + decoc = decocList.get( serviceCount ); + series[serviceCount] = dataElement.getName() + " : " + decoc.getName(); + yseriesList.add( dataElement.getName() + " : " + decoc.getName() ); + } + else + { + decoc = dataElementCategoryService.getDefaultDataElementCategoryOptionCombo(); + series[serviceCount] = dataElement.getName(); + yseriesList.add( dataElement.getName() ); + } + + int orgGroupCount = 0; + for ( OrganisationUnitGroup orgUnitGroup : orgUnitGroupMap.keySet() ) + { + Double aggDataValue = 0.0; + + categories[orgGroupCount] = orgUnitGroup.getName(); + String drillDownData = selectedOrgUnit.getId() + ":" + orgUnitGroup.getId() + ":" + dataElement.getId() + + ":" + decoc.getId() + ":" + periodTypeLB + ":" + drillDownPeriodStartDate + ":" + + drillDownPeriodEndDate + ":" + drillDownPeriodNames + ":" + deSelection + ":" + aggChecked; + selectedDrillDownData.add( drillDownData ); + + if ( serviceCount == 0 ) + { + chartTitle += orgUnitGroup.getName() + ","; + } + Collection orgUnitGroupMembers = orgUnitGroupMap.get( orgUnitGroup ); + + if ( orgUnitGroupMembers == null || orgUnitGroupMembers.size() == 0 ) + { + data[serviceCount][orgGroupCount] = aggDataValue; + orgGroupCount++; + continue; + } + for ( OrganisationUnit orgUnit : orgUnitGroupMembers ) + { + int periodCount = 0; + for ( Date startDate : selStartPeriodList ) + { + Date endDate = selEndPeriodList.get( periodCount ); + + Collection periods = periodService.getPeriodsBetweenDates( startDate, endDate ); + + Iterator optionComboIterator = optionCombos.iterator(); + while ( optionComboIterator.hasNext() ) + { + DataElementCategoryOptionCombo decoc1 = (DataElementCategoryOptionCombo) optionComboIterator + .next(); + + if ( aggDataCB != null ) + { + Double tempAggDataValue = aggregationService.getAggregatedDataValue( dataElement, + decoc1, startDate, endDate, orgUnit ); + if ( tempAggDataValue != null ) + aggDataValue += tempAggDataValue; + } + else + { + for ( Period period : periods ) + { + DataValue dataValue = dataValueService.getDataValue( orgUnit, dataElement, period, + decoc1 ); + + try + { + aggDataValue += Double.parseDouble( dataValue.getValue() ); + } + catch ( Exception e ) + { + + } + } + } + } + periodCount++; + } + } + data[serviceCount][orgGroupCount] = aggDataValue; + + if ( dataElement.getType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) + { + if ( dataElement.getNumberType().equalsIgnoreCase( DataElement.VALUE_TYPE_INT ) ) + { + data[serviceCount][orgGroupCount] = Math.round( data[serviceCount][orgGroupCount] + * Math.pow( 10, 0 ) ) + / Math.pow( 10, 0 ); + } + else + { + data[serviceCount][orgGroupCount] = Math.round( data[serviceCount][orgGroupCount] + * Math.pow( 10, 1 ) ) + / Math.pow( 10, 1 ); + } + } + + orgGroupCount++; + } + + serviceCount++; + } + + dataElementChartResult = new DataElementChartResult( series, categories, data, chartTitle, xAxis_Title, + yAxis_Title ); + + return dataElementChartResult; + + } } === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownResultAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownResultAction.java 2010-12-08 07:24:10 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownResultAction.java 2011-04-15 11:34:10 +0000 @@ -1,671 +1,581 @@ -package org.hisp.dhis.dataanalyser.ga.action.charts; - -// -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - -import jxl.Workbook; -import jxl.format.Alignment; -import jxl.format.Border; -import jxl.format.BorderLineStyle; -import jxl.format.Colour; -import jxl.format.VerticalAlignment; -import jxl.write.Label; -import jxl.write.WritableCellFormat; -import jxl.write.WritableSheet; -import jxl.write.WritableWorkbook; - -import org.amplecode.quick.StatementManager; -import org.hisp.dhis.caseaggregation.CaseAggregationCondition; -import org.hisp.dhis.caseaggregation.CaseAggregationConditionService; -import org.hisp.dhis.config.ConfigurationService; -import org.hisp.dhis.config.Configuration_IN; -import org.hisp.dhis.dataelement.DataElement; -import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; -import org.hisp.dhis.dataelement.DataElementCategoryService; -import org.hisp.dhis.dataelement.DataElementService; -import org.hisp.dhis.i18n.I18nFormat; -import org.hisp.dhis.organisationunit.OrganisationUnit; -import org.hisp.dhis.organisationunit.OrganisationUnitService; -import org.hisp.dhis.organisationunit.comparator.OrganisationUnitNameComparator; -import org.hisp.dhis.patient.Patient; -import org.hisp.dhis.patient.PatientAttribute; -import org.hisp.dhis.patient.PatientAttributeService; -import org.hisp.dhis.patient.PatientIdentifier; -import org.hisp.dhis.patient.PatientIdentifierService; -import org.hisp.dhis.patient.PatientIdentifierType; -import org.hisp.dhis.patient.PatientIdentifierTypeService; -import org.hisp.dhis.patientattributevalue.PatientAttributeValue; -import org.hisp.dhis.patientattributevalue.PatientAttributeValueService; -import org.hisp.dhis.patientdatavalue.PatientDataValue; -import org.hisp.dhis.period.Period; -import org.hisp.dhis.period.PeriodService; -import org.hisp.dhis.period.PeriodType; -import org.hisp.dhis.program.ProgramInstance; -import org.hisp.dhis.program.ProgramStageInstance; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; - -import com.opensymphony.xwork2.Action; - -// - -/** - * - * @author Administrator - */ -public class GenerateDrillDownResultAction - implements Action -{ - - // ------------------------------------------------------------------------- - // Dependencies - // ------------------------------------------------------------------------- - // - private StatementManager statementManager; - - public void setStatementManager( StatementManager statementManager ) - { - this.statementManager = statementManager; - } - - private OrganisationUnitService organisationUnitService; - - public OrganisationUnitService getOrganisationUnitService() - { - return organisationUnitService; - } - - public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) - { - this.organisationUnitService = organisationUnitService; - } - - private CaseAggregationConditionService caseAggregationConditionService; - - public void setCaseAggregationConditionService( CaseAggregationConditionService caseAggregationConditionService ) - { - this.caseAggregationConditionService = caseAggregationConditionService; - } - - /* - private CaseAggregationMappingService caseAggregationMappingService; - - public void setCaseAggregationMappingService( CaseAggregationMappingService caseAggregationMappingService ) - { - this.caseAggregationMappingService = caseAggregationMappingService; - } - */ - - private ConfigurationService configurationService; - - public void setConfigurationService( ConfigurationService configurationService ) - { - this.configurationService = configurationService; - } - - private DataElementService dataElementService; - - public void setDataElementService( DataElementService dataElementService ) - { - this.dataElementService = dataElementService; - } - - private DataElementCategoryService dataElementCategoryOptionComboService; - - public void setDataElementCategoryOptionComboService( - DataElementCategoryService dataElementCategoryOptionComboService ) - { - this.dataElementCategoryOptionComboService = dataElementCategoryOptionComboService; - } - - private PeriodService periodService; - - public void setPeriodService( PeriodService periodService ) - { - this.periodService = periodService; - } - - private PatientAttributeValueService patientAttributeValueService; - - public void setPatientAttributeValueService( PatientAttributeValueService patientAttributeValueService ) - { - this.patientAttributeValueService = patientAttributeValueService; - } - - private PatientAttributeService patientAttributeService; - - public void setPatientAttributeService( PatientAttributeService patientAttributeService ) - { - this.patientAttributeService = patientAttributeService; - } - - private PatientIdentifierService patientIdentifierService; - - public void setPatientIdentifierService( PatientIdentifierService patientIdentifierService ) - { - this.patientIdentifierService = patientIdentifierService; - } - - private PatientIdentifierTypeService patientIdentifierTypeService; - - public void setPatientIdentifierTypeService( PatientIdentifierTypeService patientIdentifierTypeService ) - { - this.patientIdentifierTypeService = patientIdentifierTypeService; - } - - // - // - public String selectedValues; - - public String getSelectedValues() - { - return selectedValues; - } - - public void setSelectedValues( String selectedValues ) - { - this.selectedValues = selectedValues; - } - - private InputStream inputStream; - - public InputStream getInputStream() - { - return inputStream; - } - - private String fileName; - - public String getFileName() - { - return fileName; - } - - public String[] values; - - private String raFolderName; - - private String inputTemplatePath; - - private String outputReportPath; - - // private Period startDate; - - private OrganisationUnit selectedOrgUnit; - - private DataElement de; - - private DataElementCategoryOptionCombo coc; - - //private CaseAggregationMapping caseAggMapping; - - private List serviceType; - - private List deCodeType; - - private List sheetList; - - private List rowList; - - private List colList; - - private String deCodesXMLFileName; - - private String reportFileNameTB; - - private I18nFormat format; - - public void setFormat( I18nFormat format ) - { - this.format = format; - } - - private Date tempStartDate; - - private Date tempEndDate; - - private PeriodType periodTypeName; - - private Collection periods; - // - - public String execute() - throws Exception - { - - values = selectedValues.split( ":" ); - int orgunit = Integer.parseInt( values[0] ); - // int periodid = Integer.parseInt( values[3] ); - int deid = Integer.parseInt( values[1] ); - int cocid = Integer.parseInt( values[2] ); - - //06/12/2010 - String periodType = values[3]; - //Date startDate = values[4]; - // String endDate = values[5]; - - tempStartDate = format.parseDate( values[4] ); - tempEndDate = format.parseDate( values[5] ); - - - periodTypeName = periodService.getPeriodTypeByName( periodType ); - periods = periodService.getPeriodsBetweenDates( periodTypeName, tempStartDate, tempEndDate ); - - - // startDate = periodService.getPeriod( periodid ); - selectedOrgUnit = organisationUnitService.getOrganisationUnit( orgunit ); - de = dataElementService.getDataElement( deid ); - coc = dataElementCategoryOptionComboService.getDataElementCategoryOptionCombo( cocid ); - - System.out.println( "orgunit is " + orgunit + " de is " + deid + " coc is " + cocid + " periodType is " + periodType + " tempStartDate is " + tempStartDate + " tempEndDate is " + tempEndDate ); - - statementManager.initialise(); - raFolderName = configurationService.getConfigurationByKey( Configuration_IN.KEY_REPORTFOLDER ).getValue(); - deCodesXMLFileName = "NBITS_DrillDownToCaseBasedDECodes.xml"; - // System.out.println( "reportList = " + reportList ); - deCodeType = new ArrayList(); - serviceType = new ArrayList(); - - sheetList = new ArrayList(); - rowList = new ArrayList(); - colList = new ArrayList(); - reportFileNameTB = "DrillDownToCaseBased.xls"; - - // Initialization - inputTemplatePath = System.getenv( "DHIS2_HOME" ) + File.separator + raFolderName + File.separator + "template" - + File.separator + reportFileNameTB; - - outputReportPath = System.getenv( "DHIS2_HOME" ) + File.separator + raFolderName + File.separator + "output" - + File.separator + UUID.randomUUID().toString() + ".xls"; - - // System.out.println( " inputTemplatePath " + inputTemplatePath ); - - generatDrillDownReport(); - statementManager.destroy(); - return SUCCESS; - }// end if loop - - public void generatDrillDownReport() - throws Exception - { - Workbook templateWorkbook = Workbook.getWorkbook( new File( inputTemplatePath ) ); - WritableWorkbook outputReportWorkbook = Workbook - .createWorkbook( new File( outputReportPath ), templateWorkbook ); - - // Cell formatting - WritableCellFormat wCellformat = new WritableCellFormat(); - wCellformat.setBorder( Border.ALL, BorderLineStyle.THIN ); - wCellformat.setAlignment( Alignment.CENTRE ); - wCellformat.setVerticalAlignment( VerticalAlignment.CENTRE ); - // System.out.println( "deCodesXMLFileName = " + deCodesXMLFileName ); - List deCodesList = getDECodes( deCodesXMLFileName ); - // System.out.println( "deCodesList size = "+deCodesList.size() ); - // taking expression for selected de and decoc - CaseAggregationCondition caseAggregationCondition = caseAggregationConditionService.getCaseAggregationCondition( de, coc ); - //caseAggMapping = caseAggregationMappingService.getCaseAggregationMappingByOptionCombo( de, coc ); - - List orgUnitList = new ArrayList(); - List orgUnitDataList = new ArrayList(); - orgUnitList = getChildOrgUnitTree( selectedOrgUnit ); - Map ouAndLevel = new HashMap(); - - List levelsList = new ArrayList(); - Map> ouPatientDataValueMap = new HashMap>(); - List des = new ArrayList(); - String tempStr = ""; - for ( OrganisationUnit ou : orgUnitList ) - { - int level = organisationUnitService.getLevelOfOrganisationUnit( ou ); - ouAndLevel.put( ou, level ); - if ( !levelsList.contains( level ) ) - { - levelsList.add( level ); - } - - List patientDataValues = new ArrayList(); - - for( Period period : periods ) - { - patientDataValues.addAll( caseAggregationConditionService.getPatientDataValues( caseAggregationCondition, ou, period ) ); - } - - // patientDataValues.addAll( caseAggregationConditionService.getPatientDataValues( caseAggregationCondition, ou, startDate ) ); - // patientDataValues = caseAggregationMappingService.getCaseAggregatePatientDataValue( ou, startDate, - // caseAggMapping ); - if ( patientDataValues != null ) - { - ouPatientDataValueMap.put( ou, patientDataValues ); - orgUnitDataList.add( ou ); - for ( PatientDataValue patientDataValue : patientDataValues ) - { - if ( !des.contains( patientDataValue.getDataElement() ) ) - { - des.add( patientDataValue.getDataElement() ); - } - } - } - } - - WritableSheet sheet0 = outputReportWorkbook.getSheet( 0 ); - WritableCellFormat wCellformat1 = new WritableCellFormat(); - wCellformat1.setBorder( Border.ALL, BorderLineStyle.THIN ); - wCellformat1.setAlignment( Alignment.CENTRE ); - wCellformat1.setVerticalAlignment( VerticalAlignment.CENTRE ); - wCellformat1.setWrap( true ); - wCellformat1.setBackground( Colour.GREY_40_PERCENT ); - - // - int count1 = 0; - for ( DataElement de : des ) - { - // DEName - sheet0.addCell( new Label( 7 + count1, 1, "" + de.getName(), wCellformat1 ) ); - - count1++; - } - sheet0.addCell( new Label( 7 + count1, 1, "Execution Date", wCellformat1 ) ); - - for ( int i = levelsList.size() - 1; i >= 0; i-- ) - { - int level = levelsList.get( i ); - count1++; - sheet0.addCell( new Label( 7 + count1, 1, organisationUnitService.getOrganisationUnitLevelByLevel( level ) - .getName(), wCellformat1 ) ); - } - - // - - int rowNo = rowList.get( 0 ); - int srno = 0; - // - for ( OrganisationUnit ou : orgUnitDataList ) - { - List pdvList = ouPatientDataValueMap.get( ou ); - // System.out.println( "pdvList size = " + pdvList.size() + " ou " + - // ou.getName() ); - - // - for ( PatientDataValue patientDataValue : pdvList ) - { - - ProgramStageInstance psi = patientDataValue.getProgramStageInstance(); - ProgramInstance pi = psi.getProgramInstance(); - String value = patientDataValue.getValue(); - Date executionDate = psi.getExecutionDate(); - Patient patient = pi.getPatient(); - int colNo = 0; - int rowCount = 0; - // - for ( String deCodeString : deCodesList ) - { - tempStr = ""; - String sType = (String) serviceType.get( rowCount ); - if ( !deCodeString.equalsIgnoreCase( "NA" ) ) - { - // - if ( sType.equalsIgnoreCase( "caseProperty" ) ) - { - if ( deCodeString.equalsIgnoreCase( "Name" ) ) - { - tempStr = patient.getFullName(); - } - else if ( deCodeString.equalsIgnoreCase( "Age" ) ) - { - tempStr = patient.getAge(); - } - else if ( deCodeString.equalsIgnoreCase( "Sex" ) ) - { - if ( patient.getGender().equalsIgnoreCase( "M" ) ) - { - tempStr = "Male"; - } - else if ( patient.getGender().equalsIgnoreCase( "F" ) ) - { - tempStr = "Female"; - } - else - { - tempStr = ""; - } - } - } // - // - else if ( sType.equalsIgnoreCase( "caseAttribute" ) ) - { - int deCodeInt = Integer.parseInt( deCodeString ); - - PatientAttribute patientAttribute = patientAttributeService.getPatientAttribute( deCodeInt ); - PatientAttributeValue patientAttributeValue = patientAttributeValueService - .getPatientAttributeValue( patient, patientAttribute ); - if ( patientAttributeValue != null ) - { - tempStr = patientAttributeValue.getValue(); - } - else - { - tempStr = " "; - } - } // - // - else if ( sType.equalsIgnoreCase( "identifiertype" ) ) - { - int deCodeInt = Integer.parseInt( deCodeString ); - // _______________________Id. - // no._______________________ - PatientIdentifierType patientIdentifierType = patientIdentifierTypeService - .getPatientIdentifierType( deCodeInt ); - if ( patientIdentifierType != null ) - { - PatientIdentifier patientIdentifier = patientIdentifierService.getPatientIdentifier( - patientIdentifierType, patient ); - if ( patientIdentifier != null ) - { - tempStr = patientIdentifier.getIdentifier(); - } - else - { - tempStr = " "; - } - } - } - // - } - else - { - // - if ( sType.equalsIgnoreCase( "srno" ) ) - { - int tempNum = 1 + srno; - tempStr = String.valueOf( tempNum ); - } - // - } - // - int tempColNo = colList.get( rowCount ); - int sheetNo = sheetList.get( rowCount ); - sheet0 = outputReportWorkbook.getSheet( sheetNo ); - // WritableCell cell = sheet0.getWritableCell( tempColNo, rowNo ); - // System.out.println( - // "_______________________ count = "+rowCount - // +"tempColNo = " + tempColNo + " rowNo = " + rowNo + - // " value = " + tempStr ); - sheet0.addCell( new Label( tempColNo, rowNo, tempStr, wCellformat ) ); - colNo = tempColNo; - // - - rowCount++; - } - // - // - int count = 0; - for ( count = 0; count < des.size(); count++ ) - { - colNo++; - // DE Value - sheet0.addCell( new Label( colNo, rowNo, value, wCellformat ) ); - - } - colNo++; - // - // - // Execution date - SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "yyyy-MM-dd" ); - String eDate = simpleDateFormat.format( executionDate ); - sheet0.addCell( new Label( colNo, rowNo, "" + eDate, wCellformat ) ); - // - // - OrganisationUnit ouname = ou; - for ( int i = levelsList.size() - 1; i >= 0; i-- ) - { - colNo++; - int level = organisationUnitService.getLevelOfOrganisationUnit( ouname ); - if ( levelsList.get( i ) == level ) - { - sheet0.addCell( new Label( colNo, rowNo, ouname.getName(), wCellformat ) ); - // System.out.println( colNo+" "+ rowNo+" "+ - // ou.getName()+" "+ wCellformat ); - } - ouname = ouname.getParent(); - } - // - rowNo++; - srno++; - } - // - } - // - outputReportWorkbook.write(); - outputReportWorkbook.close(); - - fileName = reportFileNameTB.replace( ".xls", "" ); - fileName += "_" + selectedOrgUnit.getShortName() + ".xls"; - File outputReportFile = new File( outputReportPath ); - inputStream = new BufferedInputStream( new FileInputStream( outputReportFile ) ); - outputReportFile.deleteOnExit(); - // Cell formatting - - } - - // - @SuppressWarnings( "unchecked" ) - public List getChildOrgUnitTree( OrganisationUnit orgUnit ) - { - List orgUnitTree = new ArrayList(); - orgUnitTree.add( orgUnit ); - - List children = new ArrayList( orgUnit.getChildren() ); - Collections.sort( children, new OrganisationUnitNameComparator() ); - - Iterator childIterator = children.iterator(); - OrganisationUnit child; - while ( childIterator.hasNext() ) - { - child = (OrganisationUnit) childIterator.next(); - orgUnitTree.addAll( getChildOrgUnitTree( child ) ); - } - return orgUnitTree; - }// getChildOrgUnitTree end - - // - // - - public List getDECodes( String fileName ) - { - List deCodes = new ArrayList(); - String path = System.getenv( "user.home" ) + File.separator + "dhis" + File.separator + raFolderName - + File.separator + fileName; - try - { - String newpath = System.getenv( "DHIS2_HOME" ); - if ( newpath != null ) - { - path = newpath + File.separator + File.separator + raFolderName + File.separator + fileName; - } - - } - catch ( NullPointerException npe ) - { - // do nothing, but we might be using this somewhere without - // USER_HOME set, which will throw a NPE - } - - try - { - DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); - Document doc = docBuilder.parse( new File( path ) ); - if ( doc == null ) - { - System.out.println( "There is no DECodes related XML file in the user home" ); - return null; - } - - NodeList listOfDECodes = doc.getElementsByTagName( "de-code" ); - int totalDEcodes = listOfDECodes.getLength(); - - for ( int s = 0; s < totalDEcodes; s++ ) - { - Element deCodeElement = (Element) listOfDECodes.item( s ); - NodeList textDECodeList = deCodeElement.getChildNodes(); - deCodes.add( ((Node) textDECodeList.item( 0 )).getNodeValue().trim() ); - serviceType.add( deCodeElement.getAttribute( "stype" ) ); - deCodeType.add( deCodeElement.getAttribute( "type" ) ); - sheetList.add( new Integer( deCodeElement.getAttribute( "sheetno" ) ) ); - rowList.add( new Integer( deCodeElement.getAttribute( "rowno" ) ) ); - colList.add( new Integer( deCodeElement.getAttribute( "colno" ) ) ); - - // System.out.println( deCodes.get( s )+" : "+deCodeType.get( s - // ) ); - }// end of for loop with s var - - }// try block end - catch ( SAXParseException err ) - { - System.out.println( "** Parsing error" + ", line " + err.getLineNumber() + ", uri " + err.getSystemId() ); - System.out.println( " " + err.getMessage() ); - } - catch ( SAXException e ) - { - Exception x = e.getException(); - ((x == null) ? e : x).printStackTrace(); - } - catch ( Throwable t ) - { - t.printStackTrace(); - } - - return deCodes; - }// getDECodes end - // -} +package org.hisp.dhis.dataanalyser.ga.action.charts; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import jxl.Workbook; +import jxl.format.Alignment; +import jxl.format.Border; +import jxl.format.BorderLineStyle; +import jxl.format.Colour; +import jxl.format.VerticalAlignment; +import jxl.write.Label; +import jxl.write.WritableCellFormat; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; + +import org.amplecode.quick.StatementManager; +import org.hisp.dhis.caseaggregation.CaseAggregationCondition; +import org.hisp.dhis.caseaggregation.CaseAggregationConditionService; +import org.hisp.dhis.config.ConfigurationService; +import org.hisp.dhis.config.Configuration_IN; +import org.hisp.dhis.dataelement.DataElement; +import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; +import org.hisp.dhis.dataelement.DataElementCategoryService; +import org.hisp.dhis.dataelement.DataElementService; +import org.hisp.dhis.i18n.I18nFormat; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitService; +import org.hisp.dhis.organisationunit.comparator.OrganisationUnitNameComparator; +import org.hisp.dhis.patient.Patient; +import org.hisp.dhis.patient.PatientAttribute; +import org.hisp.dhis.patient.PatientAttributeService; +import org.hisp.dhis.patient.PatientIdentifier; +import org.hisp.dhis.patient.PatientIdentifierService; +import org.hisp.dhis.patient.PatientIdentifierType; +import org.hisp.dhis.patient.PatientIdentifierTypeService; +import org.hisp.dhis.patientattributevalue.PatientAttributeValue; +import org.hisp.dhis.patientattributevalue.PatientAttributeValueService; +import org.hisp.dhis.patientdatavalue.PatientDataValue; +import org.hisp.dhis.period.Period; +import org.hisp.dhis.period.PeriodService; +import org.hisp.dhis.period.PeriodType; +import org.hisp.dhis.program.ProgramInstance; +import org.hisp.dhis.program.ProgramStageInstance; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +import com.opensymphony.xwork2.Action; + + +/** + * + * @author Administrator + */ +public class GenerateDrillDownResultAction + implements Action +{ + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + private StatementManager statementManager; + + public void setStatementManager( StatementManager statementManager ) + { + this.statementManager = statementManager; + } + + private OrganisationUnitService organisationUnitService; + + public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) + { + this.organisationUnitService = organisationUnitService; + } + + private CaseAggregationConditionService caseAggregationConditionService; + + public void setCaseAggregationConditionService( CaseAggregationConditionService caseAggregationConditionService ) + { + this.caseAggregationConditionService = caseAggregationConditionService; + } + + private ConfigurationService configurationService; + + public void setConfigurationService( ConfigurationService configurationService ) + { + this.configurationService = configurationService; + } + + private DataElementService dataElementService; + + public void setDataElementService( DataElementService dataElementService ) + { + this.dataElementService = dataElementService; + } + + private DataElementCategoryService dataElementCategoryOptionComboService; + + public void setDataElementCategoryOptionComboService( + DataElementCategoryService dataElementCategoryOptionComboService ) + { + this.dataElementCategoryOptionComboService = dataElementCategoryOptionComboService; + } + + private PeriodService periodService; + + public void setPeriodService( PeriodService periodService ) + { + this.periodService = periodService; + } + + private PatientAttributeValueService patientAttributeValueService; + + public void setPatientAttributeValueService( PatientAttributeValueService patientAttributeValueService ) + { + this.patientAttributeValueService = patientAttributeValueService; + } + + private PatientAttributeService patientAttributeService; + + public void setPatientAttributeService( PatientAttributeService patientAttributeService ) + { + this.patientAttributeService = patientAttributeService; + } + + private PatientIdentifierService patientIdentifierService; + + public void setPatientIdentifierService( PatientIdentifierService patientIdentifierService ) + { + this.patientIdentifierService = patientIdentifierService; + } + + private PatientIdentifierTypeService patientIdentifierTypeService; + + public void setPatientIdentifierTypeService( PatientIdentifierTypeService patientIdentifierTypeService ) + { + this.patientIdentifierTypeService = patientIdentifierTypeService; + } + + + // ------------------------------------------------------------------------- + // Input & Output + // ------------------------------------------------------------------------- + public String selectedValues; + + public String getSelectedValues() + { + return selectedValues; + } + + public void setSelectedValues( String selectedValues ) + { + this.selectedValues = selectedValues; + } + + private InputStream inputStream; + + public InputStream getInputStream() + { + return inputStream; + } + + private String fileName; + + public String getFileName() + { + return fileName; + } + + public String[] values; + + private String raFolderName; + + private String inputTemplatePath; + + private String outputReportPath; + + private OrganisationUnit selectedOrgUnit; + + private DataElement de; + + private DataElementCategoryOptionCombo coc; + + private List serviceType; + + private List deCodeType; + + private List sheetList; + + private List rowList; + + private List colList; + + private String deCodesXMLFileName; + + private String reportFileNameTB; + + private I18nFormat format; + + public void setFormat( I18nFormat format ) + { + this.format = format; + } + + private Date tempStartDate; + + private Date tempEndDate; + + private Collection periods; + + // ------------------------------------------------------------------------- + // Action Implementation + // ------------------------------------------------------------------------- + public String execute() + throws Exception + { + // Initialization + + statementManager.initialise(); + + deCodeType = new ArrayList(); + serviceType = new ArrayList(); + sheetList = new ArrayList(); + rowList = new ArrayList(); + colList = new ArrayList(); + deCodesXMLFileName = "NBITS_DrillDownToCaseBasedDECodes.xml"; + reportFileNameTB = "DrillDownToCaseBased.xls"; + raFolderName = configurationService.getConfigurationByKey( Configuration_IN.KEY_REPORTFOLDER ).getValue(); + + values = selectedValues.split( ":" ); + int orgunit = Integer.parseInt( values[0] ); + int deid = Integer.parseInt( values[1] ); + int cocid = Integer.parseInt( values[2] ); + String periodTypeName = values[3]; + tempStartDate = format.parseDate( values[4] ); + tempEndDate = format.parseDate( values[5] ); + + PeriodType periodType = periodService.getPeriodTypeByName( periodTypeName ); + periods = periodService.getPeriodsBetweenDates( periodType, tempStartDate, tempEndDate ); + + selectedOrgUnit = organisationUnitService.getOrganisationUnit( orgunit ); + de = dataElementService.getDataElement( deid ); + coc = dataElementCategoryOptionComboService.getDataElementCategoryOptionCombo( cocid ); + + inputTemplatePath = System.getenv( "DHIS2_HOME" ) + File.separator + raFolderName + File.separator + "template" + + File.separator + reportFileNameTB; + + outputReportPath = System.getenv( "DHIS2_HOME" ) + File.separator + raFolderName + File.separator + "output" + + File.separator + UUID.randomUUID().toString() + ".xls"; + + generatDrillDownReport(); + + statementManager.destroy(); + + return SUCCESS; + } + + public void generatDrillDownReport() + throws Exception + { + Workbook templateWorkbook = Workbook.getWorkbook( new File( inputTemplatePath ) ); + WritableWorkbook outputReportWorkbook = Workbook.createWorkbook( new File( outputReportPath ), templateWorkbook ); + + // Cell formatting + WritableCellFormat wCellformat = new WritableCellFormat(); + wCellformat.setBorder( Border.ALL, BorderLineStyle.THIN ); + wCellformat.setAlignment( Alignment.CENTRE ); + wCellformat.setVerticalAlignment( VerticalAlignment.CENTRE ); + + List deCodesList = getDECodes( deCodesXMLFileName ); + + // taking expression for selected de and decoc + CaseAggregationCondition caseAggregationCondition = caseAggregationConditionService.getCaseAggregationCondition( de, coc ); + + List orgUnitList = new ArrayList(); + List orgUnitDataList = new ArrayList(); + orgUnitList = getChildOrgUnitTree( selectedOrgUnit ); + Map ouAndLevel = new HashMap(); + + List levelsList = new ArrayList(); + Map> ouPatientDataValueMap = new HashMap>(); + List des = new ArrayList(); + String tempStr = ""; + for ( OrganisationUnit ou : orgUnitList ) + { + int level = organisationUnitService.getLevelOfOrganisationUnit( ou ); + ouAndLevel.put( ou, level ); + if ( !levelsList.contains( level ) ) + { + levelsList.add( level ); + } + + List patientDataValues = new ArrayList(); + + for( Period period : periods ) + { + patientDataValues.addAll( caseAggregationConditionService.getPatientDataValues( caseAggregationCondition, ou, period ) ); + } + + if ( patientDataValues != null ) + { + ouPatientDataValueMap.put( ou, patientDataValues ); + orgUnitDataList.add( ou ); + for ( PatientDataValue patientDataValue : patientDataValues ) + { + if ( !des.contains( patientDataValue.getDataElement() ) ) + { + des.add( patientDataValue.getDataElement() ); + } + } + } + } + + WritableSheet sheet0 = outputReportWorkbook.getSheet( 0 ); + WritableCellFormat wCellformat1 = new WritableCellFormat(); + wCellformat1.setBorder( Border.ALL, BorderLineStyle.THIN ); + wCellformat1.setAlignment( Alignment.CENTRE ); + wCellformat1.setVerticalAlignment( VerticalAlignment.CENTRE ); + wCellformat1.setWrap( true ); + wCellformat1.setBackground( Colour.GREY_40_PERCENT ); + + int count1 = 0; + for ( DataElement de : des ) + { + // DEName + sheet0.addCell( new Label( 7 + count1, 1, "" + de.getName(), wCellformat1 ) ); + count1++; + } + + sheet0.addCell( new Label( 7 + count1, 1, "Execution Date", wCellformat1 ) ); + + for ( int i = levelsList.size() - 1; i >= 0; i-- ) + { + int level = levelsList.get( i ); + count1++; + sheet0.addCell( new Label( 7 + count1, 1, organisationUnitService.getOrganisationUnitLevelByLevel( level ) + .getName(), wCellformat1 ) ); + } + + int rowNo = rowList.get( 0 ); + int srno = 0; + for ( OrganisationUnit ou : orgUnitDataList ) + { + List pdvList = ouPatientDataValueMap.get( ou ); + + for ( PatientDataValue patientDataValue : pdvList ) + { + ProgramStageInstance psi = patientDataValue.getProgramStageInstance(); + ProgramInstance pi = psi.getProgramInstance(); + String value = patientDataValue.getValue(); + Date executionDate = psi.getExecutionDate(); + Patient patient = pi.getPatient(); + int colNo = 0; + int rowCount = 0; + for ( String deCodeString : deCodesList ) + { + tempStr = ""; + String sType = (String) serviceType.get( rowCount ); + if ( !deCodeString.equalsIgnoreCase( "NA" ) ) + { + if ( sType.equalsIgnoreCase( "caseProperty" ) ) + { + if ( deCodeString.equalsIgnoreCase( "Name" ) ) + { + tempStr = patient.getFullName(); + } + else if ( deCodeString.equalsIgnoreCase( "Age" ) ) + { + tempStr = patient.getAge(); + } + else if ( deCodeString.equalsIgnoreCase( "Sex" ) ) + { + if ( patient.getGender().equalsIgnoreCase( "M" ) ) + { + tempStr = "Male"; + } + else if ( patient.getGender().equalsIgnoreCase( "F" ) ) + { + tempStr = "Female"; + } + else + { + tempStr = ""; + } + } + } + else if ( sType.equalsIgnoreCase( "caseAttribute" ) ) + { + int deCodeInt = Integer.parseInt( deCodeString ); + + PatientAttribute patientAttribute = patientAttributeService.getPatientAttribute( deCodeInt ); + PatientAttributeValue patientAttributeValue = patientAttributeValueService.getPatientAttributeValue( patient, patientAttribute ); + if ( patientAttributeValue != null && patientAttributeValue.getValue() != null ) + { + tempStr = patientAttributeValue.getValue(); + } + else + { + tempStr = " "; + } + } + else if ( sType.equalsIgnoreCase( "identifiertype" ) ) + { + int deCodeInt = Integer.parseInt( deCodeString ); + + PatientIdentifierType patientIdentifierType = patientIdentifierTypeService.getPatientIdentifierType( deCodeInt ); + if ( patientIdentifierType != null ) + { + PatientIdentifier patientIdentifier = patientIdentifierService.getPatientIdentifier( patientIdentifierType, patient ); + if ( patientIdentifier != null ) + { + tempStr = patientIdentifier.getIdentifier(); + } + else + { + tempStr = " "; + } + } + } + } + else + { + if ( sType.equalsIgnoreCase( "srno" ) ) + { + int tempNum = 1 + srno; + tempStr = String.valueOf( tempNum ); + } + } + + int tempColNo = colList.get( rowCount ); + int sheetNo = sheetList.get( rowCount ); + sheet0 = outputReportWorkbook.getSheet( sheetNo ); + sheet0.addCell( new Label( tempColNo, rowNo, tempStr, wCellformat ) ); + colNo = tempColNo; + + rowCount++; + } + + int count = 0; + for ( count = 0; count < des.size(); count++ ) + { + colNo++; + // DE Value + sheet0.addCell( new Label( colNo, rowNo, value, wCellformat ) ); + + } + colNo++; + + // Execution date + SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "yyyy-MM-dd" ); + String eDate = simpleDateFormat.format( executionDate ); + sheet0.addCell( new Label( colNo, rowNo, "" + eDate, wCellformat ) ); + + OrganisationUnit ouname = ou; + for ( int i = levelsList.size() - 1; i >= 0; i-- ) + { + colNo++; + int level = organisationUnitService.getLevelOfOrganisationUnit( ouname ); + if ( levelsList.get( i ) == level ) + { + sheet0.addCell( new Label( colNo, rowNo, ouname.getName(), wCellformat ) ); + } + ouname = ouname.getParent(); + } + rowNo++; + srno++; + } + } + outputReportWorkbook.write(); + outputReportWorkbook.close(); + + fileName = reportFileNameTB.replace( ".xls", "" ); + fileName += "_" + selectedOrgUnit.getShortName() + ".xls"; + File outputReportFile = new File( outputReportPath ); + inputStream = new BufferedInputStream( new FileInputStream( outputReportFile ) ); + outputReportFile.deleteOnExit(); + + } + + @SuppressWarnings( "unchecked" ) + public List getChildOrgUnitTree( OrganisationUnit orgUnit ) + { + List orgUnitTree = new ArrayList(); + orgUnitTree.add( orgUnit ); + + List children = new ArrayList( orgUnit.getChildren() ); + Collections.sort( children, new OrganisationUnitNameComparator() ); + + Iterator childIterator = children.iterator(); + OrganisationUnit child; + while ( childIterator.hasNext() ) + { + child = (OrganisationUnit) childIterator.next(); + orgUnitTree.addAll( getChildOrgUnitTree( child ) ); + } + return orgUnitTree; + }// getChildOrgUnitTree end + + + public List getDECodes( String fileName ) + { + List deCodes = new ArrayList(); + String path = System.getenv( "user.home" ) + File.separator + "dhis" + File.separator + raFolderName + + File.separator + fileName; + try + { + String newpath = System.getenv( "DHIS2_HOME" ); + if ( newpath != null ) + { + path = newpath + File.separator + File.separator + raFolderName + File.separator + fileName; + } + + } + catch ( NullPointerException npe ) + { + // do nothing, but we might be using this somewhere without + // USER_HOME set, which will throw a NPE + } + + try + { + DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); + Document doc = docBuilder.parse( new File( path ) ); + if ( doc == null ) + { + System.out.println( "There is no DECodes related XML file in the user home" ); + return null; + } + + NodeList listOfDECodes = doc.getElementsByTagName( "de-code" ); + int totalDEcodes = listOfDECodes.getLength(); + + for ( int s = 0; s < totalDEcodes; s++ ) + { + Element deCodeElement = (Element) listOfDECodes.item( s ); + NodeList textDECodeList = deCodeElement.getChildNodes(); + deCodes.add( ((Node) textDECodeList.item( 0 )).getNodeValue().trim() ); + serviceType.add( deCodeElement.getAttribute( "stype" ) ); + deCodeType.add( deCodeElement.getAttribute( "type" ) ); + sheetList.add( new Integer( deCodeElement.getAttribute( "sheetno" ) ) ); + rowList.add( new Integer( deCodeElement.getAttribute( "rowno" ) ) ); + colList.add( new Integer( deCodeElement.getAttribute( "colno" ) ) ); + }// end of for loop with s var + }// try block end + catch ( SAXParseException err ) + { + System.out.println( "** Parsing error" + ", line " + err.getLineNumber() + ", uri " + err.getSystemId() ); + System.out.println( " " + err.getMessage() ); + } + catch ( SAXException e ) + { + Exception x = e.getException(); + ((x == null) ? e : x).printStackTrace(); + } + catch ( Throwable t ) + { + t.printStackTrace(); + } + + return deCodes; + }// getDECodes end +} === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ta/action/GenerateTabularAnalysisResultAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ta/action/GenerateTabularAnalysisResultAction.java 2011-03-01 09:39:28 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ta/action/GenerateTabularAnalysisResultAction.java 2011-04-15 11:34:10 +0000 @@ -481,7 +481,7 @@ + "output" + File.separator + UUID.randomUUID().toString() + ".xls"; WritableWorkbook outputReportWorkbook = Workbook.createWorkbook( new File( outputReportPath ) ); WritableSheet sheet0 = outputReportWorkbook.createSheet( "TabularAnalysis", 0 ); - + sheet0.mergeCells( headerCol, headerRow, headerCol, headerRow + 1 ); sheet0.addCell( new Label( headerCol, headerRow, "Sl.No.", getCellFormat1() ) ); @@ -1557,7 +1557,7 @@ throws Exception { WritableCellFormat wCellformat = new WritableCellFormat(); - + wCellformat.setBorder( Border.ALL, BorderLineStyle.THIN ); wCellformat.setAlignment( Alignment.CENTRE ); wCellformat.setBackground( Colour.GRAY_25 ); === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/tr/action/GenerateTargetAnalysisDataAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/tr/action/GenerateTargetAnalysisDataAction.java 2011-01-20 09:57:02 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/tr/action/GenerateTargetAnalysisDataAction.java 2011-04-15 11:34:10 +0000 @@ -279,6 +279,16 @@ for ( int j = 0; j < data2[i].length; j++ ) { + Double tempdeTargetAggVal = deTargetAggVal; + if( selButton.equalsIgnoreCase( "VIEWCCHART" ) ) + { + tempdeTargetAggVal = deTargetAggVal * (j+1); + tempdeTargetAggVal = Math.round( tempdeTargetAggVal * Math.pow( 10, 1 ) ) / Math.pow( 10, 1 ); + } + + data2[i][j] = tempdeTargetAggVal; + + /* if( selButton.equalsIgnoreCase( "VIEWCCHART" ) ) { deTargetAggVal = deTargetAggVal * (j+1); @@ -286,6 +296,7 @@ } data2[i][j] = deTargetAggVal; + */ } } }